Commit Graph

4988 Commits

Author SHA1 Message Date
Donald Sharp
8dfcf20fa0
Merge pull request #11419 from anlancs/fix/minor-1
zebra, lib: minor changes
2022-06-16 16:35:38 -04:00
Donatas Abraitis
7ea104c111
Merge pull request #11415 from donaldsharp/interface_duplication_linux
Interface duplication linux
2022-06-16 21:19:14 +03:00
anlan_cs
e3f05a8a1a zebra: adjust one variable name
Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-06-16 10:15:12 -04:00
Russ White
93ab9a2c0b
Merge pull request #11409 from donaldsharp/zebra_nhg_debug
Zebra nhg debug
2022-06-16 10:13:20 -04:00
Donald Sharp
8b9b1d6043 zebra: On linux let interface data come in through netlink messaging
Consolidate on linux to using the netlink api for gathering all data
about a interface.  Leave this interface alone in the meantime for
other OS's.

This also has the side effect of reducing the amount of work
being done on linux in that FRR was handling shut/no shut
events 2 times.  Once for the ioctl question asked and
once for the netlink message received.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:34:30 -04:00
Donald Sharp
7c4910cead zebra: Attempt to make ioctl.c have a bit more useful log messges
While examining the code, it was noticed that there was a chance
to improve the log output in some cases to give a fuller understanding
of what went wrong where.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:34:30 -04:00
Donald Sharp
d9db1a4092 zebra: stream_dup cannot fail
If stream_dup was unable to actually allocate memory
then FRR would crash instead.  So let's remove the
check for null since it is not needed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:24:01 -04:00
Donald Sharp
68d188be7a zebra: Convert debugs to use %pNG
The nexthop group debugs were using %u to just display the id.
I found this very hard to figure out what was going on.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 20:25:56 -04:00
Donald Sharp
cc75cbea1b zebra: Add %pNG to zebra print routines
Add `%pNG` so that a nexthop group can be displayed in debugs/logs
such that it can provide useful information.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 20:25:56 -04:00
Donald Sharp
f90391998c
Merge pull request #11229 from anlancs/fix/zebra-nb-remove-checknode
zebra: remove one unnecessary check for l3vni nb
2022-06-14 13:58:16 -04:00
Donatas Abraitis
70dd370f5a *: Use autocomplete for route-maps under commands that require it
For example:

```
donatas-laptop# show bgp ipv4 unicast neighbors 127.0.0.2 advertised-routes route-map ?
  RMAP_NAME  Name of the route map
       testas2 testas

donatas-laptop(config)# router bgp
donatas-laptop(config-router)# address-family ipv4
donatas-laptop(config-router-af)# redistribute connected route-map ?
  RMAP_NAME  Pointer to route-map entries
       testas2 testas

donatas-laptop(config-router-af)# network 192.168.0.0/23 route-map ?
  RMAP_NAME  Name of the route map
       testas2 testas
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-06-13 21:00:51 +03:00
Chirag Shah
e5b1de8a11 zebra: add error check condition to sock option
Adding error checking condition which was missed
in PR-11216.

*** CID 1517953:  Error handling issues  (CHECKED_RETURN)
/zebra/kernel_netlink.c: 313 in netlink_socket()
307                     memset(&snl, 0, sizeof(snl));
308                     snl.nl_family = AF_NETLINK;
309                     snl.nl_groups = groups;
310
311     #if defined SOL_NETLINK
312                     if (ext_groups)
>>>     CID 1517953:  Error handling issues  (CHECKED_RETURN)
>>>     Calling "setsockopt(sock, 270, 1, &ext_groups, 8U)" without checking return value. This library function may fail and return an error code.
313                             setsockopt(sock, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP,
314                                        &ext_groups, sizeof(ext_groups));
315     #endif
316
317                     /* Bind the socket to the netlink structure for anything. */
318                     ret = bind(sock, (struct sockaddr *)&snl, sizeof(snl));

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-05-31 13:50:48 -07:00
Trey Aspelund
56599dd9c8 zebra: Update advertise-svi-ip MACIPs w/ new MAC
When the kernel was sending an RTM_NEWLINK updating the MAC of a known
SVI, Type-2 routes created by advertise-svi-ip were not getting updated
with the new address.
This adds removal of any old Type-2 routes (with old MAC) and creation
of new Type-2 routes (with new MAC) into RTM_NEWLINK processing.

Fixes: #11174

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2022-05-28 03:30:05 -04:00
Philippe Guibert
c9250e28e8 zebra: avoid pbr iptable added twice when used with flowspec
The usage of zebra dplane makes the job asyncronous which implies
that a given job will try to add an iptable, while the second job
will not know that its iptable is the same as the former one.

The below exabgp rules stand for two bgp flowspec rules sent to
the bgp device:

flow {
route {match {
source 185.228.172.73/32;
destination 0.0.0.0/0;
source-port >=49156&<=49159;
}then {redirect 213.242.114.113;}}
route {match {
source 185.228.172.73/32;
destination 0.0.0.0/0;
source-port >=49160&<=49163;
}then {redirect 213.242.114.113;}}
}

This rule creates a single iptable, but in fact, the same iptable
name is appended twice. This results in duplicated entries in the
iptables context. This also results in contexts not flushed, when
BGP session or 'flush' operation is performed.

iptables-save:
[..]
-A PREROUTING -m set --match-set match0x55baf4c25cb0 src,src -g match0x55baf4c25cb0
-A PREROUTING -m set --match-set match0x55baf4c25cb0 src,src -g match0x55baf4c25cb0
-A match0x55baf4c25cb0 -j MARK --set-xmark 0x100/0xffffffff
-A match0x55baf4c25cb0 -j ACCEPT
-A match0x55baf4c25cb0 -j MARK --set-xmark 0x100/0xffffffff
-A match0x55baf4c25cb0 -j ACCEPT
[..]

This commit addresses this issue, by checking that an iptable
context is not already being processed. A flag is added in the
original iptable context, and a check is done if the iptable
context is not already being processed for install or uinstall.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2022-05-25 14:26:28 +02:00
Donatas Abraitis
4febdb6b9a
Merge pull request #10836 from anlancs/bgpd-mh-delay-esi
zebra: delay setting esi in zebra_evpn_local_es_update()
2022-05-23 07:49:08 +02:00
David Lamparter
7ca9c407ed zebra: clean up rtadv integration
Move a few things into places they actually belong, and reduce the
number of places we have `#ifdev HAVE_RTADV`.  Just overall code
prettification.

... I had actually done this quite a while ago while doing some other
random hacking and thought it more useful to not be sitting on it on my
disk...

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-05-21 14:14:01 +02:00
anlan_cs
c331ef1665 zebra: remove one unnecessary check for l3vni nb
The parent node of "vrf"  MUST be non-NULL, so the check is unnecessary and
misleading. Otherwise, there will be a branch of NULL parent node, it makes
no sense, remove it.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-20 03:11:27 -04:00
Sri Mohana Singamsetty
bde51e807f
Merge pull request #11216 from chiragshah6/fdev2
zebra: netlink registry of rtm tunnel notification
2022-05-19 10:28:25 -07:00
Sri Mohana Singamsetty
0e6e6bc36e
Merge pull request #11222 from donaldsharp/bgp_zebra_stuff
Bgp zebra stuff
2022-05-19 09:41:41 -07:00
Sri Mohana Singamsetty
595ebf525b
Merge pull request #11210 from anlancs/fix/zebra-leak-vtp
zebra: fix missing delete vtep during vni transition
2022-05-19 09:35:27 -07:00
Donald Sharp
1b3cf91b0c zebra: Fix newline in log message
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-18 14:42:22 -04:00
Russ White
c1e2a1eae3
Merge pull request #11205 from chiragshah6/fdev1
zebra: new netlink parse utility for rta used to send nhg msg
2022-05-18 11:13:22 -04:00
Chirag Shah
42ed3bd77f zebra: add netlink tunnel msg to dump routine
This patch parses vxlan vnifilter rtm tunnel
message which contains vni mapping to vxlan device.
The new notifications are RTM_NEWTUNNEL,
RTM_DELTUNNEL, and RTM_GETTUNNEL.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?h=v5.18-rc7&id=7b8135f4df98b155b23754b6065c157861e268f1

Testing Done:

2022/05/18 00:34:25 ZEBRA: netlink_recv_msg: << netlink message dump
[recv]
2022/05/18 00:34:25 ZEBRA: nlmsghdr [len=36 type=(120) NEWTUNNEL
flags=(0x0000) {} seq=0 pid=0]
2022/05/18 00:34:25 ZEBRA:   tnlm [family=(7) AF_BRIDGE ifindex=46
2022/05/18 00:34:25 ZEBRA:   vni_start 4001, vni_end 0

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-05-18 07:56:44 -07:00
Chirag Shah
47e2eb270d zebra: netlink registry rtm tunnel notif
The kernel supports l3vxlan device to have (l3vni)
vni filter similar to vlan filtering on bridge device.

To receive netlink notification, FRR to register
for new netlink RTNLGRP_TUNNEL message.
This message required to register via additional
socket option as it's beyond bitmap size.

kernel patches:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?h=v5.18-rc7&id=7b8135f4df98b155b23754b6065c157861e268f1

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/
linux.git/commit/?h=v5.18-rc7&id=f9c4bb0b245cee35ef66f75bf409c9573d934cf9

Ticket:#3073812
Testing Done:

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-05-18 07:56:35 -07:00
Mark Stapp
6ca1b0f44e
Merge pull request #11192 from cyberstorm-mauritius/zebra_netlink
zebra: Add startup message and display netlink buffer size.
2022-05-17 08:13:23 -04:00
Chirag Shah
f8f3e484d4 zebra: new netlink parse utility for rta
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-05-16 10:45:14 -07:00
Chirag Shah
865c12e1a7 zebra: add protocol name to nexthop dump
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-05-16 08:40:19 -07:00
anlan_cs
0dfc0dd974 zebra: delay setting esi in zebra_evpn_local_es_update()
Currently, `zif->es_info.esi` is always set even for a few unnecessary
cases in `zebra_evpn_local_es_update()`.

Delay setting `zif->es_info.esi` and remove the annoying rollback
(i.e. unset `zif->es_info.esi`) operation on failure case.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-16 09:40:49 -04:00
anlan_cs
2fe5a02ea4 zebra: fix missing delete vtep during vni transition
All `vtep`s in dplane should be deleted/uninstalled during vni transition.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-16 09:30:28 -04:00
Donald Sharp
950e7e6660
Merge pull request #11207 from anlancs/fix/zebra-remove-check-l3vni
zebra: remove unncecessary check for l3vni
2022-05-16 08:02:58 -04:00
Rafael Zalamena
854dea850c
Merge pull request #11199 from donaldsharp/nexthop_dump
zebra: Add encap and group type decoding to nexthop dump
2022-05-16 08:09:54 -03:00
anlan_cs
0717f2d83c zebra: remove unncecessary check for l3vni
Since `l3vni` created by `zl3vni_add()` is always valid, remove the check
for it.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-16 05:40:15 -04:00
Donatas Abraitis
8f5e706a2f
Merge pull request #11201 from donaldsharp/unused_in_netlink_compiles
Remove some unused functions in zebra
2022-05-16 09:57:30 +03:00
anlan_cs
81157cbd10 zebra: remove unnecessary check for "zevpn_vrf"
The global vrf in zebra is always non-NULL. In general, it is bound to
default vrf by `zebra_vrf_init()`, at other times bound to some specific
vrf. Anyway, non-NULL.

So remove all redundant checkings for the returned value of
`zebra_vrf_get_evpn()`.

Additionally, remove the unnecessary check for `zvrf` in
`zebra_vxlan_cleanup_tables()`.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-13 23:31:52 -04:00
Donald Sharp
20ceb5475d zebra: Remove unused function route_entry_copy_nexthops
This function is no longer used.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-13 16:11:09 -04:00
Donald Sharp
388907d53c zebra: Remove unused functions in netlink compiles
When compiling with netlink,  Remove the usage of these
functions.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-13 15:58:33 -04:00
Donald Sharp
c30c607027 zebra: Add encap and group type decoding to nexthop dump
Add the ability to give data about the nexthop group type
and encap type so that it is human readable.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-13 10:37:30 -04:00
Donald Sharp
f205a2309c
Merge pull request #11177 from opensourcerouting/fix/memset_memcpy
*: memcpy/memset zeroing
2022-05-13 07:40:58 -04:00
Loganaden Velvindron
0c99696f30 zebra: Add startup message and display netlink buffer size.
Add startup message and display netlink buffer size.

Signed-off-by: Loganaden Velvindron <logan@cyberstorm.mu>
2022-05-13 14:58:18 +04:00
Donatas Abraitis
4d5a0ff391
Merge pull request #11186 from anlancs/fix/bgpd-comment-should-es
bgpd,zebra: correct one debug log for evpn-mh
2022-05-12 11:32:25 +03:00
anlan_cs
b0b9a2fe52 bgpd,zebra: correct one debug log for evpn-mh
Correct one debug log in evpn-mh.
BTW, correct one misspelled word in comment.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-12 02:19:51 -04:00
Donatas Abraitis
6006b807b1 *: Properly use memset() when zeroing
Wrong: memset(&a, 0, sizeof(struct ...));
    Good:  memset(&a, 0, sizeof(a));

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-05-11 14:08:47 +03:00
Mark Stapp
00358e444e
Merge pull request #11155 from LabNConsulting/ziemba/link-delay-min-max
zebra bugfix interface link-param: allow delay min <= avg <= max (was: min<avg<max)
2022-05-10 11:31:52 -04:00
Igor Ryzhov
2a3807c3ce
Merge pull request #11163 from opensourcerouting/fix/same_type_casting
*: Avoid casting to the same type as on the left
2022-05-10 00:16:30 +03:00
Donatas Abraitis
8998807f69 *: Avoid casting to the same type as on the left
Just not necessary.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-05-08 16:07:42 +03:00
Donatas Abraitis
432ee88c21 zebra, ospf6d: Do not check if NULL for XCALLOC()
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-05-08 15:43:21 +03:00
G. Paul Ziemba
d029fe275c zebra/interface.c: allow link-param delay min <= avg <= max
RFC 7471 Section 4.2.7:
	It is possible for min delay and max delay to be the same value.

    Prior to this change, the code required min < avg < max. This
    change allows min == avg and avg == max.

    test case:

    interface eth-rt1
      link-params
        delay 8000 min 8000 max 8000

Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2022-05-06 14:48:31 -07:00
Donatas Abraitis
50f1f2e724
Merge pull request #11059 from anlancs/fix/bgpd-evnp-wrong-check-hashget
bgpd: fix memory leak for evpn
2022-05-04 21:19:51 +03:00
anlan_cs
8e3aae66ce *: remove the checking returned value for hash_get()
Firstly, *keep no change* for `hash_get()` with NULL
`alloc_func`.

Only focus on cases with non-NULL `alloc_func` of
`hash_get()`.

Since `hash_get()` with non-NULL `alloc_func` parameter
shall not fail, just ignore the returned value of it.
The returned value must not be NULL.
So in this case, remove the unnecessary checking NULL
or not for the returned value and add `void` in front
of it.

Importantly, also *keep no change* for the two cases with
non-NULL `alloc_func` -
1) Use `assert(<returned_data> == <searching_data>)` to
   ensure it is a created node, not a found node.
   Refer to `isis_vertex_queue_insert()` of isisd, there
   are many examples of this case in isid.
2) Use `<returned_data> != <searching_data>` to judge it
   is a found node, then free <searching_data>.
   Refer to `aspath_intern()` of bgpd, there are many
   examples of this case in bgpd.

Here, <returned_data> is the returned value from `hash_get()`,
and <searching_data> is the data, which is to be put into
hash table.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-05-03 00:41:48 +08:00
Rafael Zalamena
3682bd90f3 *: use FRR interface name definition everywhere
Don't rely on the OS interface name length definition and use the FRR
definition instead.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2022-05-02 13:00:12 -03:00