diff options
Diffstat (limited to 'sys/net')
-rw-r--r-- | sys/net/if.c | 11 | ||||
-rw-r--r-- | sys/net/if.h | 5 |
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/net/if.c b/sys/net/if.c index e91445e..3021562 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)if.c 8.3 (Berkeley) 1/4/94 - * $Id: if.c,v 1.69 1999/04/27 11:16:56 phk Exp $ + * $Id: if.c,v 1.70 1999/04/28 11:37:32 phk Exp $ */ #include "opt_compat.h" @@ -639,12 +639,15 @@ ifioctl(so, cmd, data, p) if (error) return (error); ifr->ifr_prevflags = ifp->if_flags; - if (ifp->if_flags & IFF_UP && (ifr->ifr_flags & IFF_UP) == 0) { + if (ifp->if_flags & IFF_SMART) { + /* Smart drivers twiddle their own routes */ + } else if ((ifp->if_flags & IFF_UP && + (ifr->ifr_flags & IFF_UP) == 0) { int s = splimp(); if_down(ifp); splx(s); - } - if (ifr->ifr_flags & IFF_UP && (ifp->if_flags & IFF_UP) == 0) { + } else if (ifr->ifr_flags & IFF_UP && + (ifp->if_flags & IFF_UP) == 0) { int s = splimp(); if_up(ifp); splx(s); diff --git a/sys/net/if.h b/sys/net/if.h index f0fa46c..a639bc2 100644 --- a/sys/net/if.h +++ b/sys/net/if.h @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)if.h 8.1 (Berkeley) 6/10/93 - * $Id: if.h,v 1.51 1999/04/28 11:37:33 phk Exp $ + * $Id: if.h,v 1.52 1999/05/08 07:00:04 phk Exp $ */ #ifndef _NET_IF_H_ @@ -82,6 +82,7 @@ struct if_data { #define IFF_DEBUG 0x4 /* turn on debugging */ #define IFF_LOOPBACK 0x8 /* is a loopback net */ #define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */ +#define IFF_SMART 0x20 /* interface manages own routes */ #define IFF_RUNNING 0x40 /* resources allocated */ #define IFF_NOARP 0x80 /* no address resolution protocol */ #define IFF_PROMISC 0x100 /* receive all packets */ @@ -97,7 +98,7 @@ struct if_data { /* flags set internally only: */ #define IFF_CANTCHANGE \ (IFF_BROADCAST|IFF_POINTOPOINT|IFF_RUNNING|IFF_OACTIVE|\ - IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI) + IFF_SIMPLEX|IFF_MULTICAST|IFF_ALLMULTI|IFF_SMART) #define IFQ_MAXLEN 50 #define IFNET_SLOWHZ 1 /* granularity is 1 second */ |