Commit | Line | Data |
---|---|---|
8ae0e4b4 | 1 | /* |
ad787160 C |
2 | * Copyright (c) 1982, 1986, 1993 |
3 | * The Regents of the University of California. All rights reserved. | |
8ae0e4b4 | 4 | * |
ad787160 C |
5 | * Redistribution and use in source and binary forms, with or without |
6 | * modification, are permitted provided that the following conditions | |
7 | * are met: | |
8 | * 1. Redistributions of source code must retain the above copyright | |
9 | * notice, this list of conditions and the following disclaimer. | |
10 | * 2. Redistributions in binary form must reproduce the above copyright | |
11 | * notice, this list of conditions and the following disclaimer in the | |
12 | * documentation and/or other materials provided with the distribution. | |
13 | * 3. All advertising materials mentioning features or use of this software | |
14 | * must display the following acknowledgement: | |
15 | * This product includes software developed by the University of | |
16 | * California, Berkeley and its contributors. | |
17 | * 4. Neither the name of the University nor the names of its contributors | |
18 | * may be used to endorse or promote products derived from this software | |
19 | * without specific prior written permission. | |
2b6b6284 | 20 | * |
ad787160 C |
21 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
22 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
23 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
24 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | |
25 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |
26 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | |
27 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |
28 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | |
29 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | |
30 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | |
31 | * SUCH DAMAGE. | |
32 | * | |
33 | * @(#)in_proto.c 8.1 (Berkeley) 6/10/93 | |
8ae0e4b4 | 34 | */ |
c5707736 | 35 | |
5548a02f KB |
36 | #include <sys/param.h> |
37 | #include <sys/socket.h> | |
38 | #include <sys/protosw.h> | |
39 | #include <sys/domain.h> | |
40 | #include <sys/mbuf.h> | |
59965020 | 41 | |
c46785cb | 42 | #include <net/if.h> |
5548a02f | 43 | #include <net/radix.h> |
c46785cb | 44 | #include <net/route.h> |
5c48f39f | 45 | |
c46785cb KB |
46 | #include <netinet/in.h> |
47 | #include <netinet/in_systm.h> | |
48 | #include <netinet/ip.h> | |
49 | #include <netinet/ip_var.h> | |
50 | #include <netinet/ip_icmp.h> | |
51 | #include <netinet/in_pcb.h> | |
52 | #include <netinet/igmp_var.h> | |
53 | #include <netinet/tcp.h> | |
54 | #include <netinet/tcp_fsm.h> | |
55 | #include <netinet/tcp_seq.h> | |
56 | #include <netinet/tcp_timer.h> | |
57 | #include <netinet/tcp_var.h> | |
58 | #include <netinet/tcpip.h> | |
59 | #include <netinet/tcp_debug.h> | |
60 | #include <netinet/udp.h> | |
61 | #include <netinet/udp_var.h> | |
c5707736 BJ |
62 | /* |
63 | * TCP/IP protocol family: IP, ICMP, UDP, TCP. | |
64 | */ | |
abe04898 | 65 | |
279ad67c | 66 | #ifdef NSIP |
c46785cb | 67 | void idpip_input(), nsip_ctlinput(); |
279ad67c MK |
68 | #endif |
69 | ||
b4dc7708 | 70 | #ifdef TPIP |
c46785cb KB |
71 | void tpip_input(), tpip_ctlinput(), tp_ctloutput(); |
72 | int tp_init(), tp_slowtimo(), tp_drain(), tp_usrreq(); | |
b4dc7708 KS |
73 | #endif |
74 | ||
75 | #ifdef EON | |
c46785cb | 76 | void eoninput(), eonctlinput(), eonprotoinit(); |
69d96ae2 | 77 | #endif /* EON */ |
b4dc7708 | 78 | |
abe04898 | 79 | extern struct domain inetdomain; |
c5707736 BJ |
80 | |
81 | struct protosw inetsw[] = { | |
abe04898 | 82 | { 0, &inetdomain, 0, 0, |
c5707736 BJ |
83 | 0, ip_output, 0, 0, |
84 | 0, | |
1e57600e | 85 | ip_init, 0, ip_slowtimo, ip_drain, ip_sysctl |
c5707736 | 86 | }, |
abe04898 | 87 | { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, |
65386213 | 88 | udp_input, 0, udp_ctlinput, ip_ctloutput, |
c5707736 | 89 | udp_usrreq, |
5082da2b | 90 | udp_init, 0, 0, 0, udp_sysctl |
c5707736 | 91 | }, |
abe04898 | 92 | { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD, |
65386213 | 93 | tcp_input, 0, tcp_ctlinput, tcp_ctloutput, |
c5707736 BJ |
94 | tcp_usrreq, |
95 | tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, | |
96 | }, | |
abe04898 | 97 | { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, |
f75daae6 | 98 | rip_input, rip_output, 0, rip_ctloutput, |
b4dc7708 | 99 | rip_usrreq, |
c5707736 BJ |
100 | 0, 0, 0, 0, |
101 | }, | |
279ad67c | 102 | { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR, |
f75daae6 | 103 | icmp_input, rip_output, 0, rip_ctloutput, |
b4dc7708 | 104 | rip_usrreq, |
1e57600e | 105 | 0, 0, 0, 0, icmp_sysctl |
c49e68cc | 106 | }, |
69d96ae2 AC |
107 | { SOCK_RAW, &inetdomain, IPPROTO_IGMP, PR_ATOMIC|PR_ADDR, |
108 | igmp_input, rip_output, 0, rip_ctloutput, | |
109 | rip_usrreq, | |
110 | igmp_init, igmp_fasttimo, 0, 0, | |
111 | }, | |
b4dc7708 KS |
112 | #ifdef TPIP |
113 | { SOCK_SEQPACKET,&inetdomain, IPPROTO_TP, PR_CONNREQUIRED|PR_WANTRCVD, | |
d6fa15c2 | 114 | tpip_input, 0, tpip_ctlinput, tp_ctloutput, |
b4dc7708 KS |
115 | tp_usrreq, |
116 | tp_init, 0, tp_slowtimo, tp_drain, | |
117 | }, | |
118 | #endif | |
119 | /* EON (ISO CLNL over IP) */ | |
120 | #ifdef EON | |
121 | { SOCK_RAW, &inetdomain, IPPROTO_EON, 0, | |
122 | eoninput, 0, eonctlinput, 0, | |
123 | 0, | |
124 | eonprotoinit, 0, 0, 0, | |
125 | }, | |
126 | #endif | |
279ad67c | 127 | #ifdef NSIP |
707db385 | 128 | { SOCK_RAW, &inetdomain, IPPROTO_IDP, PR_ATOMIC|PR_ADDR, |
448b28fe | 129 | idpip_input, rip_output, nsip_ctlinput, 0, |
b4dc7708 | 130 | rip_usrreq, |
279ad67c MK |
131 | 0, 0, 0, 0, |
132 | }, | |
133 | #endif | |
134 | /* raw wildcard */ | |
135 | { SOCK_RAW, &inetdomain, 0, PR_ATOMIC|PR_ADDR, | |
f75daae6 | 136 | rip_input, rip_output, 0, rip_ctloutput, |
b4dc7708 | 137 | rip_usrreq, |
d6fa15c2 | 138 | rip_init, 0, 0, 0, |
dbf57086 | 139 | }, |
6d45c4ba BJ |
140 | }; |
141 | ||
142 | struct domain inetdomain = | |
abe04898 | 143 | { AF_INET, "internet", 0, 0, 0, |
5c48f39f KS |
144 | inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])], 0, |
145 | rn_inithead, 32, sizeof(struct sockaddr_in) }; | |
6d45c4ba | 146 | |
c46785cb | 147 | #include "imp.h" |
c5707736 | 148 | #if NIMP > 0 |
abe04898 | 149 | extern struct domain impdomain; |
c46785cb | 150 | int rimp_output(), hostslowtimo(); |
abe04898 | 151 | |
6d45c4ba | 152 | struct protosw impsw[] = { |
abe04898 | 153 | { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR, |
c5707736 | 154 | 0, rimp_output, 0, 0, |
b4dc7708 | 155 | rip_usrreq, |
c5707736 | 156 | 0, 0, hostslowtimo, 0, |
6d45c4ba | 157 | }, |
c5707736 BJ |
158 | }; |
159 | ||
6d45c4ba | 160 | struct domain impdomain = |
abe04898 MK |
161 | { AF_IMPLINK, "imp", 0, 0, 0, |
162 | impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; | |
6d45c4ba | 163 | #endif |
77df9bb7 MK |
164 | |
165 | #include "hy.h" | |
166 | #if NHY > 0 | |
167 | /* | |
168 | * HYPERchannel protocol family: raw interface. | |
169 | */ | |
170 | int rhy_output(); | |
65386213 | 171 | extern struct domain hydomain; |
77df9bb7 MK |
172 | |
173 | struct protosw hysw[] = { | |
65386213 | 174 | { SOCK_RAW, &hydomain, 0, PR_ATOMIC|PR_ADDR, |
77df9bb7 | 175 | 0, rhy_output, 0, 0, |
b4dc7708 | 176 | rip_usrreq, |
77df9bb7 MK |
177 | 0, 0, 0, 0, |
178 | }, | |
179 | }; | |
180 | ||
181 | struct domain hydomain = | |
1e7612a6 | 182 | { AF_HYLINK, "hy", 0, 0, 0, hysw, &hysw[sizeof (hysw)/sizeof(hysw[0])] }; |
77df9bb7 | 183 | #endif |