source: rtems/cpukit/libnetworking/netinet/in_proto.c @ b25b88e7

4.104.11
Last change on this file since b25b88e7 was b25b88e7, checked in by Ralf Corsepius <ralf.corsepius@…>, on Mar 28, 2010 at 5:50:29 AM

Add HAVE_CONFIG_H support to let files receive configure defines.

  • Property mode set to 100644
File size: 5.7 KB
Line 
1/*
2 * Copyright (c) 1982, 1986, 1993
3 *      The Regents of the University of California.  All rights reserved.
4 *
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 * 4. Neither the name of the University nor the names of its contributors
14 *    may be used to endorse or promote products derived from this software
15 *    without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 *      @(#)in_proto.c  8.2 (Berkeley) 2/9/95
30 *      $Id$
31 */
32
33#ifdef HAVE_CONFIG_H
34#include "config.h"
35#endif
36
37#include "opt_tcpdebug.h"
38
39#include <sys/param.h>
40#include <rtems/bsd/sys/queue.h>
41#include <sys/kernel.h>
42#include <sys/socket.h>
43#include <sys/socketvar.h>
44#include <sys/domain.h>
45#include <sys/mbuf.h>
46#include <sys/protosw.h>
47#include <sys/sysctl.h>
48
49#include <net/if.h>
50#include <net/radix.h>
51#include <net/route.h>
52
53#include <netinet/in.h>
54#include <netinet/in_systm.h>
55#include <netinet/ip.h>
56#include <netinet/ip_var.h>
57#include <netinet/ip_icmp.h>
58#include <netinet/in_pcb.h>
59#include <netinet/igmp_var.h>
60#include <netinet/tcp.h>
61#include <netinet/tcp_fsm.h>
62#include <netinet/tcp_seq.h>
63#include <netinet/tcp_timer.h>
64#include <netinet/tcp_var.h>
65#include <netinet/tcpip.h>
66#ifdef TCPDEBUG
67#include <netinet/tcp_debug.h>
68#endif
69#include <netinet/udp.h>
70#include <netinet/udp_var.h>
71/*
72 * TCP/IP protocol family: IP, ICMP, UDP, TCP.
73 */
74
75#ifdef IPXIP
76#include <netipx/ipx.h>
77#include <netipx/ipx_ip.h>
78#endif
79
80#ifdef NSIP
81#include <netns/ns.h>
82#include <netns/ns_if.h>
83#endif
84
85#ifdef TPIP
86void    tpip_input(), tpip_ctlinput(), tp_init(), tp_slowtimo(), tp_drain();
87int     tp_ctloutput(), tp_usrreq();
88#endif
89
90#ifdef EON
91void    eoninput(), eonctlinput(), eonprotoinit();
92#endif /* EON */
93
94extern  struct domain inetdomain;
95
96struct protosw inetsw[] = {
97{ 0,            &inetdomain,    0,              0,
98  0,            0,              0,              0,
99  0,
100  ip_init,      0,              ip_slowtimo,    ip_drain,
101  NULL
102},
103{ SOCK_DGRAM,   &inetdomain,    IPPROTO_UDP,    PR_ATOMIC|PR_ADDR,
104  udp_input,    0,              udp_ctlinput,   ip_ctloutput,
105  udp_usrreq,
106  udp_init,     0,              0,              0,
107  NULL
108},
109{ SOCK_STREAM,  &inetdomain,    IPPROTO_TCP,
110        PR_CONNREQUIRED|PR_IMPLOPCL|PR_WANTRCVD,
111  tcp_input,    0,              tcp_ctlinput,   tcp_ctloutput,
112  0,
113  tcp_init,     tcp_fasttimo,   tcp_slowtimo,   tcp_drain,
114  &tcp_usrreqs
115},
116{ SOCK_RAW,     &inetdomain,    IPPROTO_RAW,    PR_ATOMIC|PR_ADDR,
117  rip_input,    0,              0,              rip_ctloutput,
118  rip_usrreq,
119  0,            0,              0,              0,
120  NULL
121},
122{ SOCK_RAW,     &inetdomain,    IPPROTO_ICMP,   PR_ATOMIC|PR_ADDR,
123  icmp_input,   0,              0,              rip_ctloutput,
124  rip_usrreq,
125  0,            0,              0,              0,
126  NULL
127},
128{ SOCK_RAW,     &inetdomain,    IPPROTO_IGMP,   PR_ATOMIC|PR_ADDR,
129  igmp_input,   0,              0,              rip_ctloutput,
130  rip_usrreq,
131  igmp_init,    igmp_fasttimo,  igmp_slowtimo,  0,
132  NULL
133},
134{ SOCK_RAW,     &inetdomain,    IPPROTO_RSVP,   PR_ATOMIC|PR_ADDR,
135  rsvp_input,   0,              0,              rip_ctloutput,
136  rip_usrreq,
137  0,            0,              0,              0,
138  NULL
139},
140{ SOCK_RAW,     &inetdomain,    IPPROTO_IPIP,   PR_ATOMIC|PR_ADDR,
141  ipip_input,   0,              0,              rip_ctloutput,
142  rip_usrreq,
143  0,            0,              0,              0,
144  NULL
145},
146#ifdef IPDIVERT
147{ SOCK_RAW,     &inetdomain,    IPPROTO_DIVERT, PR_ATOMIC|PR_ADDR,
148  div_input,    0,              0,              ip_ctloutput,
149  div_usrreq,
150  div_init,     0,              0,              0,
151  NULL
152},
153#endif
154#ifdef TPIP
155{ SOCK_SEQPACKET,&inetdomain,   IPPROTO_TP,     PR_CONNREQUIRED|PR_WANTRCVD,
156  tpip_input,   0,              tpip_ctlinput,  tp_ctloutput,
157  tp_usrreq,
158  tp_init,      0,              tp_slowtimo,    tp_drain,
159  NULL
160},
161#endif
162/* EON (ISO CLNL over IP) */
163#ifdef EON
164{ SOCK_RAW,     &inetdomain,    IPPROTO_EON,    0,
165  eoninput,     0,              eonctlinput,            0,
166  0,
167  eonprotoinit, 0,              0,              0,
168  NULL
169},
170#endif
171#ifdef IPXIP
172{ SOCK_RAW,     &inetdomain,    IPPROTO_IDP,    PR_ATOMIC|PR_ADDR,
173  ipxip_input,  0,              ipxip_ctlinput, 0,
174  rip_usrreq,
175  0,            0,              0,              0,
176  NULL
177},
178#endif
179#ifdef NSIP
180{ SOCK_RAW,     &inetdomain,    IPPROTO_IDP,    PR_ATOMIC|PR_ADDR,
181  idpip_input,  0,              nsip_ctlinput,  0,
182  rip_usrreq,
183  0,            0,              0,              0,
184  NULL
185},
186#endif
187        /* raw wildcard */
188{ SOCK_RAW,     &inetdomain,    0,              PR_ATOMIC|PR_ADDR,
189  rip_input,    0,              0,              rip_ctloutput,
190  rip_usrreq,
191  rip_init,     0,              0,              0,
192  NULL
193},
194};
195
196extern int in_inithead(void **, int);
197
198struct domain inetdomain =
199    { AF_INET, "internet", 0, 0, 0, 
200      inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])], 0,
201      in_inithead, 32, sizeof(struct sockaddr_in)
202    };
203
204DOMAIN_SET(inet);
205
206SYSCTL_NODE(_net,      PF_INET,         inet,   CTLFLAG_RW, 0,
207        "Internet Family");
208
209SYSCTL_NODE(_net_inet, IPPROTO_IP,      ip,     CTLFLAG_RW, 0,  "IP");
210SYSCTL_NODE(_net_inet, IPPROTO_ICMP,    icmp,   CTLFLAG_RW, 0,  "ICMP");
211SYSCTL_NODE(_net_inet, IPPROTO_UDP,     udp,    CTLFLAG_RW, 0,  "UDP");
212SYSCTL_NODE(_net_inet, IPPROTO_TCP,     tcp,    CTLFLAG_RW, 0,  "TCP");
213SYSCTL_NODE(_net_inet, IPPROTO_IGMP,    igmp,   CTLFLAG_RW, 0,  "IGMP");
214#ifdef IPDIVERT
215SYSCTL_NODE(_net_inet, IPPROTO_DIVERT,  div,    CTLFLAG_RW, 0,  "DIVERT");
216#endif
Note: See TracBrowser for help on using the repository browser.