From 18ccede019d18ba1ad3179080022988aa9d49f0b Mon Sep 17 00:00:00 2001 From: Hans van Kranenburg Date: Mon, 15 Jun 2015 00:11:21 +0200 Subject: [PATCH] BGP Intro: container configuration --- bgp-intro/README.md | 125 +++++++++++++- bgp-intro/bgp-heythere.dia | Bin 1189 -> 1204 bytes bgp-intro/bgp-heythere.png | Bin 15138 -> 15596 bytes bgp-intro/lxc/H19/rootfs/etc/bird/bird.conf | 1 + bgp-intro/lxc/H19/rootfs/etc/bird/bird6.conf | 1 + .../lxc/H19/rootfs/etc/network/interfaces | 14 ++ bgp-intro/lxc/H34/rootfs/etc/bird/bird.conf | 1 + bgp-intro/lxc/H34/rootfs/etc/bird/bird6.conf | 1 + .../lxc/H34/rootfs/etc/network/interfaces | 14 ++ bgp-intro/lxc/H6/rootfs/etc/bird/bird.conf | 1 + bgp-intro/lxc/H6/rootfs/etc/bird/bird6.conf | 1 + .../lxc/H6/rootfs/etc/network/interfaces | 14 ++ bgp-intro/lxc/H7/rootfs/etc/bird/bird.conf | 1 + bgp-intro/lxc/H7/rootfs/etc/bird/bird6.conf | 1 + .../lxc/H7/rootfs/etc/network/interfaces | 14 ++ bgp-intro/lxc/R0/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R0/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R0/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/R1/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R1/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R1/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/R10/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R10/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R10/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/R11/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R11/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R11/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/R12/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R12/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R12/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/R3/rootfs/etc/bird/bird.conf | 26 +++ bgp-intro/lxc/R3/rootfs/etc/bird/bird6.conf | 25 +++ .../lxc/R3/rootfs/etc/network/interfaces | 24 +++ bgp-intro/lxc/fixnetwork.sh | 161 ++++++++++++++++++ 34 files changed, 794 insertions(+), 6 deletions(-) create mode 100644 bgp-intro/lxc/H19/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/H19/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/H19/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/H34/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/H34/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/H34/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/H6/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/H6/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/H6/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/H7/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/H7/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/H7/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R0/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R0/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R0/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R1/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R1/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R1/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R10/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R10/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R10/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R11/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R11/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R11/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R12/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R12/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R12/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/R3/rootfs/etc/bird/bird.conf create mode 100644 bgp-intro/lxc/R3/rootfs/etc/bird/bird6.conf create mode 100644 bgp-intro/lxc/R3/rootfs/etc/network/interfaces create mode 100644 bgp-intro/lxc/fixnetwork.sh diff --git a/bgp-intro/README.md b/bgp-intro/README.md index b94e633..efbffe6 100644 --- a/bgp-intro/README.md +++ b/bgp-intro/README.md @@ -1,5 +1,5 @@ -BGP -=== +BGP, Part I +=========== In the previous tutorial, we discovered how to let [OSPF](/ospf-intro/README.md) dynamically configure routing inside a network. This tutorial provides an introduction to another routing protocol, which is BGP, the Border Gateway Protocol. As the name implies, this protocol acts on the border of a network. Where OSPF is well suited to keep track of all tiny details of what's happening in our internal network, BGP will be talking to the outside world to interconnect our network with other networks, managed by someone else. @@ -17,7 +17,7 @@ The picture shows two networks, which are interconnected through router `R3` and * A complete network under control of somebody has an AS ([Autonomous System](https://tools.ietf.org/html/rfc1930)) number. By specifying the AS number when configuring BGP connections, we let it know if the neighbour is in our own network (our AS), or in an external network (another AS). * If neighbouring routers between different networks are directly connected, they often interconnect using a minimal sized network range. For IPv4, this is usually a `/30` and for IPv6 a `/120` or a `/126` prefix, containing only the two routers. In the example above, the small network ranges are taken from the network of `AS64080`. - * The routes that are published to another network are as aggregated as possible, to minimize the amount of them. While the internal routing table in for example AS64080 might contain dozens of prefixes, for each little vlan, and probably a number of single host routes (IPv4 `/32` and IPv6 `/128`), they're advertised to the outside as just three routes in total. + * The routes that are published to another network are as aggregated as possible, to minimize the amount of them. While the internal routing table in for example `AS64080` might contain dozens of prefixes, for each little vlan, and probably a number of single host routes (IPv4 `/32` and IPv6 `/128`), they're advertised to the outside as just three routes in total. ## OSPF vs. BGP @@ -41,10 +41,123 @@ In the second half of this tutorial we'll configure a network, using OSPF, BGP a ![BGP and OSPF network](/bgp-intro/bgp-ospf.png) -It's starting to look serious now! +### Setting up the containers and networks -Hopsa, clone some containers, copy paste configuration - * already provide bird config with ospf for internal network +It's starting to look serious now! Thankfully, most of the configuration is provided already, so we can quickly set up this whole network using our LXC environment. Just like in the previous tutorial, the birdbase container can be cloned, after which the lxc network information and configuration inside the containers can be copied into them. + + 1. Clone this git repository somewhere to be able to use some files from the bgp-intro/lxc/ directory inside. + 2. lxc-clone the birdbase container several times: + + lxc-clone -s birdbase R0 + lxc-clone -s birdbase R1 + lxc-clone -s birdbase R3 + lxc-clone -s birdbase R10 + lxc-clone -s birdbase R11 + lxc-clone -s birdbase R12 + lxc-clone -s birdbase H6 + lxc-clone -s birdbase H7 + lxc-clone -s birdbase H19 + lxc-clone -s birdbase H34 + + 3. Set up the network interfaces in the lxc configuration. This can be done by removing all network related configuration that remains from the cloned birdbase container, and then appending all needed interface configuration by running the fixnetwork.sh script that can be found in `ospf-intro/lxc/` in this git repository. Of course, have a look at the contents of the script first, before executing it. Since this example is only using IPv4 and single IP addresses on the interfaces, I simply added them to the lxc configuration instead of the network/interfaces file inside the container. + + . ./fixnetwork.sh + + 4. Copy extra configuration into the containers. The bgp-intro/lxc/ directory inside this git repository contains a little file hierarchy that can just be copied over the configuration of the containers. For each router, it's a network/interfaces configuration file which adds an IP address that corresponds with the Router ID to the loopback interface, and a simple BIRD configuration file that serves as a starting point for our next steps. + + 5. Start all containers + + lxc-start -d -n R0 + lxc-start -d -n R1 + lxc-start -d -n R3 + lxc-start -d -n R10 + lxc-start -d -n R11 + lxc-start -d -n R12 + lxc-start -d -n H6 + lxc-start -d -n H7 + lxc-start -d -n H19 + lxc-start -d -n H34 + + 6. Verify connectivity and look around a bit. Here's an example for R1: + + lxc-attach -n R1 + + root@R1:/# ip a + 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet 10.40.217.1/32 scope global lo + valid_lft forever preferred_lft forever + inet6 2001:db8:40::1/128 scope global + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + 109: vlan216: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 + link/ether 02:00:0a:28:d8:03 brd ff:ff:ff:ff:ff:ff + inet 10.40.216.3/28 brd 10.40.216.15 scope global vlan216 + valid_lft forever preferred_lft forever + inet6 2001:db8:40:d8::3/120 scope global + valid_lft forever preferred_lft forever + inet6 fe80::aff:fe28:d803/64 scope link + valid_lft forever preferred_lft forever + 111: vlan3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 + link/ether 02:00:0a:28:03:01 brd ff:ff:ff:ff:ff:ff + inet 10.40.3.1/24 brd 10.40.3.255 scope global vlan3 + valid_lft forever preferred_lft forever + inet6 2001:db8:40:3::1/120 scope global + valid_lft forever preferred_lft forever + inet6 fe80::aff:fe28:301/64 scope link + valid_lft forever preferred_lft forever + + root@R1:/# ip r + 10.40.2.0/24 via 10.40.216.2 dev vlan216 proto bird + 10.40.3.0/24 dev vlan3 proto kernel scope link src 10.40.3.1 + 10.40.216.0/28 dev vlan216 proto kernel scope link src 10.40.216.3 + 10.40.217.0 via 10.40.216.2 dev vlan216 proto bird + 10.40.217.3 via 10.40.216.1 dev vlan216 proto bird + 10.40.217.16/30 via 10.40.216.1 dev vlan216 proto bird + + root@R1:/# birdc show route + BIRD 1.4.5 ready. + 10.40.217.16/30 via 10.40.216.1 on vlan216 [ospf1 22:58:02] * I (150/20) [10.40.217.3] + 10.40.216.0/28 dev vlan216 [ospf1 22:58:02] * I (150/10) [10.40.217.3] + 10.40.217.0/32 via 10.40.216.2 on vlan216 [ospf1 22:58:02] * I (150/10) [10.40.217.0] + 10.40.217.1/32 dev lo [ospf1 22:57:42] * I (150/0) [10.40.217.1] + 10.40.217.3/32 via 10.40.216.1 on vlan216 [ospf1 22:58:02] * I (150/10) [10.40.217.3] + 10.40.2.0/24 via 10.40.216.2 on vlan216 [ospf1 22:58:02] * I (150/20) [10.40.217.0] + 10.40.3.0/24 dev vlan3 [ospf1 22:57:42] * I (150/10) [10.40.217.1] + + root@R1:/# ip -6 r + 2001:db8:40:: via fe80::aff:fe28:d802 dev vlan216 proto bird metric 1024 + unreachable 2001:db8:40::1 dev lo proto kernel metric 256 error -101 + 2001:db8:40::3 via fe80::aff:fe28:d801 dev vlan216 proto bird metric 1024 + 2001:db8:40:2::/120 via fe80::aff:fe28:d802 dev vlan216 proto bird metric 1024 + 2001:db8:40:3::/120 dev vlan3 proto kernel metric 256 + 2001:db8:40:d8::/120 dev vlan216 proto kernel metric 256 + 2001:db8:40:d910::/120 via fe80::aff:fe28:d801 dev vlan216 proto bird metric 1024 + fe80::/64 dev vlan216 proto kernel metric 256 + fe80::/64 dev vlan3 proto kernel metric 256 + + root@R1:/# birdc6 show route + BIRD 1.4.5 ready. + 2001:db8:40:d8::/120 dev vlan216 [ospf1 22:58:08] * I (150/10) [10.40.217.3] + 2001:db8:40::/128 via fe80::aff:fe28:d802 on vlan216 [ospf1 22:58:08] * I (150/20) [10.40.217.0] + 2001:db8:40:2::/120 via fe80::aff:fe28:d802 on vlan216 [ospf1 22:58:08] * I (150/20) [10.40.217.0] + 2001:db8:40:3::/120 dev vlan3 [ospf1 22:57:41] * I (150/10) [10.40.217.1] + 2001:db8:40::3/128 via fe80::aff:fe28:d801 on vlan216 [ospf1 22:58:08] * I (150/20) [10.40.217.3] + 2001:db8:40:d910::/120 via fe80::aff:fe28:d801 on vlan216 [ospf1 22:58:08] * I (150/20) [10.40.217.3] + +As you can see, OSPF is running for IPv4 and IPv6, and has discovered the complete internal network of AS64080. + +Now make sure you can do the following, or answer the following questions: + * From H6, `traceroute -n` and `traceroute6 -n` to a few destinations in AS64080 to get acquainted with the network topology. + * Look at the BIRD logging. A fun way to follow the logging is to do `tail -F R*/rootfs/var/log/bird/*.log` from outside the containers, and then start all of them. + * Find out why `10.40.217.18` or `2001:db8:40:d910::2` on `R10` cannot be pinged from `R1`, while the route to `10.40.217.16/30` and `2001:db8:40:d910::/120` are actually present in the routing table of `R1` and `R3`. + +------------ + +### TODO: Zoom in on R3, R10 and add BGP configuration * add ebgp protocol diff --git a/bgp-intro/bgp-heythere.dia b/bgp-intro/bgp-heythere.dia index 4e0698a7781e8682911c7c5b2dc4f566aa9a3d08..f1c6a53194503ce49d2e190baff95c7a1b73b127 100644 GIT binary patch delta 1198 zcmV;f1X25?3A7227Jn-p;yfUshaPEHTFqgkk#=VfdqPfPf_I#lbqw9?VSoEp9^G_a z&k0B#- zct?`N2u37n)>>$5r8e`)A$88SdP*n%5zfg3gnuU5{Rp9#3PPet)>rlt zr6lvWilT(XbfNhq_#R2IO+u}ZD&+#fg+x2T7uwA#f3!)dW>V2}ME8b7)R&Ze?^bQV z<9S0=Z>X%RjW;4?Afoo0hDe8=?DK_8DV2gy65Zc?p-NGCQ%tMuJm_niY$uS4iHum% z!~*~D!WpLSSbtvjOtI@&hB>pI{L&xJe_uHMzHst=;aIxd2&p7tstM@}!6``!R3*1` zI8GW64k32TEIeHMiYX;d%zs6A`Wgd@?&lrXclSn;g~vB{C&K@m2C6jnSC$3>-J;(G zz)I~!9ikx?F0`*k)me4(KpF60!&@8i98xoVY8uWMTe@dDPTdbp7U@Fq{W^#QGe{C~ zdH^b6?td_pQHBdm2b$AipfOcMI}!9D3)C>}l+$<_2$?kNkvDc;j+8T3(}7Q{W$BhX zGclgIo;$M*>{(}EttpGvsvFE4rW?{AJ!OZXW25@uGr%&&*~(@NR7+LE7zVLooWBC1 zT4?u!NY~n8@Dph+<>i{&_#^u5^h<~y*W%lwPXPf0(NcOKt6yZmWtJN^Q zVSpAD3oZweZvCv#quO966`cjQ4<>tjF4%T-EhZdNXV7wWXMbS+RhdIh6fHHGE=I~PvMX}6dvEPC-6OT8 zl8zCqJ$yqVYoe5e^uy>cu|)w;V+z{|DM?l<7NC`oBiK5&p~GupnqyS7Ogzoncmzv} zOvu{v(0AvyF`rLt7h(y;^h3uD`;lv@E=GrZ(PmiIk5(jRd=K`MB-K!!)fSqom48D& zQ@*2FCb<3TbM{a59=HEY8kJION#oW^8v8uZYUuX}{~=)2Yr9ugQA2-Fe?Nr&S|k2Sem|7_igx}-$Ni}CPssh~ Me}0M`&M_eX096l8`v3p{ delta 1183 zcmV;Q1YrBL38e{;7JqAZi1Q$U8G58$X*GwDM%tY{>c963w+gzy9{%X&)a)A3{cE z@QNgf5sXOEtToqGO08$(@zc|j&UYzMLh77t^puYOBb<{l2!D;W#}Pt@3PPet)>rlt zr6lt=ilT(Xbgua%_!ddANkXlVD&+#fg+yDz=i1#ef3$I_W?a#8ME9CR)R&Ze>sD>R zGo21my{59RHeQRAfr#3z8zLQgvi}D%rBn(+N%VO4nJPu)T`{e)^F?3VWIKUWOk~88 zCKmXI7tSzs$A6k;&jfppWtgtD_e*~`|83#;+rr7Wg=6VrEu@l!sV1Z^1g9h^P?g-! z;W%kPIE2_Sv+!{3OQw`KG5;mu>1zxqy1(zZzPmS)EIht>D-s=Ao>-_>i{~r3tI)o? zlJ+f2na^q4>{+5Nrha!B_4U=s8T@7VnbA;a>r4@$M}Hma^iL7dhJ`de5oT4H4o$04 zY<$Y=b-C9%rs%3A>>PrV9hIf}UtUr*Di^q997F=ew)@tBPlW$B4OD6DuPhA&dO*Jm zfR)-o9ikx?&b2Q_)me4(KpF60!&__d5>l4#xrTEO@0RH}bw@O5qzlIP>nIZJAW6jO z0aA(c9)G*K>3HTncAz;Kh8j~vv=d<;vOo>fPC1PifsjeFBDu8ta;TiVnl9WE7wGp~ z6Jyt#daiBYsdWa{in3^>y1~q0x*-$NQ+60SHmVOk11uw*jcf)%wOTcdVGv8k`70o* zwRS&4nUJlTrNz5D}P(FW-tG7wqC4+WdDjp5q{LTS{c(D z2AEN?;CdkG#?NX!sttBh(OJ;@V7|wf;CmYg%XDA6cH@cr|e*j;GM25ilpJB}o_}(b_-aMP{9o?B2)3VUEuF3a~ZhMZCA(`$3 zzki4K3C0;!P7OSeVgivQ3z~$vL4(X}7quL>;P8Q=4%;YL*Qe8VOh2YHGY(t`>zy{} zX8#RZL4;(7MhFNc@&g}w`F5_^4NF_b;&LqR9J@dD)+W?5hQHEh)l#!qXUFhFH*FIl zYXVvEni0Imada1omMlQBmZuNRzAAIbiGPx%Cey`7`Av33u6FUQeWE+0R#eh^1ZxkU zkjR=SWg&ex`b%t30K}NWZbC|u<&p(xDdY$nx^3w2H#W_CRJ2U+1hnx8mKK?ivuC02 z&1_>f8`~bl5{l`&jw|*f_flPa4%wp3u&f^~NzC{T>?cX8p**L}HBT#texiI!vwuAB z@WtospXx_31 diff --git a/bgp-intro/bgp-heythere.png b/bgp-intro/bgp-heythere.png index 2fb69356e4d70c782f588570d63d42a83689dc53..ff0024a217cd03ad93d9c33ce6df0b5e4a054920 100644 GIT binary patch literal 15596 zcmbWeby$_%x9`0O1w>LB1Vp+Uq(Mqj>F!QJIt8Q~L`u55q@}yNySuyJ$@A>}yY@L} z|Mjlxl7*}V_r2yEbHsOiM&M@|F{D>`uOJWz(kF3YIS2$=0DK<_4-LL%zKCcAPcYwv zJ}JP%!_TeAE`$Ffd=*#y27$m0KmUWO4cODMM5rJqefM9qP#UK*Zge??&ik z0eS}T!RTmg^k`mIse)=%ev7*g8B$q=#ncHRGlN?_(K&|)u0y<6-|cHOs}Ge0P+^JT zy@|!GKTa8Ln@9)UsN$J3k?!7xQ zIlsf(<1J22B_<_Z&vP}V_x1G^6ckio;^%Lwp3hGC=hFZ6ZYF-O$e5j-owT&H%gf6l zzPtT}dPk_`FFBMs*maesi9T=gDilKm8;7>C?&8RdscB3YR_g#cy(Uc6K_t zP_rS*C^j1#n?!a?ba>cxu@^61NJ~qKM7Hb0dkY(`GLi zG&D335fLOLB=Bcc!L13RDwk;4+u4op*ctSN;&T*h)J7Q#7hfVEAgrvcOciSu6cr_L zSTBxdN%p*CjxS74_dY~u=$;rXm^@aKQ+;->7{h5=st~ao03e<+oxC^|Fj*fn8S#ne{ z5_#!DX*i5J0{Z&zRqr=qwcXs@;JuemwbMRNPfw3eOhjJrj2Za$eWT~78$M%S*q-e^ zXF8@4hTSp8z`$s4Z)beW%gM@m0S9MnXc!Y4TVGfA3KrT+02KpceREUvGJ#27R837y zQ*+^Tqp#^^6F*S6l|RVzZhwD&BtxvezCIdh+>Fh6;F>S`0xirmvAbIw+;q9q!>xU- z1~NqB5gP+TDxSGxWF*pJh(%h-iO1MJ1CiHy?0L6{K8`<|^k~O14}^w+LHn%UTn?0dSuce{PWNH#5R-T3f+s{CbD^nYzYxEBpL3g*Y8rNG+H&(8}B3xECkRbF0R zq+V@gXc&o_wN}PWQ&wMuUGuDva&qy z*NC9L69>%C&(F@zCL|<;^FKNbCG%!ikB^SZadUGQQ+>XpsJ%C~C|!>y-?OXX*|Po5 zXV%W(ZmbqYT}KdF8qig9-X4Bet3e+rzHWPy%KEN@W$~5A2^h#U=-VGuo&mO zRE3X;GVztTLv|{>TQ(U5JYdP`!=-(PVsst-b7AMKR7Wl zF*0J)_lr(8o!6V^!`Bynz(t)){P#2C^ZQ^XGW&DP^%XyVMny#>#(0JKO2o?QFaYg6 zEVQ8O0X8P4?~fk=!X)?a^uXmB1BKFbVnT%2sLpm~Rd8RwJk`|C7}?(3tg@IX|LBh# ziDJ`FBvdlRpi%P`98i}ALeGG>X4FjU)=E1@G3g*h8L1+r;Eq+W6ZxArTPaUdO^*}K z%C58;WqR;-@tO zwswASke-@4NbVsu+)6Ez)8*Xc^XG`r(1E|sXKL!|2;R9xMGK|6Z4vK2lA?bS5D@V2 z;4@rFa$Lma_xKwV6O)reakG*5!A2*EJe;jqWn@cefxqWdM|*prRs$C;trRU*3XgM? z{i}N#c9*YG`mHRi%EwfmQW@j1&9HvN4avj9!wikr>1AbKvgC?1>wo=?{6ZoJ9OqhR zXa;FE(@cafo zxw*MugYy*fv$L~nYHENNkb5~dzM&Tiv&ULnXwwk{rSI^%g|3)t*r(Zk0PhXgc_&ZH zQ315h>t{17>FVt@TWWM4NAQ3ZjJW;PZjCN4krh?Q?|MnAI`m#POD<1Jv4j#>d%4re zs{P(1+B~z`Cj58PO0~&C(XGvaL|t9oAI^0eh0jY83zme55p#PLZ9ZMrtGv^G!ANR5 z)S0#awiJQ`^ugZy%xQ7FP&7kxsc zipIi}Q_kme=XiEle`I82WLBvLR`@ezH$FjS=-2h`$oTkpu(xKFE^}3uVqpaD@Q=IY zJ32eFv$AZE#AFGqcgO%$Z9JI2sdfZI3rq}ul57`<@xjH+;=dv@=*Iye<;%>TL zMKt5G-2I=6qL3PV_<9H<*GOZkkVzLd#jHO=chVCbhY#js#Nq%7|NZjO5ksVSX9#X| zLV|?SsAB45i8lY&WdUsL*sDd?@ZydRGTDwN9KSS%30){gZ(@i2>6ML*jqU9kj|Z0| z88K9050A#CrY3NTV`Ha4OwSA3-2V3tc)+%Z_-m*3{igb=S<#u<&~h{fEby378&(iC zQ`uYl9SO+R8qh%+1(LRsXJ-N;98C*2GtZ6@SSm>2d|b$Q3I2HpZG@hVxa`Ykm-7Oo zXWe5_I9ytWhKAoZ`^(D8aG4FdtCu|b^jAPmfQ*cMerS0Kl8(pqXxZ-S65x^f9+nze-4O7p3gD1>ge=R2L9okSkjEki>kZ*`f&!D&a~yH4#JAkl<>wruYHWZuML z?TZmHq6Tp7^-8T0?BI^d%F65pRy=7FlWh=jIbAO;BwqISH`FFe= zvnH%T9eNTUe++_L&vAcR&>^Q?xPM=Abb7kRcqkbpUx~>c!l><8lCjXx(774;vv#s2 zQ+KzwT1_5F#%54ZP_Yc!w{2G#im1xZOs zd8-e1SG+ttQm$ka6ivsih_He`V`Jr!z{QXy_(E{F>?kz@f>-a3nuyrU#s?BPa4&d1 z?k_c^*ae!K!3s)&B(tb`F~6h)LVf4?i(v(;PW+7!Yoj^V8Gyj+a}2A3hHc5nThWncZUg z>t;VLKR>^ySn|6n>!ruXyQ4EHB#6V|e0*Z!-tKOlP78Fr6ual6oBYx&8J$r!4$f!> zs(m#Kytf@vNWB|~Vh>{=tpxYYQb)k&26i@%-UA2w`C%-h&BYu~OGznCdH;a2y1Tn8 z5{%{S?3~2!sYMbQ=dgmedcHF@I5-Hx0*^e*ckoE@xJ7{A;o*@>#Q~p!=I1UE+c!5i zH#_Sxk*^5e*-ZEEEmUkDk`a3oYkst|vr|*UQ>3M#i54dXE{HnD>|nN%iHT`k41A%G zO*XL0QBD}UYPec_Z(n6*ZXO*S?e6B5d$dHaQM0_am-zFi!7k}Ul6e5a8}i>E?t7Y9 zH$6Cj%12&)?Ahu(?yueNF5{8^xZRv$(kQXAu>rSwG+hRQY~-DMdPYWGC^f95wKzC+ zse(SQUcCYzv&w4W6{N-|W6KAW0WQ2hi+K>THY@eJkSQoA;Naj+m1L}~^RGK{Eh?;) zl$3OIQdMX#&(AgfI-P*@wB{ZPvWtu3jxqKQI7l1nHeU|6PFNImZAu5=*PvdMkh^DAgiO0Dc4?6dY{5)F^$ZEr$B78S}r~(tkhy z5BD^xYQP*Xl$NSZ+$|4zc3(-};{#DW2IHXS{Be%`PptJ9a|@RI8eEVp=@tyP%ZNw_ zRkYR>?(ge6Gc)rkYZRRG^24`#e=~94O2~w?D;yL`$BvGT>FeqB6BJ8|OG>iv?=J)o z!VkR6o%$GxrJzPR(aei9Z|SF3rj|P<=tHO$qT>`b2YW(E^<2beX0mc{5b?U$ zbw|7dHUl;jxGj(|nVOk_8l^K|u|Q5v?(%4<$?eAWbYHXB1riV%N(R5`gTj}Zg4lr) zQ;n0u`o-;P!O`<>ZYe4{I>mW29-qUiA8hhwfBaaEtTC(p+k`GfLQw9kuB|a>)(K;Q z^=i;<^8;pDTU#4{BnL7CkYmLQZli;Zb(y_U9C&HMDj=TSZ*}&4jn@%7-2>M*ea}LeVC7y&04U(yk+jD zda%>%MTLsq_p%8$CUh6R3!@H%!E9f=6V{_TnJH->9lymz#$JW+^zT%sSG3_53EsVFf@qAzR_3YUb6`-7hNEws`wu% zXYV=XoARkS>n2{CRpCJ4)&2dyAku(pC^wf9A0HniL~Z^k@^oXPqe4PLpipdWYde~+ z{irmUz!vP$uUM@^8qkYHQWQ1)E#>+g`NY%rhbPvG!>{l1nrA7?81Hx`VU6D)A_j(A zy#XJNf+jHk7qZJ-<5lx(*j)S1i_jbi0!2P*bn|B3y-GD>ug%`(UZk>Ay>|@qU8aPF zlf=+9=RXw1PbC! zOp4wEiYE(8%i3M4_lJjvAaOa@{|&?xkTc)7(J(RDfW)%i@#vRCR$nXwzr%iT(!rpTKii`wy)56%t#Ts4^ z(x@<^!x)0Yvq_hMnN-wpeIff&^Ecu@i_{2WAv61Qvu!J2`ZGrT+{F76s6ZwCwY zvA-*$qvhq~(BEH!@(|PkPuE@iAZI+en9?rMsI>)>gnG5rTRykzDQ(Y(9*PtYyAdJC zggnzkWA1?pOjV!6ET@ZR2D5)zW$zP{(x ze&tI-O8Uc`B~7W|EsxW242^QPR77OtNiR(aCB~~PxgC(VfWkcAV=P-5n_dI*Jt``S zNA@V|77HV^zz8%pVe^K|brqf!D<3;Y%MP-XuT|1_b8LYU{fAP#R6OGFb6Ku&&+F2y z-|vQ@$dP`u#Py*5K*|`Y0d@qOSjvZQonvEfYF<>&j^D1%1Vhc&sovb&fGx9SI@o()~A&+Af=q1+A1q6=daDzeuG+`EK-jqmp1$6 zpxFUK=T_jo`to|8kQEmK37COc?BPd!i$KDv;1Ui8f0kzl$v%VN~q2gRVd;@!fr1alT z@%jx;td)|WAXG-OTZr9qvlj>i5m(zSK5+j2{^pgxwU_M#Mnj-9WkMtm`UzrjxH)ku zWTd6p7U;XPSUV|y#l|vd{f&F~hyVeyB6!?a?4hfL95=iQqh9$A9r7o!c=1-!=c?#2)P_9Uf;t#rI^) zJ+3+bFts!;J`1LqYG_KH%@x|3^vPE2=xj!8U$XtlzmUg>7rL~8jVN_*a~*cQ&7Njv zc;;1CrzZQ?)2EbYp_Yn?OD=9!iVB-y@vqL#-qv6e3tqe{s=A%uPjAH*xVfT&p>J6`V${zWH6#26H>_=E{Oq$LP#2`p-=+!;yREP)YZ|e zmJ4Uel_9r0n*|}4oj850Bq@5WMx*f%p-+nrR|ZAPhQIK+?174o-FGqfaQ4>x%oB!& zOW?Sx|1ehL?4J8Q&6@|^618+I4jKnEX-xVV;Y;zBaY`4`k{7cv`oBSiO`{-gc%`J} z6Vx@iXVJ&D_=4P5pm`qu^e#3B7D|NwH9hC))^M7nwtLKN=Wmjxe5%IL%LsJVm#7Fj ze|>brRG9kOZZ{GgoCl&U~`8bi8CcQ8Sl(Z1s44n(Az@ajH%nh8Znhdi@=W zT`C=#zoW=|WRQ%Fa24B8VE?nPq~f7!^<`11Sa*ZrJ_ zgU6qQNZ;^MSG*WmHk_qON#@q1>5UT>7B=IT_Tdw<-Oh%|`5bZUr4cKVCT|Ahu*uKS4V^yI-q_^hdN=|a8xf99dQQo4V~b)+;f zMQ!f;^xB9#*lI}NpofZH?`sAx%$wREc$2NO_k(|=a8^7i#3)a#QId3UxRGe5mnQNj zS}C$L@A0M>@lDw6iavpb;`0uTIL0)ESa2C;ofaR=Fla}bDK}QSjpuSeEsJ~)hk(R5 ze4g%;!*7KwOo-iXy_m;uT0x!R4{B<1Y$SQ&h&qOkI{U17zQ$Lg<|QRA8{tE|)xh;^ zG#NK>%PH7Muol{^uZzX+2M)Y~ybK5!xx9Ws0u&VP5B%EUF>u+6)t>%{g3S}(_-^v7 zWpFOkTAwnSaF8LQ-nq7KzX(lFD!_cNy}CjEi$n*Bqae$tq0wDGx_c{JNj>q|e8@Gy zAwK6U&;YKT<=RCX=u@A*6Zd~Tybi(Xgx^4Rwb>QpQM=$u}N(J?PQlJ3M!2L{PK$b>3 zC`=1`XqroFVz^wH>b6|NPWEiBjkrRY%7Eo;EH3l~?S*%P@zd4rc2{Eo#)I44R321S zPN>Yj`iEj|@0B#-a)Ze?qLkNG<3nA_GKe0|M@xBUjpAw-e)=1;uvr(ra7_)hm~=Y4 zRJ}hhjW$~*86^tysO#b04aF@XKHGuKMkj;fuD@qIflcmg`Qb^l$x(Q+JDKy_xNiz8yNyeM&Wv$gSd5qSD&U8D+bWM{Nb z^%&Yg9I&r!7T1B4ZjGZLX3IX#jAms<&d8fl$e?Y zEnRPKKJU|qi`_zTucR@KS0?ud7fVX6v6xF+h7D}rdRqDEp@`wr8$G;z+Vr)}^VnwH zF(Xvo(VPBZsg%-lS;{uMX2$KJ3T8%-a`dBV`bClaK(vQ04hw-5B)H`>Z)aRm_UZin zIdD6^c9drQ?=b_#pZY(OY7MadvC^=2?z+VMMEpfDtYr^ zPc=di7g?gi-0SZ)H2}Ziq^{o2YRNJ^qefz(!}B5kUXV9qu~+VVpCv6)OYOf*eZg?$f=AES|=UQrSH`|^Ku6pG=%>o)E69=VdD4*7LNw%Z(v=npr61& zAOt?oEI=5ND57UBKBcL?*GGs((OA;x>v6l)7}_ybc5akH-ye->hxe8BW*zQ~j)Nv3ts`i7|muEXL>?|feJ zkO~V)(!>CH<)UW3rkseJd%8g6Z+ z{DTU;jgUL#6A7V%g6NP6P(mOP@GTPXNEL-u4=RSgJ7P26_B3dW_T}dExalUqm zDHqBrtod^4)F1#)QZ_8d(>ysVM2fB+BnW{4mb_StRy~Z1 zZ{Eg9*tK5FZE{|_%_s*pq>e(cy}r-bJP7n49b+;q)j$!UG~X}85UB#m^8G_kRH^Jb!!Tdj zkqU5+F5F0J8A?mo$s^-zmGhq0cdi4ijVI7iBjWe@hsR#+;Lo|^#up7w_O6T1X$7>1 zs|;6tMI>TnbIjn-6uI$nG2{huv>+xF3foiW|jlypHwNp+lxSJgm3x8njV(#96WpcBw;Phz^Zb9!aP zztR1buA(0|_QDZH(1oqQC-W%`>HaP_It%%Cf);Pkv2L=t@s9?~?JAq}@L_{AGH3{g zd9b};u}st_SC79A4MG!dWgLFkv^79CXe{EfbkB`sA521y=PZLg&h#20F)=WH{P4*&3MiZWxRjJ78uV%Tul4@IoxfoxZ?s`xcf5qfExVA*tFT}44!2BUd(s!_^5!%q zqCuo^J{W|=79^z^wpB2zGu_4Ghbw8q6bf6z)w!{AIGx>#6DjB9Y#WQ=tQ_7?o|pFc zymgd1Vdr-hbVbKejZaP{#KSYQwtm{L7y?~oYzW`O`Is*vwj3SO%QjFC0jh!BW* z*x1#kW8_`}5x;(k;#mN#l~LCl^qEdiC8VXZ@Dh;))l@2sq@A2PKXXH1-CUc>GK(+nR<(z;n~b+Z)+LqSm!pb? z;c>OPN8}WlsD3Y~kgk7EAKjBnuz7fh4Eb04TW4!f)zw|8{kHY^aO4R(V%OK#7Sp9^ zb#*SFR|;4QAg3tgDP(fZ!V$TBR#vVypQ7&+0ID1irpMo7f&Pfg`F0Yw!|mgN>MbQQb*Z{-ei18@D1#i0su1T}i}X9U@2m9b#`s@YrNMZGf`T&U5-;TdggPRkl-5=u(CvZLfDTEbb))mnC>iAV^mMk`dI|I)fu5vX zq!tq${XSBBdx3_A1_lPE#}XQnsz438#Gru;RM>w+Bo?Fonr~ZSGCBHhh4K`T@!0`= z)jBeQ1_7%kEm1J>tZV`%$v|nayE`B_nA>(89$4A7Ln0q&oRpcrZxbMi+y}M|#C^~x z`uVWDtm7*rc>8Um7c);m;`Z!cfibyue0=Ebm7hNa!qxzWicdj=6_cv3lbtC+BBXiP#HIAfS zbunI($%R}c?FQ`&Ny7tqm0zmxz8;4@(0?^vK=@>;GT=UG5v=Hu?XFsq1CIkb86no` zpgRKElu0o$idtHSySow-praZ4H|`($Y8EtqfiV0CWM==!hURti9&k_qXmv`61eq$) zj_uokG_wf{3bugd&2?oBrzkWqHV!A`O;D51pD=TDyz=&jRwAk!K45p>KJ8`%%IM7& z|5GjCX#xTQ#>W*nI5^B|fKLDYJA~Oa@-gCq=UXk{BS1G*1x_fUu@_Zr?_JpBdgY?{ zeTk5}2$}i#$0SkpFH7kxI7qNx@~kXIc8J)kP3&&5iW;@X%t%8*GIdOKbq!5*$+uN zFkEJXjGVYX9mMaXA+9(>l(e)O0qC*5ZZM|BVmzo(ZKbKII+MU=e*f?wjn8;V#VDE< zr15cmYisNZ`Piv7NG{LL_V$6w$jr>l!h&|q26?ZYdk2`4od>+A0S;g-K%eBr#l;2S zdO+i&JqVK~SC!@dgWENuslPG(zZxLVH{poJP;tt*>nSSZImJjuPvi=vk? zqEmXrtS+sTs5l72_z2M7i3NxuQ1G;{un=7;R29|lmEzlGba=#7IIB7vYX(!5))ti? zWjem-)ta0i4Z)m?u6l0lnxkam@v`CukQb$?7ARNmp1;&DXrYAlLKC-SA%do#u< zig^m4X>b7uC?M=Y>Fkc@0q6+u8BPxuQ>p_1d%C^389^FVm+Jt>X!0G7mJM5QVBpPJ z%9GSml+5bZR%~QsWNa*l+x77f|I^<;f6l`JB?m|(758nS>bdi@zV{!u795uVNwxU{ z;muEpETJ^wGpq>@0Ez$>lZux1{N&_jHJAZt@TcHp9uJYRvpdX`8`gvp3R1#CAHOx( z;x4U!Nd3qI^~dF-w7mIE+a~_R1=++!ha!q({+_kM)KY;twdZu<$WBUo>f7dp18JY7uQdUri3nKw6CCMIYwpKhl4Lv=8EhbG^3z04U zFYIo~zt|SI+_$SoD6(JK~6>%ip!E+?*?Gs9S26QN*_Nz zKOpFXj)TQqRZ+dWAo%&wdE;6}U2sheClK3#8cU~MWmnAr5uEF%2-tc5^c z$|r-JuLUv;SXfwiUm;&15D2*S+TpzfhN0E~0sHRVJCaEFjT-P*U&l4yGHd3#7&78? zJ9>nQW+W!g0oo7wEtjyz(>(p1OM}Nst8cx-!RX!vWtT6pxbe0a!vBKUh0^nys>sgk zP}=^7v7`GBV|S8E~|y!hp2Xps%i| z2o4HLN7fDq3=lpj8PU}gPN zT3T9G#zapaW`T-{X%7(67zxmZ!obGn__it4y9|sAbaZCt=Lv|2jt&kiceMa9gRSj0 zGCiFump56gss81Q4d{0O?+=uFU}J%BPBb-%Fq&x7$8&_8$6*Ac)%j^D(9w-aC%juoqCPQ$^~4oH92r09l89 zFyQX?uTRzxygyUNFvo}N%6<8=a(FmcnlWKE$3uVgFK-7cNQn^y1@n@XojvLT*g$Z2 zc(|!64NU=HEWS{{0jNw?R@OFN990;srLZt;IGZgOfcg@`^5!J68`N1h~!ie_SP>T{}5!gwwQ>=;HEOfCo?mhFjX)K-nCj^{MIZ722~K#RpI`SS%MZKrcSOfbdT} z49Gpe=75)D{`=(zdM}_$M^dmvZt;Eo8508lPB2Dc1n`q3k2|_>U;VDI51gFC^@(Fs zQg=K9e7D;f0DEEQ-~g<{Hvmzi2ewa5IRZp^JxAk$ml1=f*tQlH;(B$6^!oKraZ>Q> z4Gsqhc{9lVVV)Y`e&`n-NYt)MZPq%0htCJ_K4om*8+3GFOJJUY<@QtKYpaDive>>Q zr?t?gr-!4>E4DE{S(Z@IwT%r$03Q<(H94Pcg4L_~^9SUA++19n8yje_Es9HHLb_oE zuVdl80i19l$%*@m23le<(~5~Satx^)qS26BXU3Q#J7%^a%s?_ z#hRL&Ot>61VFe98;KA4SXDXhNdk<}vgELleSUmw=CtWXJ7N{oB zzuhL7rWC|$m0Vq1G#+jXC1_2(IHQ2DnKDC5#gC-XRiu>gQFR8&`kvK^qS zOqFBcGQ6vZf)Rw0o>Drm-Ai_N%>a^-@AUNO{#=}B0epqw?=iF>D!@DyVE(yM&dl@a zOWSdKdbk3^1a;15+3^>JJR6_m)~MUaPAwjR-77!OSo8u&^=ip8MK?!Ms4M^0k62t* zbbMiGxelt+^bkykoL^jI1%VR*!Iyw+9c^S(kQ7CL_(2Kf ziZ1sim^c8~0VfD>oScBtNzcm*Tue4=Q#6&)E@ro6uXj4p`}&nJ_6Z`u*S(U@@ZTBQ z0{$x(NqS{xjiB&wN3aHVcE7=nlr%lgR;I1tVuO!`yz6yg@-Gg@?D=?)d~RuJnZ#+M zCnq-w%B#BhvSe9fA%CE_LEfkgW&NiWDWvP^rZ9ucXa_$^^bEX%fGu%+B>yku`yW?f zPQ)B9mG;@L8arIDb{xhXcot_{9cXj7{|sZDa{rX%9p(U@hT;`@sYA1i3QTw}MywE~ zvOAnY9%ZZ(aui?+om5of02``6ty%9tH&m4rw&NNvv}=75XE~My##I0%&f>p^4pNfO zuK_`b9oIYyWgZ0zIa4buKA<%`^Hy?leAml9U;+kW@-Grss9J&Xs-w<+?-zr%Ox0FC z-1q5e6>nm8t9g^hc+sDdz@HX2G~ON7H$5C!r?_9LT3Q}Fn|VTl3qT5$vRK7ST)4j>jkO66Wk_t+huoV1!Q z)dh|cJ&=@`n3$hGr4XD`=dC2i&Tt}YLqmWrKF_`6OM)!`hD?Uu1A-4gR~ECiFtV6C zvOZ5_oBYb7#$3apP>KaRr(CRY)6X)bqOLBRz#16!LKReEfH&Aad^m1H$u^oRIO_Ns zsFk^AU6!!%jH^9($Qc2wbHlbaDM?d70b@@W7Zlk5@RA-|-x|8F6nVy+thhKl3QCSqgWZnY z*m9piIq*yXNCO2t1vz<8$LdUlF&L+b>;TLn8tng;;_V)8ZYrs&nwnufyUHgC9Xs(P z5R8GHe20R`RX<~Bx(Dpz$Nyw;bG%@BqDc!w(=bRfEnj+s)cT zo#yX;elPR4*VaHr2u5HE3JQ99ffgDN0DlTb2_pIJfcHat*uzx;eg`nI4Gj$f#5hcP zK&*j-fY~)+QBg2`6=hkh-9#VT2Sp5g9x<^1bxhQSS!KfB$j=dzd5{SEA>jl6xVE(g zH~&h}GRWv8*yU^O&y*B?fG)c5I%|IUf`*Tu7#BAU3OF^j-R0#{$0IF2X}P7nf|5pW znQhlE7E6r}4_8ZDOyJ{$5dW95!ey&mq?DN4FZqaiaB$G0_vzCo1B1+@q_>Jc`!+y! z1fmR}bk=3!fwBvBr@RG#yyVgeipc*%IcIZo z)+l7xVB}wmRKT+nr&4 zXMCJ?Pi52G=Zi?)BUY>`VJzh@dd)ibJBR!@fSzw}UxRs4a1)j@y@o!LDS|TE?~`i=i&6K^W;hFOeqbev@8Pa}DI(^{VHo irW~06D)D=s;1nN5Z|Qe`ae{ee$R`mQ;bI{j@Ba@8H=l$6 literal 15138 zcmbW81yq&Mw(mC~CEXwmQqtW>2#AEBBHhvr(rmh0K)PF`ySqfXySpVN-{PEe?>+C1 zH|}`vIR>J8f9!9qZ>{;C|M{DX;P(pBXeh)e5C{bAt&F5H1OkHzzNnC3!7D9u#2ern zoW1zlk4Q*J^Q($0;J?T=GHUh^2;#`o7fgNVb~*$?0eLGa_R%@zFx5@-%Zm)We4r*?DmfBF^im%9Izq%6iHwrSnBpd;4nj9Q^8szJ2!aO z!oz-{!0|1GUs!A#K#NsAvGbL*MvC#3Tc{1fL<*!{O`q@)OC~CDY$t^iD(ldqj;-$W z;4~Q=>E*d%Tf#>AE>?jpRVR@H>$8DL8)*2_`FRkQw+&O4wi{vUvl54nNrgIdzcT^) zbVi>}xUtu+baLo#m)IuBeKw=A{E$T`@cDZ=VcSv7ec5ML67ZAc-cO;wylUf6gong- zWl`VTSn&LqD}Cd%^lWfgx6(Gp;$4CY7B}?}&K7(-jgGSrgbLT=D)jX^VgN!mdwV(0 zb;C3CS|3t4NZXce66QtoFmiOKfk@3;8|!a%!X9!z^YiJ1!)GlNMDvQU{a5nWJ#_Wx zyIeY2{owYjF%`Bl|BA)qp)dOSG@cj)LU1Hw_9X`DogT$bryq-s>x6C!>ApmYbRY#h)1D9C)&sL*amf?B;d1j?xs35_kFTxuUF8gQPUcW{!UVj zT2w#}AvOdPr}L=;(EL_a9_5;wzuQugWb*7|3#M~ZG(}Tt_>AiK5hzIKr#B~(lMQLX zv4+&bE8%?C_B8Y(;oN>7F!cxnU{XwcZ7v5U0xCS+?B>?G zLxqKe`b-Z9FFj()GrHFW4@ouyhEw>!**;euB?xv#PGJ+X|Md4;G$1wRLJUM zSNn_8f^;!HlDD;JBIdYD>J^d@imXLm1NdW&yD-bi$1}5!8RVPe@0f3V+_Z1G?Wm`V zIart+=?emNiJJH-BJnYi(qve6Ry>paH`}*hkaWm1Lf=KQ1k$kHj*s=^XB$$B`&<>n_h5c}e;T@opwHW*ShCmsSx+(zz3Ju17rd?b z7xjck7q5fdDJ-clacLHXjp|jW49JlTXyIZH(+clTBkjpV$42g(w^jFd95AD4@zq*| z`BuMriuK9wz2~RTy^Ep7^bn(}ypX$!A+bJQcCW8qTEC|AL}B~+cOWDu=M$uiI3qhd z`+6Qu=SH3%LCHuE(u#~h^zaHf78{cMhEj?dVO5pJDq*m(=%oyP3HMchTlM(prkjp4 z)6w6@zmZ;EkUw;?xg2IvHMhcwKc7J$6_V~oA|9$%>$E{(V8y!bu>RCN$qJ^sTUr#Sq zzGG&w_`WppXkYkF<+w=5_C#ayjsUH%tBeZ8G5*s}GJ@Z9!my*{G!Wh1vO~m3kvRTb zYKjBH+s^&UE~~YZx(H*sbYah}#y!F1uPzHHBt>at(RL!@$g>82%l>%ju_0&TP&A+|17NQcxK+(&b6>sy%6wSiNTxB zS8ROFaqrypw-ub%bh@0IvAV-?4Q3GZWaRx`d_a#+Ku^_1aOJv`=FT_GTWNd!RxgJ`stX|@0dL_bSKu0`Q8qaE2 zNR4+fgJ1&02357yK546QtK_Ob$b@Na*?zzvpuFj}j)b1Y%ShpfL4Sqt#urr|(lIKe znpCGpb(y&v`1OcY(MNpee1+Nc=6g?1p758+gh{H2XRxE5s++CTW@aUm6LrCh*wVeC z+#JNoe7E)KE7}+fMp}|MkRwh#_-jZN;SGy=o)e#E3oIE`V}q8{s$FK#M~*6T77DL3&9)U=YW zwy|tphiUE~*3*lyZaUM6l$dZKUIcPGRmI!Y#jR;Uk}#R8+0+tru5R=T!rjV+S_cSL z%IvS>@xmP0<}=4pcu;@Nls>=crUD6r5!Rn@L;ob&s{?I8k^-SjgITxIYtT{gYNf~0 zQlk-lzX1bo3LA_xyVTmSz06Vm%w@21fai^V)Gy)YCZPp9<=~0l0SPMnftT3PNRm|1 zq@5OyzxB(jl8b38>&JE32;DMzAtpRNgaW8Lufo^_6T$;-rQDOU$z;Zn{NAy-(|neC zm9$Mk5>Yq6A(w};I0d6-8~)mc5<0>umxn1;Sv>C}K;&nDHBheihq}o6c!vk0fCkMw zgA&R##>t>ff>v=3dy4};&+{=mzfLT;wm)5M z)rvXjjx-*|cR?e5kkUAuECfN!u9NN0TGNN<<8;$=574X*wuvK{-$VrDmy^Abirq4WypZMj{UWda9>@~+6tDg{)U?cE{9q*>9N+tA~fT}jQTp>3R7 zwUz#=g$!C8NH#}8%nb)D3xcKwr)qpkcw7DQc?r`w= zl?#&yN83F0?+;1X^vN&CY4Fi58eM}jQA*?Mg?7r_J&Lr9?aevQCrrsTtt~7M53Hu2 zds^~|c2Oy520hm8U=}9x%}tL>`@ErF(dl`UX)3HgvU+<-4O^VKy~EmYYjn`k|AYH{ zC+s^}QL&cw0oP@f!%m~y?^IgOQr=j&x`7;7jQYsNj(3!y=IbXhZZKSZZwNn$ z4*wIKBYExeYh)bH?>S{%`$+xd)MQR=6%n(U@1#B=CxWnwTjZos)yx3|Ke;*ogYhmq zL+pccqWB)|w}#+c{b=#EE!vJI8hyn=`Zg`>T?VxCsBXjzQ{;|ZA}@sTSN#0^FJHb4 z#2`=OEmhQDr^ICO$1yXV#A&Ka%)tschAil-NHK zhh)t%RTL}(D@4x0HywiXC_N|%OkJ{QRgGgb=?IBW#^W*(hJd>JuPSvc% zc%HnV`!yTCn}UJ@6#AfH-TV?eI3zUG))&E7Z*QUy#h;3i(d_ZzUQ)l|`9ep-*Zr}v zu?;(ZD{pop#74(MSvk4$%gZ!wbNo|Q9y+@1xX;>ps0JBS+vpNe9#RD7NtELwBW1en zu%4cttgNMzMV~d8zNe&+*j1zoI?>Y5)HODW-k*FJqO6F-LPAfutZjOg#@A|707b{iibFDfc(Y-pG&)~Ge?$42ce(Qe+`-#0H; zJ&AR3aWS9znJI{ZfnjZBMf)N}*zFSBwz0ACISPutzW&L67|Y2)rO{x6%URx{)wWDe z&*kC#_}Ey9PV3UrQj5)M2i_|cOe3OB!nQs)G~av=9)j4U%&4TKo6}zM{R`J(l}70O z&DNGtMdRUotzw!`Vh|$aq%p;J4e;5RgT~P!$yw z@6LO|Uogg@KxQ<-=MAOsk55k%C=O#GQyUMZ5D7Y3sHze|=SD}p$v>;8a0IY>MPCsk zDBfDI&~r-|PnT#td-e3-6OHNr?*~EnYpQGK|+sji-A5xlx3wj!{ zjht>$Qqp&34Jj)bL=3VnoZqQ}wK+M4o4?}rr;6Xn$>k*H{x)aO4*I}DfQN^-5lkyh z6K29iEZVxP4cF@V2)z@*_`)}&dI^0XlvM2`-Y z3*K(?hO1+UsL09B_k8%fO>%^QNsxN}Va0^4zrP=72Z%q~n8Nb%(^RJ=hF7mTaegOp z?;kBT@+4bc>`jIl?eFh5H#N~C^ygoH?%wjTGY+8sc5ra;?HhK;m7kv<4xNH#gF|6< zwgHI0i;Ih4p)=HfU%=b6$ycRK%IfN7JjvX|;p)Xb$48jE2eh}h55%+5 zA)J%wp?=(G4rpH%$$s8*9J;d69}^rLjN-4qP-lC4b(}x%xgO4YcYp8e0%Se=oP zp*?_&k1y3Cy81q4T2~=eU=v;k-l)5iVAXEot7E4?h|;UO<`5MX<>Q-~p1wM)T_!tF#q12v zWZxx_ghE?JO_-RN9PI7wBc!{I12a!a5WH=$0($HdmXYBKZVG<>l#`Xk4(&FpZfI(9 zKi?Upik2xj1@{M)Ot9n{l{)TcT|)H!0D5q7*{sFDcji}&j1}{T;2{i)KHjx>+@4r_ zw|W#!HW>DQvz)I{D^?*G&8mYf;oCjl*@@~m1Pj>}CwjMvK@PoMr3l!7CnO(ImShmB zw^6Arrv&=ii(O>F^y^B_M`{TjZjBt`SRk;H8_l86%@A%D#ICWN)|EhyK+oiDG{kI-&jc{rkJWXLptEH@o?v_{<$_ z2Ve&xBO_lEPiAFN#mR1NZpI}hz7?7s92$DqO12IPi~ZnJ+HzwCVw;SN>^T9;!R~H5 z+t21^kIn!zYN@dI^td2dfWYzdZ+*BZ{g5XYJ+K)a9eu4EAnxJubhG=rJ0W4=&&BFr zc#==|LF!^)V9?gq1~OM`y?it|7eOj06;7P{o*tiB{k#iDF*Y_fO7!IwvvX!eWu=bm zZtmL{+J3_d>z2O(tP_x?Bm%fq5-<2{NY2e0@r-q7cuc5!!;%moN zl00W8vn$c}y0si~>HKkK)w0)&aj=aJIeB?TzZ2NIE;<7-#yuT@lzw20iw$+VJeUQl zmnQ6XBBD2##J%1di3nB4&FJU%(!%dB3YWhS3wR(#u_G3Fqbq3i6Ne+Vk7&R3^XNcX z*Vpv(7*B1BF)Y;1Ujqa4;LqILlG|}J$l7DA9XUBUK*CZ$fHpR|fx8(Gr#7l{3E-laC3 zP$ea$=!69NIN9v1tUrJL1ckX*(L3-XDwI}WhCJO3rk37c5o;!bXx}gU57B*`K#P(OZj7%UZ2a z4=1N9L~?gFs|7xPaV!FYTFZH!yAL({9t9{5FMUKN5u^)9C_OG`je#bB-~;Q^3cVLt zWUAFUnp<}~L`^yQiTIgStKKdb!{rRj@a!!3L$h|Na$$}2a>@9v$juJ*pI`4#zJC46 z7`Nw7pnW~R{6I_3nr=v98YX4%@#9AW0|PO!c95aX&CTU$#}he?-90>5wHo~N2aL+u{D`D#O}*J_gc(wENe~X&uk|)j;w;r2=8nhqiT&=p{?KTZ75cD#1;+M~$pa zC$Lb9YV|K1YHn_V!ttXfa`N)RPDcw(E@$ZEB253hHwp?$n#ZMD!|d*OK4;5q%%K3O z?57h}B~LS7!H=>}nL9<$iRDV!)2j8(JW~6`P&*MCf)4IXZLO&C_n3l@j2#h+R`LCY zU285JuT*}{G<@Vfs_WTvKx)`~@%l?r^$jdTgwur~Iq=uTnev4k_xD=9223_QJ5{lIzF$2kLB5q?DDCPw^xjM_McA`h?t>uYO4;~;KU ztSxEn*L%XRmOaUJpznr;=varriq!!5G3Z5Kqi$S$xSY2p=eOIKDK`M}+pN9q#lmGH zZfO%J`{+n3pL7l)aW&ubW;`8;_inaym)mslo5 zbdoy9!=%#EQW=_GgM-X0EJMS?+lleU95r0h5hTc{s9*uROKWRth7vjRTUs6_3O{Td zCm#y%o~H->YmUOg!qxL+V^FevE_xzwuPUm>L*li)Yd^ zGk3?GZwU7jE_;Zz^hL*~e2aWu!v&;4*ztf6>V9*+TUS>{D(LuLT)$C))uJ?ApnxaH zkR+2MU}9_xo1EMeJeQ%Np^lCYV3Q&u&_m?WTiwkfvw2biIEjHZ#D-`#I);1Vi=%}~ z6b#o|E$(e^=YM2;%1CU4eYji#uY4T#0=X^Xoc|y;*7ZjiHqX!H3GAv7jv5J34yUD=H-uaxOEUF5z8vuguDVg`gsI0?kfy|MRw5{T{qs zqFIlvIP6FYv9q&dLme0xSZ{spixhnNYy@(0f3^I$?fI}RP3|$Vv;+lq>HhYLTojrz zIsx2JlU`>)?z{MJ%V#}U%rAfy&d68+4{@vPH{FjGOZ{F(03$){UheP;GStbmPz87NT{d_HI^E{vlN_Kg}A)XkX-#gkoP1tTWH5hCladBA4#N_1ZFqOj@zKC0K6y-an8C>FKMk&IV zL|q)1HBn&a1??*eUrhY?RCE#s9^RAsD&+6)?971Amy!yYG|QdoQte`180E0Sk|0QD zQ{M^-@u~<$n^zEtWdemvJgd&p(Gd$1Q*6KC+16lDNlB05`uaNicQ6!CvZ<@9?--?e zh4K(`G+Qlo7?|5RedaG3&X3~&rzd^fFB_*D6z4`t?)CXbgJYZzq-Q61+8iK}WW>kCb9Zw93RR-!z zBkgTQ-?nB9YFr;w`xw;DFT3s+qrKoE5p+bg?y*1#*T$n>c=dZ${6|4S0*@u}UjZoa zEGaQDz@M0~5rV237)j%F52^CtPz{mCJNpKwhZ}q!W{sMrhnxL{?|&t`jp>M7zk_NJ zSed&jpq$jyzBBn5d3jQ~%IrtAzH|jeMad!_0#3UmfoI=)P6B8C($LcOEG~K+&Q*JR zd$+Z?JWp>{fn-!yf88C+1xX!ve`R{y>o*PJ20#u-rgxW!^qv=1RD81|O@}*JY~pxEc~XhCn=6hG@%mKbY9;8?)iRMPSc0dJYP}(7G0vv#qKsF888f`D7mX zRDtU9^76*U+mTEOFd$PdYJ3@Yc9eMs-g{JAff` z&O7ehVs1XF?w|xC3$US=>T{f_$@zlHz{F$$b|5HVpit<$c$SyiIH2_Vo}66tkugs8 zi;3c@zES9B(On+Oij`?f}LJR0cs*?zKG11BDP`y+iUOO zJH#?5iC`(cR_m{^y=^c}WCC6zK`z*UJif>91^<-4d2(J)mq55^BmiXl2X#xC?tDUV z6X5SB$_7lB$yg+~8m%9gvy8W*;OhU6_x}4`Mu5rtAK2di-+TYCjQ^bGKS#U$-zWQz z;s0~8{~(Gf6P+1H&)9|jIZ*}TZ<%BW>_RrqzG9rvE*sc?KA|UX>J>wb3i}_|{rfE_ z6DyH1Fg_Pe`jWoUu@T?!{ltHFpGBGYVbp{Rf=NauGUJWZgB&e5=dWID#KqEAx-Sw4 z>NimDw?D3Z2GB3qK$at4n$GLnHvlUv?&>NkIQaQpY}Qwi`7LbZHWX~c0*YU(uE$>= z)>~ot68LHo_V|2KQOV26ITuyvRr>Ua+jdRzt}ZJ}zkrL-4)kvOQdfL1+=)?7IqetU ziasLv>M$`dyp@-~xV(fOl=mJj)WboJTOS|3y?hrG3)snAl_{XIMrVDgP$0YjF90A1 zNL|OH(&okn$Z7k2XI%8XDSje5RADtE)eM z)SF$ayY(~O#RQ#>~&V_*IY94u4>J+t`?dgqrH>6G@Q&#(JdyvS9(LxzDBAhak7m z(+33yQ+{K|rxX%$pZclBYrRx8e`sOKr;GZ6cK{#3V20#rhSXsXbr~Pg69Hz46n#)F zoi?wYyV##z*G6&zft)Vn!hwYW!EAlSqXQ%YkW0b<{-$;ZCnq?s{Cs24!zXU}un#yY zZ}K3pp~c0;&c6VBIzM-~FDh2U-kF*A4LQHcx2@Loocbl?e+D}h3nlpfVV&+uh|W-Cd{e>0|OQE*JV1D z@O#SYJ9SZ$sh_7u&2;SKKbPHnA2qP4<9_O|QuK1Zx0OPOEL=*WOTyjOq6NTAr8gyl zyZP_c)Dlxujrc=tj%XU+U zn5eRt<*<_wa6X|((*_pOHLK0F9JjO{QvbJRhyho{ht$5sTZp< zi8$xW50h_`Sj_lgM-CV)87HsR+_ttzpguu=)n zqW5b6+JRIjo(UEYL^SAkIQsyiBqb?XRb3rzuhr+on)D#sJwX(9Z zIS{{2ZSXJn038C=GhmuKt9pc&k)C&OkDdXFc73MwS8O|PG6)jO6G*x<1LaHK_GmC{ zl+{<3O}dxrosU0TKZe=;P`%`cc4l9dtp_Q0&wf-bp6crA z3JF2Eb3T|U|Mck-;Vm|q6cc`^Y_0%+173byLN=q6YSPkyaVEXn=uSD9b~rl_mdM7T@Gg0 z@6KZsMWSVMpWsDX@3!oTT5d-SKuAEJZptZs{rdIZJacV_YN6M{s~R?$?(6t2K5mTj-A!ja?lYnj1EdZ>YS7BLI-HlTRngHA^?Yy#(WKed#m9nK6a6^E550`GiEFA&ozYKEJE3Ox>`vG~-h|6bM+m5UaFdjZCJ_)2)S12m zRsl*h5*(_cjD6+*J5;Lar)1lnXR24(L;0H`BQ}BxR__&TJ@!AK8EP)=tfZJlR;*qy z*rOU68UUIE=y4hkX#!SJRN4|^`-{hZWCEP&jky@g^XGJO2_TM{v4g=` zC{ipen7a+CwwyZM@v1Vlbxb47k?9jFXeZ z$K`<Ff8fc#ECuMnprSbLKyEaW+l{PSdPbUg$ZEiQ5NfNUg5jwcYE z`B7w+z~H{|;guT#nRMh|bqx&|3L2Um3>StZL@Bjridw%wiUepAAiHJfb+kL~r=Aut zMaqR-jEsz|tdV_v(kvYXb#2Zj>hx25enfl=Sy=xp>(9xBC*>talvVxV95Enm* zx8j??f?b8zbOkQDj+jMwSDHc-Ek5m>8nXmpPY>#Z+T9GN8Ay4S^s>v#%lgo3hZ9@_ zx`RFGNgsHs{s-vk{>RbD>G8_*kr%qo$HQ~ke6>Vf^2C5a`SyVx7wrD|8cT!UL#u25 zr@oIH{?hJ2{J1yOCen( zTu=4?2tXzK2Ua^wxTM~^;pX9~z&pIT*dHAo1w;%a5C9#3_rrWIf7drW?0GiGi@0!b zj0ge_cnT;_0x0yN37T8~uV|=0V1l3<CTq!!6$3%u2#9puqZ3q)h07@!wc@|8daFRmM6luAD#QNDNbbE@$*qHr85oSK_?# zaoKt~vVQ>*TMB3Z--})UJ=>1?_HBpN)zDtAS{>j`}TWkg=TAYb=*%}6BCo5prDLxu+P-XbYTMY zZB#foIIx=TxbR4Nd=1Y#m+v_AyMkK24FCGY$ihOa@Z!Y_Jd`)4rVK2o zwASTa^qX`#8-4E-{?3_~uD&}5{g%*>5YYHPr5t>6ife0*2Qy+A-}(l&^g;i$H-dDX zWe!-MFzY|gz%DX;$a6pKCJ4i;u-p6vat;w{z|_>!;RsopZ=fY){N)Q4FAv*Tvmbx} z&*0%fqkhk!0a!Xj$VgagI$vS?Q`g2sN_-(uBFOYVq3Y=}8ox*B4~LqjjaaaEL5~77 zIl*#)&M0st24RShAb!-@=ZoDS?SK<2Zp?G5oq-^3!6^j}4vrHiLbi^&oOB7vks==m zB~l>kF(`rn)i#uqLrrJ)415X5G1!;J$x##m_$4B{~nY!~QoG|&?l~5(<$`NA)A2%oyJ?Wg&cV7w=8^ONq5lE}pbygUi zlp=aKDP>y5IO#U8g_yQ6qez6DZ9q~5$sQcB*q<&nPARsn+bZ3oq}bqscW75ERl2Zz z410L5srkEgON&%mbf>VW2+j*+Y2?8^+NV!D|M4|5NU@I6ff~33+H9|l#^aV3AOu`o z>iZ2F>^5apRcAn-0Jv4Hv(FcpBb!_f?HK6=plt)1H?CiKy*4&Cv9Qp;g6O^}^{48h zv+#-0u4chKMV8W#?<{!H|Ld1JNJ~KB0KXOSxN%r}`xmssK!fca`Y|w*VMat+_LBb~ zp?#)=&qPU-un>YD<4BTK-}em-LBVkV01flr)5F5Sfld=J-f4-6yQ{0LLo;C&?Rsb~*v1oW?WUp$?OdNB z9C6ff68F)dCk!h#RNlRVmTz^cL6_?k`SQd)NuC#=x;L83O)mE8>clKZ%T=c1K(v4c zffd3a6~M*A`=q0z$UCr=l>Z};&nR|$WE^nzGX3rl0D3X=!ASzpDFIY|V%NdC_1@9U zjImsejvpE_6HwAzSW~Skz>}+KYb!WPJGSp6398Hbfo+zX z6?6`^{rk(|HdP+1%(|7Ca$mk&>x*{PVF}W}eLWkGdfD6t=zW6(Dca|#l%8ChT>#qp zO*PSS0&Pvf3zPqnkt545Pp#dMcmEGm@!!ay>whvsHnxG=K}WXPcKtvEoCJ%ETCqsd zpM>ST+Sfe*apjq5!a86Tw6%L$}mcpXiI zWJ`A9OmWSpNg49mrhP>BfRHO8BMWY5cV!%bZ3a@2F#pL@JtDHiHmMl;t&x4{0}aPc zo6#2qx(`jv>DtsN?}PM=Aitk`V;!;4A<>w01rVZ=nISuRr3^0O$7e-e~6({z0|GOblWbUXE!>Srp?0aK^JLyt`!(zg#9q;Ym#4 z&&|#zh)H`31G~xvwPX`@Y`3LYDhDE`f-mV@_1sAXvzz+h zcUNu|21ZzX3{PBzenw)EV8f0gN`6JKc*C92vK;^0T`+|jqIDJ1;`-%cy&oj=i__Cg z8onZ)yZf~5X=Ys`PuEVd1d<1H+$OdxRu?QJF`1TTy0U6Rr9cgL%-d_alE>D}G)s

GUH)aN8)&CdaecjbMLbfB(~7i(Qz)lwCNl zBZbrctonc=^T)gM176WwdhI#XJgRC9J^LzRoj)BFbpa70Z{VoBwzF0m$yr4kZBoio zko;_D@RKd4SJxlE3*V08`$ta=(-*bgI;DTl7BKy^0?*_KyHYH!wQX?AogAfHtDz=k3X(ip|g$F^Mnc= zYUZCyzQ7#p(U`UomLS3FcO9r{m^?WZ9&R?<(O0wiEl;je_^e;omeBE1Wjrn<)N2-o zqObR?vGunsdep^BSa=^^j761(#hm`fwUM3Z(IUDZRaQ&ARU@YUEUh~P7^F8_Z?+H& zDrZaLJd7JA*G3P=@dTfB6qwVy`5OmP3&0*(ofu-$xat{O)!upN@Eh5O`Js91ZfBAO zgni6Q_{Om$%C{jxTXfj*Fp$l|%@~yy27x>1X-4cluJSxi9<%zoZ~r=M(5UAbQdB!! z^TXYwM&6bnWMUT$oZ%VrzG(OFwqO)|q=sC>2M)@FH8X_^O&|RYRhlsLp`|`VynQ9M zf`{QjoPf1LioRs=aDk#~!Si9-cYhjc^_iD%r-Tc(J$)(t{A-PwtUC9#?L^;9pYCH7 zL?_BEDA(=VQ-wJ#6n&W(V`pBSHXTz4AGeHd)4nPQ`|1Y`GQkJ|G3)g#if?EF_q z1mZKA!u;=E?$VL;(E%%(a+f+98aM3&I z@0!@k=G#SH4=`f|wYO!4ma2XF&vD!-Ud4m(;W^)PJOWvDPFKO9}Ss z`DiQOjDI0HpvUYaxBb-@)gGY-2||5;L&c2RaT-L|8-V7B3fI;Zof#?p3Q-WH>qNSV zZOIz?XQv%KTPKVhi+G><1>VR2qbYpWW6*kB1;Mz!QDivjfy_-`-A+_ucE?$MCP55k ziZ?ujBfBY=Q_7!F`08HOpd2j`F;qXAp7(FGv(DeG#B%+rPNEKmyFCAiWXnb~!H6Xb z0lWI4qd&aKF$Nvmbdd_@Rm{$Yd<#{tQSl1aR@2E76wTyvtL2wJPF<>M9`QGK$*15G zBx2(bZ!@b2i^%N-II4^D;TctXXwnsrWs zw`W~xQ2wC3WOZrdzf;&{qe$e+7;J-lQxR%c+wJ)0$fJ04&Zy$+`Aj48l-mtiBPpEM z6pKV;w-J{{m{HNJ8K>IM>mM@FNDxVsLdiYa%cytY*J#8UkuOhU-!8f`@sQVdX|SAr zuV?5w32JR*Z1ec&ML_I8sTtM6MJOfU##DTh)`;O6rs5_YS=}3vXqkWqCy3yPiUSiQ zNyXdNMHO8ucW^{|`AG&A&q~&xt7jNz5l0FY??Kc`hy*uXbb=22mMi4#8wJS{ab2JP E1>p}&X#fBK diff --git a/bgp-intro/lxc/H19/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/H19/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H19/rootfs/etc/bird/bird.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H19/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/H19/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H19/rootfs/etc/bird/bird6.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H19/rootfs/etc/network/interfaces b/bgp-intro/lxc/H19/rootfs/etc/network/interfaces new file mode 100644 index 0000000..74e3c98 --- /dev/null +++ b/bgp-intro/lxc/H19/rootfs/etc/network/interfaces @@ -0,0 +1,14 @@ +auto lo +iface lo inet loopback + +auto vlan48 +iface vlan48 inet manual + up ip link set up dev vlan48 + up ip addr add 10.40.52.19/21 brd + dev vlan48 + up ip addr add 2001:db8:10:30::413/117 dev vlan48 + up ip route add default via 10.40.48.1 dev vlan48 + up ip route add default via 2001:db8:10:30::1 dev vlan48 + down ip route -6 del default + down ip addr del 2001:db8:10:30::413/117 dev vlan48 + down ip addr del 10.40.52.19/21 dev vlan48 + down up link set down dev vlan48 diff --git a/bgp-intro/lxc/H34/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/H34/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H34/rootfs/etc/bird/bird.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H34/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/H34/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H34/rootfs/etc/bird/bird6.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H34/rootfs/etc/network/interfaces b/bgp-intro/lxc/H34/rootfs/etc/network/interfaces new file mode 100644 index 0000000..166a8db --- /dev/null +++ b/bgp-intro/lxc/H34/rootfs/etc/network/interfaces @@ -0,0 +1,14 @@ +auto lo +iface lo inet loopback + +auto vlan36 +iface vlan36 inet manual + up ip link set up dev vlan36 + up ip addr add 10.40.36.34/24 brd + dev vlan36 + up ip addr add 2001:db8:10:24::22/120 dev vlan36 + up ip route add default via 10.40.36.1 dev vlan36 + up ip route add default via 2001:db8:10:24::1 dev vlan36 + down ip route -6 del default + down ip addr del 2001:db8:10:24::22/120 dev vlan36 + down ip addr del 10.40.36.34/24 dev vlan36 + down up link set down dev vlan36 diff --git a/bgp-intro/lxc/H6/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/H6/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H6/rootfs/etc/bird/bird.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H6/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/H6/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H6/rootfs/etc/bird/bird6.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H6/rootfs/etc/network/interfaces b/bgp-intro/lxc/H6/rootfs/etc/network/interfaces new file mode 100644 index 0000000..d0f6dd7 --- /dev/null +++ b/bgp-intro/lxc/H6/rootfs/etc/network/interfaces @@ -0,0 +1,14 @@ +auto lo +iface lo inet loopback + +auto vlan2 +iface vlan2 inet manual + up ip link set up dev vlan2 + up ip addr add 10.40.2.6/24 brd + dev vlan2 + up ip addr add 2001:db8:40:2::6/120 dev vlan2 + up ip route add default via 10.40.2.1 dev vlan2 + up ip route add default via 2001:db8:40:2::1 dev vlan2 + down ip route -6 del default + down ip addr del 2001:db8:40:2::6/120 dev vlan2 + down ip addr del 10.40.2.6/24 dev vlan2 + down up link set down dev vlan2 diff --git a/bgp-intro/lxc/H7/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/H7/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H7/rootfs/etc/bird/bird.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H7/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/H7/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/bgp-intro/lxc/H7/rootfs/etc/bird/bird6.conf @@ -0,0 +1 @@ + diff --git a/bgp-intro/lxc/H7/rootfs/etc/network/interfaces b/bgp-intro/lxc/H7/rootfs/etc/network/interfaces new file mode 100644 index 0000000..307fed1 --- /dev/null +++ b/bgp-intro/lxc/H7/rootfs/etc/network/interfaces @@ -0,0 +1,14 @@ +auto lo +iface lo inet loopback + +auto vlan3 +iface vlan3 inet manual + up ip link set up dev vlan3 + up ip addr add 10.40.3.7/24 brd + dev vlan3 + up ip addr add 2001:db8:40:3::7/120 dev vlan3 + up ip route add default via 10.40.3.1 dev vlan3 + up ip route add default via 2001:db8:40:3::1 dev vlan3 + down ip route -6 del default + down ip addr del 2001:db8:40:3::7/120 dev vlan3 + down ip addr del 10.40.3.7/24 dev vlan3 + down up link set down dev vlan3 diff --git a/bgp-intro/lxc/R0/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R0/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..4df2e3b --- /dev/null +++ b/bgp-intro/lxc/R0/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.217.0; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan216" { + }; + interface "vlan2" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R0/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R0/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..2480a21 --- /dev/null +++ b/bgp-intro/lxc/R0/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.217.0; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:40::/128; + interface "vlan216" { + }; + interface "vlan2" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R0/rootfs/etc/network/interfaces b/bgp-intro/lxc/R0/rootfs/etc/network/interfaces new file mode 100644 index 0000000..5e322c2 --- /dev/null +++ b/bgp-intro/lxc/R0/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.217.0/32 dev lo + up ip addr add 2001:db8:40:: dev lo + down ip addr del 2001:db8:40:: dev lo + down ip addr del 10.40.217.0/32 dev lo + +auto vlan2 +iface vlan2 inet manual + up ip link set up dev vlan2 + up ip addr add 10.40.2.1/24 brd + dev vlan2 + up ip addr add 2001:db8:40:2::1/120 dev vlan2 + down ip addr del 2001:db8:40:2::1/120 dev vlan2 + down ip addr del 10.40.2.1/24 dev vlan2 + down up link set down dev vlan2 + +auto vlan216 +iface vlan216 inet manual + up ip link set up dev vlan216 + up ip addr add 10.40.216.2/28 brd + dev vlan216 + up ip addr add 2001:db8:40:d8::2/120 dev vlan216 + down ip addr del 2001:db8:40:d8::2/120 dev vlan216 + down ip addr del 10.40.216.2/28 dev vlan216 + down up link set down dev vlan216 diff --git a/bgp-intro/lxc/R1/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R1/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..97f6810 --- /dev/null +++ b/bgp-intro/lxc/R1/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.217.1; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan216" { + }; + interface "vlan3" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R1/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R1/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..e73f498 --- /dev/null +++ b/bgp-intro/lxc/R1/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.217.1; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:40::1/128; + interface "vlan216" { + }; + interface "vlan3" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R1/rootfs/etc/network/interfaces b/bgp-intro/lxc/R1/rootfs/etc/network/interfaces new file mode 100644 index 0000000..c91200d --- /dev/null +++ b/bgp-intro/lxc/R1/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.217.1/32 dev lo + up ip addr add 2001:db8:40::1 dev lo + down ip addr del 2001:db8:40::1 dev lo + down ip addr del 10.40.217.1/32 dev lo + +auto vlan3 +iface vlan3 inet manual + up ip link set up dev vlan3 + up ip addr add 10.40.3.1/24 brd + dev vlan3 + up ip addr add 2001:db8:40:3::1/120 dev vlan3 + down ip addr del 2001:db8:40:3::1/120 dev vlan3 + down ip addr del 10.40.3.1/24 dev vlan3 + down up link set down dev vlan3 + +auto vlan216 +iface vlan216 inet manual + up ip link set up dev vlan216 + up ip addr add 10.40.216.3/28 brd + dev vlan216 + up ip addr add 2001:db8:40:d8::3/120 dev vlan216 + down ip addr del 2001:db8:40:d8::3/120 dev vlan216 + down ip addr del 10.40.216.3/28 dev vlan216 + down up link set down dev vlan216 diff --git a/bgp-intro/lxc/R10/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R10/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..de984ad --- /dev/null +++ b/bgp-intro/lxc/R10/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.32.10; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan33" { + }; + interface "vlan217" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R10/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R10/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..61da4a1 --- /dev/null +++ b/bgp-intro/lxc/R10/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.32.10; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:10:6::a/128; + interface "vlan33" { + }; + interface "vlan217" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R10/rootfs/etc/network/interfaces b/bgp-intro/lxc/R10/rootfs/etc/network/interfaces new file mode 100644 index 0000000..1b6078a --- /dev/null +++ b/bgp-intro/lxc/R10/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.32.10/32 dev lo + up ip addr add 2001:db8:10:6::a dev lo + down ip addr del 2001:db8:10:6::a dev lo + down ip addr del 10.40.32.10/32 dev lo + +auto vlan33 +iface vlan33 inet manual + up ip link set up dev vlan33 + up ip addr add 10.40.33.1/26 brd + dev vlan33 + up ip addr add 2001:db8:10:21::1/120 dev vlan33 + down ip addr del 2001:db8:10:21::1/120 dev vlan33 + down ip addr del 10.40.33.1/26 dev vlan33 + down up link set down dev vlan33 + +auto vlan217 +iface vlan217 inet manual + up ip link set up dev vlan217 + up ip addr add 10.40.217.18/30 brd + dev vlan217 + up ip addr add 2001:db8:40:d910::2/120 dev vlan217 + down ip addr del 2001:db8:40:d910::2/120 dev vlan217 + down ip addr del 10.40.217.18/30 dev vlan217 + down up link set down dev vlan217 diff --git a/bgp-intro/lxc/R11/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R11/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..e4d4b1d --- /dev/null +++ b/bgp-intro/lxc/R11/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.32.11; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan33" { + }; + interface "vlan48" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R11/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R11/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..be6ee35 --- /dev/null +++ b/bgp-intro/lxc/R11/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.32.11; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:10:6::b/128; + interface "vlan33" { + }; + interface "vlan48" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R11/rootfs/etc/network/interfaces b/bgp-intro/lxc/R11/rootfs/etc/network/interfaces new file mode 100644 index 0000000..49508a2 --- /dev/null +++ b/bgp-intro/lxc/R11/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.32.11/32 dev lo + up ip addr add 2001:db8:10:6::b dev lo + down ip addr del 2001:db8:10:6::b dev lo + down ip addr del 10.40.32.11/32 dev lo + +auto vlan48 +iface vlan48 inet manual + up ip link set up dev vlan48 + up ip addr add 10.40.48.1/21 brd + dev vlan48 + up ip addr add 2001:db8:10:30::1/117 dev vlan48 + down ip addr del 2001:db8:10:30::1/117 dev vlan48 + down ip addr del 10.40.48.1/21 dev vlan48 + down up link set down dev vlan48 + +auto vlan33 +iface vlan33 inet manual + up ip link set up dev vlan33 + up ip addr add 10.40.33.2/26 brd + dev vlan33 + up ip addr add 2001:db8:10:21::2/120 dev vlan33 + down ip addr del 2001:db8:10:21::2/120 dev vlan33 + down ip addr del 10.40.33.2/26 dev vlan33 + down up link set down dev vlan33 diff --git a/bgp-intro/lxc/R12/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R12/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..4294fa3 --- /dev/null +++ b/bgp-intro/lxc/R12/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.32.12; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan33" { + }; + interface "vlan36" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R12/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R12/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..f324270 --- /dev/null +++ b/bgp-intro/lxc/R12/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.32.12; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:10:6::c/128; + interface "vlan33" { + }; + interface "vlan36" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R12/rootfs/etc/network/interfaces b/bgp-intro/lxc/R12/rootfs/etc/network/interfaces new file mode 100644 index 0000000..6c58ccf --- /dev/null +++ b/bgp-intro/lxc/R12/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.32.12/32 dev lo + up ip addr add 2001:db8:10:6::c dev lo + down ip addr del 2001:db8:10:6::c dev lo + down ip addr del 10.40.32.12/32 dev lo + +auto vlan36 +iface vlan36 inet manual + up ip link set up dev vlan36 + up ip addr add 10.40.36.1/24 brd + dev vlan36 + up ip addr add 2001:db8:10:24::1/120 dev vlan36 + down ip addr del 2001:db8:10:24::1/120 dev vlan36 + down ip addr del 10.40.36.1/24 dev vlan36 + down up link set down dev vlan36 + +auto vlan33 +iface vlan33 inet manual + up ip link set up dev vlan33 + up ip addr add 10.40.33.3/26 brd + dev vlan33 + up ip addr add 2001:db8:10:21::3/120 dev vlan33 + down ip addr del 2001:db8:10:21::3/120 dev vlan33 + down ip addr del 10.40.33.3/26 dev vlan33 + down up link set down dev vlan33 diff --git a/bgp-intro/lxc/R3/rootfs/etc/bird/bird.conf b/bgp-intro/lxc/R3/rootfs/etc/bird/bird.conf new file mode 100644 index 0000000..31320b2 --- /dev/null +++ b/bgp-intro/lxc/R3/rootfs/etc/bird/bird.conf @@ -0,0 +1,26 @@ +router id 10.40.217.3; + +log "/var/log/bird/bird.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + interface "lo" { + stub; + }; + interface "vlan216" { + }; + interface "vlan217" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R3/rootfs/etc/bird/bird6.conf b/bgp-intro/lxc/R3/rootfs/etc/bird/bird6.conf new file mode 100644 index 0000000..17da9d9 --- /dev/null +++ b/bgp-intro/lxc/R3/rootfs/etc/bird/bird6.conf @@ -0,0 +1,25 @@ +router id 10.40.217.3; + +log "/var/log/bird/bird6.log" all; +debug protocols { states, routes, filters, interfaces } + +protocol kernel { + import none; + export all; +} + +protocol device { + # defaults... +} + +protocol ospf { + area 0 { + # BIRD ignores the IPv6 lo because it has no link local address + stubnet 2001:db8:40::3/128; + interface "vlan216" { + }; + interface "vlan217" { + stub; + }; + }; +} diff --git a/bgp-intro/lxc/R3/rootfs/etc/network/interfaces b/bgp-intro/lxc/R3/rootfs/etc/network/interfaces new file mode 100644 index 0000000..1815a6d --- /dev/null +++ b/bgp-intro/lxc/R3/rootfs/etc/network/interfaces @@ -0,0 +1,24 @@ +auto lo +iface lo inet loopback + up ip addr add 10.40.217.3/32 dev lo + up ip addr add 2001:db8:40::3 dev lo + down ip addr del 2001:db8:40::3 dev lo + down ip addr del 10.40.217.3/32 dev lo + +auto vlan216 +iface vlan216 inet manual + up ip link set up dev vlan216 + up ip addr add 10.40.216.1/28 brd + dev vlan216 + up ip addr add 2001:db8:40:d8::1/120 dev vlan216 + down ip addr del 2001:db8:40:d8::1/120 dev vlan216 + down ip addr del 10.40.216.1/28 dev vlan216 + down up link set down dev vlan216 + +auto vlan217 +iface vlan217 inet manual + up ip link set up dev vlan217 + up ip addr add 10.40.217.17/30 brd + dev vlan217 + up ip addr add 2001:db8:40:d910::1/120 dev vlan217 + down ip addr del 2001:db8:40:d910::1/120 dev vlan217 + down ip addr del 10.40.217.17/30 dev vlan217 + down up link set down dev vlan217 diff --git a/bgp-intro/lxc/fixnetwork.sh b/bgp-intro/lxc/fixnetwork.sh new file mode 100644 index 0000000..96d02bb --- /dev/null +++ b/bgp-intro/lxc/fixnetwork.sh @@ -0,0 +1,161 @@ +#!/bin/sh + +sed -i '/lxc.network/d' R*/config H*/config + +cat <> H6/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan2 +lxc.network.veth.pair = h6.2 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:02:06 +EOF + +cat <> R0/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan216 +lxc.network.veth.pair = r0.216 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:d8:02 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan2 +lxc.network.veth.pair = r0.2 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:02:01 +EOF + +cat <> H7/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan3 +lxc.network.veth.pair = h7.3 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:03:07 +EOF + +cat <> R1/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan216 +lxc.network.veth.pair = r1.216 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:d8:03 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan3 +lxc.network.veth.pair = r1.3 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:03:01 +EOF + +cat <> R3/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan216 +lxc.network.veth.pair = r3.216 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:d8:01 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan217 +lxc.network.veth.pair = r3.217 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:d9:10 +EOF + +cat <> R10/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan33 +lxc.network.veth.pair = r10.33 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:21:01 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan217 +lxc.network.veth.pair = r10.217 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:d9:11 +EOF + +cat <> R11/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan33 +lxc.network.veth.pair = r11.33 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:21:02 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan48 +lxc.network.veth.pair = r11.48 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:30:01 +EOF + +cat <> H19/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan48 +lxc.network.veth.pair = h19.48 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:34:13 +EOF + +cat <> R12/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan33 +lxc.network.veth.pair = r12.33 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:21:03 + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan36 +lxc.network.veth.pair = r12.36 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:24:01 +EOF + +cat <> H34/config + +lxc.network.type = veth +lxc.network.flags = up +lxc.network.name = vlan36 +lxc.network.veth.pair = h34.36 +lxc.network.script.up = /etc/lxc/lxc-openvswitch +lxc.network.script.down = /etc/lxc/lxc-openvswitch +lxc.network.hwaddr = 02:00:0a:28:24:22 +EOF