diff options
Diffstat (limited to 'sys/net/if_disc.c')
-rw-r--r-- | sys/net/if_disc.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/sys/net/if_disc.c b/sys/net/if_disc.c index 66bd5f8..7573112 100644 --- a/sys/net/if_disc.c +++ b/sys/net/if_disc.c @@ -42,6 +42,7 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> +#include <sys/module.h> #include <sys/mbuf.h> #include <sys/socket.h> #include <sys/sockio.h> @@ -60,8 +61,7 @@ #define DSMTU 65532 #endif -static void discattach __P((void *dummy)); -PSEUDO_SET(discattach, if_disc); +static void discattach __P((void)); static struct ifnet discif; static int discoutput(struct ifnet *, struct mbuf *, struct sockaddr *, @@ -71,8 +71,7 @@ static int discioctl(struct ifnet *, u_long, caddr_t); /* ARGSUSED */ static void -discattach(dummy) - void *dummy; +discattach() { register struct ifnet *ifp = &discif; @@ -90,6 +89,28 @@ discattach(dummy) } static int +disc_modevent(module_t mod, int type, void *data) +{ + switch (type) { + case MOD_LOAD: + discattach(); + break; + case MOD_UNLOAD: + printf("if_disc module unload - not possible for this module type\n"); + return EINVAL; + } + return 0; +} + +static moduledata_t disc_mod = { + "if_disc", + disc_modevent, + NULL +}; + +DECLARE_MODULE(if_disc, disc_mod, SI_SUB_PSEUDO, SI_ORDER_ANY); + +static int discoutput(ifp, m, dst, rt) struct ifnet *ifp; register struct mbuf *m; |