Commit Graph

32792 Commits

Author SHA1 Message Date
Donald Sharp
fc6115ced7 pimd: Intentionally rescan oil when RPF fails on upstream creation
When pim is creating an upstream for a S,G that it has received
*but* it has not received a route to the S, the oil is not
scanned to see if it should inherit anything from the *,G
that may be present when it cannot find the correct iif to
use.  When the nexthop tracking actually
resolves the route, the oil is never rescanned and the
S,G stream will be missing a correct oil list leading
to absolute mayhem in the network.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-14 11:08:00 -04:00
Donald Sharp
35c4790aa7 pimd: Allow more immediate null registers to be sent in the vxlan code
When a pim vxlan S,G is created, the code attempts to send out a NULL
register.  This is used to build the S,G tree from the RP to the
FHR.  Upon initial startup it is not unusual for the pim vxlan state
be fully ready to go but the RP is still not reachable.  Let's add
a bit of a pump prime that allows the vxlan code to re-attempt to
send the null register for vxlan S,G's that the RP's outgoing
interface changed from unknown to an actual interface.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-12 11:48:15 -04:00
Donald Sharp
808e0aa111 pimd: Prevent vxlan from causing a S,G RPT Prune in some cases
Upon startup the pim vxlan code initiates a pim null register
send for the S,G and sends a *,G join towards the RP at the same
time.  Since a S,G upstream is created in the vxlan code with
the appropriate flags, the *,G join has the embedded S,G RPT
Prune.  When an intermediate route receives this *,G RPT Prune
it creates a blackhole S,G route since this particular intermediate
router has not received a join from the RP yet( say the packet is
lost, or that part of the network is slower coming up ).

Let's try to intelligently decide that the S,G RPT Prune
should not be sent as part of the *,G join until the actual
S,G join from the RP reaches this box.  Then we can make
intelligent decisions about whether or not to send it
out.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-12 00:06:51 -04:00
Donald Sharp
9276533bbd tests: Make bgp_evpn_mh a 3 level clos
The tests were originally tor --- spine
lets add a tor -- leaf -- spine.  At this
point this change was to allow me to test
some funkiness I am seeing in pim vxlan setups
when the leaf is acting as the intermediate routers.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-11 23:51:07 -04:00
Donatas Abraitis
36156c9f37
Merge pull request #14176 from pguibert6WIND/mpls_yang_enable_disable
Mpls yang enable disable
2023-08-11 18:36:35 +03:00
Philippe Guibert
17c3f31642 topotests: add static mpls routing test
There is no test that checks for the mpls interface
configuration.
The new test checks that mpls configuration per
interface works when value is enabled or disabled.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-08-10 18:13:21 +02:00
Philippe Guibert
63be83eac5 doc: update mpls per interface command
Update mpls per interface command information.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-08-10 18:13:21 +02:00
Philippe Guibert
7832bbcc30 zebra, yang: add an mpls leaf to interface
The yang NB API does not handle the mpls configuration
on its leaf.
Add an mpls leaf to stick to the mpls configuration.
- true or false to mean if config
- not defined, means no config.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-08-10 18:13:21 +02:00
Philippe Guibert
8291e3a313 zebra: fix 'no mpls' command by using 'mpls disable' instead
The 'no mpls' command wrongly assumes the user wants to disable
the mpls handling on the interface whereas this is just a config
knob that should mean 'I don't care with mpls'.

Fix this by adding a 'disable' option to the mpls command.

Fixes: 39ffa8e8e8 ("zebra: Add a `mpls enable` interface node command")

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-08-10 18:13:21 +02:00
Donatas Abraitis
8ceb262401
Merge pull request #14171 from mjstapp/fix_bgp_lblpool_indent
bgpd: fix whitespace/indent in bgp_labelpool module
2023-08-10 16:20:28 +03:00
Donatas Abraitis
4751e9abb4
Merge pull request #14170 from mjstapp/fix_bitfield_mtype
libs: use XREALLOC in bitfield lib module
2023-08-10 14:17:28 +03:00
Donald Sharp
b886422443
Merge pull request #14169 from qlyoung/amalgamate-checkping
tests: amalgamate check_ping
2023-08-09 19:47:56 -04:00
Mark Stapp
2c11fbe4d3 bgpd: fix whitespace/indent in bgp_labelpool module
Fix some weird indentation in the bgp labelpool module.

Signed-off-by: Mark Stapp <mjs@labn.net>
2023-08-09 17:01:16 -04:00
Mark Stapp
82cde1f85b libs: use XREALLOC in bitfield lib module
Use FRR mem api instead of raw realloc() in bitfield module.

Signed-off-by: Mark Stapp <mjs@labn.net>
2023-08-09 16:19:40 -04:00
Quentin Young
e0c1b43814 tests: amalgamate check_ping
✂️📋

Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
2023-08-09 15:46:29 -04:00
Donatas Abraitis
df04c23c8f
Merge pull request #14073 from fdumontet6WIND/as_path_replace_reg
bgpd: add set as-path replace acl-list command
2023-08-09 15:28:58 +03:00
Donatas Abraitis
456b63d8c8
Merge pull request #14099 from lkClare/formated_sync_0727
bgpd: bgp_path_info_extra memory optimization
2023-08-09 14:46:48 +03:00
Francois Dumontet
7ac7cd804b doc: set as-path replace as-path-access-list
Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-08-09 11:13:38 +02:00
Mark Stapp
cffa2472af
Merge pull request #14161 from opensourcerouting/fix/comment
bgpd: Fix RFC number in a comment
2023-08-08 12:36:58 -04:00
Russ White
a84dee73d1
Merge pull request #14154 from opensourcerouting/feature/bgpd_handle_role_capability_using_dynamic_capability
bgpd: Handle role capability using dynamic capability
2023-08-08 10:47:04 -04:00
Donatas Abraitis
2352bbf1bf
Merge pull request #14158 from donaldsharp/listnode_stuff
ospfd: Ensure listnode returns are usable
2023-08-08 16:31:57 +03:00
Donatas Abraitis
ffa7233fa1 bgpd: Fix RFC number in a comment
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-08 16:31:12 +03:00
Valerian_He
98efa5bc6b bgpd: bgp_path_info_extra memory optimization
Even if some of the attributes in bgp_path_info_extra are
not used, their memory is still allocated every time. It
cause a waste of memory.
This commit code deletes all unnecessary attributes and
changes the optional attributes to pointer storage. Memory
will only be allocated when they are actually used. After
optimization, extra info related memory is reduced by about
half(~400B -> ~200B).

Signed-off-by: Valerian_He <1826906282@qq.com>
2023-08-08 10:48:07 +00:00
Donatas Abraitis
85fe386079
Merge pull request #14157 from donaldsharp/blargle_smargle
bgpd: bgp_vrf is already deref'ed in all paths
2023-08-08 13:03:34 +03:00
Donald Sharp
296645fc78 ospfd: Ensure listnode returns are usable
Coverity is complaining that listnode can return a NULL
value and thus FRR could derefence the returned value.
Since this is not crashing we know that this is not happening
in the wild.  Let's make this an assert or check that it is
legal to use the value.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-07 15:57:29 -04:00
Donald Sharp
a67b223377
Merge pull request #14153 from idryzhov/vtysh-empty-interface
vtysh: fix checking empty interface node
2023-08-07 15:48:00 -04:00
Donald Sharp
e343833baa
Merge pull request #14155 from LabNConsulting/ziemba-zebra-pbr-ctx-common
zebra: zebra_dplane.[ch]: use pbr common struct in ctx
2023-08-07 15:15:25 -04:00
Donald Sharp
ad5329c7b0 bgpd: bgp_vrf is already deref'ed in all paths
The usage of bgp_vrf does not need to be tested
at this point since it's already been derefed in all
paths to this point.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-07 15:11:05 -04:00
G. Paul Ziemba
1c900cea90 zebra: zebra_dplane.[ch]: use pbr common struct in ctx
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2023-08-07 06:24:53 -07:00
Francois Dumontet
459e1cd903 tests: add one test to bgp_set_aspath_replace.py
add support of  set as-path replace as-path-access-list

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-08-07 12:30:34 +02:00
Francois Dumontet
958340e935 bgpd: add set as-path exclude acl-list command
A route-map applied on incoming BGP updates is not able
to replace an unwanted as segments by another one.
unwanted as segment are based on an AS path access-list.

The below configuration illustrates the case:

router bgp 65001

address-family ipv4 unicast
 neighbor 192.168.1.2 route-map rule_2 in
exit-address-family

bgp as-path access-list RULE permit ^65

route-map rule_2 permit 10
 set as-path replace as-path-access-list RULE 6000

```
BGP routing table entry for 10.10.10.10/32, version 13
Paths: (1 available, best #1, table default)
  Advertised to non peer-group peers:
  192.168.10.65
  65000 1 2 3 123
    192.168.10.65 from 192.168.10.65 (10.10.10.11)
      Origin IGP, metric 0, valid, external, best (First path received)
```

After:

```
do show ip bgp 10.10.10.10/32
BGP routing table entry for 10.10.10.10/32, version 15
    Paths: (1 available, best #1, table default)
      Advertised to non peer-group peers:
      192.168.10.65
      6000 1 2 3 123
        192.168.10.65 from 192.168.10.65 (10.10.10.11)
          Origin IGP, metric 0, valid, external, best (First path
          received)
```

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2023-08-07 12:30:34 +02:00
Donald Sharp
529203905b
Merge pull request #14151 from opensourcerouting/fix/improve_addpath_selected_test
tests: Improve bgp_addpath_best_selected topotest
2023-08-06 17:01:16 -04:00
Donatas Abraitis
4735badb87
Merge pull request #14152 from idryzhov/vtysh-filter
vtysh: remove unused cmd_filter_type
2023-08-06 20:14:13 +03:00
Donatas Abraitis
ceea81be77
Merge pull request #14139 from donaldsharp/v6_v4_nexthops
V6 v4 nexthops
2023-08-06 20:11:19 +03:00
Donatas Abraitis
6d91d1c768
Merge pull request #14149 from donaldsharp/cleanup_bad_commands
Cleanup bad commands
2023-08-06 20:10:23 +03:00
Donatas Abraitis
50c5908c9f bgpd: Check if peer is established and dynamic capability-aware
Add this logic inside bgp_capability_send() instead of repeating the whole
logic before calling bgp_capability_send().

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 23:02:59 +03:00
Donatas Abraitis
2b5236dbb3 tests: Check if role capability is exchanged via dynamic capability
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 22:57:06 +03:00
Donatas Abraitis
454d37aec2 bgpd: Handle role capability using dynamic capability
When setting local-role for the neighbor, force sending ROLE capability via
dynamic capability if it's enabled.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-05 22:44:45 +03:00
Igor Ryzhov
cedba2406f vtysh: fix checking empty interface node
vtysh is not supposed to show empty interface node in running config,
however the corresponding check is broken and empty nodes are shown.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-08-05 00:46:45 +03:00
Igor Ryzhov
8c098c31db vtysh: remove unused cmd_filter_type
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-08-05 00:45:10 +03:00
Donatas Abraitis
0ba5225b92 tests: Drop duplicate neighbor definition
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-04 23:22:38 +03:00
Donald Sharp
d65249aa65
Merge pull request #14148 from opensourcerouting/fix/tests_bgp_addpath_failing_sometimes
tests: Use a correct syntax for defining keepalive/hold timers
2023-08-04 15:44:10 -04:00
Donatas Abraitis
dcf133fdf6 tests: Improve bgp_addpath_best_selected topotest
Test everything else only after we have an initial good state.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-08-04 22:34:17 +03:00
Mark Stapp
a593a319f5
Merge pull request #14147 from idryzhov/static-fix-nexthop-vrf
staticd: fix comparison of nexthop-vrf
2023-08-04 15:09:39 -04:00
Donald Sharp
d676e8c412 tests: isis_snmp, ldpd doesn't talk to snmp
isis_snmp.test_isis_snmp/r1/ldpd.log:2023/08/04 12:49:54 LDP: [SHWNK-NWT5S][EC 100663304] No such command on config line 8: agentx

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:06:56 -04:00
Donald Sharp
5eceb87d06 tests: babel_topo1 Another no such command
babel_topo1.test_babel_topo1/r3/babeld.log:2023/08/04 12:46:55 BABELD: [SHWNK-NWT5S][EC 100663304] No such command on config line 17:  redistirbute ipv6 connected

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:05:42 -04:00
Donald Sharp
27de57ec33 tests: config_timing calls non-existent command
./config_timing.test_config_timing/r1/zebra.log:2023/08/04 12:34:29 ZEBRA: [SHWNK-NWT5S][EC 100663304] No such command on config line 7: exit-route-map
./config_timing.test_config_timing/r1/zebra.log:2023/08/04 12:34:29 ZEBRA: [SHWNK-NWT5S][EC 100663304] No such command on config line 10: exit-route-map

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:04:48 -04:00
Donald Sharp
8487fd07d6 tests: bfd_ospf_topo1 there is no passive interface command
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt3/ospfd.log:2023/08/04 12:46:58 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 28:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt5/ospfd.log:2023/08/04 12:46:59 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 27:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt1/ospfd.log:2023/08/04 12:46:56 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 30:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt4/ospfd.log:2023/08/04 12:47:00 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 27:  passive interface lo
./bfd_ospf_topo1.test_bfd_ospf_topo1/rt2/ospfd.log:2023/08/04 12:46:57 OSPF: [SHWNK-NWT5S][EC 100663304] No such command on config line 28:  passive interface lo

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:03:44 -04:00
Donald Sharp
965405e25a tests: ospf6_gr_topo1 attempts, but fails to set the password
Irrelevant and let's just remove it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:01:54 -04:00
Donald Sharp
59f24a5b06 tests: cspf_topo1 has import-te in sharpd.conf
This will never work, let's remove

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-08-04 13:00:36 -04:00