Commit Graph

14714 Commits

Author SHA1 Message Date
Donald Sharp
413908931c doc: Update documentation to new functionality
Update sharp.rst to reflect new functionality in the `sharp install ..`
command.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-03 09:57:06 -05:00
Donald Sharp
b939f6ff51 sharpd: Add code to allow install/uninstall repeatedly
Add a bit of test code to allow the tester to install/uninstall
the routes via:

sharp install routes A.B.C.D nexthop Y.Z.M.D 1000000 repeat 100

This will install 1000000 routes wait for them to be finished
then uninstall them then start installation over 100 times.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
2019-01-03 09:49:15 -05:00
Russ White
cb6aafaccc
Merge pull request #3558 from opensourcerouting/silence-ioctl-warning
zebra: silence harmless ioctl warning when retrieving interface speed
2019-01-02 21:43:18 -05:00
Russ White
e7db973e6e
Merge pull request #3560 from opensourcerouting/fix-sh-bgp-community
bgpd: fix parsing of community number in the "show bgp community" command
2019-01-02 21:42:50 -05:00
Russ White
7d4465cf35
Merge pull request #3549 from chiragshah6/mdev
bgpd: evpn command to restrict to default vrf
2019-01-02 21:39:58 -05:00
Renato Westphal
3cb4162cfe lib: fix segfault on freebsd when using vsnprintf() incorrectly
FreeBSD's libc segfaults when vsnprintf() is called with a null
format string. Add a null check before calling vsnprintf() to
resolve this problem.

Fixes #3537

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-02 22:32:13 -02:00
Renato Westphal
79bc257a1d bgpd: fix parsing of community number in the "show bgp community" command
Fixes #3545.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-02 19:32:15 -02:00
Donald Sharp
6b98d34fdf sharpd: Abstract the route install/delete functions a bit
Abstract the route install/delete functions a bit to allow me to
expand on them in the with future commits.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-02 15:40:10 -05:00
Renato Westphal
f767cee4eb zebra: silence harmless ioctl warning when retrieving interface speed
zebra uses the SIOCETHTOOL ioctl with the ETHTOOL_GSET command to
fetch the speed of interfaces from the kernel. The only problem is
that ETHTOOL_GSET returns EOPNOTSUPP when the given interface is a
virtual interface. This leads to zebra emitting warnings like this
at startup:

ZEBRA: IOCTL failure to read interface lo speed: 95 Operation not supported
ZEBRA: IOCTL failure to read interface dummy0 speed: 95 Operation not supported
ZEBRA: IOCTL failure to read interface ovs-system speed: 95 Operation not supported

Silence these warnings by ignoring EOPNOTSUPP errors, since we know
they are harmless. This is similar to how we handle EINVAL errors
from the BSD SIOCGIFMEDIA ioctl (commit c69f2c1ff).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-02 18:18:26 -02:00
Quentin Young
6205e5dc07
Merge pull request #3553 from opensourcerouting/fix-interface-vrf-update-msg
zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
2019-01-02 13:50:47 -05:00
Renato Westphal
650f3a558b
Merge pull request #3550 from donaldsharp/sharp_nhg
Sharp nhg
2019-01-02 14:42:34 -02:00
Quentin Young
1d52b3d407
Merge pull request #3534 from opensourcerouting/netlink-length-duplicated
zebra: remove duplicated code
2019-01-02 10:53:49 -05:00
Renato Westphal
91d227b7e3 zebra, lib: fix the ZEBRA_INTERFACE_VRF_UPDATE zapi message
Unlike the other interface zapi messages, ZEBRA_INTERFACE_VRF_UPDATE
identifies interfaces using ifindexes and not interface names. This
is a problem because zebra always sends ZEBRA_INTERFACE_DOWN
and ZEBRA_INTERFACE_DELETE messages before sending
ZEBRA_INTERFACE_VRF_UPDATE, and the ZEBRA_INTERFACE_DELETE callback
from all daemons set the interface index to IFINDEX_INTERNAL. Hence,
when decoding a ZEBRA_INTERFACE_VRF_UPDATE message, the interface
lookup would always fail since the corresponding interface lost
its ifindex. Example (ospfd):

OSPF: Zebra: Interface[rt1-eth2] state change to down.
OSPF: Zebra: interface delete rt1-eth2 vrf default[0] index 8 flags 11143 metric 0 mtu 1500
OSPF: [EC 100663301] INTERFACE_VRF_UPDATE: Cannot find IF 8 in VRF 0

To fix this problem, use interface names instead of ifindexes to
indentify interfaces like the other interface zapi messages do.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-01-02 13:32:31 -02:00
Donald Sharp
d4101c0a8b sharpd: Allow sharpd to accept nexthop group as part of route install
When installing routes via sharpd 'sharp install route... ' command
add the ability to specify a nexthop-group to use.  This will
allow sharpd to create ECMP routes into zebra.

Nexthop-group:
!
nexthop-group JANELLE
  nexthop 192.168.209.1
  nexthop 192.168.210.1
!

The install:

donna.cumulusnetworks.com# sharp install routes 10.0.50.0 nexthop-group JANELLE 10
donna.cumulusnetworks.com# end
donna.cumulusnetworks.com# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route

K>* 0.0.0.0/0 [0/106] via 10.0.2.2, enp0s3, 00:20:38
C>* 10.0.2.0/24 is directly connected, enp0s3, 00:20:38
D>* 10.0.50.0/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.1/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.2/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.3/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.4/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.5/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.6/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.7/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.8/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
D>* 10.0.50.9/32 [150/0] via 192.168.209.1, enp0s8, 00:00:02
  *                      via 192.168.210.1, enp0s9, 00:00:02
C>* 192.168.209.0/24 is directly connected, enp0s8, 00:20:38
C>* 192.168.210.0/24 is directly connected, enp0s9, 00:20:38
donna.cumulusnetworks.com#

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-02 09:55:51 -05:00
Donald Sharp
81dd71eb68 sharpd/vtysh: Allow sharpd to use nexthop-groups
Allow the sharp daemon to understand and use nexthop-groups.

This commit is merely to allow sharpd to understand them
when accepted in a future commit

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-02 09:46:33 -05:00
Donald Sharp
694b242f21 sharp: Modify route install to take nexthop groups
Modify the route_add function to take nexthop groups.  Future commits
will allow sharpd to use nexthop groups as the install mechanism
for routes.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-02 09:46:33 -05:00
Donald Sharp
73547a754e zebra: Consolidate meta_queue_map into route_info
The route_info data structure already had a mapping of route type
to admin distance.  Consolidate the meta_queue_map information
into this route_info data structure.  This is to reduce the number
of places we need to remember to touch when adding a new routing
protocol.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-02 09:15:30 -05:00
Renato Westphal
d52fa66f0e
Merge pull request #3543 from donaldsharp/eigrp_router_id_is_the_bee
Eigrp router id cleanup
2019-01-01 22:39:03 -02:00
Renato Westphal
e079045dde
Merge pull request #3540 from donaldsharp/staic
staticd: Do not ready prefix for printing till it's decoded
2019-01-01 22:36:59 -02:00
Renato Westphal
dd6f112619
Merge pull request #3246 from pguibert6WIND/distribute_vrf_aware
Distribute vrf aware
2019-01-01 22:34:59 -02:00
Chirag Shah
7da47d6622 bgpd: evpn command to restrict to default vrf
Certain EVPN configuartions should only be applied
under DEFAULT VRF bgpd instance.

reject the cli for non default bgp instance

Ticket:CM-18950

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-12-31 15:53:46 -08:00
Chirag Shah
67fb9374dc zebra: evpn remote delete fetch local entry
An EVPN type-2 entry is in freeze state during remote update,
remote VTEP can send typ-2 withdraw update,
upon receiving an entry delete (withdraw), first check
kernel has in local reachable state. Upon
unfreeze use the local entry to advertise to peers.
Fetch is for both MAC and IP, delete can come for
only MAC or MAC-IP combined route.

The specific entry fetch only required request flag to be set,
dump flag is not required.

Testing Done:
Simulate two VTEPs to do M1, IP1 mobility sequence,
freeze MAC during remote MAC update, subsequently send
withdraw type-2 route from origintating VTEP.
This results in read apis to invoke for local reachable entry.
Zebra updates its cache and upon unfreeze originates type-2.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-12-31 14:40:31 -08:00
Chirag Shah
718f9b0f88 zebra: netlink_request consolidataion
Make netlink_request api generic where it can be used
for dump or querying specific information request.

nelink request nlm flags (NLM_F_ROOT | NLM_F_MATCH) are
used to dump purpose, if client wants to query spcific
MAC or IP using netlink_request does not require to set
them.
nlm struct is passed by the caller of netlink_request,
it can also set the nlm request flags.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-12-31 14:38:32 -08:00
Donald Sharp
e9e9a7f2b7
Merge pull request #3546 from opensourcerouting/ospf-show-neighbor-fix
ospfd: fix wrong argv index in the "show ip ospf neighbor" command
2018-12-31 09:26:37 -05:00
Renato Westphal
986b87cb3d ospfd: convert a couple of "show" commands to DEFPY
DEFPY commands are easier to maintain and less susceptible to
bugs. In the long term we should try to merge the plethora of
"show ip ospf neighbor" commands (total of 14) into a single DEFPY.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-31 11:14:46 -02:00
Renato Westphal
f4f4b6bff5 ospfd: fix wrong argv index in the "show ip ospf neighbor" command
Fixes Issue #3544.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-31 11:03:53 -02:00
Donald Sharp
aa0af4243b eigrpd: Allow eigrp to set/unset the router-id as a value.
This code addition allows eigrp to set/unset the router-id
value.  At this point I am not 100% sure that we do all the necessary
rework when a router-id changes.  But on startup if read in before
a network statement we should be ok.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-30 19:59:52 -05:00
Donald Sharp
900e2d42cf eigrpd: eigrp usage of uint32_t to struct in_addr for router_id data
In eigrp we were using a uint32_t to hold the `struct in_addr` data
for the router id values.  This caused us to do unnecessary conversions
pre and post for in/out.  Let's just use the standard `struct in_addr`

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-30 19:55:50 -05:00
Donald Sharp
e7c0d8c234 eigrpd: Write eigrp config even if no network statements yet
Let's write the eigrp config even if we have no network statements
as that the other functions return safely if nothing to do here.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-30 19:44:27 -05:00
Rafael Zalamena
13ec4c1d5b zebra: replace zlog_err with flog_err
Change the logging mechanism for truncated netlink error messages.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-29 07:14:14 -02:00
Donald Sharp
4a58288894 staticd: Do not ready prefix for printing till it's decoded
The static daemon is setting up the prefix for printing
before it is decoded when we get notified about our
route.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-28 21:06:09 -05:00
Philippe Guibert
03a38493f8 lib, rip, ripng, babel, eigrp: add ctx pointer to distribute api
a distribute_ctx context pointer is returned after initialisation to the
calling daemon. this context pointer will be further used to do
discussion with distribute service. Today, there is no specific problem
with old api, since the pointer is the same in all the memory process.
but the pointer will be different if we have multiple instances. Right
now, this is not the case, but if that happens, that work will be used
for that.
distribute-list initialisation is split in two. the vty initialisation
is done at global level, while the context initialisation is done for
each routing daemon instance.
babel daemon is being equipped with a routing returning the main babel
instance.
also, a delete routine is available when the daemon routing instance is
suppressed.
a list of contexts is used inside distribute_list. This will permit
distribute_list utility to handle in the same daemon to handle more than
one context. This will be very useful in the vrf context.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-28 18:18:40 +01:00
Philippe Guibert
2569910bb6 lib: enforce vrf_name_to_id by returning default_vrf when name is null
in order to enforce the vrf_id to return, from a vrf name, a check is
done on the vrf_name_to_id callback.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-28 18:18:40 +01:00
Philippe Guibert
0378bcaad6 bgpd: flowspec redirect IP info is retrieved into nh tracking
redirect IP nh of flowspec entry is retrieved so that the nexthop
IP information is injected into the nexthop tracking, and is associated
to the bgp_path structure. This permits validating or unvalidating the
bgp_path for injection in zebra or not.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-28 18:10:26 +01:00
Quentin Young
71c4e0c59b
Merge pull request #3535 from kareiva/master
Fix typos in BGPd sample configuration file
2018-12-27 16:25:26 -05:00
Simonas
196f242fa0
Fix typos in BGPd sample configuration file 2018-12-27 09:13:55 +02:00
Rafael Zalamena
d0c893802a zebra: remove duplicated code
Remove duplicated netlink error message length check.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-26 17:06:35 -02:00
Donald Sharp
a60df89e65
Merge pull request #3527 from opensourcerouting/ldpd-bsd-fixes
ldpd: *BSD fixes
2018-12-21 20:20:48 -05:00
Rafael Zalamena
f43be00b6a ldpd: fix startup on OpenBSD
We must open the PF_KEY socket before dropping privileges, otherwise the
socket creation will fail with permission problems.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-21 21:00:53 -02:00
Rafael Zalamena
7f7651eba7 zebra: fix compilation on OpenBSD
OpenBSD doesn't define RTM_LOCK anymore:
https://marc.info/?l=openbsd-tech&m=153018811429193&w=2

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-21 19:33:58 -02:00
Rafael Zalamena
1ef00571f8 ldpd: add support for FreeBSD IP_BINDANY
Add yet another way to setsockopt a socket to listen to a foreign
address.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-21 19:33:48 -02:00
Rafael Zalamena
f6913418f3
Merge pull request #3499 from donaldsharp/topotest_inheritance
Topotest inheritance
2018-12-20 15:52:03 -02:00
Renato Westphal
96def26e5a
Merge pull request #3327 from adeg/feature/bgp-lu-auto-labels
bgpd, zebra: auto assign labels to regular labeled-unicast prefixes
2018-12-20 13:59:28 -02:00
Anton Degtyarev
57592a53b5 bgpd, zebra: auto assign labels from label pool to regular prefixes in BGP labeled unicast
This commit is the last missing piece to complete BGP LU support in bgpd. To this moment, bgpd (and zebra) supported auto label assignment only for prefixes leaked from VRFs to vpn and for MPLS SR prefixes. This adds auto label assignment to other routes types in bgpd. The following enhancements have been made:
* bgp_route.c:bgp_process_main_one() now sets implicit-null local_label to all local, aggregate and redistributed routes.
* bgp_route.c:bgp_process_main_one() now will request a label from the label pool for any prefix that loses the label for some reason (for example, when the static label assignment config is removed)
* bgp_label.c:bgp_reg_dereg_for_label() now requests labels from label pool for routes which have no associated label index
* zebra_mpls.c:zebra_mpls_fec_register() now expects both label and label_index from the calling function, one of which must be set to MPLS_INVALID_LABEL or MPLS_INVALID_LABEL_INDEX, based on this it will decide how to register the provided FEC.

Signed-off-by: Anton Degtyarev <anton@cumulusnetworks.com>
2018-12-20 15:28:52 +03:00
Renato Westphal
bbfaa7054a
Merge pull request #3516 from qlyoung/doc-ip-nht-resolve-via-default
doc: add `ip nht resolve-via-default`
2018-12-20 10:05:01 -02:00
Renato Westphal
fa039939e7
Merge pull request #3517 from qlyoung/doc-exclude-snmptrap
doc: exclude snmptrap.rst from build
2018-12-20 10:04:13 -02:00
Donald Sharp
480e123687
Merge pull request #3515 from mjstapp/fix_rib_wq_timer
zebra: reduce rib workqueue retry timeout
2018-12-19 15:33:56 -05:00
Quentin Young
be11dfbf87 doc: exclude snmptrap.rst from build
This doc is .. include::'d in snmp.rst and needs to be ignored as part
of the main toctree build. This patch squashes a Sphinx build warning.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-12-19 18:10:41 +00:00
Quentin Young
43b8e264c8 doc: add ip nht resolve-via-default
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-12-19 17:55:05 +00:00
Quentin Young
f30f54a79b
Merge pull request #3513 from mjstapp/fix_dplane_q_include
zebra: include lib/queue.h in zebra dataplane
2018-12-19 12:11:24 -05:00