summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2017-11-28packet/bgp: Use fixed len types in FlowSpec componentsIWASE Yusuke
Currently, the "FlowSpecComponentItem" uses int type for the "Op" and "Value" fields, but Golang int type has 4 bytes length on the 32-bit env and 8 bytes length on the 64-bit env. For example, to support the SNAP (Type 20) rule, which has 5 bytes value field, int type has not enough length on 32-bit env. This patch fixes to use the fixed length integer types for the FlowSpec components and avoid overflows of value range. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-27test/lib: Allow unconfigured peer-as for Unnumbered BGPSatoshi Fujimoto
For Unnumbered BGP, neighbor AS number isn't needed to be specified, so 'peer-as' should not be specified in the scenario test for Unnumbered BGP. However, currently 'peer-as' is always specified in test/lib/gobgp.py This commit solves this by not specifying `peer-as` if 'neighbor-interface' is configured. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-26cmd: fix getNeighbor() to take bogus neighbor nameFUJITA Tomonori
This fixes the ae7e572550df919c1b9990da8787fc1e860bc20d commit regression. gobgp neighbor command takes a bogus neighbor name like the following: fujita@ubuntu:~/go/src/github.com/osrg/gobgp/gobgp$ ./gobgp n 1 BGP neighbor is 172.17.0.2, remote AS 65001 BGP version 4, remote router ID unknown BGP state = active, up for 17496d 14:21:50 BGP OutQ = 0, Flops = 0 Hold time is 0, keepalive interval is 0 seconds Configured hold time is 60, keepalive interval is 20 seconds Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-26cmd/neighbor: Refactor ShowRoute()Satoshi Fujimoto
For readability and maintainability, separate ShowRoute() into some small functions. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-26cmd/neighbor: Avoid shifted RIB displaySatoshi Fujimoto
Currently, display of RIB may be shifted from route to route because placement is calculated for each destination. This commit avoides the shifted display by calculating the placement with whole of the destinations. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-26cmd/neighbor: Separate Show RPKI info logic from Show RIB logicSatoshi Fujimoto
For readability and maintainability, this commit separates these non-directly related logics. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-24packet/bgp: Use regexp to parse FlowSpec rulesIWASE Yusuke
Currently, the parser for the string representation of FlowSpec rules splits the given string into characters and validates them character by character. So we need to handle the unexpected white spaces carefully. This patch introduces the regular expressions to parse the FlowSpec rules and simplify the parsers. Also improves robustness for the unexpectedly inserted white spaces like "& == tcp". Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24packet/bgp: Refactor construction of FlowSpec rules stringIWASE Yusuke
This patch introduces String() functions for the flags and reserved values related to the FlowSpec rules. Also removes the unused types and functions. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24packet/bgp: Invert FlowSpec bitmask operand positionIWASE Yusuke
Currently, if the both NOT and MATCH bit are set for the FlowSpec bitmask operand, the string representation will be "=!". For the readability and the consistency with the representation of numeric operator, it should be "!=". This patch inverts "=!" into "!=" for the bitmask operand. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24cli: Return error when no RD for VPN FlowSpecIWASE Yusuke
Currently, if Route Distinguisher is not specified for the VPN FlowSpec types via "gobgp" command, the message as following will be displayed: $ gobgp global rib -a l2vpn-flowspec add match vid 100 then accept rpc error: code = Unknown desc = attribute type length is short But this message does not describe which argument should be specified. This patch fixes to output the message about lack of "rd <rd>". Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24cli: Improve arguments extraction for FlowSpec rulesIWASE Yusuke
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24packet/bgp: Sort FlowSpec rules when decoding/creatingIWASE Yusuke
Currently, we sort the FlowSpec rules when creating a new path containing the FlowSpec NLRI and when parsing CLI arguments for the FlowSpec rules. This patch moves sorting the rules into the inside of the "packet" module and sorts them when decoding binary and creating new NLRI. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-24config: allow unconfigured peer ASNFUJITA Tomonori
The commit ab953211 prohibits the unconfigured peer ASN but it breaks the unnumbered BGP feature. The old behavior needs to be reverted. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-23table: fix merging of v4 paths with addpath enabledFUJITA Tomonori
V4 NLRI needs more 4 bytes with addpath enabled. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-23table: use Path's hash value for mergingFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-23table: add attribute hash value to Path structureFUJITA Tomonori
This is for batching paths into one bgp message. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-23table: avoid unnecessary attributes in Path objectFUJITA Tomonori
- withdraw path doesn't need any attributes. - mp reach path doesn't need mp unreach attribute (some bgp speackers send an update message including both mp reach and mp unreach). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-22server: Allow 0 value to roaManager.AS for library usageEiichiro Watanabe
2017-11-22server: adminDown operation wrongly resets State.PeerAsFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2017-11-21cli: ESI Label advertisement on EVPN Ethernet Auto-discovery RouteIWASE Yusuke
This patch enables to advertise ESI Label Extended Community with EVPN Ethernet Auto-discovery Route from "gobgp" command. Example: $ gobgp global rib -a evpn add a-d esi 0 etag 10 label 10 rd 65000:100 esi-label 1 single-active $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:A-D][rd:65000:100][esi:single-homed][etag:10] [10] 0.0.0.0 hh:mm:ss [{Origin: ?} {Extcomms: [esi-label: 1, single-active]}] Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21server: Auto derived ES-Import RT for EVPN Ethernet Segment routeIWASE Yusuke
According to RFC7432, the ES-Import RT can be derived automatically when using the ESI Types 1, 2 and 3. This patch enables to derive automatically the ES-Import RT for the given path from BgpServer's API. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: Router's MAC advertisement on EVPN Prefix RouteIWASE Yusuke
This patch enables to advertise Router's MAC Extended Community with EVPN Prefix Route from "gobgp" command. Example: $ gobgp global rib -a evpn add prefix 10.0.0.0/24 etag 10 rd 65000:100 router-mac aa:bb:cc:dd:ee:ff $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:Prefix][rd:65000:100][etag:10][prefix:10.0.0.0/24] [0] 0.0.0.0 hh:mm:ss [{Origin: ?} {Extcomms: [router's mac: aa:bb:cc:dd:ee:ff]} [ESI: single-homed]] Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Support EVPN Router's MAC Extended CommunityIWASE Yusuke
This patch supports EVPN Router's MAC Extended Community which described on "draft-ietf-bess-evpn-inter-subnet-forwarding". According to "draft-ietf-bess-evpn-prefix-advertisement" This extended community might be carried with EVPN IP Prefix Route NLRI. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Zeros if GW in EVPN Prefix route omittedIWASE Yusuke
According to "draft-ietf-bess-evpn-prefix-advertisement-08", the GW IP field SHOULD be zero if it is not used, but currently, GoBGP skips encoding the GW IP field (not composed). This patch fixes to fill zeros to solve this problem. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Check range of EVPN related Label fieldIWASE Yusuke
This patch enables to check the value range of Label included in EVPN routes or PMSI Tunnel attribute when decoding and serialising it. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: Support ESI in EVPN macadv and prefix routesIWASE Yusuke
This patch enables to specify ESI value when adding EVPN "macadv" and "prefix" routes. Example: "macadv" route $ gobgp global rib -a evpn add macadv aa:bb:cc:dd:ee:ff 10.0.0.1 esi 0 etag 10 label 20,30 rd 65000:100 $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:macadv][rd:65000:100][etag:10][mac:aa:bb:cc:dd:ee:ff][ip:10.0.0.1] [20,30] 0.0.0.0 hh:mm:ss [{Origin: ?} [ESI: single-homed]] Example: "prefix" route $ gobgp global rib -a evpn add prefix 10.0.0.0/24 esi LACP aa:bb:cc:dd:ee:ff 100 etag 10 rd 65000:100 $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:Prefix][rd:65000:100][etag:10][prefix:10.0.0.0/24] [0] 0.0.0.0 00:00:14 [{Origin: ?} [ESI: ESI_LACP | system mac aa:bb:cc:dd:ee:ff, port key 100] [GW: 0.0.0.0]] Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: EVPN Ethernet Segment Route advertisementIWASE Yusuke
This patch enables to add route for EVPN Ethernet Segment Route via "gobgp" command. Example: $ gobgp global rib -a evpn add esi 10.0.0.1 esi 0 rd 65000:100 $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:esi][rd:65000:100][esi:single-homed][ip:10.0.0.1] 0.0.0.0 hh:mm:ss [{Origin: ?}] Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Use ESI str in EVPN Ethernet Segment RouteIWASE Yusuke
This patch fixes to use the string representation of ESI in the string representation of EVPN Ethernet Segment Route. Currently, displayed in the default representation of ESI structure. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Avoid raw binary in EVPN ESI stringIWASE Yusuke
Currently, the value field of EVPN ESI might be corrupted when ESI type is ARBITRARY (not "single-homed") or unknown type because the value field will be formatted as the raw byte slice in this case. This patch fixes to convert the byte slice into the colon separated hex values which is corresponding to the format of the CLI input. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: Use decimal AS number in EVPN ESIIWASE Yusuke
Currently, the representation of AS number in EVPN ESI Type AS (Type 5) uses the colon separated 2 octet values format, but in other places, the AS4_PATH attribute for example, the single decimal format is used. This patch fixes to use the decimal AS number for the consistency with the AS_PATH/AS4_PATH attributes and also the CLI input format. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: EVPN Ethernet Auto-discovery Route advertisementIWASE Yusuke
This patch enables to add route for EVPN Ethernet Auto-discovery Route via "gobgp" command. Example: $ gobgp global rib -a evpn add a-d esi 0 etag 10 label 20 rd 65000:100 $ gobgp global rib -a evpn Network Labels Next Hop AS_PATH Age Attrs *> [type:A-D][rd:65000:100][esi:single-homed][etag:10] [20] 0.0.0.0 hh:mm:ss [{Origin: ?}] Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21packet/bgp: EVPN ESI parser from string sliceIWASE Yusuke
This patch introduces a new function to parse EVPN ESI from string slice which passed via CLI for example. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: Use network IP address for EVPN Prefix routeIWASE Yusuke
Currently, "gobgp" command use the host IP when adding a new EVPN Prefix route, but it should be the network IP address, otherwise the two routes to "192.168.0.1/24" and "192.168.0.2/24" will be determined as different routes. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: Missing keywords for EVPN Prefix RouteIWASE Yusuke
Currently, the keywords "rt" and "encap" for EVPN Prefix Route are unexpectedly ignored when parsing the inputs from "gobgp" command. Also, "label" is not described in the usage. This patch fixes to pass these keywords to be advertised and updates the usage format. Note: This patch makes "rt" as optional field in the usage because "rt" can be omitted when deleting. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21cli: Support keyword args for EVPN macadv and multicastIWASE Yusuke
For improving readability of arguments, this patch supports keyword arguments "etag" and "label" when adding EVPN "macadv" and "multicast" routes. Also, this change makes it more easy to introduce new arguments. With this patch, both of the following formats are supported for the backward compatibility. New Format: <MACADV> : <mac address> <ip address> etag <etag> label <label> rd <rd> [rt <rt>...] [encap <encap type>] <MULTICAST> : <ip address> etag <etag> rd <rd> [rt <rt>...] [encap <encap type>] Old Format: <MACADV> : <mac address> <ip address> <etag> <label> rd <rd> [rt <rt>...] [encap <encap type>] <MULTICAST> : <ip address> <etag> rd <rd> [rt <rt>...] [encap <encap type>] Note: This patch makes "rt" as optional field in the usage because "rt" can be omitted when deleting. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21gobgp/cmd/global: Align indentation in usageIWASE Yusuke
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21gobgp/cmd/global: Remove unused argumentIWASE Yusuke
Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-21gobgp/cmd/global: Fix name collision "net"IWASE Yusuke
The variable "net" in ParsePath() collides the name of the standard library name "net". Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-20packet/bgp: Rename snake case to camel caseIWASE Yusuke
This patch renames some variable names in snake case (e.g., "last_byte_value") to that in the camel case (e.g., "lastByte") because Go prefers the camel case for variable names. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-19packet/bgp: fix flowspec parser about cmd badly argsnnao45
2017-11-16api: Activate address family using Peer.AfiSafisIWASE Yusuke
Currently, to configure per AFI-SAFI settings when adding neighbor via gRPC API, it is require to specify the both Peer.Families and Peer.AfiSafis fields. If Peer.Families is omitted, settings in Peer.AfiSafis are ignored and the given address families are not activated. This patch enables to configure per AFI-SAFI settings and activate the address family with only Peer.AfiSafis (without Peer.Families). Note: For the backward compatibility, if only Peer.Families is specified, this patch creates per AFI-SAFI settings with the default settings. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-16api: Define constants for address familiesIWASE Yusuke
To call some gRPC APIs, it is required to specify the address family value which is combined value of AFI and SAFI values, so users of gRPC APIs need to calculate this value. This patch introduces the constants for the address families for the convenience. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-13api/grpc_server: Remove redundant loop for gRPC serverIWASE Yusuke
gRPC server should try to start serving only once because it send stopped signal to the waiter if server could not start. This patch removes redundant "for" loop to improve code inspection result. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-13api/grpc_server: Avoid name collision "server"IWASE Yusuke
To improve code inspection result, this patch renames "server" variables in NewServer() to "s" because "server" collides the imported package name "github.com/osrg/gobgp/server". Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-13api/grpc_server: Use make() for an empty slice declarationIWASE Yusuke
To improve code inspection result, this patch uses make() for an empty slice declaration instead of using empty literal initializer. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-13api/grpc_server: Avoid index error when invalid set-med valueIWASE Yusuke
Currently, with a invalid "set-med" value in a policy action, GoBGP will raise panic of "index out of range" because the unmatched regular expression is not handled. This patch fixes to handle errors during parsing the given med value. Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-12cli: Support address families when adding neighborIWASE Yusuke
Currently, "gobgp" command does not support to configure address families capability when adding a new neighbor. This patch introduces a new option field to "gobgp neighbor add" command and enables to configure address families capability. Example: Specify address family names in comma separated format $ gobgp neighbor add 10.0.0.3 as 65003 family ipv4-unicast,l2vpn-evpn $ gobgp neighbor 10.0.0.3 ...(snip)... Neighbor capabilities: multiprotocol: ipv4-unicast: advertised l2vpn-evpn: advertised route-refresh: advertised 4-octet-as: advertised ...(snip)... Signed-off-by: IWASE Yusuke <iwase.yusuke0@gmail.com>
2017-11-08config: Properly set config of PeerGroup memberSatoshi Fujimoto
Currently, the config of PeerGroup members are not set properly. For example, if LocalAs of the neighbor is not set in the config file, LocalAs will be set to Global.As as a default value. After this, however, if the neighbor is a member of a peer group, LocalAs will be unexpectedly overwritten by the peer group config. This commit fixes this by setting default values after applying the peer group config. Adding to this, this commit avoids unnecessary applying the peer group config. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-07test: Add scenario test for BGP ConfederationSatoshi Fujimoto
Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>
2017-11-07test/lib: Add bgp config structure for GoBGP/Quagga containersSatoshi Fujimoto
This commit introduces 'bgp_config' attribute for GoBGP/Quagga containers to configure complex settings. Adding to this, this commit enables to configure BGP confederation settings to GoBGP/Quagga conrainers. Signed-off-by: Satoshi Fujimoto <satoshi.fujimoto7@gmail.com>