]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
5 years agotests: Add a evpn-pim test case 5651/head
Anuradha Karuppiah [Thu, 6 Feb 2020 17:31:05 +0000 (09:31 -0800)]
tests: Add a evpn-pim test case

This is a basic setup and test of evpn-pim.
Create a vxlan device ensure that pim notices this
and setups the appropriate groups and sends them
to the RP.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agopimd: pim mlag show commands
Anuradha Karuppiah [Thu, 6 Feb 2020 17:31:03 +0000 (09:31 -0800)]
pimd: pim mlag show commands

1. show ip pim mlag summary
provides MLAG session information and stats
2. show ip pim mlag upstream
displays the upstream entries synced across the MLAG switches

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: handle ipmr-lo operational state changes
Anuradha Karuppiah [Thu, 6 Feb 2020 17:31:00 +0000 (09:31 -0800)]
pimd: handle ipmr-lo operational state changes

ipmr-lo is an internally added device used for multicast vxlan tunnel
termination. This device is not expected to be managed by the admin
however in the case it is accidentally shut we need to be able handle
it by recovering when it is "no shut" again.

Ticket: CM-24985

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: handle nht metric change correctly
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:58 +0000 (09:30 -0800)]
pimd: handle nht metric change correctly

PIM MLAG DF election API was not being triggered on cost change if the
upstream neighbor remained the same.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agolib: add missing command DESC for MLAG messages
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:56 +0000 (09:30 -0800)]
lib: add missing command DESC for MLAG messages

This string is used in some logging for e.g. in zclient_read -
>>>>>>>>>>>>>>>>>>>>>>>>>>
    if (zclient_debug)
        zlog_debug("zclient 0x%p command %s VRF %u",
               (void *)zclient, zserv_command_string(command),
               vrf_id);
>>>>>>>>>>>>>>>>>>>>>>>>>>

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: remove peerlink_rif from the orig-mroute OIL when it is oper down
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:53 +0000 (09:30 -0800)]
pimd: remove peerlink_rif from the orig-mroute OIL when it is oper down

In an anycast VTEP setup the peerlink_rif is added as a static OIF
to the originating mroute (bypassing the pim state machine). This is
needed to ensure both MLAG switches rx a copy of encapsulated BUM flow.

We were not handling link state changes on this static OIF resulting
in the wrong vifi being used in the OIL (because of vifi re-allocation).
This commit re-acts to oper state changes by deleting the OIF on link
down and re-adding it on link up.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: stop overloading SRC_IGMP upstream for vxlan local membership
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:51 +0000 (09:30 -0800)]
pimd: stop overloading SRC_IGMP upstream for vxlan local membership

A local membership is created on the vxlan termination device ipmr-lo. This
is done to -
1. Pull multicast vxlan tunnel traffic to the VTEP for termination by
triggering JoinDesired on the BUM multicast group.
2. Include the OIF in the mroute to signal to the dataplane component
that flow needs to be vxlan terminated.

Earlier we were overloading the PIM_UPSTREAM_FLAG_MASK_SRC_IGMP for
this local membership creation but that is creating confusion both in
the state machine and in the show outputs. To avoid that we use the
more apparent PIM_UPSTREAM_FLAG_MASK_SRC_VXLAN_TERM. With this change -
1. We get LHR functionality for VXLAN_TERM mroutes
2. OIF is populated with PIM_OIF_FLAG_PROTO_PIM only

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: force update inherited OIL when vxlan local membership is created
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:48 +0000 (09:30 -0800)]
pimd: force update inherited OIL when vxlan local membership is created

When local member is added the (*, G) entry may already be in a JOINED
state. In that case the OIL is not updated i.e. pim_channel_add_oif is
not happening for ipmr-lo. Because of this the traffic associated with
the multicast vxlan tunnel is pulled down to the VTEP but not terminated
by the kernel.

This change force updates the OIL anytime ipmr-lo is added or removed
as a local member.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: skip syncing and running DF election on orig mroutes
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:46 +0000 (09:30 -0800)]
pimd: skip syncing and running DF election on orig mroutes

This is not causing functional problems but has become a source
of confusion. DF status is only relevant to multicast tunnel decaps.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: increase RPF metric via the peerlink_rif by plus-10
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:43 +0000 (09:30 -0800)]
pimd: increase RPF metric via the peerlink_rif by plus-10

The RPF cost is incremented by 10 if the RPF interface is the peerlink-rif.
This is used to force the MLAG switch with the lowest cost to the RPF
to become the MLAG DF. If a switch has to go via the peerlink-rif to get
to the RP or source it simplly cannot be the designated forwarder.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: inherit MLAG DF role from the parent (*, G) entry
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:40 +0000 (09:30 -0800)]
pimd: inherit MLAG DF role from the parent (*, G) entry

DF election is only run for (*,G) entries i.e. election is skipped
for (S,G) entries that are setup as a result of SPT switchover. (S,G)
entries inherit the DF role from the parent (*,G) entry. So the DF is
responsible for terminating all sources associated with a group.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopim: DF election for tunnel termination mroutes in an anycast-VTEP setup
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:36 +0000 (09:30 -0800)]
pim: DF election for tunnel termination mroutes in an anycast-VTEP setup

1. Upstream entries associated with tunnel termination mroutes are
synced to the MLAG peer via the local MLAG daemon.
2. These entries are installed in the peer switch (via an upstream
ref flag).
3. DF (Designated Forwarder) election is run per-upstream entry by both
the MLAG switches -
a. The switch with the lowest RPF cost is the DF winner
b. If both switches have the same RPF cost the MLAG role is
used as a tie breaker with the MLAG primary becoming the DF
winner.
4. The DF winner terminates the multicast traffic by adding the tunnel
termination device to the OIL. The non-DF suppresses the termination
device from the OIL.

Note: Before the PIM-MLAG interface was available hidden config was
used to test the EVPN-PIM functionality with MLAG. I have removed the
code to persist that config to avoid confusion. The hidden commands are
still available.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agopimd: register with MLAG on the first VxLAN SG
Anuradha Karuppiah [Thu, 6 Feb 2020 17:30:31 +0000 (09:30 -0800)]
pimd: register with MLAG on the first VxLAN SG

Channel with the MLAG daemon is setup on the first VxLAN BUM MDT or
pim-mlag AA SVI.

This channel is used for -
1. rxing MLAG status status updates (peer state, role etc.)
2. for syncing active-active upstream entries with the peer MLAG
switch.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agozebra: mlag debug was not being persisted
Anuradha Karuppiah [Thu, 6 Feb 2020 17:29:48 +0000 (09:29 -0800)]
zebra: mlag debug was not being persisted

Added the mlag keyword to the config level also (in addition to the
view level).

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
5 years agoMerge pull request #5810 from donaldsharp/fix_yang_routemap
Donatas Abraitis [Fri, 14 Feb 2020 11:41:03 +0000 (13:41 +0200)]
Merge pull request #5810 from donaldsharp/fix_yang_routemap

Fix yang routemap

5 years agosharpd: Add missing yang route-map callbacks 5810/head
Donald Sharp [Fri, 14 Feb 2020 05:53:43 +0000 (00:53 -0500)]
sharpd: Add missing yang route-map callbacks

sharpd was missing the yang route-map callbacks.
Add it in so it doesn't crash.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agopimd: Add missing yang callbacks for route-maps
Donald Sharp [Fri, 14 Feb 2020 05:53:01 +0000 (00:53 -0500)]
pimd: Add missing yang callbacks for route-maps

Pim was missing the yang callbacks for route-maps, causing
it to crash.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #5806 from ton31337/fix/remove_break_after_return
Mark Stapp [Thu, 13 Feb 2020 16:32:27 +0000 (11:32 -0500)]
Merge pull request #5806 from ton31337/fix/remove_break_after_return

*: Remove break after return

5 years agoMerge pull request #5805 from donaldsharp/babel_int_return
Mark Stapp [Thu, 13 Feb 2020 16:32:06 +0000 (11:32 -0500)]
Merge pull request #5805 from donaldsharp/babel_int_return

babeld: GCC complaining about no return in non-void function

5 years agoMerge pull request #5787 from karamalla0406/rmac_check
Donatas Abraitis [Thu, 13 Feb 2020 15:50:16 +0000 (17:50 +0200)]
Merge pull request #5787 from karamalla0406/rmac_check

bgpd: RFC compliance wrt invalid RMAC, GWIP, ESI and VNI

5 years agobabeld: GCC complaining about no return in non-void function 5805/head
Donald Sharp [Thu, 13 Feb 2020 13:44:40 +0000 (08:44 -0500)]
babeld: GCC complaining about no return in non-void function

The babel_main_loop function did not have a return for
a non-void function.  For some reason gcc is starting to complain
about this now.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years ago*: Remove break after return 5806/head
Donatas Abraitis [Thu, 13 Feb 2020 13:21:26 +0000 (15:21 +0200)]
*: Remove break after return

Just a deadcode.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #5798 from donaldsharp/bgp_packet_reformat
Sri Mohana Singamsetty [Thu, 13 Feb 2020 00:25:49 +0000 (16:25 -0800)]
Merge pull request #5798 from donaldsharp/bgp_packet_reformat

bgpd: Reformat bpacket_reformat_for_peer

5 years agobgpd: Reformat bpacket_reformat_for_peer 5798/head
Donald Sharp [Tue, 11 Feb 2020 03:03:02 +0000 (22:03 -0500)]
bgpd: Reformat bpacket_reformat_for_peer

This function was heavily indented, reformat to reduce indentation
levels a bit.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #5794 from mjstapp/remove_nexthop_matched_flag
Quentin Young [Wed, 12 Feb 2020 16:29:22 +0000 (11:29 -0500)]
Merge pull request #5794 from mjstapp/remove_nexthop_matched_flag

lib,zebra: remove unused MATCHED nexthop flag

5 years agolib,zebra: remove unused MATCHED nexthop flag 5794/head
Mark Stapp [Tue, 11 Feb 2020 16:14:37 +0000 (11:14 -0500)]
lib,zebra: remove unused MATCHED nexthop flag

Remove an unused flag value from the nexthop struct.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agobgpd: RFC compliance wrt invalid RMAC, GWIP, ESI and VNI 5787/head
Kishore Aramalla [Mon, 10 Feb 2020 19:38:27 +0000 (11:38 -0800)]
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>
5 years agoMerge pull request #5793 from ton31337/fix/formatting_show_bgp_summary_failed
Quentin Young [Tue, 11 Feb 2020 19:45:40 +0000 (14:45 -0500)]
Merge pull request #5793 from ton31337/fix/formatting_show_bgp_summary_failed

bgpd: Format properly `show bgp summary failed`

5 years agoMerge pull request #5778 from ton31337/fix/add_doc_for_ebgp_connected_route_check
Quentin Young [Tue, 11 Feb 2020 16:29:04 +0000 (11:29 -0500)]
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`

5 years agobgpd: Format properly `show bgp summary failed` 5793/head
Donatas Abraitis [Tue, 11 Feb 2020 16:02:19 +0000 (18:02 +0200)]
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>
5 years agoMerge pull request #5785 from ton31337/fix/replace_gtsm_hops_to_readable_macros
Russ White [Tue, 11 Feb 2020 15:40:35 +0000 (10:40 -0500)]
Merge pull request #5785 from ton31337/fix/replace_gtsm_hops_to_readable_macros

bgpd: Use readable macros for peer->gtsm_hops instead of literals

5 years agoMerge pull request #5744 from ton31337/fix/thread-as-withdraw_attributes
Russ White [Tue, 11 Feb 2020 15:04:19 +0000 (10:04 -0500)]
Merge pull request #5744 from ton31337/fix/thread-as-withdraw_attributes

bgpd: Update some attributes how they are handled if malformed

5 years agoMerge pull request #5789 from donaldsharp/bgp_ebgp_reason
Donatas Abraitis [Tue, 11 Feb 2020 08:42:23 +0000 (10:42 +0200)]
Merge pull request #5789 from donaldsharp/bgp_ebgp_reason

bgpd: Update failed reason to distinguish some NHT scenarios

5 years agobgpd: Update failed reason to distinguish some NHT scenarios 5789/head
Donald Sharp [Tue, 11 Feb 2020 00:25:52 +0000 (19:25 -0500)]
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>
5 years agoMerge pull request #5763 from ton31337/fix/return_without_parent
Renato Westphal [Mon, 10 Feb 2020 21:49:06 +0000 (18:49 -0300)]
Merge pull request #5763 from ton31337/fix/return_without_parent

*: Remove parenthesis on return for constants

5 years agoMerge pull request #5776 from volta-networks/fix_ldp_topol_test
Renato Westphal [Mon, 10 Feb 2020 21:48:25 +0000 (18:48 -0300)]
Merge pull request #5776 from volta-networks/fix_ldp_topol_test

ldpd: Fix LDP topotest to validate MPLS LDP CLI output

5 years agoMerge pull request #5770 from ton31337/fix/remove_bgp_flag_functions
Sri Mohana Singamsetty [Mon, 10 Feb 2020 16:31:59 +0000 (08:31 -0800)]
Merge pull request #5770 from ton31337/fix/remove_bgp_flag_functions

bgpd: Replace bgp_flag_* to [UN]SET/CHECK_FLAG macros

5 years agobgpd: Use readable macros for peer->gtsm_hops instead of literals 5785/head
Donatas Abraitis [Mon, 10 Feb 2020 14:17:40 +0000 (16:17 +0200)]
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>
5 years agotests: Fix LDP topotest to validate MPLS LDP CLI output 5776/head
Karen Schoener [Thu, 6 Feb 2020 21:19:40 +0000 (16:19 -0500)]
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>
5 years agoMerge pull request #5772 from adharkar/frr-master-ipv6_nexthop
Donatas Abraitis [Mon, 10 Feb 2020 09:09:32 +0000 (11:09 +0200)]
Merge pull request #5772 from adharkar/frr-master-ipv6_nexthop

bgpd: EVPN crash because of incorrect nexthop for IPv6 prefix

5 years ago*: Remove parenthesis on return for constants 5763/head
Donatas Abraitis [Sun, 9 Feb 2020 12:21:56 +0000 (14:21 +0200)]
*: Remove parenthesis on return for constants

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agotools: Add coccinelle script to remove parenthesis on return
Donatas Abraitis [Sun, 9 Feb 2020 12:20:37 +0000 (14:20 +0200)]
tools: Add coccinelle script to remove parenthesis on return

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #5781 from LabNConsulting/working/master/tt-catch-notifications
Donatas Abraitis [Sun, 9 Feb 2020 07:12:05 +0000 (09:12 +0200)]
Merge pull request #5781 from LabNConsulting/working/master/tt-catch-notifications

topotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications

5 years agotopotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications 5781/head
Lou Berger [Sat, 8 Feb 2020 15:36:49 +0000 (10:36 -0500)]
topotest: bgp_l3vpn_to_bgp_vrf - report unexpected BGP notifications

Signed-off-by: Lou Berger <lberger@labn.net>
5 years agodoc: Add few words about `bgp disable-ebgp-connected-route-check` 5778/head
Donatas Abraitis [Fri, 7 Feb 2020 18:56:54 +0000 (20:56 +0200)]
doc: Add few words about `bgp disable-ebgp-connected-route-check`

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agobgpd: EVPN crash because of incorrect nexthop for IPv6 prefix 5772/head
Ameya Dharkar [Thu, 6 Feb 2020 21:47:43 +0000 (13:47 -0800)]
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>
5 years agobgpd: Replace bgp_flag_* to [UN]SET/CHECK_FLAG macros 5770/head
Donatas Abraitis [Thu, 6 Feb 2020 14:37:20 +0000 (16:37 +0200)]
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>
5 years agotools: Add coccinelle script to replace all bgp_flag_* functions
Donatas Abraitis [Thu, 6 Feb 2020 14:24:22 +0000 (16:24 +0200)]
tools: Add coccinelle script to replace all bgp_flag_* functions

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #5722 from donaldsharp/kernel_routes
Russ White [Thu, 6 Feb 2020 13:04:42 +0000 (08:04 -0500)]
Merge pull request #5722 from donaldsharp/kernel_routes

Kernel routes

5 years agoMerge pull request #5767 from ton31337/fix/replace_s_addr_0_to_INADDR_ANY
Donald Sharp [Thu, 6 Feb 2020 12:30:21 +0000 (07:30 -0500)]
Merge pull request #5767 from ton31337/fix/replace_s_addr_0_to_INADDR_ANY

MOAR CODE NAZI: replace s_addr 0 => INADDR_ANY

5 years agoMerge pull request #5765 from Spantik/bugs
Donald Sharp [Thu, 6 Feb 2020 12:27:27 +0000 (07:27 -0500)]
Merge pull request #5765 from Spantik/bugs

OSPF: Multi instance broken

5 years agotools: Add coccinelle script to replace s_addr 0 to INADDR_ANY 5767/head
Donatas Abraitis [Thu, 6 Feb 2020 06:50:50 +0000 (08:50 +0200)]
tools: Add coccinelle script to replace s_addr 0 to INADDR_ANY

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years ago*: Replace s_addr 0 => INADDR_ANY
Donatas Abraitis [Thu, 6 Feb 2020 06:49:02 +0000 (08:49 +0200)]
*: Replace s_addr 0 => INADDR_ANY

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #5761 from qlyoung/fix-bgp-gr-cruft
Donatas Abraitis [Thu, 6 Feb 2020 06:16:25 +0000 (08:16 +0200)]
Merge pull request #5761 from qlyoung/fix-bgp-gr-cruft

Fix bgp gr style

5 years agoOSPF: Multi instance broken 5765/head
Santosh P K [Wed, 5 Feb 2020 17:40:00 +0000 (09:40 -0800)]
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>
5 years agoMerge pull request #5104 from opensourcerouting/route-map-nbv2
Donald Sharp [Wed, 5 Feb 2020 16:54:21 +0000 (11:54 -0500)]
Merge pull request #5104 from opensourcerouting/route-map-nbv2

lib: migrate route map to use northbound

5 years agolib: fix route-map YANG module on old gcc versions 5104/head
Rafael Zalamena [Wed, 5 Feb 2020 14:09:31 +0000 (11:09 -0300)]
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>
5 years agobgpd: Update some attributes how they are handled if malformed 5744/head
Donatas Abraitis [Wed, 29 Jan 2020 13:09:37 +0000 (15:09 +0200)]
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>
5 years agoMerge pull request #5758 from sworleys/Doc-No-Pbr-Dyn-Rules
Renato Westphal [Wed, 5 Feb 2020 04:50:19 +0000 (01:50 -0300)]
Merge pull request #5758 from sworleys/Doc-No-Pbr-Dyn-Rules

doc: indicate non-support for dynamic pbr maps

5 years agoMerge pull request #5750 from qlyoung/fix-null-after-xfree
Renato Westphal [Wed, 5 Feb 2020 04:49:08 +0000 (01:49 -0300)]
Merge pull request #5750 from qlyoung/fix-null-after-xfree

*: don't null after XFREE; XFREE does this itself

5 years agoMerge pull request #5760 from ton31337/fix/shorthand_operator
Renato Westphal [Wed, 5 Feb 2020 04:45:55 +0000 (01:45 -0300)]
Merge pull request #5760 from ton31337/fix/shorthand_operator

zebra: Use shorthand operator in ifm_read()

5 years agoMerge pull request #5717 from pguibert6WIND/flowspec_issue_redistribute
Quentin Young [Tue, 4 Feb 2020 20:48:24 +0000 (15:48 -0500)]
Merge pull request #5717 from pguibert6WIND/flowspec_issue_redistribute

Flowspec issue redistribute

5 years agoMerge pull request #5759 from ton31337/fix/void_no_return
Quentin Young [Tue, 4 Feb 2020 20:45:01 +0000 (15:45 -0500)]
Merge pull request #5759 from ton31337/fix/void_no_return

zebra, lib: Remove return from void functions

5 years agobgpd, lib: fix style from BGP GR code 5761/head
Quentin Young [Fri, 31 Jan 2020 18:04:00 +0000 (13:04 -0500)]
bgpd, lib: fix style from BGP GR code

This patch fixes the noncompliant style for the following commit range:

4a6e80fbf
2ba1fe695
efcb2ebbb
8c48b3b69
dc95985fe
0f0444fbd
85ef4179a
eb451ee58
2d3dd828d
9e3b51a7f
d6e3c15b6
34aa74486
6102cb7fe
d7b3cda6f
2bb5d39b1
5f9c1aa29
5cce3f054
3a75afa4b
f009ff269
cfd47646b
2986cac29
055679e91
034e185dc
794b37d52
b0965c44e
949b0f24f
63696f1d8

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agobgpd: use _RO list iter variant for gr macro
Quentin Young [Fri, 31 Jan 2020 18:03:27 +0000 (13:03 -0500)]
bgpd: use _RO list iter variant for gr macro

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years ago*: remove null check before XFREE 5750/head
Quentin Young [Tue, 4 Feb 2020 18:19:37 +0000 (13:19 -0500)]
*: remove null check before XFREE

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agozebra: Use shorthand operator in ifm_read() 5760/head
Donatas Abraitis [Tue, 4 Feb 2020 18:11:59 +0000 (20:11 +0200)]
zebra: Use shorthand operator in ifm_read()

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agotools: Add coccinelle script to check if we use shorthand operators
Donatas Abraitis [Tue, 4 Feb 2020 18:08:50 +0000 (20:08 +0200)]
tools: Add coccinelle script to check if we use shorthand operators

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agotools: Add coccinelle script to check if void does not have return 5759/head
Donatas Abraitis [Tue, 4 Feb 2020 18:05:40 +0000 (20:05 +0200)]
tools: Add coccinelle script to check if void does not have return

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agozebra, lib: Remove return from void functions
Donatas Abraitis [Tue, 4 Feb 2020 18:05:21 +0000 (20:05 +0200)]
zebra, lib: Remove return from void functions

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agolib: fix route map northbound memory leak
Rafael Zalamena [Tue, 15 Oct 2019 02:29:19 +0000 (23:29 -0300)]
lib: fix route map northbound memory leak

Keep a list of hook contexts used by northbound so we don't lose the
pointer when free()ing the route map index entry data.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years ago*: fix route map integration
Rafael Zalamena [Tue, 1 Oct 2019 20:56:41 +0000 (17:56 -0300)]
*: fix route map integration

Add the appropriated code to bootstrap route map northbound for all
daemons.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agolib: add backward compatibility for route map
Rafael Zalamena [Tue, 1 Oct 2019 18:52:51 +0000 (15:52 -0300)]
lib: add backward compatibility for route map

Allow old CLI users to still print their configuration without migrating
to northbound.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agolib: fix route map generic error output
Rafael Zalamena [Mon, 30 Sep 2019 18:02:15 +0000 (15:02 -0300)]
lib: fix route map generic error output

Two fixes here:

*   Don't attempt to use `vty` pointer in vty;
*   When `vty` is unavailable output to log;

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agoyang/lib: add filter model to code
Rafael Zalamena [Tue, 1 Oct 2019 20:56:16 +0000 (17:56 -0300)]
yang/lib: add filter model to code

This fixes a warning on daemons that use route map about filter yang
model not being included in the binary.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agolib: implement new route map CLI
Rafael Zalamena [Mon, 30 Sep 2019 18:01:46 +0000 (15:01 -0300)]
lib: implement new route map CLI

Use the northbound back-end instead of the old route map CLI.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agolib: implement route map northbound
Rafael Zalamena [Mon, 30 Sep 2019 13:34:49 +0000 (10:34 -0300)]
lib: implement route map northbound

Based on the route map old CLI, implement the route map handling using
the exported functions.

Use a curry-like programming pattern avoid code repetition when
destroying match/set entries. This is needed by other daemons that
implement custom route map functions and need to pass to lib their
specific destroy functions.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agolib: export route map structures and functions
Rafael Zalamena [Mon, 30 Sep 2019 13:17:33 +0000 (10:17 -0300)]
lib: export route map structures and functions

These exported items are going to be used by the new northbound CLI.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agoyang: update route map model
Rafael Zalamena [Fri, 27 Sep 2019 22:32:10 +0000 (19:32 -0300)]
yang: update route map model

Important changes:

  * Rename top container `route-map` to `lib`;
  * Rename list `instance` to `route-map`;
  * Move route map repeated data to list `entry`;
  * Use interface reference instead of typedef'ed string;
  * Remove some zebra specific route map conditions;
  * Protect `tag` set value with `when "./action = 'tag'"`;

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agoMerge pull request #5169 from ton31337/feature/sequence_numbers_for_community_lists
Quentin Young [Tue, 4 Feb 2020 16:56:29 +0000 (11:56 -0500)]
Merge pull request #5169 from ton31337/feature/sequence_numbers_for_community_lists

bgpd: Use sequence numbers for community lists

5 years agodoc: indicate non-support for dynamic pbr maps 5758/head
Stephen Worley [Tue, 4 Feb 2020 16:35:31 +0000 (11:35 -0500)]
doc: indicate non-support for dynamic pbr maps

Indicate in the doc clearly that we do not support the dynamic
creation of pbr maps for sub-interfaces when the master has
an interface. Such as in vlans. It must be explicitly added.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
5 years agobgpd: forge bgp flowspec packets to be sent 5717/head
Philippe Guibert [Tue, 21 Jan 2020 12:17:45 +0000 (13:17 +0100)]
bgpd: forge bgp flowspec packets to be sent

bgp flowspec packets are being forged correctly. There is no need to
check for bgp length, as the bgp nlri length is checked at reception.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
5 years agobgpd: when nexthop IP is available for flowspec, keep it
Philippe Guibert [Tue, 21 Jan 2020 12:15:42 +0000 (13:15 +0100)]
bgpd: when nexthop IP is available for flowspec, keep it

keep original nexthop IP address when propagating bgp updates to other
peers.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
5 years agoMerge pull request #5739 from mjstapp/nhg_show_ordered
Renato Westphal [Tue, 4 Feb 2020 16:37:24 +0000 (13:37 -0300)]
Merge pull request #5739 from mjstapp/nhg_show_ordered

zebra: show zebra nexthop-groups without copying

5 years agoMerge pull request #5653 from slankdev/slankdev-bgpd-support-prefix-sid-srv6-l3vpn
Donald Sharp [Tue, 4 Feb 2020 16:37:10 +0000 (11:37 -0500)]
Merge pull request #5653 from slankdev/slankdev-bgpd-support-prefix-sid-srv6-l3vpn

bgpd: additional Prefix-SID sub-types for supporting SRv6 l3vpn

5 years agoMerge pull request #5746 from donaldsharp/bgp_sa
Russ White [Tue, 4 Feb 2020 16:24:08 +0000 (11:24 -0500)]
Merge pull request #5746 from donaldsharp/bgp_sa

Coverioty sa stuff

5 years agoMerge pull request #5207 from Spantik/ZERBA_GR
Donald Sharp [Tue, 4 Feb 2020 15:57:29 +0000 (10:57 -0500)]
Merge pull request #5207 from Spantik/ZERBA_GR

Zebra: Adding GR infrastructure for clients.

5 years agozebra: show zebra nexthop-groups without copying 5739/head
Mark Stapp [Tue, 28 Jan 2020 19:45:53 +0000 (14:45 -0500)]
zebra: show zebra nexthop-groups without copying

Use a hash walker/iterator instead of a temporary list to
show zebra's nexthop-groups/nexthop-hash-entries.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years agoMerge pull request #5737 from mjstapp/zebra_disable_kern_nhs
Russ White [Tue, 4 Feb 2020 13:12:34 +0000 (08:12 -0500)]
Merge pull request #5737 from mjstapp/zebra_disable_kern_nhs

zebra: add config to disable use of kernel nexthops

5 years agozebra: top has already been derefed 5746/head
Donald Sharp [Fri, 31 Jan 2020 15:46:05 +0000 (10:46 -0500)]
zebra: top has already been derefed

The top variable has already been derefed by the time we get
to the test to see if it is non-NULL.  No need to check it.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agolib: Test return of fcntl in agentx.c
Donald Sharp [Fri, 31 Jan 2020 15:44:23 +0000 (10:44 -0500)]
lib: Test return of fcntl in agentx.c

The agentx.c code was calling fcntl but not testing return
code and handling it, thus making SA unhappy.

Fix.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Remove dead call to get_afi_safi_str
Donald Sharp [Fri, 31 Jan 2020 15:30:22 +0000 (10:30 -0500)]
bgpd: Remove dead call to get_afi_safi_str

There is no need for a call into get_afi_safi_str for the
json side since we add it based upon the afi safi str below.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Tell Coverity SA that regex cannot be NULL here
Donald Sharp [Fri, 31 Jan 2020 15:26:33 +0000 (10:26 -0500)]
bgpd: Tell Coverity SA that regex cannot be NULL here

The coverity SA believes that the regex value can possibly
be NULL.  Not possible so let's make it happy.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years ago*: don't null after XFREE; XFREE does this itself
Quentin Young [Mon, 3 Feb 2020 16:22:13 +0000 (11:22 -0500)]
*: don't null after XFREE; XFREE does this itself

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agoMerge pull request #5745 from donaldsharp/bgp_formating
Donatas Abraitis [Sun, 2 Feb 2020 13:37:44 +0000 (15:37 +0200)]
Merge pull request #5745 from donaldsharp/bgp_formating

Bgp formating

5 years agoMerge pull request #5669 from donaldsharp/nhg_ip
Mark Stapp [Fri, 31 Jan 2020 16:35:22 +0000 (11:35 -0500)]
Merge pull request #5669 from donaldsharp/nhg_ip

Nhg ip cleanups

5 years agobgpd: enums in switches do not need default 5745/head
Donald Sharp [Fri, 31 Jan 2020 14:24:58 +0000 (09:24 -0500)]
bgpd: enums in switches do not need default

If you have enums handled in a switch adding a default case
makes it fun to fix when new stuff is added later.  Remove.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Cleanup some bad formating
Donald Sharp [Fri, 31 Jan 2020 14:19:24 +0000 (09:19 -0500)]
bgpd: Cleanup some bad formating

Some recent commits got some bad formating.  Clean this up.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agodoc: Update doc to reflect changes in `show nexthop-group rib` command 5669/head
Donald Sharp [Wed, 15 Jan 2020 13:28:22 +0000 (08:28 -0500)]
doc: Update doc to reflect changes in `show nexthop-group rib` command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agozebra: nexthop groups vrf's are only a function of namespaces
Donald Sharp [Mon, 13 Jan 2020 21:11:46 +0000 (16:11 -0500)]
zebra: nexthop groups vrf's are only a function of namespaces

Nexthop groups as a whole do not make sense to have a vrf'ness
As that you can have a arbitrary number of nexthops that point
to separate vrf's.

Modify the code to make this distinction, by clearly delineating
the line between the nhg and the nexthop a bit better.
Nexthop groups having a vrf_id only make sense if you are using
network namespaces to represent them.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>