Module Name:    src
Committed By:   pgoyette
Date:           Sat Aug  6 02:35:06 UTC 2016

Modified Files:
        src/distrib/sets/lists/modules: mi
        src/sys/modules: Makefile
        src/sys/net: bsd-comp.c if_ppp.c ppp-deflate.c ppp_tty.c
Added Files:
        src/sys/modules/ppp: Makefile ppp.ioconf

Log Message:
Modularize the ppp driver, and adjust dependencies of the compressor
modules.

For now, this is still included as a built-in module in GENERIC kernels.


To generate a diff of this commit:
cvs rdiff -u -r1.87 -r1.88 src/distrib/sets/lists/modules/mi
cvs rdiff -u -r1.169 -r1.170 src/sys/modules/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/modules/ppp/Makefile \
    src/sys/modules/ppp/ppp.ioconf
cvs rdiff -u -r1.20 -r1.21 src/sys/net/bsd-comp.c
cvs rdiff -u -r1.152 -r1.153 src/sys/net/if_ppp.c
cvs rdiff -u -r1.21 -r1.22 src/sys/net/ppp-deflate.c
cvs rdiff -u -r1.61 -r1.62 src/sys/net/ppp_tty.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.87 src/distrib/sets/lists/modules/mi:1.88
--- src/distrib/sets/lists/modules/mi:1.87	Thu Aug  4 23:54:45 2016
+++ src/distrib/sets/lists/modules/mi	Sat Aug  6 02:35:05 2016
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.87 2016/08/04 23:54:45 pgoyette Exp $
+# $NetBSD: mi,v 1.88 2016/08/06 02:35:05 pgoyette Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -198,6 +198,8 @@
 ./@MODULEDIR@/pf/pf.kmod			base-kernel-modules	kmod
 ./@MODULEDIR@/portal				base-obsolete		obsolete
 ./@MODULEDIR@/portal/portal.kmod		base-obsolete		obsolete
+./@MODULEDIR@/ppp				base-kernel-modules	kmod
+./@MODULEDIR@/ppp/ppp.kmod			base-kernel-modules	kmod
 ./@MODULEDIR@/ppp_bsdcomp			base-kernel-modules	kmod
 ./@MODULEDIR@/ppp_bsdcomp/ppp_bsdcomp.kmod	base-kernel-modules	kmod
 ./@MODULEDIR@/ppp_deflate			base-kernel-modules	kmod

Index: src/sys/modules/Makefile
diff -u src/sys/modules/Makefile:1.169 src/sys/modules/Makefile:1.170
--- src/sys/modules/Makefile:1.169	Fri Aug  5 17:12:13 2016
+++ src/sys/modules/Makefile	Sat Aug  6 02:35:05 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.169 2016/08/05 17:12:13 scole Exp $
+#	$NetBSD: Makefile,v 1.170 2016/08/06 02:35:05 pgoyette Exp $
 
 .include <bsd.own.mk>
 
@@ -79,6 +79,7 @@ SUBDIR+=	opencrypto
 SUBDIR+=	overlay
 SUBDIR+=	pciverbose
 SUBDIR+=	pf
+SUBDIR+=	ppp
 SUBDIR+=	ppp_bsdcomp
 SUBDIR+=	ppp_deflate
 SUBDIR+=	procfs

Index: src/sys/net/bsd-comp.c
diff -u src/sys/net/bsd-comp.c:1.20 src/sys/net/bsd-comp.c:1.21
--- src/sys/net/bsd-comp.c:1.20	Sat Nov 29 23:15:20 2008
+++ src/sys/net/bsd-comp.c	Sat Aug  6 02:35:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: bsd-comp.c,v 1.20 2008/11/29 23:15:20 cube Exp $	*/
+/*	$NetBSD: bsd-comp.c,v 1.21 2016/08/06 02:35:06 pgoyette Exp $	*/
 /*	Id: bsd-comp.c,v 1.6 1996/08/28 06:31:58 paulus Exp 	*/
 
 /* Because this code is derived from the 4.3BSD compress source:
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bsd-comp.c,v 1.20 2008/11/29 23:15:20 cube Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bsd-comp.c,v 1.21 2016/08/06 02:35:06 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1090,7 +1090,7 @@ bsd_decompress(void *state, struct mbuf 
 #endif /* DEBUG */
 }
 
-MODULE(MODULE_CLASS_MISC, ppp_bsdcomp, NULL);
+MODULE(MODULE_CLASS_MISC, ppp_bsdcomp, "ppp");
 
 static int
 ppp_bsdcomp_modcmd(modcmd_t cmd, void *arg)

Index: src/sys/net/if_ppp.c
diff -u src/sys/net/if_ppp.c:1.152 src/sys/net/if_ppp.c:1.153
--- src/sys/net/if_ppp.c:1.152	Fri Jun 10 13:27:16 2016
+++ src/sys/net/if_ppp.c	Sat Aug  6 02:35:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ppp.c,v 1.152 2016/06/10 13:27:16 ozaki-r Exp $	*/
+/*	$NetBSD: if_ppp.c,v 1.153 2016/08/06 02:35:06 pgoyette Exp $	*/
 /*	Id: if_ppp.c,v 1.6 1997/03/04 03:33:00 paulus Exp 	*/
 
 /*
@@ -102,11 +102,10 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.152 2016/06/10 13:27:16 ozaki-r Exp $");
-
-#include "ppp.h"
+__KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1.153 2016/08/06 02:35:06 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
+#include "ppp.h"
 #include "opt_inet.h"
 #include "opt_gateway.h"
 #include "opt_ppp.h"
@@ -133,6 +132,8 @@ __KERNEL_RCSID(0, "$NetBSD: if_ppp.c,v 1
 #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>
@@ -181,6 +182,8 @@ static void	ppp_ifstart(struct ifnet *if
 
 static void	pppintr(void *);
 
+extern struct linesw ppp_disc;
+
 /*
  * Some useful mbuf macros not in mbuf.h.
  */
@@ -214,11 +217,11 @@ struct if_clone ppp_cloner =
     IF_CLONE_INITIALIZER("ppp", ppp_clone_create, ppp_clone_destroy);
 
 #ifdef PPP_COMPRESS
-ONCE_DECL(ppp_compressor_mtx_init);
 static LIST_HEAD(, compressor) ppp_compressors = { NULL };
 static kmutex_t ppp_compressors_mtx;
 
 static int ppp_compressor_init(void);
+static int ppp_compressor_destroy(void);
 static struct compressor *ppp_get_compressor(uint8_t);
 static void ppp_compressor_rele(struct compressor *);
 #endif /* PPP_COMPRESS */
@@ -230,7 +233,16 @@ static void ppp_compressor_rele(struct c
 void
 pppattach(int n __unused)
 {
-	extern struct linesw ppp_disc;
+
+	/*
+	 * Nothing to do here, initialization is handled by the
+	 * module initialization code in pppinit() below).
+	 */
+}
+
+static void
+pppinit(void)
+{
 
 	if (ttyldisc_attach(&ppp_disc) != 0)
 		panic("pppattach");
@@ -238,7 +250,18 @@ pppattach(int n __unused)
 	mutex_init(&ppp_list_lock, MUTEX_DEFAULT, IPL_NONE);
 	LIST_INIT(&ppp_softc_list);
 	if_clone_attach(&ppp_cloner);
-	RUN_ONCE(&ppp_compressor_mtx_init, ppp_compressor_init);
+}
+
+static int
+pppdetach(void)
+{
+	int error;
+
+	if (!LIST_EMPTY(&ppp_softc_list))
+		error = EBUSY;
+	if (error == 0)
+		error = ttyldisc_detach(&ppp_disc);
+	return error;
 }
 
 static struct ppp_softc *
@@ -1798,6 +1821,14 @@ ppp_compressor_init(void)
 	return 0;
 }
 
+static int
+ppp_compressor_destroy(void)
+{
+
+	mutex_destroy(&ppp_compressors_mtx);
+	return 0;
+}
+
 static void
 ppp_compressor_rele(struct compressor *cp)
 {
@@ -1865,8 +1896,6 @@ ppp_register_compressor(struct compresso
 	int error = 0;
 	size_t i;
 
-	RUN_ONCE(&ppp_compressor_mtx_init, ppp_compressor_init);
-
 	mutex_enter(&ppp_compressors_mtx);
 	for (i = 0; i < ncomp; i++) {
 		if (ppp_get_compressor_noload(pc[i].compress_proto,
@@ -1907,3 +1936,74 @@ ppp_unregister_compressor(struct compres
 
 	return error;
 }
+
+/*
+ * Module infrastructure
+ */
+
+#ifdef PPP_FILTER
+#define PPP_DEP "bpf_filter,"
+#else
+#define PPP_DEP
+#endif
+
+MODULE(MODULE_CLASS_DRIVER, ppp, PPP_DEP "slcompress");
+
+#ifdef _MODULE
+CFDRIVER_DECL(ppp, DV_IFNET, NULL);
+#endif
+
+static int
+ppp_modcmd(modcmd_t cmd, void *arg)
+{
+	int error = 0;
+
+	switch (cmd) {
+	case MODULE_CMD_INIT:
+		/* Init the compressor sub-sub-system */
+		ppp_compressor_init();
+
+#ifdef _MODULE
+		error = config_cfdriver_attach(&ppp_cd);
+		if (error) {
+			aprint_error("%s: unable to register cfdriver for"
+			    "%s, error %d\n", __func__, ppp_cd.cd_name, error);
+			ppp_compressor_destroy();
+			break;
+		}
+
+#endif
+		/* Init the unit list and line discipline stuff */
+		pppinit();
+		break;
+
+	case MODULE_CMD_FINI:
+		/*
+		 * Make sure it's ok to detach - no units left, and
+		 * line discipline is removed
+		 */
+		error = pppdetach();
+		if (error != 0)
+			break;
+#ifdef _MODULE
+		/* Remove device from autoconf database */
+		error = config_cfdriver_detach(&ppp_cd);
+		if (error) {
+			aprint_error("%s: failed to detach %s cfdriver, "
+			    "error %d\n", __func__, ppp_cd.cd_name, error);
+			break;
+		}
+#endif
+		ppp_compressor_destroy();
+		break;
+
+	case MODULE_CMD_STAT:
+		error = ENOTTY;
+		break;
+	default:
+		error = ENOTTY;
+		break;
+	}
+
+	return error;
+}

Index: src/sys/net/ppp-deflate.c
diff -u src/sys/net/ppp-deflate.c:1.21 src/sys/net/ppp-deflate.c:1.22
--- src/sys/net/ppp-deflate.c:1.21	Tue Apr  5 23:44:05 2016
+++ src/sys/net/ppp-deflate.c	Sat Aug  6 02:35:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: ppp-deflate.c,v 1.21 2016/04/05 23:44:05 pgoyette Exp $	*/
+/*	$NetBSD: ppp-deflate.c,v 1.22 2016/08/06 02:35:06 pgoyette Exp $	*/
 /*	Id: ppp-deflate.c,v 1.5 1997/03/04 03:33:28 paulus Exp 	*/
 
 /*
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ppp-deflate.c,v 1.21 2016/04/05 23:44:05 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ppp-deflate.c,v 1.22 2016/08/06 02:35:06 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -664,7 +664,7 @@ z_incomp(void *arg, struct mbuf *mi)
     state->stats.unc_packets++;
 }
 
-MODULE(MODULE_CLASS_MISC, ppp_deflate, "zlib");
+MODULE(MODULE_CLASS_MISC, ppp_deflate, "zlib,ppp");
 
 static int
 ppp_deflate_modcmd(modcmd_t cmd, void *arg)

Index: src/sys/net/ppp_tty.c
diff -u src/sys/net/ppp_tty.c:1.61 src/sys/net/ppp_tty.c:1.62
--- src/sys/net/ppp_tty.c:1.61	Mon Jun 20 06:46:37 2016
+++ src/sys/net/ppp_tty.c	Sat Aug  6 02:35:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: ppp_tty.c,v 1.61 2016/06/20 06:46:37 knakahara Exp $	*/
+/*	$NetBSD: ppp_tty.c,v 1.62 2016/08/06 02:35:06 pgoyette Exp $	*/
 /*	Id: ppp_tty.c,v 1.3 1996/07/01 01:04:11 paulus Exp 	*/
 
 /*
@@ -93,11 +93,10 @@
 /* from NetBSD: if_ppp.c,v 1.15.2.2 1994/07/28 05:17:58 cgd Exp */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ppp_tty.c,v 1.61 2016/06/20 06:46:37 knakahara Exp $");
-
-#include "ppp.h"
+__KERNEL_RCSID(0, "$NetBSD: ppp_tty.c,v 1.62 2016/08/06 02:35:06 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
+#include "ppp.h"
 #include "opt_ppp.h"
 #endif
 #define VJC

Added files:

Index: src/sys/modules/ppp/Makefile
diff -u /dev/null src/sys/modules/ppp/Makefile:1.1
--- /dev/null	Sat Aug  6 02:35:06 2016
+++ src/sys/modules/ppp/Makefile	Sat Aug  6 02:35:05 2016
@@ -0,0 +1,16 @@
+# $NetBSD: Makefile,v 1.1 2016/08/06 02:35:05 pgoyette Exp $
+
+.include "../Makefile.inc"
+
+.PATH:  ${S}/net
+
+KMOD=		ppp
+IOCONF=		ppp.ioconf
+SRCS=		if_ppp.c ppp_tty.c
+
+CPPFLAGS+=	-DINET
+CPPFLAGS+=	-DPPP_FILTER
+CPPFLAGS+=	-DPPP_DEFLATE
+CPPFLAGS+=	-DPPP_BSDCOMP
+
+.include <bsd.kmodule.mk>
Index: src/sys/modules/ppp/ppp.ioconf
diff -u /dev/null src/sys/modules/ppp/ppp.ioconf:1.1
--- /dev/null	Sat Aug  6 02:35:06 2016
+++ src/sys/modules/ppp/ppp.ioconf	Sat Aug  6 02:35:05 2016
@@ -0,0 +1,7 @@
+#	$NetBSD: ppp.ioconf,v 1.1 2016/08/06 02:35:05 pgoyette Exp $
+
+ioconf		ppp
+
+include		"conf/files"
+
+pseudo-device   ppp

Reply via email to