def run(gobgpd_addr, vrf_name, prefix, nexthop): channel = implementations.insecure_channel(gobgpd_addr, 50051) with gobgp_pb2.beta_create_GobgpApi_stub(channel) as stub: subnet = IPNetwork(prefix) ipaddr = subnet.ip masklen = subnet.prefixlen nlri = IPAddrPrefix(addr=ipaddr, length=masklen) bin_nlri = nlri.serialize() nexthop = BGPPathAttributeNextHop(value=nexthop) bin_nexthop = nexthop.serialize() origin = BGPPathAttributeOrigin(value=2) bin_origin = origin.serialize() pattrs = [] pattrs.append(str(bin_nexthop)) pattrs.append(str(bin_origin)) path = {} path['nlri'] = str(bin_nlri) path['pattrs'] = pattrs uuid = stub.ModPath(gobgp_pb2.ModPathArguments(resource=Resource_VRF, name=vrf_name, path=path), _TIMEOUT_SECONDS) if uuid: print "Success!" else: print "Error!"
def modpath(self,gobgpd_addr,originate_path_list): channel = implementations.insecure_channel(gobgpd_addr, 50051) with gobgp_pb2.beta_create_GobgpApi_stub(channel) as stub: paths = [] for originate_path in originate_path_list: pattrs = [] path = {} subnet = IPNetwork(originate_path['route']) ver = subnet.version addr = subnet.ip mask = subnet.prefixlen if ver == 4: nlri = IPAddrPrefix(addr=addr, length=mask) nexthop = BGPPathAttributeNextHop(value=originate_path['next_hop']) else : nlri = IP6AddrPrefix(addr=addr, length=mask) nexthop = BGPPathAttributeMpReachNLRI(next_hop = originate_path['next_hop'],nlri = [nlri],afi = AFI_IPV6 , safi = SAFI_UNICAST) bin_nlri = nlri.serialize() bin_nexthop = nexthop.serialize() pattrs.append(str(bin_nexthop)) origin = BGPPathAttributeOrigin(value=ORIGIN) bin_origin = origin.serialize() pattrs.append(str(bin_origin)) if originate_path['community'] : community_set = self.community_convert(originate_path['community']) communities = BGPPathAttributeCommunities(communities=community_set) bin_communities = communities.serialize() pattrs.append(str(bin_communities)) #as_path = BGPPathAttributeAs4Path(value=[[1234,1111]]) #bin_as_path = as_path.serialize() #pattrs.append(str(bin_as_path)) path['nlri'] = str(bin_nlri) path['pattrs'] = pattrs paths.append(path) args = [] args.append(gobgp_pb2.ModPathsArguments(resource=Resource_GLOBAL, paths=paths)) ret = stub.ModPaths(args, _TIMEOUT_SECONDS)