]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_snmp.c
Merge pull request #9374 from mjstapp/fix_nhg_add_leak
[mirror_frr.git] / bgpd / bgp_snmp.c
index bc26314b50cb72a2e77363210c90b89b181f3853..868801c14e1857d7c012e514a3488aa520cace71 100644 (file)
@@ -32,7 +32,7 @@
 #include "filter.h"
 #include "hook.h"
 #include "libfrr.h"
-#include "version.h"
+#include "lib/version.h"
 
 #include "bgpd/bgpd.h"
 #include "bgpd/bgp_table.h"
@@ -326,7 +326,7 @@ static uint8_t *bgpVersion(struct variable *v, oid name[], size_t *length,
            == MATCH_FAILED)
                return NULL;
 
-       /* Retrun BGP version.  Zebra bgpd only support version 4. */
+       /* Return BGP version.  Zebra bgpd only support version 4. */
        version = (0x80 >> (BGP_VERSION_4 - 1));
 
        /* Return octet string length 1. */
@@ -435,7 +435,7 @@ static struct peer *bgpPeerTable_lookup(struct variable *v, oid name[],
                if (peer == NULL)
                        return NULL;
 
-               oid_copy_addr(name + namelen, addr, sizeof(struct in_addr));
+               oid_copy_in_addr(name + namelen, addr);
                *length = sizeof(struct in_addr) + namelen;
 
                return peer;
@@ -689,12 +689,12 @@ static struct bgp_path_info *bgp4PathAttrLookup(struct variable *v, oid name[],
                dest = bgp_node_lookup(bgp->rib[AFI_IP][SAFI_UNICAST],
                                       (struct prefix *)addr);
                if (dest) {
-                       bgp_dest_unlock_node(dest);
-
                        for (path = bgp_dest_get_bgp_path_info(dest); path;
                             path = path->next)
                                if (sockunion_same(&path->peer->su, &su))
                                        return path;
+
+                       bgp_dest_unlock_node(dest);
                }
        } else {
                offset = name + v->namelen;
@@ -767,14 +767,12 @@ static struct bgp_path_info *bgp4PathAttrLookup(struct variable *v, oid name[],
                                        v->namelen + BGP_PATHATTR_ENTRY_OFFSET;
 
                                offset = name + v->namelen;
-                               oid_copy_addr(offset, &rn_p->u.prefix4,
-                                             IN_ADDR_SIZE);
+                               oid_copy_in_addr(offset, &rn_p->u.prefix4);
                                offset += IN_ADDR_SIZE;
                                *offset = rn_p->prefixlen;
                                offset++;
-                               oid_copy_addr(offset,
-                                             &min->peer->su.sin.sin_addr,
-                                             IN_ADDR_SIZE);
+                               oid_copy_in_addr(offset,
+                                                &min->peer->su.sin.sin_addr);
                                addr->prefix = rn_p->u.prefix4;
                                addr->prefixlen = rn_p->prefixlen;
 
@@ -868,7 +866,7 @@ static int bgpTrapEstablished(struct peer *peer)
        if (ret == 0)
                return 0;
 
-       oid_copy_addr(index, &addr, IN_ADDR_SIZE);
+       oid_copy_in_addr(index, &addr);
 
        smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid,
                  array_size(bgp_trap_oid), bgp_oid,
@@ -887,7 +885,7 @@ static int bgpTrapBackwardTransition(struct peer *peer)
        if (ret == 0)
                return 0;
 
-       oid_copy_addr(index, &addr, IN_ADDR_SIZE);
+       oid_copy_in_addr(index, &addr);
 
        smux_trap(bgp_variables, array_size(bgp_variables), bgp_trap_oid,
                  array_size(bgp_trap_oid), bgp_oid,