32 Commits
Author SHA1 Message Date
night 030274eb86 Fix spelling of LinkBandwidth 2021-12-12 04:59:26 +00:00
FUJITA Tomonori 6eeabdf01b proto: replace 'as' with 'asn'
For consistency, always use 'asn' instead of 'as', 'as_number', etc.

Signed-off-by: FUJITA Tomonori <[email protected]>
2021-12-11 01:36:20 +00:00
FUJITA Tomonori 24ae33b208 proto: define AsSegment Type enum
Signed-off-by: FUJITA Tomonori <[email protected]>
2021-12-10 13:26:22 +00:00
Vallimamod Abdullah dd270fc087 api: defines LsOspfRouteType enum for LsPrefixDescriptor
Allows better serialization as this field is automatically removed from
prefix descriptor when empty/unknown instead of getting
`LsOspfRouteType(0)` default value from Stringer.
2021-12-08 07:23:16 +00:00
FUJITA Tomonori c593d7c8b3 switch to Go API v2 for protobuf
seems that sticking to Go API v1 for protobuf is headache for projects
using GoBGP.

This breaks the compatibility so bumps up the major version to 3.

Signed-off-by: FUJITA Tomonori <[email protected]>
2021-12-08 07:22:50 +00:00
Donatas Abraitis 27b80a935b bgp: Implement BGP link-bandwidth extended community
Receiving
=========

Extended communities sent from FRR side:

```
route-map lb permit 10
 set extcommunity bandwidth 10
 set extcommunity soo 65001:123
exit
```

On GoBGP side it's decoded as 125000 as IEEE floating-point.

```
% sudo ./gobgp global rib 192.168.100.1/32 --json | jq '."192.168.100.1/32"'
[
  {
    "nlri": {
      "prefix": "192.168.100.1/32"
    },
    "age": 1632128843,
    "best": true,
    "attrs": [
      {
        "type": 1,
        "value": 2
      },
      {
        "type": 2,
        "as_paths": [
          {
            "segment_type": 2,
            "num": 1,
            "asns": [
              65534
            ]
          }
        ]
      },
      {
        "type": 3,
        "nexthop": "192.168.10.123"
      },
      {
        "type": 4,
        "metric": 0
      },
      {
        "type": 16,
        "value": [
          {
            "type": 64,
            "subtype": 4,
            "asn": 65534,
            "bandwidth": 1250000
          },
          {
            "type": 0,
            "subtype": 3,
            "value": "65001:123"
          }
        ]
      }
    ],
    "stale": false,
    "source-id": "192.168.100.2",
    "neighbor-ip": "192.168.10.123"
  }
]
```

Sending
=======

When sending from GoBGP side:

```
[[policy-definitions]]
    name = "policy1"
    [[policy-definitions.statements]]
        [policy-definitions.statements.actions.bgp-actions.set-ext-community]
			options = "replace"
			[policy-definitions.statements.actions.bgp-actions.set-ext-community.set-ext-community-method]
				communities-list = ["lb:65021:125000"]

```

We get properly encoded/decoded in FRR as well:

```
~# vtysh -c 'show ip bgp 10.33.0.0/16 json' | grep 'LB:'
        "string":"RT:300:400 SoO:100:200 LB:65021:125000 (1.000 Mbps)"
```

Signed-off-by: Donatas Abraitis <[email protected]>
2021-11-04 20:12:58 +09:00
Donatas Abraitis c114e04958 Handle ttl-security option correctly
It wasn't configurable at all.

Signed-off-by: Donatas Abraitis <[email protected]>
2021-06-30 10:55:06 +09:00
zvfvrv 92f37d65aa SegmentTypeB proto definition 2021-06-30 07:38:00 +09:00
Donatas Abraitis 94d720ff40 Add FQDN capability
It's not kinda RFC (draft), but it's implemented and used in various
other open-source software like FRRouting, Bird, ExaBGP.

It's very handy when dealing with lots of peers.

Exampe between GoBGP and FRRouting:
```
% ./cmd/gobgp/gobgp neighbor 192.168.10.123 | grep -A4 fqdn:
    fqdn:       advertised and received
      Local:
         name: donatas-pc, domain:
      Remote:
         name: exit1-debian-9, domain:
```

```
% vtysh -c 'show bgp neighbors 192.168.10.17 json' | jq .'"192.168.10.17".neighborCapabilities.hostName'
{
  "advHostName": "exit1-debian-9",
  "advDomainName": "n/a",
  "rcvHostName": "donatas-pc",
  "rcvDomainName": "n/a"
}
```

Signed-off-by: Donatas Abraitis <[email protected]>
2021-05-24 09:55:03 +03:00
Marcus Wichelmann 3c437e5aec Added ListDynamicNeighbor message to API 2021-03-29 20:53:53 +02:00
Marcus Wichelmann 76f40ede0d Added DeleteDynamicNeighbor message to API 2021-03-29 20:53:45 +02:00
Marcus Wichelmann c1e7463e36 Added ListPeerGroup message to API 2021-03-29 20:53:25 +02:00
Mikael Magnusson 390e3127ce add support for tunnel egress endpoint sub-TLV
As specified in draft-ietf-idr-tunnel-encaps-22.

Signed-off-by: Mikael Magnusson <[email protected]>
2021-03-14 08:46:44 +09:00
Mikael Magnusson c70d99cc91 add pb for UDP destination port sub-TLV
Generated with tools/grpc/genproto.sh

Signed-off-by: Mikael Magnusson <[email protected]>
2021-01-23 09:03:18 +09:00
Serguei Bezverkhi 57068b16fd Add documentation, fix typo in proto and add marshal for tunne encal sub tlvs
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-12-02 07:21:01 +09:00
Serguei Bezverkhi 63b958b2a7 API chages
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-11-30 07:21:40 +09:00
Serguei Bezverkhi 66413b5335 API changes
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-11-25 17:28:18 -05:00
Valli A. Vallimamod b44362fddd api: keeps backward compatibility when extending LsAddrPrefix 2020-11-10 22:17:26 +09:00
Valli A. Vallimamod c595b56166 api: adds LS attributes to LsAddrPrefix
Includes `gobgp.LsNLRI` attibutes to `api.LsAddrPrefix` so that they are
distributed to all derived types (LsNodeNLRI, LsPrefixV4NLRI, and LsPrefixV6NLRI)
2020-11-10 22:17:26 +09:00
Steve Shaw 393d82f955 Adding gRPC support for modified logging level
Signed-off-by: Steve Shaw <[email protected]>
2020-11-06 21:15:10 +09:00
Serguei Bezverkhi 833188f526 extend attributes proto for Prefix SID support
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-05-13 12:58:51 +09:00
Serguei Bezverkhi e3001f9fe1 additional changes
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-05-05 16:10:24 -04:00
Serguei Bezverkhi 8409507a7c coding the feature
Signed-off-by: Serguei Bezverkhi <[email protected]>
2020-05-05 14:31:28 -04:00
Tom Shine f11b9c7afb Add BGP-LS SRLG support 2020-04-24 00:25:59 +01:00
Carl Baldwin 72a0e55287 Use correct import paths for protobuf packages
The packages `any`, `empty`, and `timestamp` ship with protoc so there
is no need to pull them out of the go package. This simplifies the
generation script and also corrects the import paths for the standard
protobuf types.

Fixes: #2095
2019-11-06 17:59:21 +00:00
JieJhih Jhang eb37217981 Add evpn I-PMSI to proto file 2019-04-10 10:03:27 +09:00
FUJITA Tomonori 2965e8092e add script to generate api/gobgp.pb.go
Signed-off-by: FUJITA Tomonori <[email protected]>
2019-04-06 21:48:21 +09:00
Artur Makutunowicz 192480fc71 Add experimental BGP-LS feature 2019-01-26 12:40:45 +09:00
FUJITA Tomonori 475818dd3c api: remove unused members
fixes #1816

Signed-off-by: FUJITA Tomonori <[email protected]>
2018-08-28 22:14:41 +09:00
FUJITA Tomonori 97ad6b32ee api: change Family
fixes #1812

Avoid the cast and use strightforward data strcuture; two variables
for afi and safi instead of squashing two into one variable.

Signed-off-by: FUJITA Tomonori <[email protected]>
2018-08-28 15:36:50 +09:00
FUJITA Tomonori 71e56c542e rpc cleanup
- clean up RPC function names
- rewrite gobgp command to use the api instead of config package
- delete unused client package

Signed-off-by: FUJITA Tomonori <[email protected]>
2018-08-08 21:24:48 +09:00
IWASE Yusuke 84987fb873 api: Define protobuf structure for BGP Path Attributes
Example of protoc command:
$ export PROTOBUF=${HOME}/protobuf/src
$ export GOBGP=${GOPATH}/src/github.com/osrg/gobgp
$ protoc \
    -I ${PROTOBUF} \
    -I ${GOBGP}/api \
    --go_out=plugins=grpc:${GOBGP}/api \
    ${GOBGP}/api/gobgp.proto \
    ${GOBGP}/api/attribute.proto

Signed-off-by: IWASE Yusuke <[email protected]>
2018-06-13 08:55:27 +09:00