[JNPR] Network stack as a module (RFC)

Adrian Chadd adrian at freebsd.org
Sat Nov 16 02:03:08 UTC 2013


We can't commit it with 'netstack' against all of the drivers.

I think the default should be "assume freebsd's networking stack" and
if someone disables that option, the drivers just won't link. Thus,
someone compiling FreeBSD without netstack shouldn't be compiling
GENERIC - they would be compiling a custom kernel with their own
device stuff.


On 15 November 2013 13:52, Steve Kiernan <stevek at juniper.net> wrote:
> This is a follow up to the request sent back in January titled "Proposal for changes to network device drivers and network stack".
> In order to make it easier to review, we will be submitting pieces to be contributed in logical blocks.
> Please review the following patch and provide feedback:
> http://people.freebsd.org/~marcel/Juniper/201311/netstack-option.diff
> The details of this patch are as follows (and what is suggested for the commit log):
> Add a NETSTACK option to facilitate separating network stack pieces from the
> rest of the OS core. This is the first step towards having the network stack
> as a module.
> In order to be able to build without the NETSTACK option enabled, the following
> changes are also required and included with this commit:
> * Add 'optional netstack' to source files that should be considered part of the
>   network stack, including drivers
> * Dynamically register the setfib syscall
>   - this eliminates the need of an #Ifdef NETSTACK in kern/syscalls.master and
>     will be necessary when the network stack is a module
> * Add #ifdef NETSTACK for the following sections of kernel:
>   In linprocfs - the proc/net nodes
>   In the Linuxulator - linux_ioctl_socket and callers
>   In SVR4 compat layer - STREAMS support, socket ioctls, and networking related
>       system calls (getmsg, putmsg, recv, send, sendto)
>   In kern/sys_socket.c - interface/routing/protocol specific ioctls are no
>       longer called in the default case when NETSTACK is not defined, return
>       ENXIO in that case
>   In kern/uipc_socket.c - SO_SETFIB socket option
>   In kern/vfs_init.c - vfs_checkexp should not be set to vfs_stdcheckexp when
>       NETSTACK is not defined
>   In kern/vfs_mount.c - all export-related code
>   In usb device driver - USB_HAVE_PF needs to be defined to 0 in the case of
>       no NETSTACK option
> Please note that these NETSTACK checks above will end up being removed as
> pieces of the network stack as a module functionality are added.
> To verify building without the NETSTACK option, the LINT-NONETSTACK kernel
> has been added to makeLINT.mk
> --
> Stephen J. Kiernan
> Juniper Networks, Inc.
> stevek_at_juniper.net
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"

More information about the freebsd-net mailing list