| 83 | return |
| 84 | |
| 85 | def _process_peers(self): |
| 86 | for as_number in self.peers.keys(): |
| 87 | self.frr_conf.add("router bgp {}".format(as_number)) |
| 88 | self.frr_conf.add(" bgp router-id {}".format(self.public_ip)) |
| 89 | if self.peers[as_number]['ip6_peers']: |
| 90 | self.frr_conf.add(" bgp default ipv6-unicast") |
| 91 | for ip4_peer in self.peers[as_number]['ip4_peers']: |
| 92 | self.frr_conf.add(" neighbor {} remote-as {}".format(ip4_peer['ip4_address'], ip4_peer['peer_as_number'])) |
| 93 | if 'peer_password' in ip4_peer: |
| 94 | self.frr_conf.add(" neighbor {} password {}".format(ip4_peer['ip4_address'], ip4_peer['peer_password'])) |
| 95 | if 'details' in ip4_peer: |
| 96 | if 'EBGP_MultiHop' in ip4_peer['details']: |
| 97 | self.frr_conf.add(" neighbor {} ebgp-multihop {}".format(ip4_peer['ip4_address'], ip4_peer['details']['EBGP_MultiHop'])) |
| 98 | for ip6_peer in self.peers[as_number]['ip6_peers']: |
| 99 | self.frr_conf.add(" neighbor {} remote-as {}".format(ip6_peer['ip6_address'], ip6_peer['peer_as_number'])) |
| 100 | if 'peer_password' in ip6_peer: |
| 101 | self.frr_conf.add(" neighbor {} password {}".format(ip6_peer['ip6_address'], ip6_peer['peer_password'])) |
| 102 | if 'details' in ip6_peer: |
| 103 | if 'EBGP_MultiHop' in ip6_peer['details']: |
| 104 | self.frr_conf.add(" neighbor {} ebgp-multihop {}".format(ip6_peer['ip6_address'], ip6_peer['details']['EBGP_MultiHop'])) |
| 105 | if self.peers[as_number]['ip4_peers']: |
| 106 | self.frr_conf.add(" address-family ipv4 unicast") |
| 107 | ip4_cidrs = set({ip4_peer['guest_ip4_cidr'] for ip4_peer in self.peers[as_number]['ip4_peers']}) |
| 108 | for ip4_cidr in ip4_cidrs: |
| 109 | self.frr_conf.add(" network {}".format(ip4_cidr)) |
| 110 | self.frr_conf.add(" exit-address-family") |
| 111 | if self.peers[as_number]['ip6_peers']: |
| 112 | self.frr_conf.add(" address-family ipv6 unicast") |
| 113 | ip6_cidrs = set({ip6_peer['guest_ip6_cidr'] for ip6_peer in self.peers[as_number]['ip6_peers']}) |
| 114 | for ip6_cidr in ip6_cidrs: |
| 115 | self.frr_conf.add(" network {}".format(ip6_cidr)) |
| 116 | self.frr_conf.add(" exit-address-family") |
| 117 | |
| 118 | def _post_set(self): |
| 119 | self.frr_conf.add("line vty") |