gobgp
Version:
gobgp library - NodeJS client for gobgpd
110 lines (73 loc) • 2.62 kB
Markdown
# gobgp-node
[](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).