]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospf6d: adjust changes per PR 870 review 870/head
authorChirag Shah <chirag@cumulusnetworks.com>
Mon, 31 Jul 2017 20:12:33 +0000 (13:12 -0700)
committerChirag Shah <chirag@cumulusnetworks.com>
Mon, 31 Jul 2017 21:34:06 +0000 (14:34 -0700)
called list_delete instead of list_free
Moved MTYPE_STATIC in ospfd/zebra.c
Revert changes in ospf6_zebra.c where malloc is called for
multiple nexthops.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
ospf6d/ospf6_route.c
ospf6d/ospf6_zebra.c
ospfd/ospf_memory.c
ospfd/ospf_memory.h
ospfd/ospf_zebra.c

index a4e7af1d8bad0f4d7475dded605727cd29bcc98f..c2722a256d36388db518b8c1322821b8b3fce43b 100644 (file)
@@ -351,7 +351,7 @@ void ospf6_route_delete(struct ospf6_route *route)
 {
        if (route) {
                if (route->nh_list)
-                       list_free(route->nh_list);
+                       list_delete(route->nh_list);
                XFREE(MTYPE_OSPF6_ROUTE, route);
        }
 }
@@ -630,7 +630,7 @@ struct ospf6_route *ospf6_route_add(struct ospf6_route *route,
        if (prev || next) {
                if (IS_OSPF6_DEBUG_ROUTE(MEMORY))
                        zlog_debug(
-                               "%s %p: route add %p: another path: prev %p, next %p node lock %u",
+                               "%s %p: route add %p: another path: prev %p, next %p node refcount %u",
                                ospf6_route_table_name(table), (void *)table,
                                (void *)route, (void *)prev, (void *)next,
                                node->lock);
@@ -758,7 +758,7 @@ void ospf6_route_remove(struct ospf6_route *route,
                prefix2str(&route->prefix, buf, sizeof(buf));
 
        if (IS_OSPF6_DEBUG_ROUTE(MEMORY))
-               zlog_debug("%s %p: route remove %p: %s rnode lock %u",
+               zlog_debug("%s %p: route remove %p: %s rnode refcount %u",
                           ospf6_route_table_name(table), (void *)table,
                           (void *)route, buf, route->rnode->lock);
        else if (IS_OSPF6_DEBUG_ROUTE(TABLE))
index e7481ba7237c223906d935c0f19c108482dafa17..d33f41730e2130b9c1f0403f9f5e4b2c3476bde5 100644 (file)
@@ -214,14 +214,14 @@ static int ospf6_zebra_read_ipv6(int command, struct zclient *zclient,
        struct zapi_ipv6 api;
        unsigned long ifindex;
        struct prefix p, src_p;
-       struct in6_addr nexthop;
+       struct in6_addr *nexthop;
 
        if (ospf6 == NULL)
                return 0;
 
        s = zclient->ibuf;
        ifindex = 0;
-       memset(&nexthop, 0, sizeof(struct in6_addr));
+       nexthop = NULL;
        memset(&api, 0, sizeof(api));
 
        /* Type, flags, message. */
@@ -250,7 +250,10 @@ static int ospf6_zebra_read_ipv6(int command, struct zclient *zclient,
        /* Nexthop, ifindex, distance, metric. */
        if (CHECK_FLAG(api.message, ZAPI_MESSAGE_NEXTHOP)) {
                api.nexthop_num = stream_getc(s);
-               stream_get(&nexthop, s, IPV6_MAX_BYTELEN);
+               nexthop = (struct in6_addr *)malloc(api.nexthop_num
+                                                   * sizeof(struct in6_addr));
+               stream_get(nexthop, s,
+                          api.nexthop_num * sizeof(struct in6_addr));
        }
        if (CHECK_FLAG(api.message, ZAPI_MESSAGE_IFINDEX)) {
                api.ifindex_num = stream_getc(s);
@@ -273,9 +276,9 @@ static int ospf6_zebra_read_ipv6(int command, struct zclient *zclient,
        if (IS_OSPF6_DEBUG_ZEBRA(RECV)) {
                char prefixstr[PREFIX2STR_BUFFER], nexthopstr[128];
                prefix2str((struct prefix *)&p, prefixstr, sizeof(prefixstr));
-               if (api.nexthop_num)
-                       inet_ntop(AF_INET6, &nexthop, nexthopstr,
-                                  sizeof(nexthopstr));
+               if (nexthop)
+                       inet_ntop(AF_INET6, nexthop, nexthopstr,
+                                 sizeof(nexthopstr));
                else
                        snprintf(nexthopstr, sizeof(nexthopstr), "::");
 
@@ -289,10 +292,12 @@ static int ospf6_zebra_read_ipv6(int command, struct zclient *zclient,
 
        if (command == ZEBRA_REDISTRIBUTE_IPV6_ADD)
                ospf6_asbr_redistribute_add(api.type, ifindex, &p,
-                                           api.nexthop_num, &nexthop, api.tag);
+                                           api.nexthop_num, nexthop, api.tag);
        else
                ospf6_asbr_redistribute_remove(api.type, ifindex, &p);
 
+       if (CHECK_FLAG(api.message, ZAPI_MESSAGE_NEXTHOP))
+               free(nexthop);
 
        return 0;
 }
index 988991e35c1024b0db4c8b9d74e3163af6638e3c..cdc9b929fa1f3b3f179b82a842b532faac6a2b8c 100644 (file)
@@ -53,6 +53,3 @@ DEFINE_MTYPE(OSPFD, OSPF_IF_PARAMS, "OSPF if params")
 DEFINE_MTYPE(OSPFD, OSPF_MESSAGE, "OSPF message")
 DEFINE_MTYPE(OSPFD, OSPF_MPLS_TE, "OSPF MPLS parameters")
 DEFINE_MTYPE(OSPFD, OSPF_PCE_PARAMS, "OSPF PCE parameters")
-DEFINE_MTYPE(OSPFD, OSPF_EXTERNAL, "OSPF External route table")
-DEFINE_MTYPE(OSPFD, OSPF_REDISTRIBUTE, "OSPF Redistriute")
-
index d91cbd4111cceeb533cd0c46919d34a020ec427b..5f5960eec7cc48c01ffdd9ba047a5f587bd24335 100644 (file)
@@ -52,7 +52,5 @@ DECLARE_MTYPE(OSPF_IF_PARAMS)
 DECLARE_MTYPE(OSPF_MESSAGE)
 DECLARE_MTYPE(OSPF_MPLS_TE)
 DECLARE_MTYPE(OSPF_PCE_PARAMS)
-DECLARE_MTYPE(OSPF_EXTERNAL)
-DECLARE_MTYPE(OSPF_REDISTRIBUTE)
 
 #endif /* _QUAGGA_OSPF_MEMORY_H */
index 5839eb40ec5b27b0b305d731f1a5d6e19249cb19..ec8f1ee8524e6057511bf3c3e36c05daa77ecdac 100644 (file)
@@ -51,6 +51,9 @@
 #include "ospfd/ospf_zebra.h"
 #include "ospfd/ospf_te.h"
 
+DEFINE_MTYPE_STATIC(OSPFD, OSPF_EXTERNAL, "OSPF External route table")
+DEFINE_MTYPE_STATIC(OSPFD, OSPF_REDISTRIBUTE, "OSPF Redistriute")
+
 DEFINE_HOOK(ospf_if_update, (struct interface * ifp), (ifp))
 DEFINE_HOOK(ospf_if_delete, (struct interface * ifp), (ifp))