UNPKG

gobgp

Version:

gobgp library - NodeJS client for gobgpd

110 lines (73 loc) 2.62 kB
# gobgp-node [![Code Climate](https://codeclimate.com/github/codeout/gobgp-node.png)](https://codeclimate.com/github/codeout/gobgp-node) gobgp library - NodeJS client for gobgpd This is a young project which allows you to manage gobgpd remotely. * Features * RIB management which is equivalent to ```gobgp global rib``` in gobgp CLI ## Requirements gobgp-node is tested on Debian Linux and OSX. * [Go](https://golang.org/doc/install) * Requires an environment variable ```$GOPATH``` to be configured * [grpc](https://github.com/grpc/grpc/blob/master/INSTALL.md) * [gobgp](https://github.com/osrg/gobgp) * v1.15 or later ## Installation ```zsh npm install gobgp ``` This installation process builds the C-shared library from already installed gobgp in your system and links gobgp-node binary with it. ## Usage Originate a route with gobgpd: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.addPath({family: 'ipv4-unicast'}, '10.0.0.0/24'); ``` Withdraw a route from gobgpd: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.deletePath({family: 'ipv4-unicast'}, '10.0.0.0/24'); ``` Show routes in gobgpd: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.getRib({family: 'ipv4-unicast'}).then(function(table) { console.log(table); }); ``` Originate a flowspec route with gobgpd: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.addPath({family: 'ipv4-flowspec'}, 'match source 10.0.0.0/24 then rate-limit 10000'); ``` Show flowspec routes in gobgpd: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.getRib({family: 'ipv4-flowspec'}).then(function(table) { console.log(table); }); ``` Originate a BGP community added route: ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); var path = gobgp.serializePath('ipv4-unicast', '10.0.0.0/24'); path.pattrs.push(new Buffer([ 0xc0, // Optional, Transitive 0x08, // Type Code: Communities 0x04, // Length 0xff, 0xff, 0xff, 0x02])) // NO_ADVERTISE gobgp.addPath({family: 'ipv4-unicast'}, path); ``` Or extremely easy on the latest version of gobgp, ```js var Gobgp = require('gobgp'); var gobgp = new Gobgp('<gobgpd address>:50051'); gobgp.addPath({family: 'ipv4-unicast'}, '10.0.0.0/24 community no-advertise'); ``` ## Copyright and License Copyright (c) 2018 Shintaro Kojima. Code released under the [MIT license](LICENSE).