From: Gilad Arnold <gilad.arnold@terayon.com>
Subject: [zebra 19084] Re: suspected memory leakage upon static route

I believe this is a more complete patch, it also addresses
allocating/freeing of nexthop->ifname string buffer (1) using
XSTRDUP/XFREE macros (thus correctly updating memory statistics), and
(2) for all nexthop->type cases that carry an ifname string.
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index f3b9fd6..1c38190 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -187,8 +187,8 @@
 void
 nexthop_free (struct nexthop *nexthop)
 {
-  if (nexthop->type == NEXTHOP_TYPE_IFNAME && nexthop->ifname)
-    free (nexthop->ifname);
+  if (nexthop->ifname)
+    XFREE (0, nexthop->ifname);
   XFREE (MTYPE_NEXTHOP, nexthop);
 }
 
@@ -215,7 +215,7 @@
   nexthop = XMALLOC (MTYPE_NEXTHOP, sizeof (struct nexthop));
   memset (nexthop, 0, sizeof (struct nexthop));
   nexthop->type = NEXTHOP_TYPE_IFNAME;
-  nexthop->ifname = strdup (ifname);
+  nexthop->ifname = XSTRDUP (0, ifname);
 
   nexthop_add (rib, nexthop);