Commit Graph

36293 Commits

Author SHA1 Message Date
Donatas Abraitis
5c84cddab8 bgpd: Shrink rmap_change_flags to 2-bytes
4 bytes is not needed for this thing clearly.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-09 21:33:50 +03:00
Donatas Abraitis
8b66a236e8 bgpd: Reduce encap_tunneltype to 1 byte
It's not used as a bitmask, no point to use it as 2 bytes.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-09 21:33:46 +03:00
Mark Stapp
3eb7d16411 isisd: fix memory handling in isis_adj_process_threeway()
The adj_process_threeway() api may call the adj_state_change()
api, which may delete the adj struct being examined. Change the
signature so that callers pass a ptr-to-ptr so that they will
see that deletion.

Signed-off-by: Mark Stapp <mjs@cisco.com>
2024-08-09 10:08:21 -04:00
Donatas Abraitis
927be7a50e
Merge pull request #16539 from donaldsharp/tests_memory_shut
Tests memory shut
2024-08-09 13:30:30 +03:00
Donatas Abraitis
536d478049
Merge pull request #16535 from pguibert6WIND/srv6_nexthop_context
lib: add seg6localContext json attribute in nexthop information
2024-08-08 22:39:34 +03:00
Donald Sharp
cecf5716d5 lib: Don't print warning if not a daemon
vtysh will print out the `stupidly large FD limit` upon
every run of the program if the ulimit is set stupidly
large.  Prevent this from being displayed for vtysh.

Fixes: #16516
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 15:26:41 -04:00
Donald Sharp
7b8ca3e2ed
Merge pull request #16531 from idryzhov/fix-rip-show-distrib
ripd: fix show run output for distribute-list
2024-08-08 14:28:32 -04:00
Donald Sharp
208c53c90e isisd, lib: Cleanup linked list associated with snmp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Donald Sharp
db986aded4 lib: Cleanup memory associated with modules on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Donald Sharp
bc16c8ce8d isisd: Free up isis master list of instances
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Donald Sharp
2e7d915ca2 isisd: Cleanup leaked hash on shut in circuit
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Donald Sharp
b44972b65c isisd: Free up memory associated with rm/vrf's
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Donald Sharp
5891afb824 sharpd: Eliminate leaked list for locator-chunks
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-08-08 14:24:59 -04:00
Jafar Al-Gharaibeh
000ad7ff98
Merge pull request #16526 from opensourcerouting/fix/invalid_escape_chars_frr-reload.py
tools: Fix python string escape warnings for frr-reload.py
2024-08-08 12:31:48 -04:00
Donald Sharp
e7fd713afc
Merge pull request #16530 from idryzhov/fix-no-distrib-crash
lib: fix crash on distribute-list delete
2024-08-08 08:22:18 -04:00
Philippe Guibert
5d027fc791 lib: add seg6localContext json attribute in nexthop information
Some srv6 behaviors have a context attached that is visible if
no json is requested:

> # show ipv6 route
> [..]
> B>* 2001:db8:1:1:100::/128 [20/0] is directly connected, vrf10, seg6local End.DT6 table 10, weight 1, 00:00:14
> B>* 2001:db8:1:1:200::/128 [20/0] is directly connected, vrf20, seg6local End.DT6 table 20, weight 1, 00:00:14
>

The json does not dump this attribute:
> # show ipv6 route 2001:db8:1:1:100::/128 json
> [..]
>      "nexthops":[
>        {
>          "flags":3,
>          "fib":true,
>          "directlyConnected":true,
>          "interfaceIndex":6,
>          "interfaceName":"vrf10",
>          "active":true,
>          "weight":1,
>          "seg6local":{
>            "action":"End.DT6"
>          },
>        }
>

Add the json support for this.

>      "nexthops":[
>        {
>          "flags":3,
>          "fib":true,
>          "directlyConnected":true,
>          "interfaceIndex":6,
>          "interfaceName":"vrf10",
>          "active":true,
>          "weight":1,
>          "seg6local":{
>            "action":"End.DT6"
>          },
>          "seg6localContext":{
>            "table":10
>          }
>        }
>

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2024-08-08 11:36:01 +02:00
Donatas Abraitis
850076b3a1 tools: Fix python string escape warnings for frr-reload.py
When using a regex (or anything that uses `\?` escapes) in python, raw
strings (`r"content"`) should be used so python doesn't consume the
escapes itself.  Otherwise we get either broken behavior and/or
`SyntaxWarning: invalid escape sequence '\['`

Fixes: 8916953b53 ("build: fix a few python string escape warnings")
Fixes: https://github.com/FRRouting/frr/issues/16522

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-08 08:46:39 +03:00
Igor Ryzhov
25d94ec3ee ripd: fix show run output for distribute-list
CLI show callbacks should be defined in frr_ripd_cli_info instead of
frr_ripd_info, because only the former is loaded by mgmtd and only its
callbacks are getting called for config output.

Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
2024-08-08 01:25:02 +03:00
Igor Ryzhov
2b12d62e38 lib: fix crash on distribute-list delete
The destroy callback must be executed only once on APPLY stage.

Fixes #16528

Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
2024-08-08 01:17:11 +03:00
Donald Sharp
d304714697
Merge pull request #16525 from opensourcerouting/fix/remove_BGP_UPDATE_DELAY_MINMAX
bgpd: Remove BGP_UPDATE_DELAY_MIN/MAX
2024-08-07 18:10:56 -04:00
Igor Ryzhov
61e8d5e0b9 mgmtd: don't add implicit state data when reading config from file
When mgmt reads configuration from file, it shouldn't add implicit state
data to the candidate datastore. Configuration datastores like candidate
should never store state, otherwise they fail validation.

Fixes #15814

Signed-off-by: Igor Ryzhov <idryzhov@gmail.com>
2024-08-08 00:45:13 +03:00
Donald Sharp
d36ff6df2b
Merge pull request #16523 from LabNConsulting/chopps/fix-mgmt-rpc-test
tests: wait for test client to connect before running test
2024-08-07 13:27:39 -04:00
Donatas Abraitis
14b5c78d44 bgpd: Remove BGP_UPDATE_DELAY_MIN/MAX
Found randomly, and seems not used anymore.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-07 17:39:28 +03:00
Christian Hopps
2ee9f4d11f tests: wait for test client to connect before running test
Vtysh has been improved to startup very quickly this exposed a race in this
test, where the `clear ip rip...` command ran before the test client that
handles it had finished connecting to mgmtd. Add a retried check for the test
client being connected before issuing the `clear ip rip ...` test command.

Signed-off-by: Christian Hopps <chopps@labn.net>
2024-08-07 09:35:52 -04:00
Donald Sharp
0e1088c761
Merge pull request #16521 from opensourcerouting/fix/capability_toggles
bgpd: Clear previously allocated capabilities values before parsing a new OPEN
2024-08-07 09:24:48 -04:00
Donatas Abraitis
1d181dfb98 bgpd: Clear previously allocated capabilities values before parsing a new OPEN
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2024-08-07 10:16:26 +03:00
Mark Stapp
0221ed2917 zebra: be consistent about v6 nexthops for v4 routes
Treat TYPE_IPV6 and TYPE_IPV6_IFINDEX nexthops the same way when
processing v4 (RFC 5549) routes.

Signed-off-by: Mark Stapp <mjs@cisco.com>
2024-08-06 08:17:47 -04:00
Mark Stapp
975e1a36f6
Merge pull request #16501 from donaldsharp/preprocess_vtysh
Preprocess vtysh
2024-08-02 07:27:04 -04:00
Jafar Al-Gharaibeh
e38dfe03fb
Merge pull request #16510 from donaldsharp/test_timing_fixes
Test timing fixes
2024-08-01 12:45:09 -04:00
Donald Sharp
fd59fa1feb
Merge pull request #16509 from opensourcerouting/pim-cid-1598684
pimd: fix possible NULL dereference
2024-08-01 12:03:35 -04:00
Donald Sharp
6bdc90b6aa
Merge pull request #16499 from opensourcerouting/fix/bgp_session_reset_safe
bgpd: Use bgp_session_reset_safe() for GR update all peers
2024-08-01 08:08:17 -04:00
Donald Sharp
9af1f5e823 tests: need aggressive timers in bgp_prefix_list_any
Add some timers to make convergence happan as fast as possible
when a connection fails on the intial attempt.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-07-31 11:44:06 -04:00
Donald Sharp
b52346efe4 tests: need aggressive timers in bgp_route_map_match_ipv6_nexthop
Add some timers to make the convergence happen as fast as possible
when a connection fails on the initial attempt.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-07-31 11:01:54 -04:00
Donald Sharp
08bf9cd9f5 tests: Shorten reconnect timer when something goes wrong
When running bfd_bgp_cbit_topo3 and an intial connection
goes wrong, try to connect again as fast as possible as
that the timer is 2 minutes otherwise and the test will
never come back from it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-07-31 10:47:12 -04:00
Donald Sharp
6f2aea5a13 tests: Increase route_scale timeouts
This test is frequently failing in the upstream CI.  Most
log failures are stating that we expected something like
1 million routes but we have 900k+.  Looks like the system
is just loaded a bit more than expected.  Let's give these
tests a bit more time to complete.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2024-07-31 10:45:38 -04:00
Rafael Zalamena
d6d49f291c pimd: fix possible NULL dereference
Coverity scan ID: 1598684

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2024-07-31 10:18:47 -03:00
Donald Sharp
3b3fff48be
Merge pull request #16500 from opensourcerouting/fix/show_afi_when_printing_debug
bgpd: Show which AFI is affected when prefix-list is not found
2024-07-31 08:19:14 -04:00
Donald Sharp
3d56a1b438
Merge pull request #16497 from opensourcerouting/fix/tunel_encap
bgpd: Check the actual remaining stream length before taking TLV value
2024-07-31 08:14:34 -04:00
David Lamparter
4bc41193e8 vtysh, lib: preprocess CLI graphs
Store a parsed and built graph of the CLI nodes in vtysh, rather than
parsing and building that graph every time vtysh starts up.

This provides a 3x to 5x reduction in vtysh startup overhead:

`vtysh -c 'configure' -c 'interface lo' -c 'do show version'`

- before: 92.9M cycles, 1114 samples
- after: 16.5M cycles, 330 samples

This improvement is particularly visible for users scripting `vtysh -c`
calls, which notably includes topotests.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
e26c580588 vtysh: de-conditionalize and reorder install_node
There is entirely no point to these being conditional.  And pull them up
so the upcoming pre-parse code can work on a clean slate.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
ece3132471 lib/clippy: add CMD_ELEMENT_TKN
The command graph has its tail end nodes pointing at the
`struct cmd_element` rather than a `struct cmd_token`.  This is a bit
weird to begin with, but becomes very annoying for the python bindings
where there is just no `struct cmd_element`.

Create a `CMD_ELEMENT_TKN` type for `cmd_token` instead, and replace the
tail end token in the python bindings with an instance of that.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
cb9d20b712 lib/clippy: improve graph node member access
Expose all of the struct members of cmd_token, and retrieve them
dynamically rather than copying them around.  The problem with copying
them is that they can change as a result of merge(), and if there is an
existing wrapper object around it will not have its copy updated to
match.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
e2344206ca lib/clippy: expose JOIN_TKN's fork node
FORK_TKN's join node is already exposed, mirror to expose JOIN_TKN's
fork node.

(contains minor cleanup to make checkpatch.pl shut up)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
3c1556f386 lib/clippy: expose graph nodes' back pointers
There's a wrapper for nodes' outgoing pointers, but not incoming yet.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
8511f39987 lib/clippy: allow accessing graph nodes by index
Add len(graph) and graph[i] wrappers to access arbitrary nodes in a
graph.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
f85e58af12 lib/clippy: add a __repr__ for graph nodes
Make it a little easier to work on python code using this wrapper.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
34a4f858b7 lib/clippy: wrap cmd_graph_merge via Graph.merge()
Export cmd_graph_merge() to python code via graph1.merge(graph2).

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
7fb8729a32 lib/clippy: allow creating empty graph
When merging graphs, it makes sense to allow starting with an empty one.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
cf37c79f31 lib/clippy: dynamically wrap graph nodes
The number of nodes in a graph will change as soon as cmd_graph_merge is
supported as an operation, therefore size this dynamically.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00
David Lamparter
67a76894b7 tools/checkpatch: recognize + as unary operator
Allow using "+1" when meaningful (i.e. cmd_graph_merge wants -1 or +1)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2024-07-31 08:08:53 -04:00