Generalize the if_up() and if_down() functions under the names

if_route() and if_unroute().

This is first step towards sanitizing IFF_UP and IFF_RUNNING
This commit is contained in:
Poul-Henning Kamp 1998-12-16 18:30:43 +00:00
parent 0b6205feca
commit e8c2601dbf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=41879
2 changed files with 44 additions and 17 deletions

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)if.c 8.3 (Berkeley) 1/4/94
* $Id: if.c,v 1.62 1998/08/12 22:51:59 wpaul Exp $
* $Id: if.c,v 1.63 1998/12/04 22:54:52 archie Exp $
*/
#include "opt_compat.h"
@ -401,20 +401,54 @@ link_rtrequest(cmd, rt, sa)
* NOTE: must be called at splnet or eqivalent.
*/
void
if_down(ifp)
if_unroute(ifp, flag, fam)
register struct ifnet *ifp;
int flag, fam;
{
register struct ifaddr *ifa;
ifp->if_flags &= ~IFF_UP;
ifp->if_flags &= ~flag;
getmicrotime(&ifp->if_lastchange);
for (ifa = ifp->if_addrhead.tqh_first; ifa;
ifa = ifa->ifa_link.tqe_next)
pfctlinput(PRC_IFDOWN, ifa->ifa_addr);
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link)
if (fam == PF_UNSPEC || (fam == ifa->ifa_addr->sa_family))
pfctlinput(PRC_IFDOWN, ifa->ifa_addr);
if_qflush(&ifp->if_snd);
rt_ifmsg(ifp);
}
/*
* Mark an interface up and notify protocols of
* the transition.
* NOTE: must be called at splnet or eqivalent.
*/
void
if_route(ifp, flag, fam)
register struct ifnet *ifp;
int flag, fam;
{
register struct ifaddr *ifa;
ifp->if_flags |= flag;
getmicrotime(&ifp->if_lastchange);
TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link)
if (fam == PF_UNSPEC || (fam == ifa->ifa_addr->sa_family))
pfctlinput(PRC_IFUP, ifa->ifa_addr);
rt_ifmsg(ifp);
}
/*
* Mark an interface down and notify protocols of
* the transition.
* NOTE: must be called at splnet or eqivalent.
*/
void
if_down(ifp)
register struct ifnet *ifp;
{
if_unroute(ifp, IFF_UP, AF_UNSPEC);
}
/*
* Mark an interface up and notify protocols of
* the transition.
@ -424,14 +458,8 @@ void
if_up(ifp)
register struct ifnet *ifp;
{
register struct ifaddr *ifa;
ifp->if_flags |= IFF_UP;
getmicrotime(&ifp->if_lastchange);
for (ifa = ifp->if_addrhead.tqh_first; ifa;
ifa = ifa->ifa_link.tqe_next)
pfctlinput(PRC_IFUP, ifa->ifa_addr);
rt_ifmsg(ifp);
if_route(ifp, IFF_UP, AF_UNSPEC);
}
/*

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* From: @(#)if.h 8.1 (Berkeley) 6/10/93
* $Id: if_var.h,v 1.8 1998/06/07 17:12:06 dfr Exp $
* $Id: if_var.h,v 1.9 1998/06/12 03:48:09 julian Exp $
*/
#ifndef _NET_IF_VAR_H_
@ -300,10 +300,9 @@ int if_allmulti __P((struct ifnet *, int));
void if_attach __P((struct ifnet *));
int if_delmulti __P((struct ifnet *, struct sockaddr *));
void if_down __P((struct ifnet *));
void if_route __P((struct ifnet *, int flag, int fam));
void if_unroute __P((struct ifnet *, int flag, int fam));
void if_up __P((struct ifnet *));
#ifdef vax
void ifubareset __P((int));
#endif
/*void ifinit __P((void));*/ /* declared in systm.h for main() */
int ifioctl __P((struct socket *, u_long, caddr_t, struct proc *));
int ifpromisc __P((struct ifnet *, int));