summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if.c11
-rw-r--r--sys/net/if.h5
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 */
OpenPOWER on IntegriCloud