cvs commit: src/sys/net if.c if.h if_var.h rtsock.c
rwatson at FreeBSD.org
Tue Aug 9 10:16:18 GMT 2005
rwatson 2005-08-09 10:16:17 UTC
FreeBSD src repository
sys/net if.c if.h if_var.h rtsock.c
Rename IFF_RUNNING to IFF_DRV_RUNNING, IFF_OACTIVE to IFF_DRV_OACTIVE,
and move both flags from ifnet.if_flags to ifnet.if_drv_flags, making
and documenting the locking of these flags the responsibility of the
device driver, not the network stack. The flags for these two fields
will be mutually exclusive so that they can be exposed to user space as
though they were stored in the same variable.
Provide #defines to provide the old names #ifndef _KERNEL, so that user
applications (such as ifconfig) can use the old flag names. Using the
old names in a device driver will result in a compile error in order to
help device driver writers adopt the new model.
When exposing the interface flags to user space, via interface ioctls
or routing sockets, or the two fields together. Since the driver flags
cannot currently be set for user space, no new logic is currently
required to handle this case.
Add some assertions that general purpose network stack routines, such
as if_setflags(), are not improperly used on driver-owned flags.
With this change, a large number of very minor network stack races are
closed, subject to correct device driver locking. Most were likely
Driver sweep to follow; many thanks to pjd and bz for the line-by-line
review they gave this patch.
Reviewed by: pjd, bz
MFC after: 7 days
Revision Changes Path
1.242 +19 -5 src/sys/net/if.c
1.97 +28 -3 src/sys/net/if.h
1.102 +5 -1 src/sys/net/if_var.h
1.125 +3 -2 src/sys/net/rtsock.c
More information about the cvs-all