Annotation of sys/net/if_pppvar.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: if_pppvar.h,v 1.15 2003/12/07 15:41:27 markus Exp $ */
! 2: /* $NetBSD: if_pppvar.h,v 1.5 1997/01/03 07:23:29 mikel Exp $ */
! 3: /*
! 4: * if_pppvar.h - private structures and declarations for PPP.
! 5: *
! 6: * Copyright (c) 1989-2002 Paul Mackerras. All rights reserved.
! 7: *
! 8: * Redistribution and use in source and binary forms, with or without
! 9: * modification, are permitted provided that the following conditions
! 10: * are met:
! 11: *
! 12: * 1. Redistributions of source code must retain the above copyright
! 13: * notice, this list of conditions and the following disclaimer.
! 14: *
! 15: * 2. Redistributions in binary form must reproduce the above copyright
! 16: * notice, this list of conditions and the following disclaimer in
! 17: * the documentation and/or other materials provided with the
! 18: * distribution.
! 19: *
! 20: * 3. The name(s) of the authors of this software must not be used to
! 21: * endorse or promote products derived from this software without
! 22: * prior written permission.
! 23: *
! 24: * 4. Redistributions of any form whatsoever must retain the following
! 25: * acknowledgment:
! 26: * "This product includes software developed by Paul Mackerras
! 27: * <paulus@samba.org>".
! 28: *
! 29: * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
! 30: * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
! 31: * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
! 32: * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 33: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
! 34: * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
! 35: * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 36: *
! 37: * Copyright (c) 1984-2000 Carnegie Mellon University. All rights reserved.
! 38: *
! 39: * Redistribution and use in source and binary forms, with or without
! 40: * modification, are permitted provided that the following conditions
! 41: * are met:
! 42: *
! 43: * 1. Redistributions of source code must retain the above copyright
! 44: * notice, this list of conditions and the following disclaimer.
! 45: *
! 46: * 2. Redistributions in binary form must reproduce the above copyright
! 47: * notice, this list of conditions and the following disclaimer in
! 48: * the documentation and/or other materials provided with the
! 49: * distribution.
! 50: *
! 51: * 3. The name "Carnegie Mellon University" must not be used to
! 52: * endorse or promote products derived from this software without
! 53: * prior written permission. For permission or any legal
! 54: * details, please contact
! 55: * Office of Technology Transfer
! 56: * Carnegie Mellon University
! 57: * 5000 Forbes Avenue
! 58: * Pittsburgh, PA 15213-3890
! 59: * (412) 268-4387, fax: (412) 268-7395
! 60: * tech-transfer@andrew.cmu.edu
! 61: *
! 62: * 4. Redistributions of any form whatsoever must retain the following
! 63: * acknowledgment:
! 64: * "This product includes software developed by Computing Services
! 65: * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
! 66: *
! 67: * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
! 68: * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
! 69: * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
! 70: * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 71: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
! 72: * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
! 73: * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 74: */
! 75:
! 76: #ifndef _NET_IF_PPPVAR_H_
! 77: #define _NET_IF_PPPVAR_H_
! 78:
! 79: /*
! 80: * Supported network protocols. These values are used for
! 81: * indexing sc_npmode.
! 82: */
! 83: #define NP_IP 0 /* Internet Protocol */
! 84: #define NUM_NP 1 /* Number of NPs. */
! 85:
! 86: /*
! 87: * Structure describing each ppp unit.
! 88: */
! 89: struct ppp_softc {
! 90: struct ifnet sc_if; /* network-visible interface */
! 91: struct timeout sc_timo; /* timeout control (for ptys) */
! 92: int sc_unit; /* XXX unit number */
! 93: u_int sc_flags; /* control/status bits; see if_ppp.h */
! 94: void *sc_devp; /* pointer to device-dep structure */
! 95: void (*sc_start)(struct ppp_softc *); /* start output proc */
! 96: void (*sc_ctlp)(struct ppp_softc *); /* rcvd control pkt */
! 97: void (*sc_relinq)(struct ppp_softc *); /* relinquish ifunit */
! 98: u_int16_t sc_mru; /* max receive unit */
! 99: pid_t sc_xfer; /* used in transferring unit */
! 100: struct ifqueue sc_rawq; /* received packets */
! 101: struct ifqueue sc_inq; /* queue of input packets for daemon */
! 102: struct ifqueue sc_fastq; /* interactive output packet q */
! 103: struct mbuf *sc_togo; /* output packet ready to go */
! 104: struct mbuf *sc_npqueue; /* output packets not to be sent yet */
! 105: struct mbuf **sc_npqtail; /* ptr to last next ptr in npqueue */
! 106: struct pppstat sc_stats; /* count of bytes/pkts sent/rcvd */
! 107: caddr_t sc_bpf; /* hook for BPF */
! 108: enum NPmode sc_npmode[NUM_NP]; /* what to do with each NP */
! 109: struct compressor *sc_xcomp; /* transmit compressor */
! 110: void *sc_xc_state; /* transmit compressor state */
! 111: struct compressor *sc_rcomp; /* receive decompressor */
! 112: void *sc_rc_state; /* receive decompressor state */
! 113: time_t sc_last_sent; /* time (secs) last NP pkt sent */
! 114: time_t sc_last_recv; /* time (secs) last NP pkt rcvd */
! 115: struct bpf_program sc_pass_filt; /* filter for packets to pass */
! 116: struct bpf_program sc_active_filt; /* filter for "non-idle" packets */
! 117: #ifdef VJC
! 118: struct slcompress *sc_comp; /* vjc control buffer */
! 119: #endif
! 120:
! 121: /* Device-dependent part for async lines. */
! 122: ext_accm sc_asyncmap; /* async control character map */
! 123: u_int32_t sc_rasyncmap; /* receive async control char map */
! 124: struct mbuf *sc_outm; /* mbuf chain currently being output */
! 125: struct mbuf *sc_m; /* pointer to input mbuf chain */
! 126: struct mbuf *sc_mc; /* pointer to current input mbuf */
! 127: char *sc_mp; /* ptr to next char in input mbuf */
! 128: u_int16_t sc_ilen; /* length of input packet so far */
! 129: u_int16_t sc_fcs; /* FCS so far (input) */
! 130: u_int16_t sc_outfcs; /* FCS so far for output packet */
! 131: u_char sc_rawin[16]; /* chars as received */
! 132: int sc_rawin_count; /* # in sc_rawin */
! 133: LIST_ENTRY(ppp_softc) sc_list; /* all ppp interfaces */
! 134: };
! 135:
! 136: #ifdef _KERNEL
! 137: extern struct ppp_softc ppp_softc[];
! 138:
! 139: struct ppp_softc *pppalloc(pid_t pid);
! 140: void pppdealloc(struct ppp_softc *sc);
! 141: int pppioctl(struct ppp_softc *sc, u_long cmd, caddr_t data,
! 142: int flag, struct proc *p);
! 143: void ppppktin(struct ppp_softc *sc, struct mbuf *m, int lost);
! 144: struct mbuf *ppp_dequeue(struct ppp_softc *sc);
! 145: void ppp_restart(struct ppp_softc *sc);
! 146: int pppoutput(struct ifnet *, struct mbuf *,
! 147: struct sockaddr *, struct rtentry *);
! 148: #endif /* _KERNEL */
! 149: #endif /* _NET_IF_PPPVAR_H_ */
CVSweb