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>
This commit is contained in:
parent
cdaf725a9b
commit
f1cbce63ec
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=67560
6 changed files with 75 additions and 15 deletions
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
PORTNAME= zebra
|
PORTNAME= zebra
|
||||||
PORTVERSION= 0.93b
|
PORTVERSION= 0.93b
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= net ipv6
|
CATEGORIES= net ipv6
|
||||||
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
||||||
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
--- zebra/ioctl.c.orig Wed Dec 12 18:02:16 2001
|
|
||||||
+++ zebra/ioctl.c Wed Dec 12 18:02:30 2001
|
$FreeBSD$
|
||||||
@@ -478,6 +478,9 @@
|
|
||||||
|
--- zebra/ioctl.c.orig Tue Oct 23 11:31:29 2001
|
||||||
|
+++ zebra/ioctl.c Fri Oct 4 19:45:04 2002
|
||||||
|
@@ -349,6 +349,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -371,6 +372,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -473,6 +475,9 @@
|
||||||
mask.sin6_len = sizeof (struct sockaddr_in6);
|
mask.sin6_len = sizeof (struct sockaddr_in6);
|
||||||
#endif
|
#endif
|
||||||
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
||||||
|
@ -8,5 +27,5 @@
|
||||||
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
||||||
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
||||||
|
|
||||||
ret = if_ioctl_ipv6 (SIOCAIFADDR_IN6, (caddr_t) &addreq);
|
addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
|
||||||
if (ret < 0)
|
addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
PORTNAME= zebra
|
PORTNAME= zebra
|
||||||
PORTVERSION= 0.93b
|
PORTVERSION= 0.93b
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= net ipv6
|
CATEGORIES= net ipv6
|
||||||
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
||||||
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
--- zebra/ioctl.c.orig Wed Dec 12 18:02:16 2001
|
|
||||||
+++ zebra/ioctl.c Wed Dec 12 18:02:30 2001
|
$FreeBSD$
|
||||||
@@ -478,6 +478,9 @@
|
|
||||||
|
--- zebra/ioctl.c.orig Tue Oct 23 11:31:29 2001
|
||||||
|
+++ zebra/ioctl.c Fri Oct 4 19:45:04 2002
|
||||||
|
@@ -349,6 +349,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -371,6 +372,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -473,6 +475,9 @@
|
||||||
mask.sin6_len = sizeof (struct sockaddr_in6);
|
mask.sin6_len = sizeof (struct sockaddr_in6);
|
||||||
#endif
|
#endif
|
||||||
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
||||||
|
@ -8,5 +27,5 @@
|
||||||
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
||||||
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
||||||
|
|
||||||
ret = if_ioctl_ipv6 (SIOCAIFADDR_IN6, (caddr_t) &addreq);
|
addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
|
||||||
if (ret < 0)
|
addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
PORTNAME= zebra
|
PORTNAME= zebra
|
||||||
PORTVERSION= 0.93b
|
PORTVERSION= 0.93b
|
||||||
|
PORTREVISION= 1
|
||||||
CATEGORIES= net ipv6
|
CATEGORIES= net ipv6
|
||||||
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
MASTER_SITES= ftp://ftp.zebra.org/pub/zebra/ \
|
||||||
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
ftp://ftp.ripe.net/mirrors/sites/ftp.zebra.org/pub/zebra/ \
|
||||||
|
|
|
@ -1,6 +1,25 @@
|
||||||
--- zebra/ioctl.c.orig Wed Dec 12 18:02:16 2001
|
|
||||||
+++ zebra/ioctl.c Wed Dec 12 18:02:30 2001
|
$FreeBSD$
|
||||||
@@ -478,6 +478,9 @@
|
|
||||||
|
--- zebra/ioctl.c.orig Tue Oct 23 11:31:29 2001
|
||||||
|
+++ zebra/ioctl.c Fri Oct 4 19:45:04 2002
|
||||||
|
@@ -349,6 +349,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -371,6 +372,7 @@
|
||||||
|
int ret;
|
||||||
|
struct ifreq ifreq;
|
||||||
|
|
||||||
|
+ bzero(&ifreq, sizeof(struct ifreq));
|
||||||
|
ifreq_set_name (&ifreq, ifp);
|
||||||
|
|
||||||
|
ifreq.ifr_flags = ifp->flags;
|
||||||
|
@@ -473,6 +475,9 @@
|
||||||
mask.sin6_len = sizeof (struct sockaddr_in6);
|
mask.sin6_len = sizeof (struct sockaddr_in6);
|
||||||
#endif
|
#endif
|
||||||
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
memcpy (&addreq.ifra_prefixmask, &mask, sizeof (struct sockaddr_in6));
|
||||||
|
@ -8,5 +27,5 @@
|
||||||
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_vltime = 0xffffffff;
|
||||||
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
+ addreq.ifra_lifetime.ia6t_pltime = 0xffffffff;
|
||||||
|
|
||||||
ret = if_ioctl_ipv6 (SIOCAIFADDR_IN6, (caddr_t) &addreq);
|
addreq.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
|
||||||
if (ret < 0)
|
addreq.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
|
||||||
|
|
Loading…
Reference in a new issue