Skip to content

Latest commit

 

History

History
72 lines (48 loc) · 2.1 KB

grpc-client.md

File metadata and controls

72 lines (48 loc) · 2.1 KB

Managing GoBGP with Your Favorite Language

This page explains how to managing GoBGP with your favorite Language. You can use any language supported by gRPC (10 languages are supported now). This page gives an example in Python and C++.

Contents

Prerequisite

We assumes that you have the relevant tools installed to generate the server and client interface for your favorite language from proto files. Please refer to the official docs of gRPC for details.

Python

Generating Interface

You need to generate the server and client interface from GoBGP proto files at first.

$ python -m grpc_tools.protoc -I./ --python_out=. --grpc_python_out=. *.proto
$ ls *.py
attribute_pb2.py  attribute_pb2_grpc.py  capability_pb2.py  capability_pb2_grpc.py  gobgp_pb2.py  gobgp_pb2_grpc.py

Adding Path

tools/grpc/python/add_path.py shows an example for adding a route. Let's run this script.

$ PYTHONPATH=$PYTHONPATH:. python add_path.py

See if the route was added to the global rib.

$ gobgp g r
   Network              Next Hop             AS_PATH              Age        Attrs
*> 10.0.0.0/24          1.1.1.1              100 200              00:08:02   [{Origin: ?}]

C++

Generating Interface and Binary

Use tools/grpc/cpp/Makefile.

$ cd tools/grpc/cpp
$ make

The above to generate the server and client interface and the binary to add a route by using AddPath API, 'tools/grpc/cpp/add_path.cc'.

Adding Path

Let's run the binary.

$ ./add_path

See if he route was added to the global rib.

$ gobgp g r
   Network              Next Hop             AS_PATH              Age        Attrs
*> 10.0.0.0/24          1.1.1.1                                   00:13:26   [{Origin: i} {Communities: 0:100}]