diff options
author | Bill Fenner <fenner@FreeBSD.org> | 2001-04-27 22:20:22 +0000 |
---|---|---|
committer | Bill Fenner <fenner@FreeBSD.org> | 2001-04-27 22:20:22 +0000 |
commit | 4f3c11a65469e0b71064bcaf87335f44f82d904b (patch) | |
tree | 2d11d6abf55dbb1588c0bf6d378a05c5f8312d00 /sys/net/if.c | |
parent | 8ed3802bb0d3ca3ec5452ae9217d38c4ede3d483 (diff) | |
download | src-4f3c11a65469e0b71064bcaf87335f44f82d904b.tar.gz src-4f3c11a65469e0b71064bcaf87335f44f82d904b.zip |
Notes
Diffstat (limited to 'sys/net/if.c')
-rw-r--r-- | sys/net/if.c | 16 |
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; } |