Commit Graph

29346 Commits

Author SHA1 Message Date
Stephen Worley
133c000cc2 doc: fix typo in route-target
Fix small typo in route-target doc.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
a33b4d3f4c lib: handle type2/5 routes in optimized route-map
Handle matching type2/5 evpn routes via lookup in the optimized
route-maps used by plists.

Convert the evpn_prefix to ipv4/v6 prefix to perform longest
matching on in the tree.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
0f33e6dfca doc: add doc for EVPN L3 Route-Targets
Add doc for EVPN L3 Route-Targets.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
6eb8350586 bgpd,lib: route-map/plist matching via type-2/5 routes
Implement the ability to match type-2 and type-5 routes
via a route-map and a prefix-list.

Add some library code to convert an evpn prefix into
a general ipv4/ipv6 prefix for type-2 and type-5 routes.
evpn prefix is really just another subtype of prefix so all
the info needed can be extracted right there.

Add a special handler to bgp_routemap for evpn type routes
when applying the outbound route-map. This calls the library
code to convert the evpn_prefix to a ipv4/ipv6 prefix and
run it through the plist code. In this we assume type-2 routes
are a /32.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
24df337988 bgpd: add route-map to no advertise ipvX * cmd
Add route-map as a possible word for the `no` form
of `advertise ipvX *** [route-map WORD] cmd.

Before this patch the cmd was only accepted if `no` form
was given without route-map WORD. So if you just copypaste
the original version of the cmd, it would fail.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
58d8948cf4 bgpd: evpn L3 RT auto config and wildcard implementation
Implement forcing L3 auto derivation via configs even when
manually RTs are set. This will allow both to coexist in
BGP RTs. Without using auto config command, it will remove
auto derived RTs when you manually configure your own. To allow
both, use the auto command ond import/export/both.

Implement '*' wildcard import L3 RTs so we can import a route into any AS.
This is necessary to avoid a user from having to configure an L3 RT for
every AS they care to import evpn route from.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
ca337b4641 bgpd: abstract ecom into struct for l3 route targets
Abstract the ecommunity into a container struct for L3
route targets so that we can add some additional info
via flags to go along with RT configs without modifying
the used elsewhere ecommunity struct. This functions as a
wrapper everywhere its used including the import/export lists.
The flags will be used in later commits to change behavior
when importing/exporting routes.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-23 12:41:25 -04:00
Stephen Worley
7022da35c2 bgpd: evpn L3 RTs list config and auto boilerplate
Add functionality to allow EVPN L3 RTs to be configured via
a list rather than one at a time.

Also add boilerplate config for forcing auto derivation of RTs
via config.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-22 14:10:37 -04:00
Donald Sharp
d69d7a615a
Merge pull request #11845 from sri-mohan1/sri-ospf-dbg1
ospfd: changes for code maintainability
2022-08-22 12:46:49 -04:00
sri-mohan1
0faaabfb0b ospfd: changes for code maintainability
these changes are for improving the code maintainability

Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
2022-08-22 18:23:04 +05:30
Donatas Abraitis
8475465d98
Merge pull request #11841 from sri-mohan1/sri-ospf-dbg1
ospfd: changes for code maintainability
2022-08-22 13:11:51 +03:00
sri-mohan1
4adc415e99 ospfd: changes for code maintainability
these changes are for improving the code maintainability

Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
2022-08-22 12:48:35 +05:30
Donatas Abraitis
ed2c427f83
Merge pull request #11835 from crosser/fix-lua-build
debian: add lua _binary_ to build dependencies
2022-08-20 16:45:28 +03:00
Quentin Young
7205c3bb19
Merge pull request #11832 from sigeryang/master
zebra: trim unused tc dplane result values
2022-08-19 10:16:56 -04:00
Eugene Crosser
0ededc7c86 debian: add lua _binary_ to build dependencies
FRR only needs lua library (package libluaX.Y-dev) to be compiled and
linked, but its `configure` script makes use of lua interpreter to
perform its checks. Therefore, `luaX.Y` package is a requisite
build-dependency for debian packaging.

This commit adds the debian package with the lua interpreter to the
build dependencies.

Signed-off-by: Eugene Crosser <crosser@average.org>
2022-08-19 15:56:57 +02:00
Donatas Abraitis
66b974b423
Merge pull request #11777 from donaldsharp/metaq_processing
Metaq processing
2022-08-19 14:43:33 +03:00
mobash-rasool
c84545df19
Merge pull request #11827 from sri-mohan1/sri-ospf-dbg1
ospfd: changes to improve code maintainability
2022-08-19 16:18:46 +05:30
sri-mohan1
733c0f3ae6 ospfd: changes code maintainability
these changes are for improving the code maintainability

Signed-off-by: sri-mohan1 <sri.mohan@samsung.com>
2022-08-19 12:45:16 +05:30
Siger Yang
366eb2d086
zebra: trim unused tc dplane result values
Signed-off-by: Siger Yang <siger.yang@outlook.com>
2022-08-18 23:35:41 +08:00
Donald Sharp
e9c599ca72
Merge pull request #11830 from AbhishekNR/unused_var
pimd, pim6d: Removing unused parameter
2022-08-18 06:28:51 -04:00
Donatas Abraitis
b32cf39d45
Merge pull request #11485 from AbhishekNR/ipv6_mld_todo
pim6d: Completing "ipv6 mld" config command.
2022-08-18 09:47:03 +03:00
Donatas Abraitis
61364bed38
Merge pull request #11826 from mjstapp/stop_zebra_last
tools: stop zebra daemon last
2022-08-18 09:19:04 +03:00
Donatas Abraitis
5b87f38def
Merge pull request #11817 from AbhishekNR/ttable_pim_rp-info
pimd, pim6d: Using ttable for displaying "show ip/ipv6 pim rp-info"  command output.
2022-08-18 09:16:00 +03:00
Donatas Abraitis
547ce0b97e
Merge pull request #11783 from AbhishekNR/ttbale_show_cli
pimd, pim6d: Using ttable for displaying show ip/ipv6 pim CLI's output
2022-08-18 09:15:34 +03:00
Abhishek N R
38ec10a14a pimd, pim6d: Removing unused parameter
Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-08-17 23:12:09 -07:00
Donald Sharp
725d9f5945 zebra: No need for a rib_delete before a rib_add
In kernel_socket.c, the code is deleting and then adding
the route back in on a change operation.  This just translates
too two re's, one for deletion and one for addition.  The deletion
will just be ignored.  Let's not do the extra deletion.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-08-17 16:04:50 -04:00
Donald Sharp
07fd1f7e94 zebra: use rib_add_multipath in rt_netlink.c
The new route code path was using a combination of
both rib_add() and rib_add_multipath() let's clean
it up some to use rib_add_multipath()

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-08-17 16:04:50 -04:00
Donald Sharp
b0385873fa zebra: Create a zebra_rib_route_entry_new function and use it
Abstract the creation of the route_entry and use it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-08-17 16:04:50 -04:00
Donald Sharp
d7ac4c4d88 zebra: Introduce early route processing on the MetaQ
Currently if an operator does this operation:

sharpd@eva ~/frr8> sudo ip nexthop add id 5000 via 192.168.119.44 dev enp39s0 ; sudo ip route add 10.0.0.1 nhid 5000
2022/06/30 08:52:40 ZEBRA: [ZHQK5-J9M1R] proto2zebra: Please add this protocol(0) to proper rt_netlink.c handling
2022/06/30 08:52:40 ZEBRA: [PS16P-365FK][EC 4043309076] Zebra failed to find the nexthop hash entry for id=5000 in a route entry
sharpd@eva ~/frr8> vtysh -c "show ip route 10.0.0.1"
Routing entry for 0.0.0.0/0
  Known via "kernel", distance 0, metric 100, best
  Last update 00:01:58 ago
  * 192.168.119.1, via enp39s0

The route is dropped by zebra with no warnings.  This is not good,
but unlikely to happen at this point in time.  In order to fix
this issue route processing from inputs needs to happen after nexthop
group processing from inputs.  This was not possible because
nexthop groups are placed on the metaQ.  As such the above
nexthop group creation is placed on the metaQ for processing
in META_QUEUE_NHG.  Then the route is read in and processed
immediately.  The nexthop group is not found ( not processed yet!)
and the route is dropped in zebra.

Modify the code to have early route processing of validity
on the MetaQ.  This preserves the order of operations.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-08-17 16:04:50 -04:00
Donald Sharp
53216dff6e zebra: Convert label processing to Meta-Q
Convert label processing that comes from zapi messages
into being handled by the meta-Q.  This is because early
route processing is going to be moved to the meta-Q as
well and we will have a chicken and egg problem without
moving this code to be processed by the meta-Q.

Ordering of messages from ospf as an example:
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:48] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:48] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:48] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:48] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:62] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:43] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:61] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_ROUTE_ADD:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_MPLS_LABELS_REPLACE:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_MPLS_LABELS_REPLACE:0:66] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_MPLS_LABELS_REPLACE:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_MPLS_LABELS_REPLACE:0:47] comes from socket [36]
2022/08/09 08:55:52.740 ZEBRA: [YXG8K-BCYMV] zebra message[ZEBRA_MPLS_LABELS_REPLACE:0:47] comes from socket [36]

The ZEBRA_MPLS_LABELS_REPLACE immediately turn around and attempt to replace nexthop labels on routes that
were added.  If the route add is placed on the metaQ, it will not exist yet and as such the label replace
will fail.

Modify the zebra code to take the label operations and place them on the metaQ as well.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-08-17 10:44:33 -04:00
Donald Sharp
c8e1ce6278
Merge pull request #11824 from sigeryang/master
zebra: fix deadcodes in tc dplane & netlink
2022-08-17 09:59:37 -04:00
Christian Hopps
20b9c9fad8
Merge pull request #11819 from sworleys/TC_enum_fix
zebra: add TC handlers in script code
2022-08-17 09:57:34 -04:00
Siger Yang
4c9b85ac7a
zebra: fix ctab calculation typo in tc netlink
Signed-off-by: Siger Yang <siger.yang@outlook.com>
2022-08-17 19:10:07 +08:00
Siger Yang
ec195c6603
zebra: use default NS directly in tc dplane
Signed-off-by: Siger Yang <siger.yang@outlook.com>
2022-08-17 19:10:01 +08:00
Abhishek N R
f1ebd3dbd0 pimd, pim6d: Using ttable for displaying "show ip/ipv6 pim rp-info" command output.
Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-08-16 21:51:58 -07:00
Stephen Worley
17e6ba2828 zebra: add TC handlers in script code
Add TC handlers in script code and move non-handled
code together.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-08-16 15:56:35 -04:00
Donald Sharp
8202b98953
Merge pull request #11816 from mobash-rasool/fixes2
pim6d: Register message getting dropped in source node, mroute stuck in RegJ
2022-08-16 13:52:17 -04:00
Abhishek N R
802ba0fb94 pimd, pim6d: Using ttable for displaying "show ip/ipv6 pim upstream-rpf" command output.
Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-08-16 09:12:10 -07:00
Abhishek N R
090f833975 pimd, pim6d: Using ttable for displaying "show ip/ipv6 pim upstream-join-desired" command output.
Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-08-16 09:12:10 -07:00
Stephen Worley
d30d63f4f7
Merge pull request #11694 from sigeryang/master
zebra: add basic traffic control API
2022-08-16 11:21:04 -04:00
Russ White
fdbff7d1a8
Merge pull request #11805 from opensourcerouting/fix/treat_as_withdraw_if_as_set
bgpd: Treat as withdraw if we receive as path with AS_SET / AS_CONFED_SET
2022-08-16 11:17:41 -04:00
Mobashshera Rasool
e9cb0d510d pim6d: Register message getting dropped in source node, mroute stuck in RegJ
The socket created for pimv6 was created using AF_INET for PIMV6
too.
Since the api pim_reg_sock is common to both PIMv4 and PIMv6,
need to use PIM_AF instead of AF_INET.

Fixes: #11815

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-08-16 07:20:52 -07:00
Donald Sharp
11114fa52d
Merge pull request #11809 from opensourcerouting/fix/doc_bgp_clist
doc: Drop `deny` rules from BGP community-list example
2022-08-16 10:17:01 -04:00
Donald Sharp
6fe4cc69e7
Merge pull request #11811 from opensourcerouting/fix/bgp_clist_warning
bgpd: Change warning message when BGP community-list is not found
2022-08-16 10:16:40 -04:00
Donald Sharp
b545e0f99b
Merge pull request #11813 from anlancs/fix/minor-11
zebra: correct one comment about ethtool ioctl
2022-08-16 09:46:53 -04:00
Donatas Abraitis
250afa433c
Merge pull request #11814 from mobash-rasool/fixes2
pim6d: Add debug mroute6 commands
2022-08-16 16:39:18 +03:00
Mobashshera Rasool
d4dc5e3c70 doc: Adding doc for debug mroute commands
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-08-16 00:56:40 -07:00
Mobashshera Rasool
ca8cbecd5c pim6d: Add debug mroute6 and detail commands
Adding below debug CLIs:
debug mroute6
debug mroute6 detail

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-08-16 00:55:51 -07:00
Donatas Abraitis
606d49a4ca bgpd: Change warning message when BGP community-list is not found
Before:

```
donatas-laptop# show bgp ipv4 unicast community-list testas
% testas is not a valid community-list name
donatas-laptop# con
donatas-laptop(config)# bgp community-list standard testas permit internet
donatas-laptop(config)# do show bgp ipv4 unicast community-list testas
donatas-laptop(config)#
```

`is not a valid community-list name` is a misleading warning message.

Doing the same for filter-list, access-list, prefix-list, route-map.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-08-16 09:32:36 +03:00
Donatas Abraitis
e60af75350 doc: Drop deny rules from BGP community-list example
It's an invalid command, probably copy/paste error.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-08-16 09:10:30 +03:00