$NetBSD: patch-df,v 1.1.1.1 1999/10/08 04:34:43 dbj Exp $ --- /dev/null Sat Sep 18 11:13:03 1999 +++ netbsd-1.4/lkm_ppp.c Sat Sep 18 11:16:47 1999 @@ -0,0 +1,94 @@ +/* NetBSD */ +/* + * Copyright (c) 1999 Darrin B. Jewell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Darrin B. Jewell + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include + +#include +#include + +void pppattach __P((void)); +int pppopen __P((dev_t dev, struct tty *tp)); +int pppclose __P((struct tty *tp, int flags)); +int ppptioctl __P((struct tty *tp, u_long cmd, caddr_t data, + int flag, struct proc *p)); +int pppinput __P((int c, struct tty *tp)); +int pppstart __P((struct tty *tp)); +int pppread __P((struct tty *tp, struct uio *uio, int flag)); +int pppwrite __P((struct tty *tp, struct uio *uio, int flag)); + +MOD_MISC("ppp"); + +int if_ppp_lkm_lkmentry __P((struct lkm_table *, int, int)); +int if_ppp_lkm_load __P((struct lkm_table *, int)); + +struct linesw ppp_linesw = { + pppopen, + pppclose, + pppread, + pppwrite, + ppptioctl, + pppinput, + pppstart, + ttymodem +}; + +int +if_ppp_lkm_load(lkmtp, cmd) + struct lkm_table *lkmtp; + int cmd; +{ + if (lkmexists(lkmtp)) return EEXIST; + + linesw[PPPDISC] = ppp_linesw; + pppattach(); + + /* XXX, in order for this lkm to work, we would need to + * arrange to have pppintr() called at splsoftnet() + * I might at some point use a kernel thread to invoke + * this when needed instead, but for now, I just plan + * to use ppp compiled into the kernel. --darrin + */ +#error "Not Yet Implemented, if_ppp_lkm_load" + + return 0; +} + +int +if_ppp_lkm_lkmentry(lkmtp, cmd, ver) + struct lkm_table *lkmtp; + int cmd, ver; +{ + DISPATCH(lkmtp, cmd, ver, if_ppp_lkm_load,lkm_nofunc,lkm_nofunc); +}