bgpd: store nexthop info for redistributed IPV6 routes

BGP was ignoring nexthop info for static and other redistributed
routes for IPv6.  Build extra attribute info to store the nexthop.
See also:
  https://bugzilla.vyatta.com/show_bug.cgi?id=6073
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index f3baeee..d7af349 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -281,7 +281,8 @@
 		     inet_ntop(AF_INET, &nexthop, buf[1], sizeof(buf[1])),
 		     api.metric);
 	}
-      bgp_redistribute_add((struct prefix *)&p, &nexthop, api.metric, api.type);
+      bgp_redistribute_add((struct prefix *)&p, &nexthop, NULL,
+			   api.metric, api.type);
     }
   else
     {
@@ -356,23 +357,29 @@
     {
       if (BGP_DEBUG(zebra, ZEBRA))
 	{
-	  char buf[INET6_ADDRSTRLEN];
-	  zlog_debug("Zebra rcvd: IPv6 route add %s %s/%d metric %u",
+	  char buf[2][INET6_ADDRSTRLEN];
+	  zlog_debug("Zebra rcvd: IPv6 route add %s %s/%d nexthop %s metric %u",
 		     zebra_route_string(api.type),
-		     inet_ntop(AF_INET6, &p.prefix, buf, sizeof(buf)),
-		     p.prefixlen, api.metric);
+		     inet_ntop(AF_INET6, &p.prefix, buf[0], sizeof(buf[0])),
+		     p.prefixlen,
+		     inet_ntop(AF_INET, &nexthop, buf[1], sizeof(buf[1])),
+		     api.metric);
 	}
-      bgp_redistribute_add ((struct prefix *)&p, NULL, api.metric, api.type);
+      bgp_redistribute_add ((struct prefix *)&p, NULL, &nexthop,
+			    api.metric, api.type);
     }
   else
     {
       if (BGP_DEBUG(zebra, ZEBRA))
 	{
-	  char buf[INET6_ADDRSTRLEN];
-	  zlog_debug("Zebra rcvd: IPv6 route delete %s %s/%d metric %u",
+	  char buf[2][INET6_ADDRSTRLEN];
+	  zlog_debug("Zebra rcvd: IPv6 route delete %s %s/%d "
+		     "nexthop %s metric %u",
 		     zebra_route_string(api.type),
-		     inet_ntop(AF_INET6, &p.prefix, buf, sizeof(buf)),
-		     p.prefixlen, api.metric);
+		     inet_ntop(AF_INET6, &p.prefix, buf[0], sizeof(buf[0])),
+		     p.prefixlen,
+		     inet_ntop(AF_INET6, &nexthop, buf[1], sizeof(buf[1])),
+		     api.metric);
 	}
       bgp_redistribute_delete ((struct prefix *) &p, api.type);
     }