#!/usr/bin/env python from __future__ import absolute_import from __future__ import print_function import grpc from google.protobuf.any_pb2 import Any import gobgp_pb2 import gobgp_pb2_grpc import attribute_pb2 _TIMEOUT_SECONDS = 1000 def run(): channel = grpc.insecure_channel('localhost:50051') stub = gobgp_pb2_grpc.GobgpApiStub(channel) nlri = Any() nlri.Pack(attribute_pb2.IPAddressPrefix( prefix_len=24, prefix="10.0.0.0", )) origin = Any() origin.Pack(attribute_pb2.OriginAttribute( origin=2, # INCOMPLETE )) as_segment = attribute_pb2.AsSegment( # type=2, # "type" causes syntax error numbers=[100, 200], ) as_segment.type = 2 # SEQ as_path = Any() as_path.Pack(attribute_pb2.AsPathAttribute( segments=[as_segment], )) next_hop = Any() next_hop.Pack(attribute_pb2.NextHopAttribute( next_hop="1.1.1.1", )) attributes = [origin, as_path, next_hop] stub.AddPath( gobgp_pb2.AddPathRequest( table_type=gobgp_pb2.GLOBAL, path=gobgp_pb2.Path( nlri=nlri, pattrs=attributes, family=gobgp_pb2.Family(afi=gobgp_pb2.Family.AFI_IP, safi=gobgp_pb2.Family.SAFI_UNICAST), ) ), _TIMEOUT_SECONDS, ) if __name__ == '__main__': run()