From: Christian Franke <[email protected]> sockunion_str2su allocates a struct sockunion that used to be leaked in the show commands. Use str2sockunion and keep the information on the stack instead.
Signed-off-by: Christian Franke <[email protected]> --- bgpd/bgp_encap.c | 38 +++++++++++++++++--------------------- bgpd/bgp_mplsvpn.c | 18 ++++++++---------- bgpd/bgp_route.c | 10 ++++++---- 3 files changed, 31 insertions(+), 35 deletions(-) diff --git a/bgpd/bgp_encap.c b/bgpd/bgp_encap.c index 1a09ba6..73ab8958 100644 --- a/bgpd/bgp_encap.c +++ b/bgpd/bgp_encap.c @@ -649,24 +649,23 @@ DEFUN (show_bgp_ipv4_encap_neighbor_routes, "Neighbor to display information about\n" "Display routes learned from neighbor\n") { - union sockunion *su; + union sockunion su; struct peer *peer; - - su = sockunion_str2su (argv[0]); - if (su == NULL) + + if (str2sockunion(argv[0], &su)) { vty_out (vty, "Malformed address: %s%s", argv[0], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_encap (vty, AFI_IP, NULL, bgp_show_type_neighbor, su, 0); + return bgp_show_encap (vty, AFI_IP, NULL, bgp_show_type_neighbor, &su, 0); } DEFUN (show_bgp_ipv6_encap_neighbor_routes, @@ -680,24 +679,23 @@ DEFUN (show_bgp_ipv6_encap_neighbor_routes, "Neighbor to display information about\n" "Display routes learned from neighbor\n") { - union sockunion *su; + union sockunion su; struct peer *peer; - su = sockunion_str2su (argv[0]); - if (su == NULL) + if (str2sockunion(argv[0], &su)) { vty_out (vty, "Malformed address: %s%s", argv[0], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_encap (vty, AFI_IP6, NULL, bgp_show_type_neighbor, su, 0); + return bgp_show_encap (vty, AFI_IP6, NULL, bgp_show_type_neighbor, &su, 0); } DEFUN (show_bgp_ipv4_encap_rd_neighbor_routes, @@ -715,7 +713,7 @@ DEFUN (show_bgp_ipv4_encap_rd_neighbor_routes, "Display routes learned from neighbor\n") { int ret; - union sockunion *su; + union sockunion su; struct peer *peer; struct prefix_rd prd; @@ -726,21 +724,20 @@ DEFUN (show_bgp_ipv4_encap_rd_neighbor_routes, return CMD_WARNING; } - su = sockunion_str2su (argv[1]); - if (su == NULL) + if (str2sockunion(argv[1], &su)) { vty_out (vty, "Malformed address: %s%s", argv[1], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_encap (vty, AFI_IP, &prd, bgp_show_type_neighbor, su, 0); + return bgp_show_encap (vty, AFI_IP, &prd, bgp_show_type_neighbor, &su, 0); } DEFUN (show_bgp_ipv6_encap_rd_neighbor_routes, @@ -758,7 +755,7 @@ DEFUN (show_bgp_ipv6_encap_rd_neighbor_routes, "Display routes learned from neighbor\n") { int ret; - union sockunion *su; + union sockunion su; struct peer *peer; struct prefix_rd prd; @@ -769,21 +766,20 @@ DEFUN (show_bgp_ipv6_encap_rd_neighbor_routes, return CMD_WARNING; } - su = sockunion_str2su (argv[1]); - if (su == NULL) + if (str2sockunion(argv[1], &su)) { vty_out (vty, "Malformed address: %s%s", argv[1], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_neighbor, su, 0); + return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_neighbor, &su, 0); } DEFUN (show_bgp_ipv4_encap_neighbor_advertised_routes, diff --git a/bgpd/bgp_mplsvpn.c b/bgpd/bgp_mplsvpn.c index 08a4272..93406f3 100644 --- a/bgpd/bgp_mplsvpn.c +++ b/bgpd/bgp_mplsvpn.c @@ -969,7 +969,7 @@ DEFUN (show_bgp_ipv4_vpn_rd_neighbor_routes, "Display routes learned from neighbor\n") { int ret; - union sockunion *su; + union sockunion su; struct peer *peer; struct prefix_rd prd; @@ -980,21 +980,20 @@ DEFUN (show_bgp_ipv4_vpn_rd_neighbor_routes, return CMD_WARNING; } - su = sockunion_str2su (argv[1]); - if (su == NULL) + if (str2sockunion(argv[1], &su)) { vty_out (vty, "Malformed address: %s%s", argv[1], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP][SAFI_MPLS_VPN]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_mpls_vpn (vty, AFI_IP, &prd, bgp_show_type_neighbor, su, 0); + return bgp_show_mpls_vpn (vty, AFI_IP, &prd, bgp_show_type_neighbor, &su, 0); } DEFUN (show_bgp_ipv6_vpn_rd_neighbor_routes, show_bgp_ipv6_vpn_rd_neighbor_routes_cmd, @@ -1010,7 +1009,7 @@ DEFUN (show_bgp_ipv6_vpn_rd_neighbor_routes, "Display routes learned from neighbor\n") { int ret; - union sockunion *su; + union sockunion su; struct peer *peer; struct prefix_rd prd; @@ -1021,21 +1020,20 @@ DEFUN (show_bgp_ipv6_vpn_rd_neighbor_routes, return CMD_WARNING; } - su = sockunion_str2su (argv[1]); - if (su == NULL) + if (str2sockunion(argv[1], &su)) { vty_out (vty, "Malformed address: %s%s", argv[1], VTY_NEWLINE); return CMD_WARNING; } - peer = peer_lookup (NULL, su); + peer = peer_lookup (NULL, &su); if (! peer || ! peer->afc[AFI_IP6][SAFI_MPLS_VPN]) { vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE); return CMD_WARNING; } - return bgp_show_mpls_vpn (vty, AFI_IP6, &prd, bgp_show_type_neighbor, su, 0); + return bgp_show_mpls_vpn (vty, AFI_IP6, &prd, bgp_show_type_neighbor, &su, 0); } void diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 2fd1675..4cd2271 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -9085,7 +9085,7 @@ bgp_show_community (struct vty *vty, const char *view_name, int argc, struct community *com; struct buffer *b; struct bgp *bgp; - int i; + int i, rv; char *str; int first = 0; @@ -9136,9 +9136,11 @@ bgp_show_community (struct vty *vty, const char *view_name, int argc, return CMD_WARNING; } - return bgp_show (vty, bgp, afi, safi, - (exact ? bgp_show_type_community_exact : - bgp_show_type_community), com); + rv = bgp_show (vty, bgp, afi, safi, + (exact ? bgp_show_type_community_exact : + bgp_show_type_community), com); + community_free(com); + return rv; } DEFUN (show_ip_bgp_community, -- 2.8.0 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
