def new(self, neighbor, restarted): graceful = neighbor.graceful_restart families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[Capability.CODE.MULTIPROTOCOL] = mp if neighbor.asn4: self[Capability.CODE.FOUR_BYTES_ASN] = ASN4(neighbor.local_as) if neighbor.add_path: ap_families = [] if (AFI(AFI.ipv4), SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4), SAFI(SAFI.unicast))) if (AFI(AFI.ipv6), SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv6), SAFI(SAFI.unicast))) if (AFI(AFI.ipv4), SAFI(SAFI.nlri_mpls)) in families: ap_families.append((AFI(AFI.ipv4), SAFI(SAFI.nlri_mpls))) if (AFI(AFI.ipv6), SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv6), SAFI(SAFI.unicast))) self[Capability.CODE.ADD_PATH] = AddPath(ap_families, neighbor.add_path) if graceful: if restarted: self[Capability.CODE.GRACEFUL_RESTART] = Graceful().set( Graceful.RESTART_STATE, graceful, [(afi, safi, Graceful.FORWARDING_STATE) for (afi, safi) in families]) else: self[Capability.CODE.GRACEFUL_RESTART] = Graceful().set( 0x0, graceful, [(afi, safi, Graceful.FORWARDING_STATE) for (afi, safi) in families]) if neighbor.route_refresh: self[Capability.CODE.ROUTE_REFRESH] = RouteRefresh() self[Capability.CODE. ENHANCED_ROUTE_REFRESH] = EnhancedRouteRefresh() # MUST be the last key added if neighbor.multisession: # XXX: FIXME: should it not be the RFC version ? self[Capability.CODE.MULTISESSION] = MultiSession().set( [Capability.CODE.MULTIPROTOCOL]) return self
def new(self, neighbor, restarted): graceful = neighbor.graceful_restart families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[CapabilityID.MULTIPROTOCOL_EXTENSIONS] = mp if neighbor.asn4: self[CapabilityID.FOUR_BYTES_ASN] = neighbor.local_as if neighbor.add_path: ap_families = [] if (AFI(AFI.ipv4), SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4), SAFI(SAFI.unicast))) if (AFI(AFI.ipv6), SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4), SAFI(SAFI.unicast))) if (AFI(AFI.ipv4), SAFI(SAFI.nlri_mpls)) in families: ap_families.append((AFI(AFI.ipv4), SAFI(SAFI.nlri_mpls))) #if (AFI(AFI.ipv6),SAFI(SAFI.unicast)) in families: # ap_families.append((AFI(AFI.ipv6),SAFI(SAFI.unicast))) self[CapabilityID.ADD_PATH] = AddPath(ap_families, neighbor.add_path) if graceful: if restarted: self[CapabilityID.GRACEFUL_RESTART] = Graceful( Graceful.RESTART_STATE, graceful, [(afi, safi, Graceful.FORWARDING_STATE) for (afi, safi) in families]) else: self[CapabilityID.GRACEFUL_RESTART] = Graceful( 0x0, graceful, [(afi, safi, Graceful.FORWARDING_STATE) for (afi, safi) in families]) if neighbor.route_refresh: self[CapabilityID.ROUTE_REFRESH] = RouteRefresh(families) # MUST be the last key added if neighbor.multisession: self[CapabilityID.MULTISESSION_BGP] = MultiSession( [CapabilityID.MULTIPROTOCOL_EXTENSIONS]) return self
def new (self,neighbor,restarted): graceful = neighbor.graceful_restart families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[Capability.ID.MULTIPROTOCOL] = mp if neighbor.asn4: self[Capability.ID.FOUR_BYTES_ASN] = ASN4(neighbor.local_as) if neighbor.add_path: ap_families = [] if (AFI(AFI.ipv4),SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4),SAFI(SAFI.unicast))) if (AFI(AFI.ipv6),SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv6),SAFI(SAFI.unicast))) if (AFI(AFI.ipv4),SAFI(SAFI.nlri_mpls)) in families: ap_families.append((AFI(AFI.ipv4),SAFI(SAFI.nlri_mpls))) if (AFI(AFI.ipv6),SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv6),SAFI(SAFI.unicast))) self[Capability.ID.ADD_PATH] = AddPath(ap_families,neighbor.add_path) if graceful: if restarted: self[Capability.ID.GRACEFUL_RESTART] = Graceful().set(Graceful.RESTART_STATE,graceful,[(afi,safi,Graceful.FORWARDING_STATE) for (afi,safi) in families]) else: self[Capability.ID.GRACEFUL_RESTART] = Graceful().set(0x0,graceful,[(afi,safi,Graceful.FORWARDING_STATE) for (afi,safi) in families]) if neighbor.route_refresh: self[Capability.ID.ROUTE_REFRESH] = RouteRefresh() self[Capability.ID.ENHANCED_ROUTE_REFRESH] = EnhancedRouteRefresh() # MUST be the last key added if neighbor.multisession: # XXX: FIXME: should it not be the RFC version ? self[Capability.ID.MULTISESSION] = MultiSession().set([Capability.ID.MULTIPROTOCOL]) return self
def new (self,neighbor,restarted): graceful = neighbor.graceful_restart families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[CapabilityID.MULTIPROTOCOL_EXTENSIONS] = mp if neighbor.asn4: self[CapabilityID.FOUR_BYTES_ASN] = neighbor.local_as if neighbor.add_path: ap_families = [] if (AFI(AFI.ipv4),SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4),SAFI(SAFI.unicast))) if (AFI(AFI.ipv6),SAFI(SAFI.unicast)) in families: ap_families.append((AFI(AFI.ipv4),SAFI(SAFI.unicast))) if (AFI(AFI.ipv4),SAFI(SAFI.nlri_mpls)) in families: ap_families.append((AFI(AFI.ipv4),SAFI(SAFI.nlri_mpls))) #if (AFI(AFI.ipv6),SAFI(SAFI.unicast)) in families: # ap_families.append((AFI(AFI.ipv6),SAFI(SAFI.unicast))) self[CapabilityID.ADD_PATH] = AddPath(ap_families,neighbor.add_path) if graceful: if restarted: self[CapabilityID.GRACEFUL_RESTART] = Graceful(Graceful.RESTART_STATE,graceful,[(afi,safi,Graceful.FORWARDING_STATE) for (afi,safi) in families]) else: self[CapabilityID.GRACEFUL_RESTART] = Graceful(0x0,graceful,[(afi,safi,Graceful.FORWARDING_STATE) for (afi,safi) in families]) if neighbor.route_refresh: self[CapabilityID.ROUTE_REFRESH] = RouteRefresh(families) # MUST be the last key added if neighbor.multisession: self[CapabilityID.MULTISESSION_BGP] = MultiSession([CapabilityID.MULTIPROTOCOL_EXTENSIONS]) return self
def _protocol(self, neighbor): families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[Capability.CODE.MULTIPROTOCOL] = mp
def _protocol (self, neighbor): families = neighbor.families() mp = MultiProtocol() mp.extend(families) self[Capability.CODE.MULTIPROTOCOL] = mp