Commit Graph

30402 Commits

Author SHA1 Message Date
Rafael Zalamena
105331a3c6 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>
2022-12-20 15:44:02 -03:00
Donatas Abraitis
43203ba63a
Merge pull request #12518 from patrasar/pim_minor_issue
pimd: Fix (S,G) debug issue
2022-12-20 18:21:07 +02:00
Russ White
a1347aa90c
Merge pull request #12539 from donaldsharp/bgp_debug_prefix_mem_leak
bgpd: When allocating prefix, free it when we are already tracking it
2022-12-20 11:20:19 -05:00
Russ White
e30e0fee81
Merge pull request #12531 from opensourcerouting/feature/snmp_tests
bgpd: SNMP IPv6 tests and some fixes
2022-12-20 11:19:10 -05:00
Russ White
971930a5f6
Merge pull request #12543 from donaldsharp/ospf_json_mem_leak
ospfd: Fix some json mem leaks and some issues
2022-12-20 11:15:28 -05:00
Russ White
babe0800d3
Merge pull request #12527 from opensourcerouting/ospf-spf-leak2
ospfd: fix SPF table memory leak
2022-12-20 11:12:23 -05:00
Donald Sharp
f9f19fef9d 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>
2022-12-20 08:45:51 -05:00
Donald Sharp
11bf2747ef 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>
2022-12-20 08:39:29 -05:00
Donald Sharp
f147ca860b
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
2022-12-20 08:14:47 -05:00
Rafael Zalamena
9bf19426e0 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>
2022-12-20 08:51:13 -03:00
Rafael Zalamena
bcf4d02b84
Merge pull request #12541 from manojvn/dbdesc_recv
ospf6d: Fixing memory leak in ospf6_lsa_create_headeronly for both
2022-12-20 08:37:16 -03:00
Donatas Abraitis
af9aee79f9 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>
2022-12-20 09:48:43 +02:00
Donatas Abraitis
99f60e5ecb tests: Add an option for SNMP config to specify a custom options
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-20 09:42:36 +02:00
Donatas Abraitis
2789c90994 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>
2022-12-20 09:42:35 +02:00
Donatas Abraitis
4f4728b678
Merge pull request #12380 from chiragshah6/zdev
ospfd: json support for show ip ospf border-routers
2022-12-19 23:37:59 +02:00
Donatas Abraitis
54257fae5d tests: Add basic tests for SNMP BGP4V2-MIB
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-19 23:27:33 +02:00
Donatas Abraitis
15c3b52f3f bgpd: Return MED, not local-preference if MED attribute exists (SNMP)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-19 23:27:33 +02:00
Donatas Abraitis
71a055c9d1 bgpd: Specify prefix address-family before looking into BGP table
Otherwise, lookup behaves a bit weird.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-19 23:27:33 +02:00
Donatas Abraitis
2b9d7b2c9b bgpd: Make sure we have peer->notify.data before returning for SNMP
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-19 23:27:33 +02:00
Donatas Abraitis
6a2c7a57bd
Merge pull request #12434 from chiragshah6/fdev1
zebra: show ip nht route-map vrf json support
2022-12-19 23:24:53 +02:00
Donald Sharp
ccbebd59ac Merge pull request #12544 from mjstapp/fix_pathd_sa_pcep_config
pathd: fix SA warning in path_pcep_config
2022-12-19 14:44:21 -05:00
Donatas Abraitis
2999fbdc2a
Merge pull request #12535 from donaldsharp/mpattr_size_enum
Use switch statements without default for safi_t and afi_t enum's
2022-12-19 20:54:53 +02:00
Rafael Zalamena
e3ba9ce36a
Merge pull request #12537 from anlancs/fix/fpm-debug-info
zebra: fix wrong gateway for fpm debug
2022-12-19 15:01:43 -03:00
Rafael Zalamena
3e44212f9f
Merge pull request #12538 from donaldsharp/zebra_crash_in_shutdown
zebra: Ensure memory is not freed that dplane depends on in shutdown
2022-12-19 14:58:49 -03:00
Mark Stapp
040ca77097 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>
2022-12-19 11:36:03 -05:00
Mark Stapp
912c008412
Merge pull request #12534 from donaldsharp/notice_missed
zebra: Notice Optional Router Advertisement types that are not handled
2022-12-19 09:31:12 -05:00
Manoj Naragund
47cd634819 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>
2022-12-19 04:15:36 -08:00
Donald Sharp
d9f11963c8 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>
2022-12-17 16:32:13 -05:00
Donald Sharp
0e61463a8e 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>
2022-12-17 14:09:29 -05:00
Donatas Abraitis
9a7f2c2203
Merge pull request #12536 from donaldsharp/peer_print_null
bgpd: Print out useful information about peer
2022-12-17 16:59:53 +02:00
anlan_cs
278749cad9 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>
2022-12-17 19:20:30 +08:00
Mark Stapp
17cb0eaa09
Merge pull request #12533 from donaldsharp/returns_are_needed
lib, staticd: return values even after an assert
2022-12-16 12:42:14 -05:00
Chirag Shah
33d7e50d01 doc: add documentation for show ospf border-routers
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-12-16 08:46:10 -08:00
Sindhu Parvathi Gopinathan
2c248c3ed2 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>
2022-12-16 08:46:10 -08:00
Chirag Shah
d358780207 doc: add documentation for show ip nht route-map
Signed-off-by: Chirag Shah <chirag@nvidia.com>
2022-12-16 08:42:53 -08:00
Sindhu Parvathi Gopinathan
63e7deba05 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>
2022-12-16 08:42:53 -08:00
Donald Sharp
4d4187c1f0 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>
2022-12-16 09:32:44 -05:00
David Lamparter
7b78f6c87f
Merge pull request #12522 from donaldsharp/some_various_stuff 2022-12-16 15:30:37 +01:00
Donald Sharp
233b1a3860 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>
2022-12-16 08:43:16 -05:00
Donald Sharp
722e8011e1 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>
2022-12-16 08:17:18 -05:00
Donald Sharp
4487f0bd2c 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:
0a9705a1e0

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>
2022-12-16 07:58:54 -05:00
Donald Sharp
960ad09f93
Merge pull request #12528 from spoignant-proton/master
bgpd: Add support for flowspec prefixes in bgp_packet_mpattr_prefix_size
2022-12-16 07:50:43 -05:00
Donald Sharp
b5478f9536
Merge pull request #12532 from opensourcerouting/fix/do_not_forget_updating_docs
docs: Do not forget updating default version for readthedocs.org
2022-12-16 07:42:04 -05:00
Donald Sharp
16c150f27b 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>
2022-12-16 07:38:58 -05:00
Sarita Patra
a5a221bf34 pimd: Fix (S,G) debug issue
Signed-off-by: Sarita Patra <saritap@vmware.com>
2022-12-16 03:05:37 -08:00
Donatas Abraitis
59a5f54681 docs: Do not forget updating default version for readthedocs.org
docs.frrouting.org

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-16 09:58:41 +02:00
Donatas Abraitis
507621139b
Merge pull request #10576 from louis-6wind/fix-l3vpn-igmetric
bgpd: fix the IGP metric for best path selection on VPN import
2022-12-16 09:18:01 +02:00
Mark Stapp
2d6916ad70
Merge pull request #12530 from taspelund/remote_macip_memleak
bgpd: cleanup macip_path_list for remote macip
2022-12-15 16:48:16 -05:00
Trey Aspelund
889360dcfd 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>
2022-12-15 18:52:16 +00:00
Donald Sharp
5a59e9b21f bgpd: If we don't find what we are looking for cleanup the json structure
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-15 11:15:33 -05:00