2003-06-12 Paul Jakma <paul@dishone.st>

	* zebra/ioctl.c: Properly zero-out struct ifreq before passing it
          to the SIOCSIFFLAGS ioctl(2), so that it doesn't
          occasionally trigger promisc mode on interface.
          Reported/tested by:	Vladimir B. Grebenschikov <vova@sw.ru>

          (patch snarfed taken from FreeBSD ports)
diff --git a/zebra/ioctl.c b/zebra/ioctl.c
index f8e7f22..1a682e2 100644
--- a/zebra/ioctl.c
+++ b/zebra/ioctl.c
@@ -364,6 +364,7 @@
   int ret;
   struct ifreq ifreq;
 
+  bzero(&ifreq, sizeof(struct ifreq));
   ifreq_set_name (&ifreq, ifp);
 
   ifreq.ifr_flags = ifp->flags;
@@ -386,6 +387,7 @@
   int ret;
   struct ifreq ifreq;
 
+  bzero(&ifreq, sizeof(struct ifreq));
   ifreq_set_name (&ifreq, ifp);
 
   ifreq.ifr_flags = ifp->flags;
@@ -488,6 +490,9 @@
   mask.sin6_len = sizeof (struct sockaddr_in6);
 #endif
   memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
+
+  addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
+  addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
   
 #ifdef HAVE_IFRA_LIFETIME 
   addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;