]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
22 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>
22 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>
22 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>
22 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

22 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

22 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>
22 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

22 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

22 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>
22 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>
22 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>
22 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>
22 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>
22 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>
22 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>
22 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

22 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

22 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

22 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>
22 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

22 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

22 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

22 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>
22 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>
22 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>
22 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>
22 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

22 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>
22 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>
22 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>
22 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

22 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

22 months agoMerge pull request #12501 from opensourcerouting/feature/bgp4v2_bgp4V2PeerEventTimesTable
Russ White [Tue, 13 Dec 2022 15:08:36 +0000 (10:08 -0500)]
Merge pull request #12501 from opensourcerouting/feature/bgp4v2_bgp4V2PeerEventTimesTable

bgpd: SNMP continued work on IPv6

22 months agoMerge pull request #12191 from manojvn/463777
Russ White [Tue, 13 Dec 2022 14:58:04 +0000 (09:58 -0500)]
Merge pull request #12191 from manojvn/463777

ospf6d: ospf6 route installation when changed from nssa to regular area.

22 months agolib: fix ls_prefix memory allocation
Louis Scalbert [Tue, 13 Dec 2022 14:05:04 +0000 (15:05 +0100)]
lib: fix ls_prefix memory allocation

The wrong size is allocated for struct ls_prefix memory.

Fix ls_prefix memory allocation.

Fixes: b0c0b43348 ("lib: Update Link State Database")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
22 months agoMerge pull request #12447 from karlquan/master
Russ White [Tue, 13 Dec 2022 13:54:13 +0000 (08:54 -0500)]
Merge pull request #12447 from karlquan/master

BGP neighbor JSON output always displays hostname, nexthop and related keys

22 months agoMerge pull request #12499 from opensourcerouting/ospf-vertex-leak
Donald Sharp [Mon, 12 Dec 2022 23:36:07 +0000 (18:36 -0500)]
Merge pull request #12499 from opensourcerouting/ospf-vertex-leak

ospfd: fix memory leak on SPF calculation

22 months agoMerge pull request #12498 from Jafaral/ospf-typo
Donald Sharp [Mon, 12 Dec 2022 23:35:53 +0000 (18:35 -0500)]
Merge pull request #12498 from Jafaral/ospf-typo

ospfd: fix typo and report the link name in the warning

22 months agobgpd: Implement SNMP BGP4V2-MIB (bgp4V2NlriTable), part 2
Donatas Abraitis [Mon, 12 Dec 2022 19:59:16 +0000 (21:59 +0200)]
bgpd: Implement SNMP BGP4V2-MIB (bgp4V2NlriTable), part 2

```
iso.3.6.1.3.5.1.1.9.1.1.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.2.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.3.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.4.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.4.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.4.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.4.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.5.1.4.10.0.0.0.24.192.168.10.65 = Hex-STRING: 0A 00 00 00
iso.3.6.1.3.5.1.1.9.1.5.1.4.100.100.100.100.32.192.168.10.65 = STRING: "dddd"
iso.3.6.1.3.5.1.1.9.1.5.1.4.172.17.0.0.24.192.168.10.65 = Hex-STRING: AC 11 00 00
iso.3.6.1.3.5.1.1.9.1.5.1.4.192.168.0.0.24.192.168.10.65 = Hex-STRING: C0 A8 00 00
iso.3.6.1.3.5.1.1.9.1.5.1.4.192.168.10.0.23.192.168.10.65 = Hex-STRING: C0 A8 0A 00
iso.3.6.1.3.5.1.1.9.1.5.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 2A 02 47 80 00 00 00 00 00 00 00 00 00 00 11 11
iso.3.6.1.3.5.1.1.9.1.5.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 2A 02 47 80 01 23 00 00 00 00 00 00 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.5.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 2A 03 06 80 00 00 00 00 00 00 00 00 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.5.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 2A 03 06 80 00 01 00 00 00 00 00 00 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.6.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 24
iso.3.6.1.3.5.1.1.9.1.6.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 32
iso.3.6.1.3.5.1.1.9.1.6.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 24
iso.3.6.1.3.5.1.1.9.1.6.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 24
iso.3.6.1.3.5.1.1.9.1.6.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 23
iso.3.6.1.3.5.1.1.9.1.6.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 128
iso.3.6.1.3.5.1.1.9.1.6.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 64
iso.3.6.1.3.5.1.1.9.1.6.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 48
iso.3.6.1.3.5.1.1.9.1.6.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 48
iso.3.6.1.3.5.1.1.9.1.7.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.7.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.8.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.8.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.9.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.9.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 3
iso.3.6.1.3.5.1.1.9.1.10.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.10.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.10.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.10.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.10.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.10.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 4
iso.3.6.1.3.5.1.1.9.1.10.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 4
iso.3.6.1.3.5.1.1.9.1.10.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 4
iso.3.6.1.3.5.1.1.9.1.10.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 4
iso.3.6.1.3.5.1.1.9.1.11.1.4.10.0.0.0.24.192.168.10.65 = Hex-STRING: C0 A8 0A 41
iso.3.6.1.3.5.1.1.9.1.11.1.4.100.100.100.100.32.192.168.10.65 = Hex-STRING: C0 A8 0A 41
iso.3.6.1.3.5.1.1.9.1.11.1.4.172.17.0.0.24.192.168.10.65 = Hex-STRING: C0 A8 0A 41
iso.3.6.1.3.5.1.1.9.1.11.1.4.192.168.0.0.24.192.168.10.65 = Hex-STRING: C0 A8 0A 41
iso.3.6.1.3.5.1.1.9.1.11.1.4.192.168.10.0.23.192.168.10.65 = Hex-STRING: C0 A8 0A 41
iso.3.6.1.3.5.1.1.9.1.11.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: FE 80 00 00 00 00 00 00 0A 00 27 FF FE 2C E3 88
iso.3.6.1.3.5.1.1.9.1.11.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: FE 80 00 00 00 00 00 00 0A 00 27 FF FE 2C E3 88
iso.3.6.1.3.5.1.1.9.1.11.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: FE 80 00 00 00 00 00 00 0A 00 27 FF FE 2C E3 88
iso.3.6.1.3.5.1.1.9.1.11.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: FE 80 00 00 00 00 00 00 0A 00 27 FF FE 2C E3 88
iso.3.6.1.3.5.1.1.9.1.14.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.14.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.15.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.15.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.16.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.16.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.17.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.17.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.18.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.18.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.19.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 0
iso.3.6.1.3.5.1.1.9.1.20.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.20.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.21.1.4.10.0.0.0.24.192.168.10.65 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.1.4.100.100.100.100.32.192.168.10.65 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.1.4.172.17.0.0.24.192.168.10.65 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.1.4.192.168.0.0.24.192.168.10.65 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.1.4.192.168.10.0.23.192.168.10.65 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.21.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 00 00 00 00
iso.3.6.1.3.5.1.1.9.1.22.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.22.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 1
iso.3.6.1.3.5.1.1.9.1.24.1.4.10.0.0.0.24.192.168.10.65 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.1.4.100.100.100.100.32.192.168.10.65 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.1.4.172.17.0.0.24.192.168.10.65 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.1.4.192.168.0.0.24.192.168.10.65 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.1.4.192.168.10.0.23.192.168.10.65 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.2.16.42.2.71.128.10.188.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 02 01 FD EA
iso.3.6.1.3.5.1.1.9.1.24.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Hex-STRING: 02 01 FD EA
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agobgpd: Implement SNMP BGP4V2-MIB (bgp4V2NlriTable), part 1
Donatas Abraitis [Thu, 1 Dec 2022 12:12:03 +0000 (14:12 +0200)]
bgpd: Implement SNMP BGP4V2-MIB (bgp4V2NlriTable), part 1

```
iso.3.6.1.3.5.1.1.9.1.1.1.4.10.0.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.100.100.100.100.32.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.172.17.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.192.168.0.0.24.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.1.4.192.168.10.0.23.192.168.10.65 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.1.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.9.1.2.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.2.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 2
iso.3.6.1.3.5.1.1.9.1.3.1.4.10.0.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.100.100.100.100.32.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.172.17.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.192.168.0.0.24.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.1.4.192.168.10.0.23.192.168.10.65 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.2.71.128.0.0.0.0.0.0.0.0.0.0.17.17.128.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.0.64.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.3.6.128.0.0.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
iso.3.6.1.3.5.1.1.9.1.3.2.16.42.3.6.128.0.1.0.0.0.0.0.0.0.0.0.0.48.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = INTEGER: 1
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agobgpd: Implement SNMP BGP4V2-MIB (bgp4V2PeerEventTimesTable)
Donatas Abraitis [Thu, 1 Dec 2022 11:26:19 +0000 (13:26 +0200)]
bgpd: Implement SNMP BGP4V2-MIB (bgp4V2PeerEventTimesTable)

```
$ snmpwalk -c public -v1 localhost .1.3.6.1.3.5.1.1.4.1
iso.3.6.1.3.5.1.1.4.1.1.1.4.192.168.10.64 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.1.1.4.192.168.10.65 = Gauge32: 18
iso.3.6.1.3.5.1.1.4.1.1.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.1.2.16.42.12.47.7.72.150.6.102.0.0.0.0.0.0.177.121 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.1.2.16.42.12.47.7.72.150.6.102.0.0.0.0.0.0.177.128 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.2.1.4.192.168.10.64 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.2.1.4.192.168.10.65 = Gauge32: 17
iso.3.6.1.3.5.1.1.4.1.2.2.16.42.2.71.128.1.35.0.0.0.0.0.0.0.0.0.2 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.2.2.16.42.12.47.7.72.150.6.102.0.0.0.0.0.0.177.121 = Gauge32: 0
iso.3.6.1.3.5.1.1.4.1.2.2.16.42.12.47.7.72.150.6.102.0.0.0.0.0.0.177.128 = Gauge32: 0
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agoMerge pull request #12485 from opensourcerouting/fix/crash_attrinfo
Donald Sharp [Mon, 12 Dec 2022 18:55:23 +0000 (13:55 -0500)]
Merge pull request #12485 from opensourcerouting/fix/crash_attrinfo

bgpd: Fix crash for `show bgp attribute-info`

22 months agoospfd: fix memory leak on SPF calculation
Rafael Zalamena [Mon, 12 Dec 2022 18:11:27 +0000 (15:11 -0300)]
ospfd: fix memory leak on SPF calculation

Fix the following problems:
- Always free vertex next hops on `vertex_parent_free`
- Signalize failure on `ospf_spf_add_parent` when parent already exists
  so the caller has the chance to `free()` any allocated resources.
- Don't reuse vertex next hops without the reference count logic in
  `ospf_nexthop_calculation`. Instead allocate a new copy so it can be
  `free()`d later without complications

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
22 months agoMerge pull request #12496 from opensourcerouting/ldpd-memleak-plug
Mark Stapp [Mon, 12 Dec 2022 16:14:10 +0000 (11:14 -0500)]
Merge pull request #12496 from opensourcerouting/ldpd-memleak-plug

lib: fix capability double resource allocation

22 months agozebra: Add ctx to netlink message parsing
Donald Sharp [Tue, 4 Oct 2022 19:41:36 +0000 (15:41 -0400)]
zebra: Add ctx to netlink message parsing

Add the initial step of passing in a dplane context
to reading route netlink messages.  This code
will be run in two contexts:

a) The normal pthread for reading netlink messages from
the kernel
b) The dplane_fpm_nl pthread.

The goal of this commit is too just allow a) to work
b) will be filled in in the future.  Effectively
everything should still be working as it should
pre this change.  We will just possibly allow
the passing of the context around( but not used )

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Rearrange dplane_ctx_route_init
Donald Sharp [Mon, 3 Oct 2022 17:22:22 +0000 (13:22 -0400)]
zebra: Rearrange dplane_ctx_route_init

In order for a future commit to abstract the dplane_ctx_route_init
so that the kernel can use it, let's move some stuff around
and add a dplane_ctx_route_init_basic that can be used by multiple
different paths

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
create a dplane_ctx_route_init_basic so it can be used

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Add dplane_ctx_get|set_flags
Donald Sharp [Mon, 3 Oct 2022 19:28:48 +0000 (15:28 -0400)]
zebra: Add dplane_ctx_get|set_flags

Zebra needs the ability to pass this data around.
Add it to the dplanes ability to pass.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
zebra: Add a dplane_ctx_set_flags

The dplane_ctx_set_flags call is missing, we will need it.  Add it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Remove goto's that do not do anything special
Donald Sharp [Mon, 3 Oct 2022 17:13:50 +0000 (13:13 -0400)]
zebra: Remove goto's that do not do anything special

If we have this semantics:

int ret = FAILURE;

if (foo)
    goto done;

....

done:
    return ret;

This pattern does us no favors and makes it harder to figure out what is going
on.  Let's remove.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Re-arrange fpm_read to reduce code duplication
Donald Sharp [Wed, 5 Oct 2022 15:28:43 +0000 (11:28 -0400)]
zebra: Re-arrange fpm_read to reduce code duplication

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Add `zrouter.asic_notification_nexthop_control`
Donald Sharp [Wed, 5 Oct 2022 14:04:11 +0000 (10:04 -0400)]
zebra: Add `zrouter.asic_notification_nexthop_control`

Volta submitted notification changes for the dplane that had a
special use case for their system.  Volta is no more, the code
is not being actively developed and from talking with ex-Volta
employees there is no current plans to even maintain this code.
Wrap the special handling of nexthops that their asic-dataplane
did in a bit of code to isolate it and allow for future removal,
as that I do not actually believe anyone else is using this code.
Add a CPP_NOTICE several years into the future that will tell us
to remove the code.  If someone starts using it then they will
have to notice this variable to set it and hopefully they will
see my CPP_NOTICE to come talk to us.  If this is being used then
we can just remove this wrapper.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Return statements do not use paranthesis
Donald Sharp [Wed, 5 Oct 2022 14:26:07 +0000 (10:26 -0400)]
zebra: Return statements do not use paranthesis

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agoospfd: fix typo and report the link name in the warning
Jafar Al-Gharaibeh [Mon, 12 Dec 2022 15:12:34 +0000 (09:12 -0600)]
ospfd: fix typo and report the link name in the warning

Submitted-by: Marc Boucher <marc@airvitesse.net>
Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
22 months agolib: fix capability double resource allocation
Rafael Zalamena [Mon, 12 Dec 2022 12:48:33 +0000 (09:48 -0300)]
lib: fix capability double resource allocation

Don't let `zprivs_caps_init` allocate resources without checking if
there were other caps previously allocated.

This fixes a memory leak that happens on daemons that `fork()` and reuse
the `<daemon>_di` (see `ldpd`/`lde`/`ldpe` code).

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
22 months agoMerge pull request #12487 from anlancs/fix/fix-doc-ospf
Donatas Abraitis [Sun, 11 Dec 2022 19:38:30 +0000 (21:38 +0200)]
Merge pull request #12487 from anlancs/fix/fix-doc-ospf

doc: fix an incomplete command for ospf

22 months agoMerge pull request #12457 from donaldsharp/nexthop_free
Donatas Abraitis [Sun, 11 Dec 2022 19:37:27 +0000 (21:37 +0200)]
Merge pull request #12457 from donaldsharp/nexthop_free

bgpd: BGP fails to free the nexthop node

22 months agobgpd: Fix graceful-restart JSON outputs and the crash
Donatas Abraitis [Sun, 11 Dec 2022 19:00:19 +0000 (21:00 +0200)]
bgpd: Fix graceful-restart JSON outputs and the crash

Without this patch:

```
donatas-pc# show bgp neighbors graceful-restart json
vtysh: error reading from bgpd: Resource temporarily unavailable (11)Warning: closing connection to bgpd because of an I/O error!
donatas-pc#
```

And, invalid JSON generated when multiple neighbors exist due to json_neighbor
being freed in a loop.

After the patch:

```
donatas-pc# show bgp ipv4 neighbors 192.168.10.124 graceful-restart json
{
  "192.168.10.124":{
    "neighborAddr":"192.168.10.124",
    "localGrMode":"Helper*",
    "remoteGrMode":"Restart",
    "rBit":false,
    "nBit":true,
    "timers":{
      "configuredRestartTimer":120,
      "receivedRestartTimer":120
    },
    "ipv4Unicast":{
      "fBit":true,
      "endOfRibStatus":{
        "endOfRibSend":true,
        "endOfRibSentAfterUpdate":false,
        "endOfRibRecv":true
      },
      "timers":{
        "stalePathTimer":360
      }
    }
  }
}
donatas-pc# show bgp neighbors graceful-restart json
{
  "192.168.10.124":{
    "neighborAddr":"192.168.10.124",
    "localGrMode":"Helper*",
    "remoteGrMode":"Restart",
    "rBit":false,
    "nBit":true,
    "timers":{
      "configuredRestartTimer":120,
      "receivedRestartTimer":120
    },
    "ipv4Unicast":{
      "fBit":true,
      "endOfRibStatus":{
        "endOfRibSend":true,
        "endOfRibSentAfterUpdate":false,
        "endOfRibRecv":true
      },
      "timers":{
        "stalePathTimer":360
      }
    }
  },
  "2a02:4780:abc::2":{
    "neighborAddr":"2a02:4780:abc::2",
    "localGrMode":"Helper*",
    "remoteGrMode":"Restart",
    "rBit":false,
    "nBit":true,
    "timers":{
      "configuredRestartTimer":120,
      "receivedRestartTimer":120
    },
    "ipv4Unicast":{
      "fBit":true,
      "endOfRibStatus":{
        "endOfRibSend":true,
        "endOfRibSentAfterUpdate":false,
        "endOfRibRecv":true
      },
      "timers":{
        "stalePathTimer":360
      }
    },
    "ipv6Unicast":{
      "fBit":true,
      "endOfRibStatus":{
        "endOfRibSend":true,
        "endOfRibSentAfterUpdate":true,
        "endOfRibRecv":true
      },
      "timers":{
        "stalePathTimer":360
      }
    }
  }
}
donatas-pc#
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agobgpd: Fix crash for `show bgp attribute-info`
Donatas Abraitis [Fri, 9 Dec 2022 20:46:54 +0000 (22:46 +0200)]
bgpd: Fix crash for `show bgp attribute-info`

attr->srv6_vpn might be NULL as well. Let's check both.

Happened after 073801481b0f298a22fa71ee7bbac74adb5e80b9.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agotests: Add a test to show that BGP does not crash with unnumbered interfaces
Donald Sharp [Wed, 7 Dec 2022 12:54:58 +0000 (07:54 -0500)]
tests: Add a test to show that BGP does not crash with unnumbered interfaces

This series of events will crash BGP prior to the prior commit:

a) Configure an interfaced based peering
b) Shut the interface the peering is over
c) remove the peering from bgp

Show that this no longer happens

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agobgpd: BGP fails to free the nexthop node
Pooja Jagadeesh Doijode [Sat, 8 Oct 2022 00:07:46 +0000 (17:07 -0700)]
bgpd: BGP fails to free the nexthop node

In case of BGP unnumbered, BGP fails to free the nexthop
node for peer if the interface is shutdown before
unconfiguring/deleting the BGP neighbor.

This is because, when the interface is shutdown,
peer's LL neighbor address will be cleared. Therefore,
during neighbor deletion, since the peer's neighbor
address is not available, BGP will skip freeing the
nexthop node of this peer. This results in a stale
nexthop node that points to a peer that's already
been freed.

Ticket: 3191547
Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
22 months agodoc: fix an incomplete command for ospf
anlan_cs [Wed, 7 Dec 2022 07:00:27 +0000 (15:00 +0800)]
doc: fix an incomplete command for ospf

The command of "show ip ospf" is incomplete. But "show ipv6 ospf" is fine.

Just complete it with actual parameters.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
22 months agoMerge pull request #12472 from donaldsharp/asic_offload_doc
Jafar Al-Gharaibeh [Sat, 10 Dec 2022 02:21:33 +0000 (20:21 -0600)]
Merge pull request #12472 from donaldsharp/asic_offload_doc

doc: Clarify asic offload documentation in zebra

22 months agoMerge pull request #12482 from donaldsharp/mem_this
Jafar Al-Gharaibeh [Sat, 10 Dec 2022 02:19:28 +0000 (20:19 -0600)]
Merge pull request #12482 from donaldsharp/mem_this

Mem this

22 months agoMerge pull request #12462 from opensourcerouting/fix/default_originate_labeled_unicast
Donald Sharp [Sat, 10 Dec 2022 00:44:58 +0000 (19:44 -0500)]
Merge pull request #12462 from opensourcerouting/fix/default_originate_labeled_unicast

bgpd: Labeled unicast with default-originate

22 months agoMerge pull request #12483 from opensourcerouting/feature/add_addpath_labeled_more_tests
Donald Sharp [Sat, 10 Dec 2022 00:43:07 +0000 (19:43 -0500)]
Merge pull request #12483 from opensourcerouting/feature/add_addpath_labeled_more_tests

bgpd: Free memory allocated by info_make() when hitting maximum-prefix

22 months agodoc: Clarify asic offload documentation in zebra
Donald Sharp [Thu, 8 Dec 2022 21:31:50 +0000 (16:31 -0500)]
doc: Clarify asic offload documentation in zebra

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agobgpd: Free memory allocated by info_make() when hitting maximum-prefix
Donatas Abraitis [Fri, 9 Dec 2022 18:01:56 +0000 (20:01 +0200)]
bgpd: Free memory allocated by info_make() when hitting maximum-prefix

```
Direct leak of 112 byte(s) in 1 object(s) allocated from:
    0 0x7feb66337a06 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:153
    1 0x7feb660cbcc3 in qcalloc lib/memory.c:116
    2 0x55cc3cba02d1 in info_make bgpd/bgp_route.c:3831
    3 0x55cc3cbab4f1 in bgp_update bgpd/bgp_route.c:4733
    4 0x55cc3cbb0620 in bgp_nlri_parse_ip bgpd/bgp_route.c:6111
    5 0x55cc3cb79473 in bgp_update_receive bgpd/bgp_packet.c:2020
    6 0x55cc3cb7c34a in bgp_process_packet bgpd/bgp_packet.c:2929
    7 0x7feb6610ecc5 in thread_call lib/thread.c:2006
    8 0x7feb660bfb77 in frr_run lib/libfrr.c:1198
    9 0x55cc3cb17232 in main bgpd/bgp_main.c:520
    10 0x7feb65ae5082 in __libc_start_main ../csu/libc-start.c:308

SUMMARY: AddressSanitizer: 112 byte(s) leaked in 1 allocation(s).
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agoMerge pull request #12477 from opensourcerouting/feature/add_addpath_labeled_more_tests
Donald Sharp [Fri, 9 Dec 2022 18:03:39 +0000 (13:03 -0500)]
Merge pull request #12477 from opensourcerouting/feature/add_addpath_labeled_more_tests

tests: Add more tests for labeled-unicast and addpath

22 months agoMerge pull request #12466 from opensourcerouting/bsd-fixes-20221208
Donald Sharp [Fri, 9 Dec 2022 18:00:39 +0000 (13:00 -0500)]
Merge pull request #12466 from opensourcerouting/bsd-fixes-20221208

build: FreeBSD fixes

22 months agoMerge pull request #12464 from taspelund/vxlan_config_docs
Donatas Abraitis [Fri, 9 Dec 2022 17:02:15 +0000 (19:02 +0200)]
Merge pull request #12464 from taspelund/vxlan_config_docs

doc: add FRR/Linux configuration examples for EVPN

22 months agoMerge pull request #12467 from opensourcerouting/fix/advertised_routes_json_naming
Donald Sharp [Fri, 9 Dec 2022 16:54:13 +0000 (11:54 -0500)]
Merge pull request #12467 from opensourcerouting/fix/advertised_routes_json_naming

bgpd: Deprecate `bgpStatusCodes` and `bgpOriginCodes`

22 months agozebra: Free up routemap name memory on vrf deletion event
Donald Sharp [Fri, 9 Dec 2022 13:51:34 +0000 (08:51 -0500)]
zebra: Free up routemap name memory on vrf deletion event

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agolib: Hide list macros in linklist.c
Donald Sharp [Fri, 9 Dec 2022 13:37:45 +0000 (08:37 -0500)]
lib: Hide list macros in linklist.c

The LISTNODE_ATTACH|DELETE macros are only used in
linklist.c.  Let's remove temptation from people
to use them.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agoospf6d: Don't allocate json memory in non-json path
Donald Sharp [Fri, 9 Dec 2022 13:32:12 +0000 (08:32 -0500)]
ospf6d: Don't allocate json memory in non-json path

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agozebra: Actually free all memory associated ctx->u.iptable.interface_name_list
Donald Sharp [Fri, 9 Dec 2022 13:14:31 +0000 (08:14 -0500)]
zebra: Actually free all memory associated ctx->u.iptable.interface_name_list

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agoMerge pull request #12471 from opensourcerouting/fix/gh_actions_on_forks_forbidden
Mark Stapp [Fri, 9 Dec 2022 13:34:55 +0000 (08:34 -0500)]
Merge pull request #12471 from opensourcerouting/fix/gh_actions_on_forks_forbidden

github: Prevent running actions on forked repositories

22 months agoisisd: Fix sadj memory leak
Donald Sharp [Fri, 9 Dec 2022 12:44:26 +0000 (07:44 -0500)]
isisd: Fix sadj memory leak

In some cases the sadj was directly dropped.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agotests: Add more tests for labeled-unicast and addpath
Donatas Abraitis [Fri, 9 Dec 2022 12:12:32 +0000 (14:12 +0200)]
tests: Add more tests for labeled-unicast and addpath

Check if we advertise more routes when an additional path comes up, and
if we withdraw if dissapears.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agoMerge pull request #12470 from donaldsharp/cleanup_topos
Donatas Abraitis [Fri, 9 Dec 2022 07:20:00 +0000 (09:20 +0200)]
Merge pull request #12470 from donaldsharp/cleanup_topos

tests: ospf_gr_helper tests are slow

22 months agoMerge pull request #12473 from donaldsharp/ensure_used
Donatas Abraitis [Fri, 9 Dec 2022 07:17:45 +0000 (09:17 +0200)]
Merge pull request #12473 from donaldsharp/ensure_used

bgpd: Don't always allocate json memory in non-json path

22 months agobgpd: Don't always allocate json memory in non-json path
Donald Sharp [Thu, 8 Dec 2022 23:22:17 +0000 (18:22 -0500)]
bgpd: Don't always allocate json memory in non-json path

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agotests: Add topotest bgp_vrf_leaking_5549_routes
Ryoga Saito [Tue, 6 Dec 2022 17:27:16 +0000 (02:27 +0900)]
tests: Add topotest bgp_vrf_leaking_5549_routes

To verify previous changes, this PR introduces topotest to verify
whether imported routes learnt from BGP unnumbered peers will be active
on VPN RIB and other VRF RIB.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
22 months agogithub: Prevent running actions on forked repositories
Donatas Abraitis [Thu, 8 Dec 2022 20:54:28 +0000 (22:54 +0200)]
github: Prevent running actions on forked repositories

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agodoc: add FRR/Linux configuration examples for EVPN
Trey Aspelund [Wed, 7 Dec 2022 19:57:09 +0000 (14:57 -0500)]
doc: add FRR/Linux configuration examples for EVPN

The existing EVPN documentation in bgp.rst does not provide a holistic
configuration, just examples of individual features, and doesn't give
an operator any idea of what a compatible Linux netdev configuration
might look like. This introduces evpn.rst which includes a sample
frr.conf and corresponding Linux interface config (via iproute2) that
an operator can use to setup a basic EVPN topology and model their
interface manager's config from.

This initial version of evpn.rst shows Linux netdev config for
traditional bridges (vlan_filtering=0) and traditional vxlan devices
(single VNI). Later changes to this file will cover the use of
VLAN-aware bridges (vlan_filtering=1), single VXLAN devices
(multi VNI), and eventually bonds (for EVPN-MH).

Eventually the plan is to move the existing EVPN content from bgp.rst
into evpn.rst, but for now let's get some user-facing documentation in
place for interface configs.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
22 months agoMerge pull request #12463 from opensourcerouting/fix/totalPrefixCounter_with_default_...
Donald Sharp [Thu, 8 Dec 2022 19:31:31 +0000 (14:31 -0500)]
Merge pull request #12463 from opensourcerouting/fix/totalPrefixCounter_with_default_originate

bgpd: totalPrefixCounter incorectly shows sent prefix count

22 months agoMerge pull request #12468 from mjstapp/fix_log_command_types
Donald Sharp [Thu, 8 Dec 2022 19:22:36 +0000 (14:22 -0500)]
Merge pull request #12468 from mjstapp/fix_log_command_types

lib: fix zlog command types table

22 months agotests: ospf_gr_helper tests are slow
Donald Sharp [Thu, 8 Dec 2022 15:25:34 +0000 (10:25 -0500)]
tests: ospf_gr_helper tests are slow

With a dead interval of 40 seconds, each tests is waiting 40+
seconds for ospf convergence to occurr because the DR is re-elected

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agoMerge pull request #12430 from opensourcerouting/accords
Quentin Young [Thu, 8 Dec 2022 17:39:48 +0000 (12:39 -0500)]
Merge pull request #12430 from opensourcerouting/accords

22 months agolib: fix zlog command types table
Mark Stapp [Thu, 8 Dec 2022 16:37:51 +0000 (11:37 -0500)]
lib: fix zlog command types table

Fix a number of differences between the zapi message enum
and the log description table.

Signed-off-by: Mark Stapp <mjs@labn.net>
22 months agoMerge pull request #12461 from donaldsharp/evpn_mh_crash
Donatas Abraitis [Thu, 8 Dec 2022 14:35:11 +0000 (16:35 +0200)]
Merge pull request #12461 from donaldsharp/evpn_mh_crash

bgpd: Prevent crash in evpn when using default vrf

22 months agobgpd: Deprecate `bgpStatusCodes` and `bgpOriginCodes`
Donatas Abraitis [Thu, 8 Dec 2022 13:46:43 +0000 (15:46 +0200)]
bgpd: Deprecate `bgpStatusCodes` and `bgpOriginCodes`

```
donatas-pc# sh ip bgp neighbors 192.168.10.124 advertised-routes json
{
  "bgpTableVersion":11,
  "bgpLocalRouterId":"192.168.10.17",
  "defaultLocPrf":100,
  "localAS":65002,
  "bgpStatusCodes":{
    "suppressed":"s",
    "damped":"d",
    "history":"h",
    "valid":"*",
    "best":">",
    "multipath":"=",
    "internal":"i",
    "ribFailure":"r",
    "stale":"S",
    "removed":"R"
  },
  "bgpOriginCodes":{
    "igp":"i",
    "egp":"e",
    "incomplete":"?"
  },
  "advertisedRoutes":{
    "200.200.200.200\/32":{
      "addrPrefix":"200.200.200.200",
      "prefixLen":32,
      "network":"200.200.200.200\/32",
      "nextHopGlobal":"2a02:4780:abc::2",
      "weight":0,
      "path":"65001",
      "bgpOriginCode":"?",
      "origin":"incomplete", <<<<<<<
      "valid":true, <<<<<<<<
      "best":true,  <<<<<<<<
      "appliedStatusSymbols":{
        "*":true,
        ">":true
      }
    }
  },
  "totalPrefixCounter":1,
  "filteredPrefixCounter":0
}
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agodoc: add FreeBSD 13 build docs
David Lamparter [Thu, 8 Dec 2022 13:17:17 +0000 (14:17 +0100)]
doc: add FreeBSD 13 build docs

Some minor changes since FreeBSD 11, mostly fewer extra sauce.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
22 months agobuild: pim6d is Linux only
David Lamparter [Thu, 8 Dec 2022 11:45:38 +0000 (12:45 +0100)]
build: pim6d is Linux only

This stops breaking build on FreeBSD.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
22 months agobuild: fix sed regex in Lua macro
David Lamparter [Thu, 8 Dec 2022 11:35:03 +0000 (12:35 +0100)]
build: fix sed regex in Lua macro

Using `\s` to match whitespace is not portable, use `[[:space:]]`
instead.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
22 months agodoc: introduce FRR community "accords"
David Lamparter [Fri, 2 Dec 2022 10:39:56 +0000 (11:39 +0100)]
doc: introduce FRR community "accords"

The idea here is to pass "non-code agreements" through the PR review
mechanism, and have them visible in the git tree.

Two "example" (but real) accords are included, mostly to illustrate the
idea.  Both of these should be non-controversial and have had some
previous discussion in random places.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
22 months agobgpd: totalPrefixCounter incorectly shows sent prefix count
Donatas Abraitis [Wed, 7 Dec 2022 21:31:36 +0000 (23:31 +0200)]
bgpd: totalPrefixCounter incorectly shows sent prefix count

Using: show bgp ipv4 unicast neighbors 192.168.12.2 advertised-routes json

Before:

```
  "bgpOriginatingDefaultNetwork":"0.0.0.0\/0",
  "advertisedRoutes":{
    "192.168.12.0\/24":{
      "addrPrefix":"192.168.12.0",
      "prefixLen":24,
      "network":"192.168.12.0\/24",
      "nextHop":"0.0.0.0",
      "metric":0,
      "weight":32768,
      "path":"",
      "bgpOriginCode":"?",
      "appliedStatusSymbols":{
        "*":true,
        ">":true
      }
    }
  },
  "totalPrefixCounter":1,
  "filteredPrefixCounter":0
```

After:

```
  "bgpOriginatingDefaultNetwork":"0.0.0.0\/0",
  "advertisedRoutes":{
    "192.168.12.0\/24":{
      "addrPrefix":"192.168.12.0",
      "prefixLen":24,
      "network":"192.168.12.0\/24",
      "nextHop":"0.0.0.0",
      "metric":0,
      "weight":32768,
      "path":"",
      "bgpOriginCode":"?",
      "appliedStatusSymbols":{
        "*":true,
        ">":true
      }
    }
  },
  "totalPrefixCounter":2,
  "filteredPrefixCounter":0
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agotests: Check if default-originate works with labeled-unicast
Donatas Abraitis [Wed, 7 Dec 2022 21:24:28 +0000 (23:24 +0200)]
tests: Check if default-originate works with labeled-unicast

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agobgpd: Announce labeled-unicast default-originate
Donatas Abraitis [Wed, 7 Dec 2022 20:57:29 +0000 (22:57 +0200)]
bgpd: Announce labeled-unicast default-originate

Without this patch, this just crashes:

```
(gdb) bt
0  raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:51
1  0x00007f66d977b10c in core_handler (signo=11, siginfo=0x7ffd87aa0430, context=<optimized out>) at lib/sigevent.c:261
2  <signal handler called>
3  stream_put_labeled_prefix (s=s@entry=0x55bd3ce53050, p=p@entry=0x7ffd87aa0a20, label=label@entry=0x0, addpath_capable=<optimized out>, addpath_tx_id=addpath_tx_id@entry=1)
    at lib/stream.c:1057
4  0x000055bd3bfba176 in bgp_packet_mpattr_prefix (s=s@entry=0x55bd3ce53050, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, p=p@entry=0x7ffd87aa0a20, prd=prd@entry=0x0,
    label=label@entry=0x0, num_labels=0, addpath_capable=true, addpath_tx_id=1, attr=0x7ffd87aa2c20) at bgpd/bgp_attr.c:3964
5  0x000055bd3bfba2b5 in bgp_packet_attribute (bgp=0x55bd3cd8e470, bgp@entry=0x0, peer=peer@entry=0x55bd3cf21fc0, s=s@entry=0x55bd3ce53050, attr=attr@entry=0x7ffd87aa2c20,
    vecarr=vecarr@entry=0x7ffd87aa0a10, p=p@entry=0x7ffd87aa0a20, afi=AFI_IP, safi=SAFI_LABELED_UNICAST, from=0x7f66d9ba9010, prd=0x0, label=0x0, num_labels=0, addpath_capable=true,
    addpath_tx_id=1, bpi=0x0) at bgpd/bgp_attr.c:4139
6  0x000055bd3c04d455 in subgroup_default_update_packet (subgrp=subgrp@entry=0x55bd3cd885b0, attr=attr@entry=0x7ffd87aa2c20, from=from@entry=0x7f66d9ba9010) at bgpd/bgp_updgrp_packet.c:1129
7  0x000055bd3c04a9a5 in subgroup_default_originate (subgrp=0x55bd3cd885b0, withdraw=withdraw@entry=0) at bgpd/bgp_updgrp_adv.c:972
8  0x000055bd3c022668 in bgp_default_originate (peer=peer@entry=0x7f66d574a010, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, withdraw=withdraw@entry=0)
    at bgpd/bgp_route.c:5037
9  0x000055bd3c0922e0 in peer_default_originate_set (peer=0x7f66d574a010, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, rmap=rmap@entry=0x0, route_map=route_map@entry=0x0)
    at bgpd/bgpd.c:5428
10 0x000055bd3c076c07 in peer_default_originate_set_vty (set=1, rmap=0x0, safi=SAFI_LABELED_UNICAST, afi=AFI_IP, peer_str=<optimized out>, vty=0x55bd3ce4c900) at bgpd/bgp_vty.c:6941
11 neighbor_default_originate (self=<optimized out>, vty=0x55bd3ce4c900, argc=<optimized out>, argv=<optimized out>) at bgpd/bgp_vty.c:6958
12 0x00007f66d9721dc0 in cmd_execute_command_real (vline=vline@entry=0x55bd3cd874d0, vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x0, up_level=up_level@entry=0, filter=FILTER_RELAXED)
    at lib/command.c:996
13 0x00007f66d9721f39 in cmd_execute_command (vline=vline@entry=0x55bd3cd874d0, vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x0, vtysh=vtysh@entry=0) at lib/command.c:1055
14 0x00007f66d9722162 in cmd_execute (vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x55bd3cd8a230 "neighbor 192.168.34.4 default-originate ", matched=matched@entry=0x0, vtysh=vtysh@entry=0)
    at lib/command.c:1223
15 0x00007f66d9792337 in vty_command (vty=vty@entry=0x55bd3ce4c900, buf=<optimized out>) at lib/vty.c:486
16 0x00007f66d9792570 in vty_execute (vty=0x55bd3ce4c900) at lib/vty.c:1249
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
22 months agobgpd: Prevent crash in evpn when using default vrf
Donald Sharp [Wed, 7 Dec 2022 19:06:12 +0000 (14:06 -0500)]
bgpd: Prevent crash in evpn when using default vrf

The default vrf in bgp when created, ends up having the
bgp->name as NULL.  This of course crashes the ilk
of `json_object_string_add` when a NULL is passed in.

Go through all the places in bgp_evpn_mh.c and fix
so that it doesn't crash.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
22 months agoMerge pull request #12460 from opensourcerouting/msdp-fixes
Donald Sharp [Wed, 7 Dec 2022 18:17:25 +0000 (13:17 -0500)]
Merge pull request #12460 from opensourcerouting/msdp-fixes

pimd: two MSDP packet handling fixes

22 months agopimd: fix MSDP packet debug crashes
Rafael Zalamena [Wed, 7 Dec 2022 14:49:26 +0000 (11:49 -0300)]
pimd: fix MSDP packet debug crashes

Add some safe guards to avoid crashes and alert us about programming
errors in packet build.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>