ospf6d: Remove ospf6 route when connected winsCurrently when ospf6 installs a route that is later
covered by a connected, the ospf6 route is never removed.
Modify the code to detect the case where the new route
that `wins` in ospf6 notices that it is connected and the
old route that was in was a ospf6 route. If so send a
specific route deletion for the ospf6 route.
This failure is happening infrequently in the ospf6_point_to_multipoint
t...
doc: document standalone Sphinx HTML build without configureAdd a section at the end of building-doc.rst describing how to run
sphinx-build from the repository root when the tree has not been
configured.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
ci: gate github-ci Build/Test jobs on non-doc paths; add HTML doc job- Add doc-path-filter job (dorny/paths-filter) for doc/** vs rest of tree.
- Run Prepare-MIB-Cache, Build, and Test only when changes exist outside doc/.
- Add Documentation-HTML job (sphinx user + developer) when doc/ changes.
- Skip Documentation-HTML when doc/ is unchanged.
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
tests: update test descriptionThis is a particular type of test we shouldn't mix in other generic
config tests. The previous name was too generic as well so update it
too.
Signed-off-by: Christian Hopps <chopps@labn.net>
tests: Modify tests to better test some zebra cli changesBetter test:
a) ip import table
b) allow-external....
c) packet read in values for zebra
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Signed-off-by: Christian Hopps <chopps@labn.net>
mgmtd: improve vty error handling for `mgmt edit`Improve handling of error in frontend client/mgmt vty. Use this to
return a more appropriate result (CMD_WARNING_CONFIG_FAILED) back to
vtysh mirroring the normal config change path. As a result vtysh will
correctly exit with status 1 when running one shot `mgmt edit` config
commands.
Signed-off-by: Christian Hopps <chopps@labn.net>
zebra: Move `ip import-table` to mgmt frontend sideThe `ip import-table ...` commands were not on the mgmt
front end side. Move them to it.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra: Move `zebra work-queue` to mgmt frontend sideReroute the `zebra work-queue` commands to actually be
on the mgmt frontend side instead of the zebra side.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra: Move `zebra zapi-packets` to mgmt frontend sideMove the `zebra zapi-packets` command to fully use the mgmt
frontend.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra: Move `zebra dplane limit` to mgmt frontend sideRoute the `zebra dplane limit` CLI through the mgmt-fronted
zebra NB path and implement the existing dplane queue limit
NB apply callback so the command keeps its behavior after the move.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
doc: document new RIP log toggleDocument a new command in the `router rip` configuration node to toggle
the RIP discovery / disappearance messages.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
tests: increment test to include new loggingIncrement the RIP BFD test to include testing the new log messages. The
RIP BFD topology fits this test well due to the decreased interval
between peer discovery and peer disappearance (due to BFD fast
convergence).
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
ripd, yang: add log-neighbor-changes configurationWhen log-neighbor-changes is enabled the RIP daemon will log everytime
a peer is discovered and a peer times out.
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
pceplib: obj is already de-refed, no need to check for NULLobj is created via common_object_create() which never
returns a NULL pointer. There is no need to test
for it being NULL.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd: remove unreachable json_paths free in evpn_show_all_routes()When brief is true, json_paths is never allocated; the else branch was
dead code and triggered Coverity CID 1670529 (DEADCODE).
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
bfdd: avoid prefix-list memory allocation in bfd to solve oom issuePrefix-list memory is allocated in all FRR modules even when not needed. Added a mechanism to avoid allocation for modules that do not use prefix lists.
Ticket: #4707868
Signed-off-by: Sougata Barik <sougatab@nvidia.com>
pimd: `pim_inet4_dump` -> `%pI4s`Better late than never, we don't need `pim_inet4_dump` when we have
`printfrr`, replace it with `%pI4s` format strings.
Signed-off-by: David 'equinox' Lamparter <equinox@opensourcerouting.org>
bgpd: Use %pI4/%pI6 formatters in BGP-LS NLRI displaybgp_ls_nlri_display() converts addresses with inet_ntop() into a local
string buffer before printing. FRR already supports %pI4/%pI6 in vty_out(),
so the extra conversion path and temporary buffer are unnecessary.
Replace inet_ntop()-based formatting with direct %pI4/%pI6 printing for
router IDs and link interface/neighbor addresses, and drop the unused
ipaddr_str buffer.
This simplifies the ...
bgpd: Skip oversized BGP-LS Node and Link Name TLVsparse_node_name() and parse_link_name() accept a length parameter from
the BGP-LS TLV header and allocate a buffer of that size without bounds
checking. A malicious peer can send TLVs with length fields up to 64KB,
causing per-advertisement memory exhaustion that accumulates across many
updates.
Fix by adding separate constants BGP_LS_MAX_NODE_NAME_LEN and
BGP_LS_MAX_LINK_NAME_LEN (255 bytes e...
bgpd: Fix wrong union member access in bgp_ls_nlri_display()BGP-LS NLRIs carry different data depending on their type (Node, Link,
or Prefix). Internally the data is stored in a C union, where only the
member matching the active NLRI type is valid to read.
bgp_ls_nlri_display() always reads the protocol_id and identifier
fields through the node union member, even when the NLRI is actually
a Link or Prefix. Reading the wrong union member is undefined be...
bgpd: Always print peer-group first for the specific neighborAvoid such a case like below where neighbor X does not have remote-as 1, but
gets the remote-as from peer-group G.
neighbor G peer-group
neighbor G remote-as 2
neighbor X remote-as 1
neighbor X peer-group G
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd: Allow overriding "remote-as" per-neighborSince we have a way to specify "remote-as auto", it makes sense to relax this
behavior to allow overriding remote-as for an arbitrary neighbor too.
E.g. Arista allows this behavior.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd: Fix copy-paste error in SRv6 DT46 SID duplicate install checkSRv6 End.DT46 uses a single shared SID for both the IPv4 (AFI_IP) and
IPv6 (AFI_IP6) address families within a VRF. When zebra notifies bgpd
that a SID has been assigned, bgpd must install it for both AFIs. To
avoid sending zebra a duplicate ROUTE_ADD, the AFI_IP6 code path first
checks whether AFI_IP has already done the install:
1) do both AFIs currently hold the same SID?
2) has AFI_I...
zebra: topotest for last address deletionAdd test that checks kernel routes behaviour on last address deletion.
For IPv4 last address deletion must delete all routes for kernel and FRR.
For IPv6 checks that as expected last address deletion doesn't effect
kernel or FRR routes.
See #13561
Signed-off-by: Kyrylo Yatsenko <hedrok@gmail.com>
zebra: remove kernel route on last address deletionFixes: #13561
Linux kernel deletes IPv4 routes when last interface IPv4 address
is deleted, but intentionally doesn't send RTM_DELROUTE in this case.
IPv6 has no such behaviour: all routes remain intact on last address
deletion.
FRR has function rib_update_handle_kernel_route_down_possibility
that handles setting interface down, but not removal of last address.
To fix the situation:
* Add ...
bgpd,lib,zebra: cast pointers to intptr_t in tracepointsCast pointers in tracepoint arguments to intptr_t explicitly
to keep compilers happy.
Signed-off-by: Mark Stapp <mjs@cisco.com>
bgpd: fix error in evpn_mac_ip_zsend tracepoint definitionprefix.macip_addr.eth_tag used as a pointer, but actually an int.
Signed-off-by: Mark Stapp <mjs@cisco.com>