Commit Graph

11167 Commits

Author SHA1 Message Date
radhika
a2023fab27 Zebra: Fix ptm-enable config failure on internally created interfaces
Ticket: CM-15658
Reviewed By: CCR-6534
Testing Done: Unit

Issue: frr ptm-enable command not working for interfaces that have been created by frr as a place holder.

Root Cause: The ptm-enable on interface configuration was not getting stored when the interface was internally created by frr.

Fix: Store the ptm-enable configuration even if the interface is internally created.

Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
vivek
6c0a605355 bgpd: Fix VRF route leaking for multipath routes
Ensure that the next hop of the leaked VRF is not overwritten when the
route is being imported into the target VRF from the VPN table. Also, in
the case of multipath routes, ensure that the nexthop's ifindex is not
inadvertently reset.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
vivek
9ed7517b1a zebra: Increase recvmsg buffer size for picking up netlink messages
Netlink messages from the kernel need to be received in a buffer larger
than 8K in order to handle some types of info - for example, the VLAN
information. Define a separate size for receive and set it to 32K, which
is the value used by other netlink receivers like iproute2.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Donald Sharp
8cb73ba40d zebra: Fixup crash with vlan interfaces attempted to be used
When zebra starts up it receives from the kernel a full dump of
interface information.  Unfortunately it is in no particular order.
As such we sometimes receive data from the kernel about interfaces
we do not know about yet.

In this bug, we are attempting to use the interface pointer(->link)
for a vlan interface that we have not properly resolved.

This fix ensures that we will not attempt to call zvni_map_svi
if we have a NULL pointer.  There are other places in the code
we are already checking for the fact that the ->link pointer
is valid before calling this function, so I believe that this
is correct.

We do need to come back and resolve all ->link pointers
after we have received the full table.  This can be
done in another commit.

Ticket: CM-17041
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Donald Sharp
dcfe47166a bgpd: Fix compiler warning->errors of might be used uninited
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
vivek
1e00627b3b bgpd: Don't generate spurious warning on VNI deletion
There are situations in which zebra may issue more than one delete
notification, so BGP should not warn when it can't locate the VNI
at delete. This is comparable to the situation when a withdraw is
received but the route isn't present locally.

Signed-off-by: Vivek Venkatraman <vivek@cumulusmetworks.com>

Ticket: CM-17512
Reviewed By: Trivial
Testing Done: Manual
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
637315fc78 bgpd: set NEXTHOP_UNCHANGED for l2vpn evpn by default for all BGP peers
This flag needs to be set by default for l2vpn evpn address-family.
We needed to find a place in the code which gets called by all peers
at somepoint in the statemachine and before the routes are advertised.
peer_new seems like the right place for this
as we are setting other default af_flags here as well.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Donald Sharp
2017b3ead0 zebra: Use STREAM_GETXXX functions
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
ace295a90d bgpd: enable neighbor-nexthop-self for l2vpn evpn address family
In the FRR implementation of EVPN,
eBGP leaf-spine peering for EVPN is fully supported by allowing
the next hop to be propagated and not rewritten at each hop.
There are other changes also related to route import to facilitate this.
However, propagating the next hop is not correct in some cases.
Specifically, if the DC is comprised of multiple PODs
with distinct intra-POD and inter-POD VxLAN tunnels,
EVPN routes received from an adjacent POD by a border/exit leaf
must be propagated into the local POD with the next hop rewritten (to self).

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
2b659f3329 bgpd: modify route install/withdraw logic for evpn type-5 routes in vrf
We install type-5 routes as ipv4/ipv6 unicast routes in the vrf table.
along with these routes, we also install the RMAC
and the nexthop Neigh entries.
There might be scenarios were the bestpath has changed and
we are now pointing to a new nexthop with a different RMAC.
As per BGP logic, we just send an update for the route and the nexthop
is replaced. However, this causes problem because the RMAC and neigh entry
corresponding to the previous nexthop are still lingering in the system.
We need to clear those entries for proper functoning.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
7e4ed18ef5 bgpd: apply advertise ipv4 unicast route-map while advertising type-5 routes
A newly added ipv4/ipv6 route in BGP RIB might be advertised as type-5 EVPN route.
The user might have configured a route-map for advertising type-5 routes.
We need to apply this route-map while advertising ipv4/ipv6 routes as type-5.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
d2a0075ac2 bgpd: write route-map to config for advertise type5 commands
We enable/disable type-5 routes by following commands:
advertise ipv4 unicast [route-map <route-map>]
advertise ipv6 commands [route-map <route-map>]
the route-map part was writtem to conf file.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
d4f7497ebd bgpd: no advertise ipv6 unicast comand should unset the af_flags
no advertise ipv6 unicast command should unset the corresponding
af_flag in bgp_vrf rather than the vrf_flags.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
vivek
2dd3221735 bgpd: Display table version for EVPN routes
Display the table version for EVPN routes like it is done for other
address families. Note that this is really relevant only for the
per-VNI routing table.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>

Ticket: CM-12903
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
cc6d54769b bgpd/zebra: use stream_putl/getl to send VNIs
Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
cf29971433 zebra: vni [prefix-routes-only] should also be provided for the 'no' cmd
We have a command to enable symmetric routing only for type-5 routes.
This command is provided under vrf <> option in zebra as follows:
vrf <VRF>
  vni <VNI> [prefix-routes-only]
We need the corresponding no version of the command as well as follows:
vrf <VRF>
  no vni <VNI> [prefix-routes-only]

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Mitesh Kanjariya
f50dc5e607 zebra: remote RMAC for EVPN ipv6 hosts should be programmed against the ipv4 nexthop
For ipv6 host, the next hop is conevrted to ipv6 mapped address.
However, the remote rmac should still be programmed with the ipv4 address.
This is how the entries will look in the kernel for ipv6 hosts routing.

vrf routing table:
ipv6 -> ipv6_mapped remote vtep on l3vni SVI

neigh table:
ipv6_mapped remote vtep -> remote RMAC

bridge fdb:
remote rmac -> ipv4 vtep tunnel

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Daniel Walton
0204baa876 watchfrr always writes 'log syslog informational' to the config
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by:   Dave Olson <olson@cumulusnetworks.com>

Ticket: CM-16501
2018-05-08 19:24:15 -04:00
Quentin Young
9f46cc36aa lib: move ip node above vrf node for config order
VRF static route commands adopt global static config if static config is
placed after a vrf context with no separator, workaround by always
writing static route config before vrf config

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Donald Sharp
9a55f79a26 pbrd, vtysh: Limit range to actual 1-700
The range for sequence numbers needs to be limited
by the range we have currently choosen for rule
ranges.

Ticket: CM-20562
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
vivek
22e63104d2 bgpd, zebra: Handle EVPN router MAC per next hop
Ensure that when EVPN routes are installed into zebra, the router MAC
is passed per next hop and appropriately handled. This is required for
proper multipath operation.

Ticket: CM-18999
Reviewed By:
Testing Done: Verified failed scenario, other manual tests
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2018-05-08 19:24:15 -04:00
Donald Sharp
75a73eeb26
Merge pull request #2178 from pguibert6WIND/issue_2177
pbrd: encode null fwmark to be consistent with zebra decode rule
2018-05-08 14:41:28 -04:00
Donald Sharp
ff7a93c67b
Merge pull request #2185 from opensourcerouting/isis-redist-metric-fix
isisd: use 0 as default-metric for redistribution
2018-05-08 14:10:02 -04:00
Christian Franke
8cfc8c5cfd isisd: use 0 as default-metric for redistribution
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-05-08 17:32:15 +02:00
Quentin Young
8af54f0bfb
Merge pull request #2181 from zefanxu-bsn/patch-1
Default hello interval is wrong
2018-05-07 17:19:14 -04:00
Zefan Xu
2de01166c5
Default hello interval is wrong 2018-05-07 14:16:42 -07:00
Philippe Guibert
614827f88b pbrd: encode null fwmark to be consistent with zebra decode rule
A null 4-byte long fwmark is encoded in pbr rule.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-05-07 18:59:41 +02:00
Renato Westphal
e8f95403e4
Merge pull request #2156 from donaldsharp/zebra_doc
doc: Explain ecmp building and startup for zebra
2018-05-07 12:18:14 -03:00
Renato Westphal
adb6f72851
Merge pull request #2166 from qlyoung/docuser
doc: add figures & fix some typos in arch. docs
2018-05-07 12:15:18 -03:00
Renato Westphal
1d21078486
Merge pull request #2175 from chiragshah6/mdev
ospf6d: add newline to show debugging cmd
2018-05-07 12:08:16 -03:00
Chirag Shah
257660b457 ospf6d: add newline to show debugging cmd
Ticket:CM-20738
Testing Done:
Before:
OSPF6 debugging status:debug ospf6 lsa inter-router examine
debug ospf6 lsa as-external examine
debug ospf6 route memory
debug ospf6 border-routers

After:
OSPF6 debugging status:
debug ospf6 lsa inter-router examine
debug ospf6 lsa as-external examine
debug ospf6 route memory
debug ospf6 border-routers

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-05-05 15:38:11 -07:00
Donald Sharp
0d8df93443 doc: Explain ecmp building and startup for zebra
Explain the --enable-ecmp=X configure option as well as
modify the zebra user doc to explain the -e X option.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-03 23:13:15 -04:00
Donald Sharp
1c96f2fb96
Merge pull request #2169 from piotrjurkiewicz/eigrp_feasibility
eigrpd: Consider only feasible successors as successors
2018-05-03 23:02:36 -04:00
Donald Sharp
87e6a84061
Merge pull request #2167 from piotrjurkiewicz/master
eigrpd: Correctly calculate EIGRP packet MTU
2018-05-03 21:58:10 -04:00
Piotr Jurkiewicz
53765081f9 eigrpd: Consider only feasible successors as successors
Meeting the feasibility condition is required also for routes
meeting the variance condition.

Signed-off-by: Piotr Jurkiewicz <piotr.jerzy.jurkiewicz@gmail.com>
2018-05-04 03:01:29 +02:00
Piotr Jurkiewicz
9378632f04 eigrpd: Use EIGRP_PACKET_MTU(mtu) macro
Signed-off-by: Piotr Jurkiewicz <piotr.jerzy.jurkiewicz@gmail.com>
2018-05-04 02:58:31 +02:00
Piotr Jurkiewicz
ca83a1ab22 eigrpd: Correctly calculate EIGRP packet MTU
Someone forgot that EIGRP packets are encapsulated in IP.

Signed-off-by: Piotr Jurkiewicz <piotr.jerzy.jurkiewicz@gmail.com>
2018-05-04 02:58:18 +02:00
Quentin Young
c9efc8d3fe doc: add figures & fix some typos in arch. docs
Found some old design documentation I wrote up and stole the figures.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-05-03 12:31:06 -04:00
Jafar Al-Gharaibeh
babf583e63
Merge pull request #2158 from donaldsharp/timeouts
redhat, tools: Increase startup time out a bit
2018-05-03 09:45:04 -05:00
Jafar Al-Gharaibeh
45f65a6f6c
Merge pull request #2164 from donaldsharp/pbr_nht_eats_gcc
pbrd: Fix nearly impossible truncation
2018-05-03 09:44:15 -05:00
Jafar Al-Gharaibeh
9794f1ad46
Merge pull request #2146 from qlyoung/docuser
doc: add documentation on threading & process arch
2018-05-03 09:42:46 -05:00
Jafar Al-Gharaibeh
83f5c52f64
Merge pull request #2161 from donaldsharp/zebra_improved_out
zebra: Add a few more breadcrumbs
2018-05-03 09:41:12 -05:00
Jafar Al-Gharaibeh
31569f0bbc
Merge pull request #2159 from donaldsharp/msdp_crash
pimd: Fix some msdp crashes when some fundamentals change
2018-05-03 09:40:23 -05:00
Jafar Al-Gharaibeh
6d8fa7643d
Merge pull request #2143 from donaldsharp/pimaroni
Pimaroni
2018-05-03 09:39:55 -05:00
Donald Sharp
29d5a14634 pbrd: Fix nearly impossible truncation
Since we are writing into the name field which is PBR_MAP_NAMELEN
size, we are expecting this to field to be at max 100 bytes.
Newer compilers understand that the %s portion may be up to
100 bytes( because of the size of the string.  The %u portion
is expected to be 10 bytes.  So in `theory` there are situations
where we might truncate.  The reality this is never going to
happen( who is going to create a nexthop group name that is
over say 30 characters? ).  As such we are expecting the
calling function to subtract 10 from the size_t l before
we pass it in to get around this new gcc fun.

Fixes: #2163
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-02 20:14:36 -04:00
Russ White
a2892c914b
Merge pull request #2141 from chiragshah6/ospfv3_dev
ospf6d: fix intra prefix ecmp
2018-05-02 18:55:56 -04:00
Russ White
d437ae815d
Merge pull request #2073 from pguibert6WIND/bgp_fs_pbr
Bgp Flowspec Policy Based Routing
2018-05-02 18:54:11 -04:00
Donald Sharp
f03098f979 zebra: Add a few more breadcrumbs
re->status and re->flags both influence our decision states
for rib processing.  Yet it's impossible to see them.  Add
a tiny bit of code to allow us to look at them when things
are not behaving like we would expect.

Additionally dump the nexthop->flags at the same time for
the same reasons.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-05-02 16:50:37 -04:00
Russ White
d71b0564c2
Merge pull request #2154 from dslicenc/hostname-fix
lib: allow hostname to begin with a letter or number
2018-05-02 14:23:46 -04:00
Martin Winter
ef2a2c2e09 configure: Update version to 5.1-dev
We are now working on 5.1-dev for new work.

Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
2018-05-02 07:28:39 -07:00