def new_open(self, restarted, asn4, config, enabledFamilies=[]):
        '''Same as exabgp.Protocol.new_open except that we advertise support
        for MPLS VPN and RTC'''

        asn = self.neighbor.local_as
        # (we don't support ASN4)

        o = Open(4, asn, self.neighbor.router_id.ip, Capabilities()
                 .default(self.neighbor, restarted), self.neighbor.hold_time)

        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv4), SAFI(SAFI.flow_ipv4)))
        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv4), SAFI(SAFI.unicast)))
        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv6), SAFI(SAFI.unicast)))
        for afi_safi in enabledFamilies:
            o.capabilities[
                Capabilities.MULTIPROTOCOL_EXTENSIONS].append(afi_safi)

        if config['enable_rtc']:
            o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].append(
                (AFI(AFI.ipv4), SAFI(SAFI.rtc)))

        if not self.connection.write(o.message()):
            raise Exception("Error while sending open")

        return o
    def new_open(self, restarted, asn4, config, enabledFamilies=[]):
        '''Same as exabgp.Protocol.new_open except that we advertise support
        for MPLS VPN and RTC'''

        asn = self.neighbor.local_as
        # (we don't support ASN4)

        o = Open(4, asn, self.neighbor.router_id.ip,
                 Capabilities().default(self.neighbor, restarted),
                 self.neighbor.hold_time)

        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv4), SAFI(SAFI.flow_ipv4)))
        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv4), SAFI(SAFI.unicast)))
        o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].remove(
            (AFI(AFI.ipv6), SAFI(SAFI.unicast)))
        for afi_safi in enabledFamilies:
            o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].append(
                afi_safi)

        if config['enable_rtc']:
            o.capabilities[Capabilities.MULTIPROTOCOL_EXTENSIONS].append(
                (AFI(AFI.ipv4), SAFI(SAFI.rtc)))

        if not self.connection.write(o.message()):
            raise Exception("Error while sending open")

        return o
Beispiel #3
0
	def new_open (self,restarted,asn4):
		if asn4:
			asn = self.neighbor.local_as
		else:
			asn = AS_TRANS

		o = Open(4,asn,self.neighbor.router_id.ip,Capabilities().default(self.neighbor,restarted),self.neighbor.hold_time)

		if not self.connection.write(o.message()):
			raise Failure('Could not send open')
		return o
Beispiel #4
0
    def new_open(self, restarted, asn4):
        if asn4:
            asn = self.neighbor.local_as
        else:
            asn = AS_TRANS

        o = Open(4, asn, self.neighbor.router_id.ip,
                 Capabilities().default(self.neighbor, restarted),
                 self.neighbor.hold_time)

        if not self.connection.write(o.message()):
            raise Failure('Could not send open')
        return o
Beispiel #5
0
 def OpenFactory(self, data):
     version = ord(data[0])
     if version != 4:
         # Only version 4 is supported nowdays..
         raise Notify(2, 1, data[0])
     asn = unpack('!H', data[1:3])[0]
     hold_time = unpack('!H', data[3:5])[0]
     numeric = unpack('!L', data[5:9])[0]
     router_id = "%d.%d.%d.%d" % (numeric >> 24, (numeric >> 16) & 0xFF,
                                  (numeric >> 8) & 0xFF, numeric & 0xFF)
     capabilities = self.CapabilitiesFactory(data[9:])
     return Open(version, asn, router_id, capabilities, hold_time)