Module Name: src Committed By: pgoyette Date: Sat Aug 6 23:46:30 UTC 2016
Modified Files: src/distrib/sets/lists/modules: mi src/sys/modules: Makefile src/sys/net: if_pppoe.c Added Files: src/sys/modules/if_pppoe: Makefile pppoe.ioconf Log Message: Modularize the pppoe driver To generate a diff of this commit: cvs rdiff -u -r1.91 -r1.92 src/distrib/sets/lists/modules/mi cvs rdiff -u -r1.173 -r1.174 src/sys/modules/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/if_pppoe/Makefile \ src/sys/modules/if_pppoe/pppoe.ioconf cvs rdiff -u -r1.111 -r1.112 src/sys/net/if_pppoe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/modules/mi diff -u src/distrib/sets/lists/modules/mi:1.91 src/distrib/sets/lists/modules/mi:1.92 --- src/distrib/sets/lists/modules/mi:1.91 Sat Aug 6 22:03:45 2016 +++ src/distrib/sets/lists/modules/mi Sat Aug 6 23:46:30 2016 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.91 2016/08/06 22:03:45 pgoyette Exp $ +# $NetBSD: mi,v 1.92 2016/08/06 23:46:30 pgoyette Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -128,6 +128,8 @@ ./@MODULEDIR@/if_npflog/if_npflog.kmod base-kernel-modules kmod ./@MODULEDIR@/if_ppp base-kernel-modules kmod ./@MODULEDIR@/if_ppp/if_ppp.kmod base-kernel-modules kmod +./@MODULEDIR@/if_pppoe base-kernel-modules kmod +./@MODULEDIR@/if_pppoe/if_pppoe.kmod base-kernel-modules kmod ./@MODULEDIR@/if_sl base-kernel-modules kmod ./@MODULEDIR@/if_sl/if_sl.kmod base-kernel-modules kmod ./@MODULEDIR@/if_smsc base-kernel-modules kmod Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.173 src/sys/modules/Makefile:1.174 --- src/sys/modules/Makefile:1.173 Sat Aug 6 22:03:45 2016 +++ src/sys/modules/Makefile Sat Aug 6 23:46:30 2016 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.173 2016/08/06 22:03:45 pgoyette Exp $ +# $NetBSD: Makefile,v 1.174 2016/08/06 23:46:30 pgoyette Exp $ .include <bsd.own.mk> @@ -49,6 +49,7 @@ SUBDIR+= if_axe SUBDIR+= if_axen SUBDIR+= if_npflog SUBDIR+= if_ppp +SUBDIR+= if_pppoe SUBDIR+= if_sl SUBDIR+= if_smsc SUBDIR+= if_strip Index: src/sys/net/if_pppoe.c diff -u src/sys/net/if_pppoe.c:1.111 src/sys/net/if_pppoe.c:1.112 --- src/sys/net/if_pppoe.c:1.111 Thu Jul 7 06:55:43 2016 +++ src/sys/net/if_pppoe.c Sat Aug 6 23:46:30 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: if_pppoe.c,v 1.111 2016/07/07 06:55:43 msaitoh Exp $ */ +/* $NetBSD: if_pppoe.c,v 1.112 2016/08/06 23:46:30 pgoyette Exp $ */ /*- * Copyright (c) 2002, 2008 The NetBSD Foundation, Inc. @@ -30,11 +30,10 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.111 2016/07/07 06:55:43 msaitoh Exp $"); - -#include "pppoe.h" +__KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v 1.112 2016/08/06 23:46:30 pgoyette Exp $"); #ifdef _KERNEL_OPT +#include "pppoe.h" #include "opt_pppoe.h" #endif @@ -50,6 +49,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_pppoe.c,v #include <sys/kauth.h> #include <sys/intr.h> #include <sys/socketvar.h> +#include <sys/device.h> +#include <sys/module.h> #include <net/if.h> #include <net/if_types.h> @@ -210,6 +211,17 @@ static struct if_clone pppoe_cloner = void pppoeattach(int count) { + + /* + * Nothing to do here - all initialization happens as part + * of module init. + */ +} + +static void +pppoeinit(void) +{ + LIST_INIT(&pppoe_softc_list); if_clone_attach(&pppoe_cloner); @@ -218,6 +230,16 @@ pppoeattach(int count) } static int +pppoedetach(void) +{ + + softint_disestablish(pppoe_softintr); + if_clone_detach(&pppoe_cloner); + + return 0; +} + +static int pppoe_clone_create(struct if_clone *ifc, int unit) { struct pppoe_softc *sc; @@ -1622,3 +1644,61 @@ pppoedisc_input(struct ifnet *ifp, struc pppoe_enqueue(&ppoediscinq, m); return; } + +/* + * Module glue + */ +MODULE(MODULE_CLASS_DRIVER, if_pppoe, "sppp_subr"); + +#ifdef _MODULE +CFDRIVER_DECL(pppoe, DV_IFNET, NULL); +#endif + +static int +if_pppoe_modcmd(modcmd_t cmd, void *arg) +{ + int error = 0; + + switch (cmd) { + case MODULE_CMD_INIT: +#ifdef _MODULE + error = config_cfdriver_attach(&pppoe_cd); + if (error) { + aprint_error("%s: unable to register cfdriver for" + "%s, error %d\n", __func__, pppoe_cd.cd_name, + error); + break; + } +#endif + /* Init the cloner etc. */ + pppoeinit(); + break; + + case MODULE_CMD_FINI: + /* + * Make sure it's ok to detach - no units left, and + * line discipline is removed + */ + if (!LIST_EMPTY(&pppoe_softc_list)) { + error = EBUSY; + break; + } + if ((error = pppoedetach()) != 0) + break; +#ifdef _MODULE + /* Remove device from autoconf database */ + if ((error = config_cfdriver_detach(&pppoe_cd)) != 0) { + aprint_error("%s: failed to detach %s cfdriver, error " + "%d\n", __func__, pppoe_cd.cd_name, error); + break; + } +#endif + break; + case MODULE_CMD_STAT: + case MODULE_CMD_AUTOUNLOAD: + default: + error = ENOTTY; + } + return error; +} + Added files: Index: src/sys/modules/if_pppoe/Makefile diff -u /dev/null src/sys/modules/if_pppoe/Makefile:1.1 --- /dev/null Sat Aug 6 23:46:30 2016 +++ src/sys/modules/if_pppoe/Makefile Sat Aug 6 23:46:30 2016 @@ -0,0 +1,15 @@ +# $NetBSD: Makefile,v 1.1 2016/08/06 23:46:30 pgoyette Exp $ + +.include "../Makefile.inc" + +.PATH: ${S}/net + +KMOD= if_pppoe +IOCONF= pppoe.ioconf +SRCS= if_pppoe.c + +CPPFLAGS+= -DPPPOE_SERVER +#CPPFLAGS+= -DPPPOE_TERM_UNKNOWN_SESSIONS # This should not be + # enabled by default + +.include <bsd.kmodule.mk> Index: src/sys/modules/if_pppoe/pppoe.ioconf diff -u /dev/null src/sys/modules/if_pppoe/pppoe.ioconf:1.1 --- /dev/null Sat Aug 6 23:46:30 2016 +++ src/sys/modules/if_pppoe/pppoe.ioconf Sat Aug 6 23:46:30 2016 @@ -0,0 +1,7 @@ +# $NetBSD: pppoe.ioconf,v 1.1 2016/08/06 23:46:30 pgoyette Exp $ + +ioconf pppoe + +include "conf/files" + +pseudo-device pppoe