Commit Graph

19747 Commits

Author SHA1 Message Date
Mark Stapp
0641a955d7 lib,zebra: remove unused MATCHED nexthop flag
Remove an unused flag value from the nexthop struct.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-02-11 15:56:35 -05:00
Kishore Aramalla
4d6784636c bgpd: support 'show ip bgp large-community" on default vrf
This command works only in the case of vrf/view.
Adding support for default VRF as well.

Signed-off-by: Kishore Aramalla <karamalla@vmware.com>
2020-02-11 12:38:25 -08:00
Kishore Aramalla
c6ec0c745a bgpd: RFC compliance wrt invalid RMAC, GWIP, ESI and VNI
A route where ESI, GW IP, MAC and Label are all zero at the same time SHOULD
be treat-as-withdraw.
Invalid MAC addresses are broadcast or multicast MAC addresses. The route
MUST be treat-as-withdraw in case of an invalid MAC address.

As FRR support Ethernet NVO Tunnels only.
Route will be withdrawn when ESI, GW IP and MAC are zero or Invalid MAC

Test cases:
1) ET-5 route with valid RMAC extended community
2) ET-5 route no RMAC extended community
3) ET-5 route with Multicast MAC in RMAC extended community
4) ET-5 route with Broadcast MAC in RMAC extended community

Signed-off-by: Kishore Aramalla <karamalla@vmware.com>
2020-02-11 12:36:50 -08:00
Quentin Young
f94ed830df
Merge pull request #5793 from ton31337/fix/formatting_show_bgp_summary_failed
bgpd: Format properly `show bgp summary failed`
2020-02-11 14:45:40 -05:00
Chirag Shah
0b509723a0 bgpd: change evpn vni json field format
Change advertiseSviMacip to advertiseSviMacIp in
json output.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-02-11 11:38:26 -08:00
Chirag Shah
37ae1adbfa bgpd: readjust fields in evpn vni json cmd
1) Keep consistant field name, such as
"inKernel".
2) Keep fields order same for both outputs.

Testing Done:

TORS1# show bgp l2vpn evpn vni json
{
  "advertiseGatewayMacip":"Disabled",
  "advertiseSviMacip":"Disabled",
  "advertiseAllVnis":"Enabled",
  "flooding":"Head-end replication",
  "numVnis":8,
  "numL2Vnis":5,
  "numL3Vnis":3,
  "1002":{
    "vni":1002,
    "type":"L2",
    "inKernel":"True",
    "rd":"27.0.0.15:8",
    "originatorIp":"27.0.0.15",
    "mcastGroup":"0.0.0.0",
    "advertiseGatewayMacip":"Disabled",
    "advertiseSviMacip":"Disabled",
    "importRTs":[
      "5550:1002"
    ],
    "exportRTs":[
      "5550:1002"
    ]
  },
}

TORS1# show bgp l2vpn evpn vni 1002 json
{
  "vni":1002,
  "type":"L2",
  "inKernel":"True",
  "rd":"27.0.0.15:8",
  "originatorIp":"27.0.0.15",
  "mcastGroup":"0.0.0.0",
  "advertiseGatewayMacip":"Disabled",
  "advertiseSviMacip":"Disabled",
  "importRts":[
    "5550:1002"
  ],
  "exportRts":[
    "5550:1002"
  ]
}

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-02-11 11:11:28 -08:00
Chirag Shah
7c9cb387ff bgpd: add fields to bgp evpn vni json cmd
Bring 'show bgp l2vpn evpn vni json' inline
with 'show bgp l2vpn evpn vni <id> json' in
terms of fields.

Ticket:CM-28328
Reviewed By:
Testing Done:

TORS1# show bgp l2vpn evpn vni json
{
  "advertiseGatewayMacip":"Disabled",
  "advertiseSviMacip":"Disabled",
  "advertiseAllVnis":"Enabled",
  "flooding":"Head-end replication",
  "numVnis":8,
  "numL2Vnis":5,
  "numL3Vnis":3,
  "1002":{
    "vni":1002,
    "type":"L2",
    "inKernel":"True",
    "originatorIp":"27.0.0.15",
    "rd":"27.0.0.15:8",
    "mcastGroup":"0.0.0.0",
    "advertiseGatewayMacip":"Disabled",
    "advertiseSviMacip":"Disabled",
    "importRTs":[
      "5550:1002"
    ],
    "exportRTs":[
      "5550:1002"
    ]
  },
}

TORS1# show bgp l2vpn evpn vni 1002 json
{
  "vni":1002,
  "type":"L2",
  "kernelFlag":"Yes",
  "rd":"27.0.0.15:8",
  "originatorIp":"27.0.0.15",
  "mcastGroup":"0.0.0.0",
  "advertiseGatewayMacip":"Disabled",
  "advertiseSviMacip":"Disabled",
  "importRts":[
    "5550:1002"
  ],
  "exportRts":[
    "5550:1002"
  ]
}

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-02-11 11:11:28 -08:00
Quentin Young
6adea38a50
Merge pull request #5778 from ton31337/fix/add_doc_for_ebgp_connected_route_check
doc: Add few words about `bgp disable-ebgp-connected-route-check`
2020-02-11 11:29:04 -05:00
Thibaut Collet
7e0f48c75d vty: add command to get route with table, vrf and protocol
Today vtysh can show the ip/ip6 routes through several commands:
- show_route_cmd
- show_route_detail_cmd
- show_route_summary_cmd
- show_route_table_cmd
- show_route_table_vrf_cmd
- show_route_all_table_vrf_cmd

Each command has its own set of filter rules:
- show_route_cmd can filter by vrf, protocol, tag, ... but not by table
- show_route_table_cmd always filter by table
- show_route_table_vrf_cmd always filter by table and can filter by vrf
too
- show_route_all_table_vrf_cmd show all route in any table for a vrf (or
all)

To reduce the number of commands and provide a possibility to filter by
any key add possibility for the show_route_cmd to filter by table with a
specific value or all to get route in all tables.

Then the show_route_table_cmd, show_route_table_vrf_cmd and
show_route_all_table_vrf_cmd functions can be removed as they are covered
by the generic show_route_cmd function.

It is to be noted that when zebra is started by default, it is possible
to execute show ip route command with both vrf and table parameters,
whereas before the command was not displayed. This is due to the fact
that this combination is only permitted when zebra is launched with vrf
network namespace mode. There, if zebra is configured with vrf-lite
backend, then a vty error message informs the user that the combination
of both table and vrf is not possible.

Signed-off-by: Thibaut Collet <thibaut.collet@6wind.com>
2020-02-11 17:07:47 +01:00
Donatas Abraitis
e91c24c8c2 bgpd: Format properly show bgp summary failed
Before:
```
Neighbor        EstdCnt DropCnt ResetTime Reason
192.168.0.1           0       0    never  Waiting for peer OPEN
```

After:
```
Neighbor        EstdCnt DropCnt ResetTime Reason
192.168.0.1           0       0     never Waiting for peer OPEN
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-11 18:05:02 +02:00
Russ White
8d61adbf07
Merge pull request #5785 from ton31337/fix/replace_gtsm_hops_to_readable_macros
bgpd: Use readable macros for peer->gtsm_hops instead of literals
2020-02-11 10:40:35 -05:00
Russ White
35f50b9305
Merge pull request #5744 from ton31337/fix/thread-as-withdraw_attributes
bgpd: Update some attributes how they are handled if malformed
2020-02-11 10:04:19 -05:00
Donatas Abraitis
724935d5a2
Merge pull request #5789 from donaldsharp/bgp_ebgp_reason
bgpd: Update failed reason to distinguish some NHT scenarios
2020-02-11 10:42:23 +02:00
Donald Sharp
1e91f1d119 bgpd: Update failed reason to distinguish some NHT scenarios
Current failed reasons for bgp when you have a peer that
is not online yet is `Waiting for NHT`, even if NHT has
succeeded.  Add some code to differentiate this.

eva# show bgp ipv4 uni summ failed
BGP router identifier 192.168.201.135, local AS number 3923 vrf-id 0
BGP table version 0
RIB entries 0, using 0 bytes of memory
Peers 2, using 43 KiB of memory
Neighbor        EstdCnt DropCnt ResetTime Reason
192.168.44.1          0       0    never  Waiting for NHT
192.168.201.139       0       0    never  Waiting for Open to Succeed
Total number of neighbors 2
eva#

eva# show bgp nexthop
Current BGP nexthop cache:
 192.168.44.1 invalid, peer 192.168.44.1
  Must be Connected
  Last update: Mon Feb 10 19:05:19 2020

 192.168.201.139 valid [IGP metric 0], #paths 0, peer 192.168.201.139

So 192.168.201.139 is a peer for a connected route that has not been
created on .139, while 44.1 nexthop tracking has not succeeded yet.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-10 19:46:48 -05:00
Renato Westphal
4b08a72ed1
Merge pull request #5763 from ton31337/fix/return_without_parent
*: Remove parenthesis on return for constants
2020-02-10 18:49:06 -03:00
Renato Westphal
c2c4b412fa
Merge pull request #5776 from volta-networks/fix_ldp_topol_test
ldpd: Fix LDP topotest to validate MPLS LDP CLI output
2020-02-10 18:48:25 -03:00
Sri Mohana Singamsetty
a41de4cad5
Merge pull request #5770 from ton31337/fix/remove_bgp_flag_functions
bgpd: Replace bgp_flag_* to [UN]SET/CHECK_FLAG macros
2020-02-10 08:31:59 -08:00
Donatas Abraitis
e2521429a6 bgpd: Use readable macros for peer->gtsm_hops instead of literals
Do the same way like BGP_DEFAULT_TTL

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-10 16:23:09 +02:00
Karen Schoener
b290da1d44 tests: Fix LDP topotest to validate MPLS LDP CLI output
Fixing existing ldp-topol test to validate MPLS LDP CLI output.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-02-10 08:39:06 -05:00
Donatas Abraitis
9da3d9f176 Merge pull request #5772 from adharkar/frr-master-ipv6_nexthop
bgpd: EVPN crash because of incorrect nexthop for IPv6 prefix
2020-02-10 11:09:32 +02:00
Donatas Abraitis
95f7965d09 *: Remove parenthesis on return for constants
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-09 14:21:56 +02:00
Donatas Abraitis
5f1032f291 tools: Add coccinelle script to remove parenthesis on return
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-09 14:21:36 +02:00
Donatas Abraitis
ed7dd81c68 Merge pull request #5781 from LabNConsulting/working/master/tt-catch-notifications
topotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications
2020-02-09 09:12:05 +02:00
Lou Berger
f2ebe24292 topotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications
Signed-off-by: Lou Berger <lberger@labn.net>
2020-02-08 10:36:49 -05:00
Chirag Shah
256f86b655 zebra:remote vtep delete handling
The existing behavior is when a remote VTEP is deleted,
its associatedneighbor (arp) and MAC entries are removed from
zebra database and do not wait for explicit type-2 route
withdraw from originating VTEP.
Remote type-2 route delete checks if VTEP is present before
removing the entry.
The behavior works fine when all evpn routes points to the
same nexthop as the VTEP IP.

In MLAG topology with advertise-pip, self type-2 and type-5 routes
are advertised with individual VTEP IP as nexthop ip for the route.

When a new VNI is created, it is assigned individual IP as tunnel-ip
then it transition to anycast IP (of the MLAG). During the transition,
type-3 route (VTEP delete) withdraw is sent for the individual IP.
The remote VTEP delete should not trigger to remove evpn routes pointing
to VTEP IP. Instead the route will be removed via explicit withdraw.

Ticket:CM-27752
Reviewed By:CCR-9722
Testing Done:

In evpn with MLAG deployment with advertise-pip and advertise-svi-ip
enabled, validated remote vtep delete does not remove self type-2 routes
from zebra DB. Upon explicit type-2 withdraw routes are removed.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-02-07 17:02:39 -08:00
Donatas Abraitis
835e9c5d51 doc: Add few words about bgp disable-ebgp-connected-route-check
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-07 20:57:52 +02:00
Ameya Dharkar
4e72ff729d bgpd: EVPN crash because of incorrect nexthop for IPv6 prefix
RCA:
When we install IPv6 prefix imported from EVPN RT-5 in vrf, nexthop of the IPv6
route should be IPv4 mapped IPv6 address. In function
install_evpn_route_entry_in_vrf, we generate a new attribute with IPv4 mapped
IPv6 nexthop, but we use parent->attr while creating the actual route.
Thus, Ipv4 nexthop is assigned to this route.
Because of this incorrect nexthop, we observed a crash in function
update_ipv6nh_for_route_install.

Fix:
Pass the new attribute with Ipv4 mapped Ipv6 nexthop to
bgp_create_evpn_bgp_path_info

Signed-off-by: Ameya Dharkar <adharkar@vmware.com>
2020-02-06 13:51:46 -08:00
Donatas Abraitis
892fedb611 bgpd: Replace bgp_flag_* to [UN]SET/CHECK_FLAG macros
Most of the code uses macros, thus let's keep the code unified.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-06 17:11:38 +02:00
Donatas Abraitis
b7c4949184 tools: Add coccinelle script to replace all bgp_flag_* functions
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-06 16:24:22 +02:00
Donald Sharp
8c5c49ace8 bgpd: Cleanup compile error?
For some reason we are getting a compile error around a variable I didn't
touch in the other commits.  Make it happy.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 08:23:13 -05:00
Russ White
5bf7fe566d
Merge pull request #5722 from donaldsharp/kernel_routes
Kernel routes
2020-02-06 08:04:42 -05:00
Donald Sharp
36955f90e3
Merge pull request #5767 from ton31337/fix/replace_s_addr_0_to_INADDR_ANY
MOAR CODE NAZI: replace s_addr 0 => INADDR_ANY
2020-02-06 07:30:21 -05:00
Donald Sharp
49fbe06640
Merge pull request #5765 from Spantik/bugs
OSPF: Multi instance broken
2020-02-06 07:27:27 -05:00
Donald Sharp
c4fb250491 bgpd: Fix up some poor formatting
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 07:24:53 -05:00
Donald Sharp
e26c305530 bgpd: Store data in final temp variable
There is no need to have a temp variable to then store that
data in another temporary variable.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 07:24:53 -05:00
Donald Sharp
af34d2da11 bgpd: bgp_nexthop_self optimize afi and new_afi handling
The new_afi and afi were being used over and over.  Switch
to the end result we want and just use that from the get go.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 07:24:53 -05:00
Donald Sharp
2ec802d173 bgpd: Remove prefix pointer creation
The creation of a prefix pointer is unnecessary.  Save the
prefix as part of the actual data structure.  This will
reduce the data needed by 8 bytes per nexthop stored.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 07:24:53 -05:00
Donald Sharp
e61f7c0a10 bgpd: show martian nexthops improve code flow
The show martian nexthops command for bgp had some strangely
duplicated code.  Refactor.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-02-06 07:24:53 -05:00
Donatas Abraitis
5fc7946dd7 tools: Add coccinelle script to replace s_addr 0 to INADDR_ANY
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-06 09:00:13 +02:00
Donatas Abraitis
975a328e2e *: Replace s_addr 0 => INADDR_ANY
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-06 09:00:12 +02:00
Donatas Abraitis
85c58de773
Merge pull request #5761 from qlyoung/fix-bgp-gr-cruft
Fix bgp gr style
2020-02-06 08:16:25 +02:00
Santosh P K
128f16f90e OSPF: Multi instance broken
Multi instance ospf support was broken due to PR #4564.
Adding fix back and extra checks to support multi instance
OSPF.

Fixes issues #5343 & #5741

Signed-off-by: Santosh P K <sapk@vmware.com>
2020-02-05 09:44:49 -08:00
Donald Sharp
792465c09f
Merge pull request #5104 from opensourcerouting/route-map-nbv2
lib: migrate route map to use northbound
2020-02-05 11:54:21 -05:00
Rafael Zalamena
7966110676 lib: fix route-map YANG module on old gcc versions
Copy the fix made in 'lib/if.c' to 'lib/routemap_northbound.c' so we can
have a working YANG model when compiled with GCC version less than 5.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-02-05 11:09:31 -03:00
Donatas Abraitis
4ba5a9c55f bgpd: Update some attributes how they are handled if malformed
According to https://tools.ietf.org/html/rfc7606 some of the attributes
MUST be handled as "treat-as-withdraw" approach.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-02-05 11:01:39 +02:00
Renato Westphal
75995e4348
Merge pull request #5758 from sworleys/Doc-No-Pbr-Dyn-Rules
doc: indicate non-support for dynamic pbr maps
2020-02-05 01:50:19 -03:00
Renato Westphal
ecaeb3b697
Merge pull request #5750 from qlyoung/fix-null-after-xfree
*: don't null after XFREE; XFREE does this itself
2020-02-05 01:49:08 -03:00
Renato Westphal
8f6ebcbeb2
Merge pull request #5760 from ton31337/fix/shorthand_operator
zebra: Use shorthand operator in ifm_read()
2020-02-05 01:45:55 -03:00
Quentin Young
03ed0334e8
Merge pull request #5717 from pguibert6WIND/flowspec_issue_redistribute
Flowspec issue redistribute
2020-02-04 15:48:24 -05:00
Quentin Young
8b457c7ba7
Merge pull request #5759 from ton31337/fix/void_no_return
zebra, lib: Remove return from void functions
2020-02-04 15:45:01 -05:00