コード例 #1
0
    def _construct_route_monitoring(self, peer, route):
        if peer.is_mpbgp_cap_valid(bgp.RF_IPv4_VPN) or \
                peer.is_mpbgp_cap_valid(bgp.RF_IPv6_VPN):
            peer_type = bmp.BMP_PEER_TYPE_L3VPN
        else:
            peer_type = bmp.BMP_PEER_TYPE_GLOBAL

        peer_distinguisher = 0
        peer_as = peer._neigh_conf.remote_as
        peer_bgp_id = peer.protocol.recv_open_msg.bgp_identifier
        peer_address, _ = peer.protocol._remotename

        bgp_update = self._construct_update(route.path)
        is_post_policy = not route.filtered
        timestamp = timegm(route.timestamp)

        msg = bmp.BMPRouteMonitoring(bgp_update=bgp_update,
                                     peer_type=peer_type,
                                     is_post_policy=is_post_policy,
                                     peer_distinguisher=peer_distinguisher,
                                     peer_address=peer_address,
                                     peer_as=peer_as,
                                     peer_bgp_id=peer_bgp_id,
                                     timestamp=timestamp)

        return msg
コード例 #2
0
 def test_route_monitoring(self):
     update = bgp.BGPUpdate()
     msg = bmp.BMPRouteMonitoring(bgp_update=update,
                                  peer_type=bmp.BMP_PEER_TYPE_GLOBAL,
                                  is_post_policy=True,
                                  peer_distinguisher=0,
                                  peer_address='192.0.2.1',
                                  peer_as=30000,
                                  peer_bgp_id='192.0.2.1',
                                  timestamp=self._time())
     binmsg = msg.serialize()
     msg2, rest = bmp.BMPMessage.parser(binmsg)
     eq_(msg.to_jsondict(), msg2.to_jsondict())
     eq_(rest, b'')