]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
17 months agoMerge pull request #12560 from opensourcerouting/fix/allow_agentx_for_frr-reload
Jafar Al-Gharaibeh [Sun, 25 Dec 2022 01:48:21 +0000 (19:48 -0600)]
Merge pull request #12560 from opensourcerouting/fix/allow_agentx_for_frr-reload

tools: Ignore agentx command for frr-reload.py

17 months agoMerge pull request #12561 from opensourcerouting/feature/update_snmp_documentation
Jafar Al-Gharaibeh [Sun, 25 Dec 2022 01:45:48 +0000 (19:45 -0600)]
Merge pull request #12561 from opensourcerouting/feature/update_snmp_documentation

doc: Add an example of how to query SNMP for BGP

17 months agoMerge pull request #12564 from sysoleg/evpn-doc-fix
Mark Stapp [Fri, 23 Dec 2022 21:17:24 +0000 (16:17 -0500)]
Merge pull request #12564 from sysoleg/evpn-doc-fix

doc: Fix EVPN documentation minor error

17 months agodoc: Fix EVPN documentation minor error
Oleg A. Arkhangelsky [Fri, 23 Dec 2022 17:39:11 +0000 (17:39 +0000)]
doc: Fix EVPN documentation minor error

Signed-off-by: Oleg A. Arkhangelsky <sysoleg@yandex.ru>
17 months agoMerge pull request #12551 from proelbtn/fix-install-srv6-local-routes
Donatas Abraitis [Fri, 23 Dec 2022 12:51:46 +0000 (14:51 +0200)]
Merge pull request #12551 from proelbtn/fix-install-srv6-local-routes

bgpd: Fix announce SRv6 locally-generated routes to Zebra

17 months agoMerge pull request #12555 from anlancs/fix/bgp-debug-info
Donatas Abraitis [Thu, 22 Dec 2022 19:24:32 +0000 (21:24 +0200)]
Merge pull request #12555 from anlancs/fix/bgp-debug-info

bgpd: fix one wrong debug log for evpn

17 months agodoc: Add an example of how to query SNMP for BGP
Donatas Abraitis [Thu, 22 Dec 2022 16:25:50 +0000 (18:25 +0200)]
doc: Add an example of how to query SNMP for BGP

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agotools: Ignore agentx command for frr-reload.py
Donatas Abraitis [Thu, 22 Dec 2022 15:55:40 +0000 (17:55 +0200)]
tools: Ignore agentx command for frr-reload.py

agentx can't be disabled once enabled, so we should ignore it for frr-reload.py.

```
$ /usr/lib/frr/frr-reload.py --reload /etc/frr/bgpd.conf --bindir /usr/local/bin
"no agentx" we failed to remove this command
SNMP AgentX support cannot be disabled once enabled
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agoMerge pull request #12557 from donaldsharp/getenv_two_times
Rafael Zalamena [Wed, 21 Dec 2022 19:13:23 +0000 (16:13 -0300)]
Merge pull request #12557 from donaldsharp/getenv_two_times

vtysh: Remove double retrieve of env VTYSH_HISTFILE

17 months agoMerge pull request #12540 from manojvn/489527
Donald Sharp [Wed, 21 Dec 2022 13:20:31 +0000 (08:20 -0500)]
Merge pull request #12540 from manojvn/489527

ospf6d: Fixing memory leak in ospf6_summary_add_aggr_route_and_blackh…

17 months agoMerge pull request #12553 from opensourcerouting/fix-sa-warnings
Donald Sharp [Wed, 21 Dec 2022 13:09:02 +0000 (08:09 -0500)]
Merge pull request #12553 from opensourcerouting/fix-sa-warnings

bgpd: fix static analyzer warning

17 months agovtysh: Remove double retrieve of env VTYSH_HISTFILE
Donald Sharp [Wed, 21 Dec 2022 13:04:34 +0000 (08:04 -0500)]
vtysh: Remove double retrieve of env VTYSH_HISTFILE

The code is double checking the VTYSH_HISTFILE env variable,
additionally clang-15 when running SA over it doesn't fully
understand the code pattern.  Reduce the double check to
one check to reduce program run-time (ha!) and make SA happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agobgpd: fix one wrong debug log for evpn
anlan_cs [Sun, 18 Dec 2022 12:36:41 +0000 (20:36 +0800)]
bgpd: fix one wrong debug log for evpn

Take it into consideration for one debug log:
EVPN MAC-IP routes with a L3 NHG id, has no nexthops.

Not "delete", but "add".

Before:
```
Tx route delete VRF 21 192.168.30.253/32 metric 0 tag 0 count 0 nhg 72580649
```

After:
```
Tx route add VRF 21 192.168.30.253/32 metric 0 tag 0 count 0 nhg 72580649
```

Signed-off-by: anlan_cs <vic.lan@pica8.com>
17 months agoMerge pull request #12552 from Jafaral/rel-notes
Donald Sharp [Tue, 20 Dec 2022 20:49:15 +0000 (15:49 -0500)]
Merge pull request #12552 from Jafaral/rel-notes

Release housekeeping

17 months agobgpd: fix static analyzer warnings
Rafael Zalamena [Tue, 20 Dec 2022 18:44:02 +0000 (15:44 -0300)]
bgpd: fix static analyzer warnings

Use `DEFPY` to provide the `struct prefix` required by the debug
insertion functions. While here exchange `int` with `bool` where
appropriated.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
17 months agoMerge pull request #12518 from patrasar/pim_minor_issue
Donatas Abraitis [Tue, 20 Dec 2022 16:21:07 +0000 (18:21 +0200)]
Merge pull request #12518 from patrasar/pim_minor_issue

pimd: Fix (S,G) debug issue

17 months agoMerge pull request #12539 from donaldsharp/bgp_debug_prefix_mem_leak
Russ White [Tue, 20 Dec 2022 16:20:19 +0000 (11:20 -0500)]
Merge pull request #12539 from donaldsharp/bgp_debug_prefix_mem_leak

bgpd: When allocating prefix, free it when we are already tracking it

17 months agoMerge pull request #12531 from opensourcerouting/feature/snmp_tests
Russ White [Tue, 20 Dec 2022 16:19:10 +0000 (11:19 -0500)]
Merge pull request #12531 from opensourcerouting/feature/snmp_tests

bgpd: SNMP IPv6 tests and some fixes

17 months agoMerge pull request #12543 from donaldsharp/ospf_json_mem_leak
Russ White [Tue, 20 Dec 2022 16:15:28 +0000 (11:15 -0500)]
Merge pull request #12543 from donaldsharp/ospf_json_mem_leak

ospfd: Fix some json mem leaks and some issues

17 months agoMerge pull request #12527 from opensourcerouting/ospf-spf-leak2
Russ White [Tue, 20 Dec 2022 16:12:23 +0000 (11:12 -0500)]
Merge pull request #12527 from opensourcerouting/ospf-spf-leak2

ospfd: fix SPF table memory leak

17 months agodebian, redhat: updating changelog for new release
Jafar Al-Gharaibeh [Thu, 3 Nov 2022 03:44:56 +0000 (22:44 -0500)]
debian, redhat: updating changelog for new release

8.4 Release Overview

- New BGP [command](https://docs.frrouting.org/en/latest/bgp.html#clicmd-neighbor-A.B.C.D-X-X-X-X-WORD-soo-EXTCOMMUNITY) (`neighbor PEER soo`) to configure SoO to prevent routing loops and suboptimal routing on dual-homed sites.
- Command `debug bgp allow-martian` replaced to `bgp allow-martian-nexthop` because previously we allowed using martian next-hops when debug is turned on.
- Implement `BGP Prefix Origin Validation State Extended Community` [rfc8097](https://datatracker.ietf.org/doc/rfc8097/)
- Implement `Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages` [rfc9234](https://datatracker.ietf.org/doc/rfc9234/)
- BMP L3VPN support
- PIMv6 support
- MLD support
- New [command](https://docs.frrouting.org/en/latest/basic.html#clicmd-allow-reserved-ranges) to enable using reserved IPv4 ranges as normal addresses for BGP next-hops, interface addresses, etc.
- As usual, lots of bugs and memory leaks were fixed \m/

Changelog
---------

**babeld**
  - Ignore Sub-TLV's with mandatory bit set
  - Ignore unicast Hello's

**bfdd**
  - Add IPv4 BFD Echo support
  - Add RTT to BFD IPv4 Echo packet processing
  - Allow L3 VRF BFD sessions without UDP leaking

**bgpd**
  - Add `mpls bgp forwarding` to ease MPLS-VPN EBGP peering
  - Add `bgp allow-martian-nexthop` command (remove `debug bgp allow-martian`)
  - Add `neighbor soo` command
  - Add `no rpki` command
  - Add `show bgp access-list` command to filter routes by access-list
  - Implement [rfc8097](https://datatracker.ietf.org/doc/rfc8097/)
  - Implement [rfc9234](https://datatracker.ietf.org/doc/rfc9234/)
  - Add resolution for L3VPN traffic over GRE interfaces
  - Allow setting custom port for BGP unnumbered peers
  - Allow statistics gathering to give more data about prefix lengths
  - Apply conditional advertisements policy to update-group
  - Associate appropriate family for redistributed connected addresses
  - Avoid notify race between io and main pthreads
  - Call a hook when as-path filter is replaced
  - Cleanup memory leaks associated with t_deferral_timer
  - Do not check if the whole as-path has target asn when using as-override
  - Do not print new line for EVPN CLI outputs if it's a JSON
  - Do not show polling_period default value in CLI for RPKI
  - Don't advertise conditionally withdrawn routes
  - Drop SSH public key for RPKI CLI option
  - Fix `show bgp nexthop a.b.c.d`
  - Fix for `aggregate-address summary-only matching-med-only`
  - Fix inconsistencies with default-originate route-map
  - Fix memory leak for `as-override`
  - Fix memory leak for `set as-path replace` route-map command
  - Fix memory leak for community alias
  - Fix memory leak for community stuff
  - Fix memory leak in SRv6 locator
  - Fix memory leak when an SRv6 sid is removed
  - Fix memory leak when setting [l]community at the egress
  - Fix route-map update and delete route-map
  - Fix `show bgp l2vpn evpn route rd` crash
  - Fix the wrong next-hop BGP struct for next-hop validation
  - Fixed BMP VPNv4 monitoring are withdrawn instead of updates
  - Fixup PBR rule changes that were missed
  - Fixup some MAC address token CLI syntax
  - Free ecommunity before returning on warning/error
  - Free memory for as-path filter if regexp is wrong
  - Free memory for BMP listeners when deleting BGP instance
  - Generate RPKI CLI config even if no cache servers are configured
  - Handle origin validation state extended community via route-map match
  - Handle route-refresh requests received before EOR
  - Implement retain route-target all behavior
  - Improve labelpool performance at scale
  - Inconsistencies in snt counters with default-originate
  - Prevent memory leak of the listener on shutdown
  - Print peer's hostname for BGP (filtering) messages
  - Print source VRF name when leaking to another VRF
  - Release RCU lock in BGP keepalive pthread
  - Reset BGP sessions when changing the port
  - Send route updates when modifying access/aspath/prefix lists
  - Set TTL for iBGP/eBGP by checking only if generic TTL security applied
  - Show cache server preference in `show rpki cache-server` output
  - Show extended communities memory consumption
  - Show TTL value unconditionally for neighbors
  - Start conditional advertisement timer instantly
  - Stop conditional advertisements thread when terminating
  - Stop LLGR thread when deleting a peer and/or gr flags changed
  - Treat as withdraw if we receive as path with as_set / as_confed_set
  - When specifying listen address for BGP we shouldn't imply no-fib flag
  - Withdraw implicitly old paths from VRFs when import/export list changes
  - Ensure that bgp open message stream has enough data to read
  - Notify BGP conditional advertisement thread when the peer goes down

**bmp**
  - Add an interface source to BMP connect command
  - Add L3VPN support

**eigrpd**
  - VRF variable name hides a parameter of the same name

**fabricd**
  - Turn off excessive logging when peering will not come up

**isisd**
  - Ensure rcap is freed in error case
  - Fix crash with xfrm interface type
  - Fix memory leak on shutdown with prefix lists
  - Fix prefix-sid last-hop-behavior

**ldpd**
  - Check if the thread is scheduled before calling for remained time

**lib**
  - Abstract usage of '%pnhs' so that next-hop groups can use it too
  - Add errno details to the sockopt_reuseaddr API
  - Add sys_rawio to the capabilities definitions
  - Allow downgrade of all caps when none are specified
  - Allow using ipv4 (class e) reserved block if enabled
  - Check hostname in resolver_resolve
  - Cleanup red-herring memleaks in the parent of daemonizing fork
  - Ensure ls_msg2edge does not use memory after freeing
  - Fix `show route-map name json` command and memory leak
  - Fix memory leak in `zclient_send_localsid()`
  - Fix skip of every other plist deletion
  - Fixup workqueue.c to use the proper thread.h semantics
  - Function `crypt` does not need to be declared mid function
  - Increase next-hop flags size to 16 bits
  - Prevent uninitialized usage of data
  - Remove usage of inet_ntop in lib/sockopt.c
  - Require at least 2.1.42 version of sysrepo when compiling
  - Return 0 as the remaining msec if the thread is not scheduled
  - stream_dup memory alloc cannot fail
  - Update sysrepo code with the latest API changes
  - Use pi4 instead of inet_ntop in sockopt.c

**nhrpd**
  - Use frr_weak_random()
  - Use nhrp_interface_update_nbma when source VRF was changed

**ospf6d**
  - Don't remove the summary route if it is a range
  - Ensure that ospf6d does not memcpy beyond the end of the data
  - Fix missing cost change
  - Permit route delete without next-hops
  - Remove ospf6enabled from JSON output

**ospfd**
  - Add how many packets the interface has queued to send
  - Add router-id support to OSPF API
  - Added CLIs to change default timers for lsa refresh and maxage remove delay.
  - Adding per neighbor JSON details to gr helper detail command
  - Crash when router acts as gr helper upon a topo change
  - Fix `show ip ospf neighbour <nbrid>` command
  - Increase packets sent at one time in ospf_write
  - Refactor fifo_flush for the interface
  - Remove deprecated command `graceful-restart helper-only`
  - When a neighbor goes down clear the oi->obuf if we can
  - Catch and report too small LSAs
  - Remove assert on zero length LSA - which is permitted by spec
  - Fix bug where acks were not be generated to incoming P2P/P2MP neighbors

**pathd**
  - `no mpls-te on` command was not working
  - Add a zebra stop handler
  - Change the vty output, when no ted is enabled on pathd
  - Ensure the path is free'd after we no longer need it
  - Nai adjacency fix query type f for IPv5

pim6d
  - (*,g) mroutes not learnt after pim6d daemon restart
  - Lots of CLI changes regarding MLD
  - Lots of CLI changes regarding PIMv6
  - Clear interface stats on interface shutdown
  - Disable pim6d compilation by default
  - Don't enable MLD on pimreg interface
  - Fix the code for MLD in the show pim state command
  - mroute stuck in register state, multicast traffic getting drops
  - Register message getting dropped in the source node, mroute stuck in regj
  - Send register msg with IPv6 global address
  - Update last_member_query_interval and last_member_query_count
  - Use ttable for displaying show commands
  - Deleting the memory malloced for JSON
  - Adding JSON support for show ipv6 next-hop
  - Send register msg via register socket
  - Change the show running commands based on the address family
  - Set rp to true if the address matches, ignore prefix-length

**pimd**
  - Allow v6 to do non-integrated configuration
  - Assign a vty port value for v6
  - Cleanup rpf lookup debug to help us figure out what is going on
  - Correct the order of show JSON for interface traffic
  - During prune pending, behave as noinfo state
  - Fix invalid memory access join_timer_stop
  - Fix memleak in bfd profile
  - Fix PIM interface deletion flow
  - Fix static mroute to also take into account the input interface
  - Fix the setting of oif_flags in channel oil
  - Fix unaligned accesses
  - Handle receive of (*,g) register stop with src addr as 0
  - Igmp querier election is not correct in lan scenario
  - JSON support for next-hop
  - Let the end operator know the ifindex as well in the failure case
  - Limit PIM's ECMP to what zebra tells us is the multipath
  - Querier to non-querier transition to be ignored
  - Register stop message sent with mask 32
  - Show interface traffic even if the interface is currently `down`
  - Update mroute iif based on next-hop received from zebra
  - VRF may be null from pim_cmd_lookup_vrf

**ripd**
  - Use a sequence number instead of a time

**sharpd**
  - Fix memory leak in release-locator-chunk
  - Fix memory leak in release-locator-chunk
  - Fix memory leaks related to SRv6 next-hops

**staticd**
  - When changing the underlying nh ensure it is reinstalled

**tools**
  - Add missing bfdd to logrotate config
  - Add pim6d to tools so that pim6d will work properly
  - Fix boot config load in watchfrr
  - Stop zebra daemon last

**vtysh**
  - Account validity should be verified when authenticating users with pam
  - Add autocomplete for VRFs when using with `router bgp`
  - Handle SIGTSTP (c-z) without exiting the vty shell
  - Ignore `end` when parsing frr.conf
  - Properly handle `[no] service cputime-stats` in config
  - Properly handle `service cputime-warning xx` in the config
  - Add `allow-reserved-ranges` global command

**watchfrr**
  - Check that the operational timeout specified is good

**zebrad**
  - Fixing log flooding when disabling MLAG leaf configuration
  - Add a `mpls enable` interface node command
  - Add a configurable knob `zebra nexthop-group keep (1-3600)`
  - Add a timer to next-hop group deletion
  - Add ability for netconf dplane to handle global values
  - Add interface sysctl ignore on linkdown status
  - Add more cases to proto2zebra for understanding kernel routes
  - Add some more data to rtadv socket failures
  - Add support for maintaining local neigh entries
  - Add tc handlers in the script code
  - Add tc netlink and dplane ops
  - Allow kernel routes to stick around better on interface state changes
  - Attempt to make ioctl.c have a bit more useful log messages
  - Avoid buffer overflow using netlink_parse_rtattr_nested()
  - Cleanup the memory from the hash for MPLS stuff
  - Create a zebra_rib_route_entry_new function and use it
  - Debug decode rta_expires and rta_mfc_stats
  - Delete the malloced memory under `show zebra`
  - Don't install connected routes multiple times into frr
  - Expand PBR rule action for data-plane programming
  - Explicitly call out the correct queue name
  - Fix bond down for EVPN-MH
  - Fix bug in netconf handling where dplane would drop the change
  - Fix crash in shutdown w/ pw thread still running
  - Fix ctab calculation typo in tc netlink
  - Fix FPM crash
  - Fix lost memory on lsp free
  - Fix memory leak in srv6 locator delete
  - Fix memory leaks and use after frees in nhg's on shutdown
  - Fix missing tenant VRF change notification
  - Fix missing VNI transition
  - Fix remaining mr rtm_getroute oddities
  - Fix rtadv startup when config read in is before interface up
  - Free neighbor state before the exit to avoid memleaks
  - Handle freebsd routing socket enobufs
  - Iif/oif are not used in mr rtm_getroute
  - Infrastructure for the new dataplane plugin
  - Initialize hw via DPDK
  - Introduce early route processing on the metaq
  - Mc_forwarding was being sent but not retrieved across dataplane
  - Notice when an interface is turned on w/ mpls and enable mpls subsystem
  - On Linux let interface data come in through netlink messaging
  - Pass AFI received for netconf updates
  - Pass PBR expanded actions to the dataplane
  - Pbr DPDK programming
  - Reconfiguring netns for VRF is not a failure
  - Rtnetlink: flow attr per gateway attr in multipath updates
  - Setup the zebra interface to the DPDK port map table
  - System routes should be processed the same time as the kernel
  - Use default ns directly in tc dplane
  - When deleting next-hop group entries ensure the thread is off
  - When saving nhg for later stop processing

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
17 months agoospfd: Fix some json mem leaks and some issues
Donald Sharp [Mon, 19 Dec 2022 15:51:58 +0000 (10:51 -0500)]
ospfd: Fix some json mem leaks and some issues

a) if show_function happened to be NULL we would leak json memory
b) json_lsa_type was being allocated but only used in the default case, leaking memory
c) json output would sometimes produce text output and that is incorrect

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agobgpd: When allocating prefix, free it when we are already tracking it
Donald Sharp [Sun, 18 Dec 2022 15:54:36 +0000 (10:54 -0500)]
bgpd: When allocating prefix, free it when we are already tracking it

Several functions had this pattern:

a) p = prefix_new
b) if (already_tracking)
      return

Let's just stop allocating the prefix and use a prefix on the
stack, especially since the function used to hold the value
actually copies it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoMerge pull request #12549 from opensourcerouting/fix/bgp_packet_attribute_forward_null
Donald Sharp [Tue, 20 Dec 2022 13:14:47 +0000 (08:14 -0500)]
Merge pull request #12549 from opensourcerouting/fix/bgp_packet_attribute_forward_null

bgpd: Check if bgp_path_info is not NULL when setting AIGP metric TLV

17 months agoospfd: fix SPF table memory leak
Rafael Zalamena [Thu, 15 Dec 2022 12:54:33 +0000 (09:54 -0300)]
ospfd: fix SPF table memory leak

After `free()`ing a table also set it to NULL so when the instance
release function is called we know whether the pointer is valid or not.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
17 months agoMerge pull request #12541 from manojvn/dbdesc_recv
Rafael Zalamena [Tue, 20 Dec 2022 11:37:16 +0000 (08:37 -0300)]
Merge pull request #12541 from manojvn/dbdesc_recv

ospf6d: Fixing memory leak in ospf6_lsa_create_headeronly for both

17 months agotests: Add topotest bgp_srv6l3vpn_route_leak
Ryoga Saito [Tue, 20 Dec 2022 08:58:30 +0000 (17:58 +0900)]
tests: Add topotest bgp_srv6l3vpn_route_leak

To verify previous changes, this PR adds topotest to verify whether
imported routes redistributed will be active on other VRF RIB.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
17 months agobgpd: Fix handling of SRv6 local routes
Ryoga Saito [Thu, 8 Dec 2022 07:01:59 +0000 (16:01 +0900)]
bgpd: Fix handling of SRv6 local routes

Current bgpd can't annouce SRv6 locally-generated routes to Zebra
correctly because MPLS label of locally-generated routes is not valid
but sid_info->transposition_len is set to non-zero value. This commit
fixes such kind of issues.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
17 months agobgpd: Check if bgp_path_info is not NULL when setting AIGP metric TLV
Donatas Abraitis [Tue, 20 Dec 2022 07:48:43 +0000 (09:48 +0200)]
bgpd: Check if bgp_path_info is not NULL when setting AIGP metric TLV

*** CID 1530035:  Null pointer dereferences  (FORWARD_NULL)
/bgpd/bgp_updgrp_packet.c: 756 in subgroup_update_packet()
750                              * position.
751                              */
752                             mpattr_pos = stream_get_endp(s);
753
754                             /* 5: Encode all the attributes, except MP_REACH_NLRI
755                              * attr. */
>>>     CID 1530035:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "path" to "bgp_packet_attribute", which dereferences it.
756                             total_attr_len = bgp_packet_attribute(
757                                     NULL, peer, s, adv->baa->attr, &vecarr, NULL,
758                                     afi, safi, from, NULL, NULL, 0, 0, 0, path);
759
760                             space_remaining =
761                                     STREAM_CONCAT_REMAIN(s, snlri, STREAM_SIZE(s))

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agotests: Add an option for SNMP config to specify a custom options
Donatas Abraitis [Mon, 19 Dec 2022 21:26:28 +0000 (23:26 +0200)]
tests: Add an option for SNMP config to specify a custom options

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agobgpd: Zero intial OID items in array at the beginning
Donatas Abraitis [Mon, 19 Dec 2022 20:56:41 +0000 (22:56 +0200)]
bgpd: Zero intial OID items in array at the beginning

If OID does not have an IP address encoded, initialized every item in an
array to 0 to avoid a wrong comparison between IP addresses.

With >= 5.8 net-snmp, it works without this hack.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agoMerge pull request #12380 from chiragshah6/zdev
Donatas Abraitis [Mon, 19 Dec 2022 21:37:59 +0000 (23:37 +0200)]
Merge pull request #12380 from chiragshah6/zdev

ospfd: json support for show ip ospf border-routers

17 months agotests: Add basic tests for SNMP BGP4V2-MIB
Donatas Abraitis [Thu, 15 Dec 2022 12:21:16 +0000 (14:21 +0200)]
tests: Add basic tests for SNMP BGP4V2-MIB

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agobgpd: Return MED, not local-preference if MED attribute exists (SNMP)
Donatas Abraitis [Thu, 15 Dec 2022 21:46:49 +0000 (23:46 +0200)]
bgpd: Return MED, not local-preference if MED attribute exists (SNMP)

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agobgpd: Specify prefix address-family before looking into BGP table
Donatas Abraitis [Thu, 15 Dec 2022 14:50:52 +0000 (16:50 +0200)]
bgpd: Specify prefix address-family before looking into BGP table

Otherwise, lookup behaves a bit weird.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agobgpd: Make sure we have peer->notify.data before returning for SNMP
Donatas Abraitis [Thu, 15 Dec 2022 13:14:40 +0000 (15:14 +0200)]
bgpd: Make sure we have peer->notify.data before returning for SNMP

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agoMerge pull request #12434 from chiragshah6/fdev1
Donatas Abraitis [Mon, 19 Dec 2022 21:24:53 +0000 (23:24 +0200)]
Merge pull request #12434 from chiragshah6/fdev1

zebra: show ip nht route-map vrf json support

17 months agoMerge pull request #12544 from mjstapp/fix_pathd_sa_pcep_config
Donald Sharp [Mon, 19 Dec 2022 19:44:21 +0000 (14:44 -0500)]
Merge pull request #12544 from mjstapp/fix_pathd_sa_pcep_config

pathd: fix SA warning in path_pcep_config

17 months agoMerge pull request #12535 from donaldsharp/mpattr_size_enum
Donatas Abraitis [Mon, 19 Dec 2022 18:54:53 +0000 (20:54 +0200)]
Merge pull request #12535 from donaldsharp/mpattr_size_enum

Use switch statements without default for safi_t and afi_t enum's

17 months agoMerge pull request #12537 from anlancs/fix/fpm-debug-info
Rafael Zalamena [Mon, 19 Dec 2022 18:01:43 +0000 (15:01 -0300)]
Merge pull request #12537 from anlancs/fix/fpm-debug-info

zebra: fix wrong gateway for fpm debug

17 months agoMerge pull request #12538 from donaldsharp/zebra_crash_in_shutdown
Rafael Zalamena [Mon, 19 Dec 2022 17:58:49 +0000 (14:58 -0300)]
Merge pull request #12538 from donaldsharp/zebra_crash_in_shutdown

zebra: Ensure memory is not freed that dplane depends on in shutdown

17 months agopathd: fix SA warning in path_pcep_config
Mark Stapp [Mon, 19 Dec 2022 16:36:03 +0000 (11:36 -0500)]
pathd: fix SA warning in path_pcep_config

Fix an SA warning about a possibly-uninited local.

Signed-off-by: Mark Stapp <mjs@labn.net>
17 months agoMerge pull request #12534 from donaldsharp/notice_missed
Mark Stapp [Mon, 19 Dec 2022 14:31:12 +0000 (09:31 -0500)]
Merge pull request #12534 from donaldsharp/notice_missed

zebra: Notice Optional Router Advertisement types that are not handled

17 months agoospf6d: Fixing memory leak in ospf6_lsa_create_headeronly for both master and slave.
Manoj Naragund [Mon, 19 Dec 2022 12:07:22 +0000 (04:07 -0800)]
ospf6d: Fixing memory leak in ospf6_lsa_create_headeronly for both master and slave.

Problem Statement:
=================
Memory leak backtraces

2022-11-23 01:51:10,525 - ERROR: ==842== 1,100 (1,000 direct, 100 indirect) bytes in 5 blocks are definitely lost in loss record 29 of 31
2022-11-23 01:51:10,525 - ERROR: ==842==    at 0x4C31FAC: calloc (vg_replace_malloc.c:762)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x4E8A1BF: qcalloc (memory.c:111)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13555A: ospf6_lsa_alloc (ospf6_lsa.c:723)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x1355F3: ospf6_lsa_create_headeronly (ospf6_lsa.c:756)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x135702: ospf6_lsa_copy (ospf6_lsa.c:790)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13B64B: ospf6_dbdesc_recv_slave (ospf6_message.c:976)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13B64B: ospf6_dbdesc_recv (ospf6_message.c:1038)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13B64B: ospf6_read_helper (ospf6_message.c:1838)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13B64B: ospf6_receive (ospf6_message.c:1875)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x4EB741B: thread_call (thread.c:1692)
2022-11-23 01:51:10,526 - ERROR: ==842==    by 0x4E85B17: frr_run (libfrr.c:1068)
2022-11-23 01:51:10,526 - ERROR: ==842==    by 0x119585: main (ospf6_main.c:228)
2022-11-23 01:51:10,526 - ERROR: ==842==

2022-11-23 01:51:10,524 - ERROR: Found memory leak in module ospf6d
2022-11-23 01:51:10,525 - ERROR: ==842== 220 (200 direct, 20 indirect) bytes in 1 blocks are definitely lost in loss record 21 of 31
2022-11-23 01:51:10,525 - ERROR: ==842==    at 0x4C31FAC: calloc (vg_replace_malloc.c:762)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x4E8A1BF: qcalloc (memory.c:111)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13555A: ospf6_lsa_alloc (ospf6_lsa.c:723)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x1355F3: ospf6_lsa_create_headeronly (ospf6_lsa.c:756)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x135702: ospf6_lsa_copy (ospf6_lsa.c:790)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13BBCE: ospf6_dbdesc_recv_master (ospf6_message.c:760)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13BBCE: ospf6_dbdesc_recv (ospf6_message.c:1036)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13BBCE: ospf6_read_helper (ospf6_message.c:1838)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x13BBCE: ospf6_receive (ospf6_message.c:1875)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x4EB741B: thread_call (thread.c:1692)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x4E85B17: frr_run (libfrr.c:1068)
2022-11-23 01:51:10,525 - ERROR: ==842==    by 0x119585: main (ospf6_main.c:228)
2022-11-23 01:51:10,525 - ERROR: ==842==

RCA:
====
These memory leaks are beacuse of last lsa in neighbour's request_list is not
getting freed beacuse of lsa lock. The last request has an addtional lock which
is added as a part of ospf6_make_lsreq, this lock needs to be removed
in order for the lsa to get freed.

Fix:
====
Check and remove the lock on the last request in all the functions.

Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
17 months agoospf6d: Fixing memory leak in ospf6_summary_add_aggr_route_and_blackhole.
Manoj Naragund [Mon, 19 Dec 2022 11:52:59 +0000 (03:52 -0800)]
ospf6d: Fixing memory leak in ospf6_summary_add_aggr_route_and_blackhole.

Problem Statement:
=================
Memory leak in ospf6d.
2022-11-15 02:15:11,569 - ERROR: ==30108== 440 (280 direct, 160 indirect) bytes in 1 blocks are definitely lost in loss record 15 of 17
2022-11-15 02:15:11,569 - ERROR: ==30108==    at 0x4C31FAC: calloc (vg_replace_malloc.c:762)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x4E8A1BF: qcalloc (memory.c:111)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x14337A: ospf6_route_create (ospf6_route.c:462)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x11EE27: ospf6_summary_add_aggr_route_and_blackhole (ospf6_asbr.c:2779)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x11EEDA: ospf6_originate_new_aggr_lsa (ospf6_asbr.c:2816)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x120053: ospf6_handle_external_lsa_origination (ospf6_asbr.c:3659)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x12041E: ospf6_asbr_redistribute_add (ospf6_asbr.c:1547)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x14F3CC: ospf6_zebra_read_route (ospf6_zebra.c:253)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x4EC9B73: zclient_read (zclient.c:2727)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x4EB741B: thread_call (thread.c:1692)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x4E85B17: frr_run (libfrr.c:1068)
2022-11-15 02:15:11,569 - ERROR: ==30108==    by 0x119585: main (ospf6_main.c:228)
2022-11-15 02:15:11,569 - ERROR: ==30108==

RCA:
====
blackhole route was not freed before adding a new one.

Fix:
====
Added a check before allocating new route, to free the old one. Also,
added ospf6_asbr_summary_config_delete in ospf6_delet before freeing
the aggregate route.

Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
17 months agozebra: Notice Optional Router Advertisement types that are not handled
Donald Sharp [Wed, 12 Oct 2022 11:59:37 +0000 (07:59 -0400)]
zebra: Notice Optional Router Advertisement types that are not handled

Currently when zebra receives a RA with optional types, note
the optional types that we are ignoring.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agozebra: Ensure memory is not freed that dplane depends on in shutdown
Donald Sharp [Sat, 17 Dec 2022 19:09:29 +0000 (14:09 -0500)]
zebra: Ensure memory is not freed that dplane depends on in shutdown

Zebra has a shutdown setup where it asks the dplane to shutdown but can
still be processing data.  This is especially true if something the dplane
is listening on receives data that will be processed by the main dplane thread
from netlink.   When zebra_finalize is called it is possible that a bit
of data comes in before the zebra_dplane_shutdown() function is called
and the memory freed in ns_walk_func() causes the main dplane event
to crash when it cannot find the ns data anymore.

Reverse the order, stop the zebra dplane pthread and then free the
memory associated with the namespaces.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoMerge pull request #12536 from donaldsharp/peer_print_null
Donatas Abraitis [Sat, 17 Dec 2022 14:59:53 +0000 (16:59 +0200)]
Merge pull request #12536 from donaldsharp/peer_print_null

bgpd: Print out useful information about peer

17 months agozebra: fix wrong gateway for fpm debug
anlan_cs [Sat, 17 Dec 2022 08:25:56 +0000 (16:25 +0800)]
zebra: fix wrong gateway for fpm debug

The wrong parameter is passed in `inet_ntop()` of `zfpm_log_route_info()` in
old fpm module, so the display of gateway is always wrong. Just remove
that extra ampersand.

Additionally, use "none" as gateway value for the case of no gateway.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
17 months agoMerge pull request #12533 from donaldsharp/returns_are_needed
Mark Stapp [Fri, 16 Dec 2022 17:42:14 +0000 (12:42 -0500)]
Merge pull request #12533 from donaldsharp/returns_are_needed

lib, staticd: return values even after an assert

17 months agodoc: add documentation for show ospf border-routers
Chirag Shah [Fri, 16 Dec 2022 04:48:48 +0000 (20:48 -0800)]
doc: add documentation for show ospf border-routers

Signed-off-by: Chirag Shah <chirag@nvidia.com>
17 months agoospfd: json support for show ip ospf border-routers
Sindhu Parvathi Gopinathan [Thu, 10 Nov 2022 10:18:16 +0000 (02:18 -0800)]
ospfd: json support for show ip ospf border-routers

show ip ospf border-routers json support added.
commands:
  - show ip ospf vrf default border-routers json
  - show ip ospf vrf all border-routers json
  - show ip ospf border-routers json

Testing Done: Unit testing completed.

rut# show ip ospf vrf all border-routers json
{
  "default":{
    "vrfName":"default",
    "vrfId":0,
    "routers":{
      "0.0.0.8":{
        "routeType":"R ",
        "cost":10,
        "area":"0.0.0.1",
        "routerType":"abr",
        "nexthops":[
          {
            "ip":"12.0.0.2",
            "via":"swp1"
          }
        ]
      },
      "0.0.0.9":{
        "routeType":"R ",
        "cost":10,
        "area":"0.0.0.1",
        "routerType":"abr",
        "nexthops":[
          {
            "ip":"12.0.1.2",
            "via":"swp2"
          }
        ]
      }
    }
  }
}

rut#
rut# show ip ospf vrf all border-routers json
{
  "default":{
"vrfName":"default",
"vrfId":0,
        "routers":{
     "0.0.0.15":{
    "routeType":"R ",
    "cost":30,
    "area":"0.0.0.0",
    "routerType":"abr",
    "nexthops":[
{
  "ip":"11.0.0.2",
  "via":"br1"
}
     ]
  }
      }
  }
}

rut# show ip ospf border-routers json
{
  "routers":{
    "0.0.0.15":{
      "routeType":"R ",
      "cost":30,
      "area":"0.0.0.0",
      "routerType":"abr",
      "nexthops":[
        {
  "ip":"11.0.0.2",
          "via":"br1"
}
      ]
   }
 }
}

Ticket:#3229017
Issue:3229017

Co-authored-by: Chirag Shah <chirag@nvidia.com>
Signed-off-by: Sindhu Parvathi Gopinathan <sgopinathan@nvidia.com>
17 months agodoc: add documentation for show ip nht route-map
Chirag Shah [Fri, 16 Dec 2022 05:54:40 +0000 (21:54 -0800)]
doc: add documentation for show ip nht route-map

Signed-off-by: Chirag Shah <chirag@nvidia.com>
17 months agozebra: json support for show ip nht route-map
Sindhu Parvathi Gopinathan [Tue, 8 Nov 2022 05:40:13 +0000 (21:40 -0800)]
zebra: json support for show ip nht route-map

Changes:
JSON support added for below commands,
     - show ip nht route-map vrf all json
     - show ip nht route-map vrf <name> json
     - show ipv6 nht route-map vrf all json
     - show ipv6 nht route-map vrf <name> json
     - show ipv6 nht route-map json
     - show ip nht route-map json

Testing Done: Unit testing completed.

tor-1# show ip nht route-map vrf default json
{
  "afi":"ipv4",
  "vrfs":{
"default":{
  "protocols":{
"system":"none",
"kernel":"none",
"connected":"connected-policy",
"static":"none",
"rip":"none",
"ripng":"none",
"ospf":"none",
"ospf6":"none",
"isis":"none",
"bgp":"bgp-policy",
"pim":"none",
"eigrp":"none",
"nhrp":"none",
"hsls":"none",
"olsr":"none",
"table":"none",
"ldp":"none",
"vnc":"none",
"vnc-direct":"none",
"vnc-rn":"none",
"bgp-direct":"none",
"bgp-direct-to-nve-groups":"none",
"babel":"none",
"sharp":"none",
"pbr":"none",
"bfd":"none",
"openfabric":"none",
"vrrp":"none",
"zebra":"none",
"frr":"none",
"wildcard":"none",
"any":"none"
  }
}
  }
}

tor-1# show ip nht route-map vrf all json
{
  "afi":"ipv4",
  "vrfs":{
"default":{
  "protocols":{
"system":"none",
"kernel":"none",
"connected":"connected-policy",
"static":"none",
"rip":"none",
"ripng":"none",
"ospf":"none",
"ospf6":"none",
"isis":"none",
"bgp":"bgp-policy",
"pim":"none",
"eigrp":"none",
"nhrp":"none",
"hsls":"none",
"olsr":"none",
"table":"none",
"ldp":"none",
"vnc":"none",
"vnc-direct":"none",
"vnc-rn":"none",
"bgp-direct":"none",
"bgp-direct-to-nve-groups":"none",
"babel":"none",
"sharp":"none",
"pbr":"none",
"bfd":"none",
"openfabric":"none",
"vrrp":"none",
"zebra":"none",
"frr":"none",
"wildcard":"none",
"any":"none"
  }
},
"mgmt":{
  "protocols":{
"system":"none",
"kernel":"none",
"connected":"none",
"static":"none",
"rip":"none",
"ripng":"none",
"ospf":"none",
"ospf6":"none",
"isis":"none",
"bgp":"none",
"pim":"none",
"eigrp":"none",
"nhrp":"none",
"hsls":"none",
"olsr":"none",
"table":"none",
"ldp":"none",
"vnc":"none",
"vnc-direct":"none",
"vnc-rn":"none",
"bgp-direct":"none",
"bgp-direct-to-nve-groups":"none",
"babel":"none",
"sharp":"none",
"pbr":"none",
"bfd":"none",
"openfabric":"none",
"vrrp":"none",
"zebra":"none",
"frr":"none",
"wildcard":"none",
"any":"none"
  }
},
"sym_1":{
  "protocols":{
"system":"none",
"kernel":"none",
"connected":"none",
"static":"none",
"rip":"none",
"ripng":"none",
"ospf":"none",
"ospf6":"none",
"isis":"none",
"bgp":"bgp-policy",
"pim":"none",
"eigrp":"none",
"nhrp":"none",
"hsls":"none",
"olsr":"none",
"table":"none",
"ldp":"none",
"vnc":"none",
"vnc-direct":"none",
"vnc-rn":"none",
"bgp-direct":"none",
"bgp-direct-to-nve-groups":"none",
"babel":"none",
"sharp":"none",
"pbr":"none",
"bfd":"none",
"openfabric":"none",
"vrrp":"none",
"zebra":"none",
"frr":"none",
"wildcard":"none",
"any":"none"
  }
}
  }
}

tor-1# show ipv6 nht route-map vrf default json
{
  "afi":"ipv6",
  "vrfs":{
"default":{
  "protocols":{
"system":"none",
"kernel":"kernel-policy",
"connected":"connected-policy",
"static":"none",
"rip":"none",
"ripng":"none",
"ospf":"none",
"ospf6":"none",
"isis":"none",
"bgp":"none",
"pim":"none",
"eigrp":"none",
"nhrp":"none",
"hsls":"none",
"olsr":"none",
"table":"none",
"ldp":"none",
"vnc":"none",
"vnc-direct":"none",
"vnc-rn":"none",
"bgp-direct":"none",
"bgp-direct-to-nve-groups":"none",
"babel":"none",
"sharp":"none",
"pbr":"none",
"bfd":"none",
"openfabric":"none",
"vrrp":"none",
"zebra":"none",
"frr":"none",
"wildcard":"none",
"any":"none"
  }
}
  }
}

Ticket:#3229016
Issue:3229016

Signed-off-by: Sindhu Parvathi Gopinathan <sgopinathan@nvidia.com>
17 months agobgpd: Print out useful information about peer
Donald Sharp [Fri, 16 Dec 2022 14:32:44 +0000 (09:32 -0500)]
bgpd: Print out useful information about peer

I am seeing this output:
2022/12/16 09:16:00.206 BGP: [MNE5N-K0G4Z] Resetting peer (null) due to change in addpath config

Switch over to %pBP

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoMerge pull request #12522 from donaldsharp/some_various_stuff
David Lamparter [Fri, 16 Dec 2022 14:30:37 +0000 (15:30 +0100)]
Merge pull request #12522 from donaldsharp/some_various_stuff

17 months agobgpd: Convert bgp_packet_mpattr_prefix to use an enum for safi's
Donald Sharp [Fri, 16 Dec 2022 13:43:16 +0000 (08:43 -0500)]
bgpd: Convert bgp_packet_mpattr_prefix to use an enum for safi's

The function bgp_packet_mpattr_prefix was using an if statement
to encode packets to the peer.  Change it to a switch and make
it handle all the cases and fail appropriately when something
has gone wrong.  Hopefully in the future when a new afi/safi
is added we can catch it by compilation breaking instead of
weird runtime errors

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agobgpd: make bgp_packet_mpattr_start more prescriptive when using enum's
Donald Sharp [Fri, 16 Dec 2022 13:17:18 +0000 (08:17 -0500)]
bgpd: make bgp_packet_mpattr_start more prescriptive when using enum's

This function was just using default: case statements for
the encoding of nlri's to a peer.  Lay out all the different
cases and make things fail hard when a dev escape is found.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agobgpd: Convert bgp_packet_mpattr_prefix_size to use an enum
Donald Sharp [Fri, 16 Dec 2022 12:58:54 +0000 (07:58 -0500)]
bgpd: Convert bgp_packet_mpattr_prefix_size to use an enum

The function bgp_packet_mpattr_prefix_size had an if/else
body that allowed people to add encoding types to bgpd
such that we could build the wrong size packets.  This
was exposed recently in commit:
0a9705a1e07c1d8176fd21f8f1bde2a9a155331b

Where it was discovered flowspec was causing bgp update
messages to exceed the maximum size and the peer to
drop the connection.  Let's be proscriptive about this
and hopefully make it so that things don't work when
someone adds a new safi to the system ( and they'll have
to update this function ).

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoMerge pull request #12528 from spoignant-proton/master
Donald Sharp [Fri, 16 Dec 2022 12:50:43 +0000 (07:50 -0500)]
Merge pull request #12528 from spoignant-proton/master

bgpd: Add support for flowspec prefixes in bgp_packet_mpattr_prefix_size

17 months agoMerge pull request #12532 from opensourcerouting/fix/do_not_forget_updating_docs
Donald Sharp [Fri, 16 Dec 2022 12:42:04 +0000 (07:42 -0500)]
Merge pull request #12532 from opensourcerouting/fix/do_not_forget_updating_docs

docs: Do not forget updating default version for readthedocs.org

17 months agolib, staticd: return values even after an assert
Donald Sharp [Fri, 16 Dec 2022 12:38:58 +0000 (07:38 -0500)]
lib, staticd: return values even after an assert

When compiling with -fsanitize=thread.  I started getting this error:

staticd/static_zebra.c: In function â€˜static_zebra_nht_get_prefix’:
staticd/static_zebra.c:316:1: error: control reaches end of non-void function [-Werror=return-type]
  316 | }
      | ^

Just to make future efforts still work, let's just make the compiler happy.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agopimd: Fix (S,G) debug issue
Sarita Patra [Wed, 14 Dec 2022 12:37:07 +0000 (04:37 -0800)]
pimd: Fix (S,G) debug issue

Signed-off-by: Sarita Patra <saritap@vmware.com>
17 months agodocs: Do not forget updating default version for readthedocs.org
Donatas Abraitis [Fri, 16 Dec 2022 07:57:25 +0000 (09:57 +0200)]
docs: Do not forget updating default version for readthedocs.org

docs.frrouting.org

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
17 months agoMerge pull request #10576 from louis-6wind/fix-l3vpn-igmetric
Donatas Abraitis [Fri, 16 Dec 2022 07:18:01 +0000 (09:18 +0200)]
Merge pull request #10576 from louis-6wind/fix-l3vpn-igmetric

bgpd: fix the IGP metric for best path selection on VPN import

17 months agoMerge pull request #12530 from taspelund/remote_macip_memleak
Mark Stapp [Thu, 15 Dec 2022 21:48:16 +0000 (16:48 -0500)]
Merge pull request #12530 from taspelund/remote_macip_memleak

bgpd: cleanup macip_path_list for remote macip

17 months agobgpd: cleanup macip_path_list for remote macip
Trey Aspelund [Thu, 15 Dec 2022 18:49:43 +0000 (18:49 +0000)]
bgpd: cleanup macip_path_list for remote macip

ASAN reported the following memleak:
```
Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x4d4342 in calloc (/usr/lib/frr/bgpd+0x4d4342)
    #1 0xbc3d68 in qcalloc /home/sharpd/frr8/lib/memory.c:116:27
    #2 0xb869f7 in list_new /home/sharpd/frr8/lib/linklist.c:64:9
    #3 0x5a38bc in bgp_evpn_remote_ip_hash_alloc /home/sharpd/frr8/bgpd/bgp_evpn.c:6789:24
    #4 0xb358d3 in hash_get /home/sharpd/frr8/lib/hash.c:162:13
    #5 0x593d39 in bgp_evpn_remote_ip_hash_add /home/sharpd/frr8/bgpd/bgp_evpn.c:6881:7
    #6 0x59dbbd in install_evpn_route_entry_in_vni_common /home/sharpd/frr8/bgpd/bgp_evpn.c:3049:2
    #7 0x59cfe0 in install_evpn_route_entry_in_vni_ip /home/sharpd/frr8/bgpd/bgp_evpn.c:3126:8
    #8 0x59c6f0 in install_evpn_route_entry /home/sharpd/frr8/bgpd/bgp_evpn.c:3318:8
    #9 0x59bb52 in install_uninstall_route_in_vnis /home/sharpd/frr8/bgpd/bgp_evpn.c:3888:10
    #10 0x59b6d2 in bgp_evpn_install_uninstall_table /home/sharpd/frr8/bgpd/bgp_evpn.c:4019:5
    #11 0x578857 in install_uninstall_evpn_route /home/sharpd/frr8/bgpd/bgp_evpn.c:4051:9
    #12 0x58ada6 in bgp_evpn_import_route /home/sharpd/frr8/bgpd/bgp_evpn.c:6049:9
    #13 0x713794 in bgp_update /home/sharpd/frr8/bgpd/bgp_route.c:4842:3
    #14 0x583fa0 in process_type2_route /home/sharpd/frr8/bgpd/bgp_evpn.c:4518:9
    #15 0x5824ba in bgp_nlri_parse_evpn /home/sharpd/frr8/bgpd/bgp_evpn.c:5732:8
    #16 0x6ae6a2 in bgp_nlri_parse /home/sharpd/frr8/bgpd/bgp_packet.c:363:10
    #17 0x6be6fa in bgp_update_receive /home/sharpd/frr8/bgpd/bgp_packet.c:2020:15
    #18 0x6b7433 in bgp_process_packet /home/sharpd/frr8/bgpd/bgp_packet.c:2929:11
    #19 0xd00146 in thread_call /home/sharpd/frr8/lib/thread.c:2006:2
```

The list itself was not being cleaned up when the final list entry was
removed, so make sure we do that instead of leaking memory.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
17 months agobgpd: If we don't find what we are looking for cleanup the json structure
Donald Sharp [Wed, 14 Dec 2022 21:31:37 +0000 (16:31 -0500)]
bgpd: If we don't find what we are looking for cleanup the json structure

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agolib: Fix free function
Donald Sharp [Wed, 14 Dec 2022 20:53:06 +0000 (15:53 -0500)]
lib: Fix free function

The list delete function on creation was set to srv6_locator_chunk_free
Which takes a double pointer and dereferences it to free the data.
When list_delete is called it calls the delete function like this:
                if (*list->del)
                        (*list->del)(node->data);

The data is not passed in by reference and as such we do not have
a double pointer.  Fortunately this list_delete is only really
called on shutdown when the locator was deleted and we do not
have a fun situation where we were suddenly freeing 'something'.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoospf6d: Fix auth_key string memory leak
Donald Sharp [Wed, 14 Dec 2022 20:22:38 +0000 (15:22 -0500)]
ospf6d: Fix auth_key string memory leak

When using auth keys in ospfv3, there are some memory
leaks when you change the key or remove the interface

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agozebra: When freeing the early route queue, actually free it right
Donald Sharp [Wed, 14 Dec 2022 19:20:26 +0000 (14:20 -0500)]
zebra: When freeing the early route queue, actually free it right

The early route queue has a series of `struct zebra_early_route *`
entries.  Zebra is treating this memory as just a `struct route entry`.
This is wrong.  Correct this to free the memory correctly.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agolib, tests, zebra: Remove unused workqueue error function
Donald Sharp [Wed, 14 Dec 2022 19:05:11 +0000 (14:05 -0500)]
lib, tests, zebra: Remove unused workqueue error function

The wq->spec.errorfunc is never used in the code.
It's been in the code base since 2005 and I also
do not remember ever seeing it being called.  No
workqueue process function ever returns error.
Since it's not used let's just remove it from the
code base.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agotests: Limit run of config_timing when building with --enable-address-sanitizer
Donald Sharp [Wed, 14 Dec 2022 17:53:53 +0000 (12:53 -0500)]
tests: Limit run of config_timing when building with --enable-address-sanitizer

Building FRR with --enable-address-sanitizer and then running the
config_timing test makes the test run for over an hour on my machine.
The goal of this test is to ensure that the test runs 10000 routes
in/out in a reasonable amount of time.  We cannot test this with
address-sanitizer enabled.  So just make the test meaningless
from a timing perspective but keep it `alive` from a it might
catch some address sanitizer issue with 50 -vs- 10000 routes

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agozebra: Fix nexthop group memory leak
Donald Sharp [Wed, 14 Dec 2022 17:30:43 +0000 (12:30 -0500)]
zebra: Fix nexthop group memory leak

Address Sanitizer found this:

=================================================================
==418623==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 128 byte(s) in 4 object(s) allocated from:
    #0 0x4bd732 in calloc (/usr/lib/frr/zebra+0x4bd732)
    #1 0x7feaeab8f798 in qcalloc /home/sharpd/frr8/lib/memory.c:116:27
    #2 0x7feaeaba40f4 in nexthop_group_new /home/sharpd/frr8/lib/nexthop_group.c:270:9
    #3 0x56859b in netlink_route_change_read_unicast /home/sharpd/frr8/zebra/rt_netlink.c:950:9
    #4 0x5651c2 in netlink_route_change /home/sharpd/frr8/zebra/rt_netlink.c:1204:2
    #5 0x54af15 in netlink_information_fetch /home/sharpd/frr8/zebra/kernel_netlink.c:407:10
    #6 0x53e7a3 in netlink_parse_info /home/sharpd/frr8/zebra/kernel_netlink.c:1184:12
    #7 0x548d46 in kernel_read /home/sharpd/frr8/zebra/kernel_netlink.c:501:2
    #8 0x7feaeacc87f6 in thread_call /home/sharpd/frr8/lib/thread.c:2006:2
    #9 0x7feaeab36503 in frr_run /home/sharpd/frr8/lib/libfrr.c:1198:3
    #10 0x550d38 in main /home/sharpd/frr8/zebra/main.c:476:2
    #11 0x7feaea492d09 in __libc_start_main csu/../csu/libc-start.c:308:16

Indirect leak of 576 byte(s) in 4 object(s) allocated from:
    #0 0x4bd732 in calloc (/usr/lib/frr/zebra+0x4bd732)
    #1 0x7feaeab8f798 in qcalloc /home/sharpd/frr8/lib/memory.c:116:27
    #2 0x7feaeab9b3f8 in nexthop_new /home/sharpd/frr8/lib/nexthop.c:373:7
    #3 0x56875e in netlink_route_change_read_unicast /home/sharpd/frr8/zebra/rt_netlink.c:960:15
    #4 0x5651c2 in netlink_route_change /home/sharpd/frr8/zebra/rt_netlink.c:1204:2
    #5 0x54af15 in netlink_information_fetch /home/sharpd/frr8/zebra/kernel_netlink.c:407:10
    #6 0x53e7a3 in netlink_parse_info /home/sharpd/frr8/zebra/kernel_netlink.c:1184:12
    #7 0x548d46 in kernel_read /home/sharpd/frr8/zebra/kernel_netlink.c:501:2
    #8 0x7feaeacc87f6 in thread_call /home/sharpd/frr8/lib/thread.c:2006:2
    #9 0x7feaeab36503 in frr_run /home/sharpd/frr8/lib/libfrr.c:1198:3
    #10 0x550d38 in main /home/sharpd/frr8/zebra/main.c:476:2
    #11 0x7feaea492d09 in __libc_start_main csu/../csu/libc-start.c:308:16

SUMMARY: AddressSanitizer: 704 byte(s) leaked in 8 allocation(s).

Fix this!

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agolib: On shutdown, disable snmp from working
Donald Sharp [Fri, 4 Nov 2022 18:20:57 +0000 (14:20 -0400)]
lib: On shutdown, disable snmp from working

When shutting down ensure that any daemon operating with
snmp tells it to stop operating so no more data is sent.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agotests: fix IGP metric best path selection in bgp_l3vpn_to_bgp_vrf
Louis Scalbert [Wed, 26 Oct 2022 15:35:52 +0000 (17:35 +0200)]
tests: fix IGP metric best path selection in bgp_l3vpn_to_bgp_vrf

The L3VPN best path computation now takes into accound the IGP metric.

Adapt the bgp_l3vpn_to_bgp_vrf tests so that routes with the best IGP
metric are selected when needed.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
17 months agotests: add a bgp path selection topotest
Louis Scalbert [Mon, 24 Oct 2022 13:42:42 +0000 (15:42 +0200)]
tests: add a bgp path selection topotest

Add a bgp path selection topotest to the IGP metric path selection.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
17 months agobgpd: display the IGP metric of the ultimate path in snmp
Louis Scalbert [Thu, 3 Nov 2022 11:01:51 +0000 (12:01 +0100)]
bgpd: display the IGP metric of the ultimate path in snmp

Display the IGP metric of the ultimate path in the SNMP OID
mplsL3VpnVrfRteInetCidrMetric1.

Fixes: da0c0ef70c ("bgpd: VRF-Lite fix best path selection")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
17 months agobgpd: display the IGP metric of the ultimate path in route details
Louis Scalbert [Mon, 14 Feb 2022 14:17:53 +0000 (15:17 +0100)]
bgpd: display the IGP metric of the ultimate path in route details

Display IGP metric of the ultimate path in the command
"show bgp vrf X ipv(4|6)".

Fixes: da0c0ef70c ("bgpd: VRF-Lite fix best path selection")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
17 months agobgpd: fix the IGP metric for best path selection on VPN import
Louis Scalbert [Mon, 14 Feb 2022 13:18:10 +0000 (14:18 +0100)]
bgpd: fix the IGP metric for best path selection on VPN import

Since the commit da0c0ef70c ("bgpd: VRF-Lite fix best path selection"),
the best path selection is made from the comparison of the attributes
of the original route i.e. the ultimate path.

The IGP metric is currently set on the child path instead of the
ultimate path (i.e. the parent path). On eBGP, the ultimate path is the
child path. However, for imported routes, the ultimate path is always
set to 0, which results in skipping the IGP metric comparison when
selecting the best path.

Set the IGP metric on the ultimate path when a BGP nexthop is added or
updated.

Fixes: da0c0ef70c ("bgpd: VRF-Lite fix best path selection")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
17 months agobgpd: Add support for flowspec prefixes in bgp_packet_mpattr_prefix_size
Stephane Poignant [Thu, 15 Dec 2022 13:53:48 +0000 (14:53 +0100)]
bgpd: Add support for flowspec prefixes in bgp_packet_mpattr_prefix_size

Currently, bgp_packet_mpattr_prefix_size (bgpd/bgp_attr.c:3978) always returns zero for Flowspec prefixes.
This is because, for flowspec prefixes, the prefixlen attribute of the prefix struct is always set to 0, and the actual length is bytes is set inside the flowspec_prefix struct instead (see lib/prefix.h:293 and lib/prefix.h:178).
Because of this, with a large number of flowspec NLRIs, bgpd ends up building update messages that exceed the maximum size and cause the peer to drop the connection (bgpd/bgp_updgrp_packet.c:L719).
The proposed change allows the bgp_packet_mpattr_prefix_size to return correct result for flowspec prefixes.

Signed-off-by: Stephane Poignant <stephane.poignant@proton.ch>
17 months agolib: Convert agentx_enabled to a bool
Donald Sharp [Fri, 4 Nov 2022 14:08:38 +0000 (10:08 -0400)]
lib: Convert agentx_enabled to a bool

FRR is using this as a bool.  Let's just use a bool.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agobgpd: use the enum instead of an int
Donald Sharp [Thu, 3 Nov 2022 23:01:36 +0000 (19:01 -0400)]
bgpd: use the enum instead of an int

The bgp_fsm_change_status function takes an int
for the new bgp state, which is an `enum bgp_fsm_status status`
let's convert over to being explicit.bgpd: use the enum instead of an int

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
17 months agoMerge pull request #12481 from kuldeepkash/topotests_startup
Donald Sharp [Thu, 15 Dec 2022 12:31:49 +0000 (07:31 -0500)]
Merge pull request #12481 from kuldeepkash/topotests_startup

tests: Topotests daemon start as per feature test

17 months agoMerge pull request #12438 from proelbtn/fix-#12349
Donatas Abraitis [Thu, 15 Dec 2022 07:09:09 +0000 (09:09 +0200)]
Merge pull request #12438 from proelbtn/fix-#12349

bgpd: Stop overriding nexthop in vpn_leak_from_vrf_update when the peer is BGP unnumberred

17 months agoMerge pull request #12513 from Pdoijode/master
Donatas Abraitis [Thu, 15 Dec 2022 06:48:35 +0000 (08:48 +0200)]
Merge pull request #12513 from Pdoijode/master

zebra: JSON support for show nexthop-group rib

17 months agozebra: JSON support for show nexthop-group rib
Pooja Jagadeesh Doijode [Wed, 14 Dec 2022 18:46:32 +0000 (10:46 -0800)]
zebra: JSON support for show nexthop-group rib

Added JSON support for show nexthop-group rib
command.

JSON output:
                {
                  "10":{
                    "type":"zebra",
                    "refCount":3,
                    "uptime":"00:00:46",
                    "vrf":"default",
                    "valid":true,
                    "installed":true,
                    "interfaceIndex":3,
                    "nexthops":[
                      {
                        "flags":3,
                        "fib":true,
                        "ip":"2001::2",
                        "afi":"ipv6",
                        "interfaceIndex":3,
                        "interfaceName":"eth0",
                        "vrf":"default",
                        "active":true,
                        "weight":1
                      }
                    ]
                  }
                }

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
18 months agoMerge pull request #12511 from opensourcerouting/accords-color
Donald Sharp [Wed, 14 Dec 2022 11:50:04 +0000 (06:50 -0500)]
Merge pull request #12511 from opensourcerouting/accords-color

accords: CLI coloring

18 months agoMerge pull request #12517 from opensourcerouting/fix/forward_null_snmp_bgp
Donald Sharp [Wed, 14 Dec 2022 11:48:37 +0000 (06:48 -0500)]
Merge pull request #12517 from opensourcerouting/fix/forward_null_snmp_bgp

bgpd: Fix coverity FORWARD_NULL for v->namelen in SNMP code

18 months agoMerge pull request #12075 from donaldsharp/highline
Rafael Zalamena [Wed, 14 Dec 2022 10:54:52 +0000 (07:54 -0300)]
Merge pull request #12075 from donaldsharp/highline

Add ability for dplane_fpm_nl to receive RTM_NEWROUTE netlink messages that signal route handling in the asic

18 months agobgpd: Fix coverity FORWARD_NULL for v->namelen in SNMP code
Donatas Abraitis [Wed, 14 Dec 2022 08:08:27 +0000 (10:08 +0200)]
bgpd: Fix coverity FORWARD_NULL for v->namelen in SNMP code

```
*** CID 1529864:    (FORWARD_NULL)
/bgpd/bgp_snmp_bgp4v2.c: 443 in bgp4v2PathAttrLookup()
437
438     #define BGP_NLRI_ENTRY_OFFSET (afi_len + 1 + afi_len)
439
440             sockunion_init(&su);
441
442             if (exact) {
>>>     CID 1529864:    (FORWARD_NULL)
>>>     Dereferencing null pointer "v".
443                     if (*length - v->namelen != BGP_NLRI_ENTRY_OFFSET)
444                             return NULL;
445
446                     /* Set OID offset for prefix */
447                     offset = name + v->namelen;
448                     if (family == AF_INET)
/bgpd/bgp_snmp_bgp4v2.c: 480 in bgp4v2PathAttrLookup()
474                             bgp_dest_unlock_node(dest);
475                     }
476
477                     return NULL;
478             }
479
>>>     CID 1529864:    (FORWARD_NULL)
>>>     Dereferencing null pointer "v".
480             offset = name + v->namelen;
481             offsetlen = *length - v->namelen;
482             len = offsetlen;
483
484             if (offsetlen == 0) {
485                     dest = bgp_table_top(bgp->rib[afi][SAFI_UNICAST]);
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
18 months agotests: Fix frrbot style issues
Kuldeep Kashyap [Tue, 13 Dec 2022 18:38:44 +0000 (10:38 -0800)]
tests: Fix frrbot style issues

There were some style issues found by
frrbot, fixing as part of this commit.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
18 months agotests: Cleaning up daemon param used in start_topology()
Kuldeep Kashyap [Tue, 13 Dec 2022 18:26:14 +0000 (10:26 -0800)]
tests: Cleaning up daemon param used in start_topology()

Earlier daemon parameter was passed to
start_topology(), which is not needed now,
as new code is implemented to start
feature specific daemons.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
18 months agotests: Topotests daemon start as per feature test
Kuldeep Kashyap [Fri, 9 Dec 2022 15:21:29 +0000 (07:21 -0800)]
tests: Topotests daemon start as per feature test

Currently topotests starts all daemons by default,
made changes to f/w so only needed daemons can
be started, daemons which are needed to tests
particular test suite.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
18 months agoMerge pull request #12516 from mjstapp/fix_debug_dpdk
Donald Sharp [Wed, 14 Dec 2022 01:09:45 +0000 (20:09 -0500)]
Merge pull request #12516 from mjstapp/fix_debug_dpdk

zebra: fix flags used for debug dpdk

18 months agozebra: fix flags used for debug dpdk
Mark Stapp [Tue, 13 Dec 2022 22:02:29 +0000 (17:02 -0500)]
zebra: fix flags used for debug dpdk

Use the correct flags for debug zebra dataplane dpdk options.

Signed-off-by: Mark Stapp <mjs@labn.net>
18 months agozebra: Read from the dplane_fpm_nl a route update
Donald Sharp [Fri, 7 Oct 2022 12:02:44 +0000 (08:02 -0400)]
zebra: Read from the dplane_fpm_nl a route update

Read from the fpm dplane a route update that will
include status about whether or not the asic was
successfull in offloading the route.

Have this data passed up to zebra for processing and disseminate
this data as appropriate.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
18 months agoaccords: CLI coloring
David Lamparter [Tue, 13 Dec 2022 17:34:41 +0000 (18:34 +0100)]
accords: CLI coloring

This is pretty much a writeup of the discussion we had on the FRR weekly
call about an hour ago.  I added a bunch of detail but hopefully it
still represents the overall consensus.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
18 months agoMerge pull request #12508 from louis-6wind/ls_prefix_new
Donald Sharp [Tue, 13 Dec 2022 17:03:49 +0000 (12:03 -0500)]
Merge pull request #12508 from louis-6wind/ls_prefix_new

lib: fix ls_prefix memory allocation

18 months agoMerge pull request #12491 from opensourcerouting/fix/crash_bgp_graceful-restart_json
Russ White [Tue, 13 Dec 2022 15:11:48 +0000 (10:11 -0500)]
Merge pull request #12491 from opensourcerouting/fix/crash_bgp_graceful-restart_json

bgpd: Fix graceful-restart JSON outputs and the crash