aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if.c
diff options
context:
space:
mode:
authorBill Fenner <fenner@FreeBSD.org>2001-04-27 22:20:22 +0000
committerBill Fenner <fenner@FreeBSD.org>2001-04-27 22:20:22 +0000
commit4f3c11a65469e0b71064bcaf87335f44f82d904b (patch)
tree2d11d6abf55dbb1588c0bf6d378a05c5f8312d00 /sys/net/if.c
parent8ed3802bb0d3ca3ec5452ae9217d38c4ede3d483 (diff)
downloadsrc-4f3c11a65469e0b71064bcaf87335f44f82d904b.tar.gz
src-4f3c11a65469e0b71064bcaf87335f44f82d904b.zip
Notes
Diffstat (limited to 'sys/net/if.c')
-rw-r--r--sys/net/if.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/net/if.c b/sys/net/if.c
index 3e0cf0e6ed01..f98d85e763a5 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -1016,8 +1016,9 @@ ifpromisc(ifp, pswitch)
{
struct ifreq ifr;
int error;
- int oldflags;
+ int oldflags, oldpcount;
+ oldpcount = ifp->if_pcount;
oldflags = ifp->if_flags;
if (pswitch) {
/*
@@ -1029,21 +1030,22 @@ ifpromisc(ifp, pswitch)
if (ifp->if_pcount++ != 0)
return (0);
ifp->if_flags |= IFF_PROMISC;
- log(LOG_INFO, "%s%d: promiscuous mode enabled\n",
- ifp->if_name, ifp->if_unit);
} else {
if (--ifp->if_pcount > 0)
return (0);
ifp->if_flags &= ~IFF_PROMISC;
- log(LOG_INFO, "%s%d: promiscuous mode disabled\n",
- ifp->if_name, ifp->if_unit);
}
ifr.ifr_flags = ifp->if_flags;
error = (*ifp->if_ioctl)(ifp, SIOCSIFFLAGS, (caddr_t)&ifr);
- if (error == 0)
+ if (error == 0) {
+ log(LOG_INFO, "%s%d: promiscuous mode %s\n",
+ ifp->if_name, ifp->if_unit,
+ (ifp->if_flags & IFF_PROMISC) ? "enabled" : "disabled");
rt_ifmsg(ifp);
- else
+ } else {
+ ifp->if_pcount = oldpcount;
ifp->if_flags = oldflags;
+ }
return error;
}