Commit Graph

18604 Commits

Author SHA1 Message Date
Donald Sharp
7ccee8feee bgpd: Remove deprecated '[no] bgp multiple-instance' command
Remove this command from the cli.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-03 14:40:32 -04:00
Sri Mohana Singamsetty
dd3bbb159f
Merge pull request #4451 from donaldsharp/routemap_return
lib: Cleanup recent commit warn->werror issues in lib/routemap.c
2019-06-03 11:30:19 -07:00
David Lamparter
2a37d6c5df doc: add some printfrr() docs
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
David Lamparter
c22f6d8cde lib: simplify SEGV handler
printfrr is AS-Safe, let's simplify the SEGV handler quite a bit by
relying on that.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
David Lamparter
b9911c2e4e tests: exercise printfrr()
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
David Lamparter
3cd9490d0b lib/printf: ditch reallocarray
reallocarray() is walled behind stupid feature macros on various
platforms and doesn't quite gain us much in that particular use case.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
David Lamparter
d52ec5720f lib: add some printfrr specifiers
More to come - these are just the most obvious and easy.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:31 +02:00
David Lamparter
807f5b9842 lib: use printfrr for log & vty
This makes printfrr extensions available in most of our format strings.
snprintf() is the obvious exception.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 18:57:28 +02:00
Rafael Zalamena
460fdc0782
Merge pull request #4447 from donaldsharp/pim_unused_functions
pimd: Remove unused functions
2019-06-03 13:55:22 -03:00
Donald Sharp
92e4285ce2 doc: Update pim docs for clear ip mroute [vrf NAME] count command
Simple documentation update for the new `clear ip mroute [vrf NAME] count`
command to the FRRouting documentation.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-03 11:20:46 -04:00
Donald Sharp
cd333cf968 pimd: Add clear ip mroute [vrf NAME] count command to pim
When debugging a large number of mroutes and data is changing
fast it is sometimes hard to know what has actually changed.
Add a `clear ip mroute count` command that resets the last
data points gathered and allows you to see what has changed
since the last clear.

Output:
donna.cumulusnetworks.com# show ip mroute count

Source          Group           LastUsed Packets Bytes WrongIf
*               224.0.1.60      272      0       0          0
10.50.11.11     239.255.255.250 2        1       203        1
10.50.11.13     239.255.255.250 66       1       203        1
10.50.11.100    239.255.255.250 68       1       203        1
10.50.11.114    239.255.255.250 62       2       406        1
10.50.11.129    239.255.255.250 10       1       199        1
10.50.11.143    239.255.255.250 44       1       203        1
10.50.11.144    239.255.255.250 44       1       203        1
10.50.11.156    239.255.255.250 66       1       203        1
10.50.11.235    239.255.255.250 149      0       0          0
10.50.11.246    239.255.255.250 54       5       965        1
donna.cumulusnetworks.com# clear ip mroute count
donna.cumulusnetworks.com# show ip mroute count

Source          Group           LastUsed Packets Bytes WrongIf
*               224.0.1.60      279      0       0          0
10.50.11.11     239.255.255.250 9        0       0          0
10.50.11.13     239.255.255.250 73       0       0          0
10.50.11.100    239.255.255.250 76       0       0          0
10.50.11.114    239.255.255.250 69       0       0          0
10.50.11.129    239.255.255.250 17       0       0          0
10.50.11.143    239.255.255.250 51       0       0          0
10.50.11.144    239.255.255.250 51       0       0          0
10.50.11.156    239.255.255.250 73       0       0          0
10.50.11.235    239.255.255.250 156      0       0          0
10.50.11.246    239.255.255.250 61       0       0          0
donna.cumulusnetworks.com# show ip mroute count

Source          Group           LastUsed Packets Bytes WrongIf
*               224.0.1.60      300      0       0          0
10.50.11.11     239.255.255.250 30       0       0          0
10.50.11.13     239.255.255.250 94       0       0          0
10.50.11.100    239.255.255.250 96       0       0          0
10.50.11.114    239.255.255.250 90       0       0          0
10.50.11.119    239.255.255.250 7        1       203        1
10.50.11.127    239.255.255.250 3        2       406        1
10.50.11.129    239.255.255.250 38       0       0          0
10.50.11.143    239.255.255.250 72       0       0          0
10.50.11.144    239.255.255.250 72       0       0          0
10.50.11.156    239.255.255.250 94       0       0          0
10.50.11.197    239.255.255.250 2        1       200        1
10.50.11.235    239.255.255.250 177      0       0          0
10.50.11.246    239.255.255.250 82       0       0          0

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-03 11:16:00 -04:00
David Lamparter
bf4d3d8021 lib/printf: add extension support
Inspired by the Linux kernel, this allows us to do %pI4 and similar
things.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:45:01 +02:00
David Lamparter
60f1101d29 lib/printf: fix some random warnings
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:58 +02:00
David Lamparter
5c25bd87b5 lib/printf: integrate
Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:51 +02:00
David Lamparter
8be3678a23 lib/printf: rename & private __find_arguments
These are internal to printf(), and symbols starting with __ are
reserved for the compiler/libc.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:32 +02:00
David Lamparter
e8c672ea81 lib/printf: disable wchar_t support
... we just don't use wchar_t in FRR, no point in having this enabled.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:29 +02:00
David Lamparter
32b67a0aeb lib/printf: add %Ld/%Lu for int64_t/uint64_t
[u]int64_t is the only type in the intX_t family that needs
special-casing for printf since the calling convention may differ
between 32-bit and 64-bit systems.

Adding the L specifier allows us to eschew the gnarly-looking PRIu64.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:24 +02:00
Donald Sharp
f232dd29c1 lib: Cleanup recent commit warn->werror issues in lib/routemap.c
The get_route_map_delete_event function should return a value
even if we never get to that part of the function.  Make sure
we know why we are here so it can be fixed appropriately in
the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetwork.com>
2019-06-03 10:44:23 -04:00
David Lamparter
7fa480984e lib/printf: use system printf for floats
We're not libc, we can just fall back to snprintf() to avoid all this
low-level float mangling.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:18 +02:00
David Lamparter
86bfbddf6e lib/printf: cut down to size
remove various FreeBSD specific bits, as well as the entirety of locale
support.

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:44:05 +02:00
David Lamparter
ea0b6afe2b lib: import FreeBSD's printf
... from current SVN HEAD (not that it has been touched in the past 2
years ...)

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-03 16:43:11 +02:00
Donald Sharp
fbd74c7d94 pimd: Convert strncpy to strlcpy in pim_cmd.c
A couple of places of strncpy snuck in due to my confusion
about if Quentin's earlier change had gotten in.  Just some
code in flux.  This should fix the issue/warnings in our
CI system.
2019-06-03 10:09:22 -04:00
David Lamparter
731bea2844
Merge pull request #4417 from sworleys/Move-Multicast-Mode
zebra: Move multicast mode to being a property of the router
2019-06-03 15:59:48 +02:00
David Lamparter
36235a9ff7
Merge pull request #4436 from donaldsharp/tools_frr_flush
tools: On shutdown no need to flush from tools/frr.in script
2019-06-03 15:53:07 +02:00
David Lamparter
5a4ac9df0f
No log commands (#3581)
No log commands
2019-06-03 15:52:32 +02:00
Donald Sharp
b2eea7a00e
Merge pull request #4345 from NaveenThanikachalam/route_map_dep
lib: Changes made to dependencies of a route-map do not take effect dynamically.
2019-06-03 09:19:59 -04:00
Donald Sharp
ed7e15589d pimd: Remove unused functions
Recent commits rewrote the `clear mroute` command and this caused
these two two functions to no longer be used, remove.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-03 08:38:38 -04:00
Donald Sharp
61b64d5501
Merge pull request #4078 from lkrishnamoor/rmap_vni_filter
bgpd: Filtering received EVPN routes based on VNI does not work
2019-06-03 07:45:47 -04:00
Donald Sharp
b97480c548
Merge pull request #4274 from rgirada/fix_clear_mroute
pimd: Re-deisgn the "clear ip mroute" command.
2019-06-03 07:39:04 -04:00
Donald Sharp
ecccf2275a
Merge pull request #4445 from pguibert6WIND/display_show_nht_if_not_found
zebra: the route nexthop interfaces per vrf were not displayed ok
2019-06-03 07:14:54 -04:00
Philippe Guibert
ce5a988736 zebra: the route nexthop interfaces per vrf were not displayed ok
the interface search done was not looking in the appropriate zns. The
display was then wrong. Update the show command with the correct zns.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2019-06-03 11:44:00 +02:00
Donald Sharp
a0d1226e23
Merge pull request #4442 from opensourcerouting/libtool-doc
doc: add libtool note
2019-06-02 18:54:24 -04:00
Donald Sharp
03edc41d51 lib: Move zebra_size_t to zclient.h who should own it
The zebra_size_t type needs to be owned by zclient.h since
it is part of the zapi protocol.  Move it to where the
structure belongs.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
64cbb7c5b7 lib: Remove unused zebra_command_t type
The zebra_command_t type was never being used, remove from
the system.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
0ce5349f98 pimd: Cleanup mtracebis.c header inclusion a tiny bit
The header inclusion in mtracebis.c should include zebra.h
and not config.h.  There are other issues that need to
be worked through as well, but we can do this in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
26ee1525e6 lib: Remove unused INT8_MAX and UINT8_MAX values
We are not using these in the system, remove.

Signed-off-by: Donald Sharp <sharpd2cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
8ee06b2c46 lib: Move ZEBRA_HEADER_MARKER to header it belongs in
The ZEBRA_HEADER_MARKER is part of the zapi protocol
Move it to the zclient.h header.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
da01a37a1b lib: Move zclient flags to zclient.h
zebra.h had some defined flags that were being used
as part of the route encode/decode functionality.  These
belong in the zclient.h code.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
7708357131 lib: Move some log.c functions declarations to log.h
We have some functions that are owned by log.c, so
move their declarations from zebra.h to log.h

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 16:07:48 -04:00
Donald Sharp
17136bf23e lib, bgpd: Create iana_afi.h for storing iana_afi/safi enums
The iana_afi_t and iana_safi_t were being created in zebra.h
and zebra.h is a bit of a dumping ground.  When the iana_afi2str and
iana_safi2str functions were created, it was correctly pointed out
that we should just use the internal afi_t and safi_t 2str functions
but to do that we would need to include prefix.h in zebra.h.  Which
really is not the right thing to do.  This tells us that we need
to break out this code into it's own header.

Move to iana_afi.h the enums and specific functions and remove
from zebra.  Convert to using the afi2str and safi2str functions.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 15:02:07 -04:00
Donald Sharp
748a041f09 bgpd, lib: Add iana_afi2str and iana_safi2str for eye pleasing strings
Modify the code such that we can auto turn the iana values of afi
and safi to pleasant to read strings.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 14:51:52 -04:00
Donald Sharp
d92050a607 lib: Remove some iana_afi_t values that are not really afi's
The IPMR and IP6MR values have no actual legal representation
and we do not sue them at all.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-06-02 14:48:19 -04:00
David Lamparter
81af03178b doc: add libtool note
(and document that ASAN/MSAN/TSAN are mutually exclusive while at it)

Signed-off-by: David Lamparter <equinox@diac24.net>
2019-06-02 20:44:38 +02:00
Donald Sharp
9ee2f5741d tools: On shutdown no need to flush from tools/frr.in script
Zebra already flushes routes on proper shutdown if you are not
using the -K option.  If you are using the -K option then you
do not want the tools/frr script to flush routes.

If zebra crashes and we restart then load up will either delete
the routes or leave them depending on the -K option.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-05-31 21:49:17 -04:00
Mark Stapp
32e4ce5fd5
Merge pull request #4435 from donaldsharp/zclient_buffer_sizing
lib, zebra: Ensure route encoding has enough space
2019-05-31 16:20:38 -04:00
Donald Sharp
ce231fbc87
Merge pull request #4430 from lkrishnamoor/hostname_crash
lib: crash when FRR hostname length > 80 chars
2019-05-31 15:02:10 -04:00
Mark Stapp
92a9c7bd28 topotests: migrate ospf6 test to topogen framework
Migrate/upgrade the ospf6-topo1 topotest to the topogen
framework. The framework supports improved logging, among
other things. Also add a couple of zebra debugs.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-05-31 13:57:03 -04:00
Lakshman Krishnamoorthy
63e653a21f lib: crash when FRR hostname length > 80 chars
Although the RFC states hostname length should be < 255 chars,
FRR allows infinite length technically. However, when you try
to set a hostname > 80 chars, you would immediately notice a crash.

RCA: Crash due to buffer overflow. Large buffer sprintf'd into smaller
buffer. Usage of sprintf function instead of snprintf which is safer.

Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
2019-05-31 10:52:33 -07:00
Lakshman Krishnamoorthy
e241544469 bgpd: Filtering received EVPN routes based on VNI does not work
Issue1: When "neighbor X.X.X.X route-map RM-VNI-FILTER in" is configured under evpn address-family,
all the received routes are dropped regardless of whether the route has a matching vni or not.

Issue2: Routes with 2 labels are not filtered correctly

Issue3: Interpreting the label based on tunnel type, vxlan was not done correctly.
Vxlan label has 24 bits, whereas, MPLS label is 20 bits long

Fix1: The handler bgp_update() that services the received route ignored the route's label while deciding whether to filter it or not. As part of the fix, the handler now uses the label info to make the decision about whether to filter the route or not.

Fix2: route_match_vni() now tries to match both the labels within the route, not just the one.

Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
2019-05-31 10:22:11 -07:00
Naveen Thanikachalam
e2c8d6ce90 lib: Changes made to dependencies of a r-map do not take effect.
Say, more than one sequence of a route-map uses the same named entity
in its match clause. After that entity is removed from any one of the
route-map sequences, any further changes made to that entity doesn't
dynamically take effect.
A reference counter, that allows the named entity to keep a count of
the route-maps dependent on it,  has been introduced to address this issue.

Signed-off-by: NaveenThanikachalam <nthanikachal@vmware.com>
2019-05-31 10:05:19 -07:00