diff options
author | paul <paul> | 2003-06-12 02:13:45 +0000 |
---|---|---|
committer | paul <paul> | 2003-06-12 02:13:45 +0000 |
commit | 1b4fb9f48c9afb705e5206de0dc5a7f20915f0ed (patch) | |
tree | d14a157eaf17fafe130614c9ae15967702a12c49 | |
parent | 31f2cbaf7a83531b35e5a87a42fde4ebc9e074bf (diff) | |
download | quagga-1b4fb9f48c9afb705e5206de0dc5a7f20915f0ed.tar.bz2 quagga-1b4fb9f48c9afb705e5206de0dc5a7f20915f0ed.tar.xz |
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)
-rw-r--r-- | zebra/ioctl.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/zebra/ioctl.c b/zebra/ioctl.c index f8e7f22b..1a682e27 100644 --- a/zebra/ioctl.c +++ b/zebra/ioctl.c @@ -364,6 +364,7 @@ if_set_flags (struct interface *ifp, unsigned long flags) int ret; struct ifreq ifreq; + bzero(&ifreq, sizeof(struct ifreq)); ifreq_set_name (&ifreq, ifp); ifreq.ifr_flags = ifp->flags; @@ -386,6 +387,7 @@ if_unset_flags (struct interface *ifp, unsigned long flags) int ret; struct ifreq ifreq; + bzero(&ifreq, sizeof(struct ifreq)); ifreq_set_name (&ifreq, ifp); ifreq.ifr_flags = ifp->flags; @@ -488,6 +490,9 @@ if_prefix_add_ipv6 (struct interface *ifp, struct connected *ifc) 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; |