Annotation of sys/netnatm/natm_proto.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: natm_proto.c,v 1.4 2002/03/14 01:27:12 millert Exp $ */
2:
3: /*
4: *
5: * Copyright (c) 1996 Charles D. Cranor and Washington University.
6: * 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: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by Charles D. Cranor and
19: * Washington University.
20: * 4. The name of the author may not be used to endorse or promote products
21: * derived from this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
28: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33: */
34:
35: /*
36: * protocol layer for access to native mode ATM
37: */
38:
39: #include <sys/param.h>
40: #include <sys/systm.h>
41: #include <sys/kernel.h>
42: #include <sys/queue.h>
43: #include <sys/socket.h>
44: #include <sys/protosw.h>
45: #include <sys/domain.h>
46: #include <sys/mbuf.h>
47:
48: #include <net/if.h>
49: #include <net/radix.h>
50: #include <net/route.h>
51:
52: #include <netinet/in.h>
53:
54: #include <netnatm/natm.h>
55:
56: extern struct domain natmdomain;
57:
58: static void natm_init(void);
59:
60: struct protosw natmsw[] = {
61: { SOCK_STREAM, &natmdomain, PROTO_NATMAAL5, PR_CONNREQUIRED,
62: 0, 0, 0, 0,
63: natm_usrreq,
64: 0, 0, 0, 0,
65: #if defined(__NetBSD__) || defined(__OpenBSD__)
66: natm5_sysctl
67: #endif
68: },
69: { SOCK_DGRAM, &natmdomain, PROTO_NATMAAL5, PR_CONNREQUIRED | PR_ATOMIC,
70: 0, 0, 0, 0,
71: natm_usrreq,
72: 0, 0, 0, 0,
73: #if defined(__NetBSD__) || defined(__OpenBSD__)
74: natm5_sysctl
75: #endif
76: },
77: { SOCK_STREAM, &natmdomain, PROTO_NATMAAL0, PR_CONNREQUIRED,
78: 0, 0, 0, 0,
79: natm_usrreq,
80: 0, 0, 0, 0,
81: #if defined(__NetBSD__) || defined(__OpenBSD__)
82: natm0_sysctl
83: #endif
84: },
85: };
86:
87: struct domain natmdomain =
88: { AF_NATM, "natm", natm_init, 0, 0,
89: natmsw, &natmsw[sizeof(natmsw)/sizeof(natmsw[0])], 0,
90: 0, 0, 0};
91:
92: struct ifqueue natmintrq; /* natm packet input queue */
93: int natmqmaxlen = IFQ_MAXLEN; /* max # of packets on queue */
94: #ifdef NATM_STAT
95: u_int natm_sodropcnt = 0; /* # mbufs dropped due to full sb */
96: u_int natm_sodropbytes = 0; /* # of bytes dropped */
97: u_int natm_sookcnt = 0; /* # mbufs ok */
98: u_int natm_sookbytes = 0; /* # of bytes ok */
99: #endif
100:
101:
102:
103: void natm_init()
104:
105: {
106: LIST_INIT(&natm_pcbs);
107: bzero(&natmintrq, sizeof(natmintrq));
108: natmintrq.ifq_maxlen = natmqmaxlen;
109: }
110:
111: #if defined(__FreeBSD__)
112: DOMAIN_SET(natm);
113: #endif
CVSweb