OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems/] [c/] [src/] [libnetworking/] [netinet/] [in_proto.c] - Blame information for rev 1771

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 158 chris
/*
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
 * 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.
20
 *
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.2 (Berkeley) 2/9/95
34 208 chris
 *      $Id: in_proto.c,v 1.2 2001-09-27 12:01:55 chris Exp $
35 158 chris
 */
36
 
37
#include "opt_tcpdebug.h"
38
 
39
#include <sys/param.h>
40
#include <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
86
void    tpip_input(), tpip_ctlinput(), tp_init(), tp_slowtimo(), tp_drain();
87
int     tp_ctloutput(), tp_usrreq();
88
#endif
89
 
90
#ifdef EON
91
void    eoninput(), eonctlinput(), eonprotoinit();
92
#endif /* EON */
93
 
94
extern  struct domain inetdomain;
95
 
96
struct protosw inetsw[] = {
97
{ 0,             &inetdomain,    0,               0,
98
  0,             0,               0,               0,
99
  0,
100
  ip_init,      0,               ip_slowtimo,    ip_drain
101
},
102
{ SOCK_DGRAM,   &inetdomain,    IPPROTO_UDP,    PR_ATOMIC|PR_ADDR,
103
  udp_input,    0,               udp_ctlinput,   ip_ctloutput,
104
  udp_usrreq,
105
  udp_init
106
},
107
{ SOCK_STREAM,  &inetdomain,    IPPROTO_TCP,
108
        PR_CONNREQUIRED|PR_IMPLOPCL|PR_WANTRCVD,
109
  tcp_input,    0,               tcp_ctlinput,   tcp_ctloutput,
110
  0,
111
  tcp_init,     tcp_fasttimo,   tcp_slowtimo,   tcp_drain,
112
  &tcp_usrreqs
113
},
114
{ SOCK_RAW,     &inetdomain,    IPPROTO_RAW,    PR_ATOMIC|PR_ADDR,
115
  rip_input,    0,               0,               rip_ctloutput,
116
  rip_usrreq,
117
  0,             0,               0,               0,
118
},
119
{ SOCK_RAW,     &inetdomain,    IPPROTO_ICMP,   PR_ATOMIC|PR_ADDR,
120
  icmp_input,   0,               0,               rip_ctloutput,
121
  rip_usrreq
122
},
123
{ SOCK_RAW,     &inetdomain,    IPPROTO_IGMP,   PR_ATOMIC|PR_ADDR,
124
  igmp_input,   0,               0,               rip_ctloutput,
125
  rip_usrreq,
126
  igmp_init,    igmp_fasttimo,  igmp_slowtimo
127
},
128
{ SOCK_RAW,     &inetdomain,    IPPROTO_RSVP,   PR_ATOMIC|PR_ADDR,
129
  rsvp_input,   0,               0,               rip_ctloutput,
130
  rip_usrreq,
131
  0,             0,               0,               0,
132
},
133
{ SOCK_RAW,     &inetdomain,    IPPROTO_IPIP,   PR_ATOMIC|PR_ADDR,
134
  ipip_input,   0,               0,               rip_ctloutput,
135
  rip_usrreq,
136
  0,             0,               0,               0,
137
},
138
#ifdef IPDIVERT
139
{ SOCK_RAW,     &inetdomain,    IPPROTO_DIVERT, PR_ATOMIC|PR_ADDR,
140
  div_input,    0,               0,               ip_ctloutput,
141
  div_usrreq,
142
  div_init,     0,               0,               0,
143
},
144
#endif
145
#ifdef TPIP
146
{ SOCK_SEQPACKET,&inetdomain,   IPPROTO_TP,     PR_CONNREQUIRED|PR_WANTRCVD,
147
  tpip_input,   0,               tpip_ctlinput,  tp_ctloutput,
148
  tp_usrreq,
149
  tp_init,      0,               tp_slowtimo,    tp_drain,
150
},
151
#endif
152
/* EON (ISO CLNL over IP) */
153
#ifdef EON
154
{ SOCK_RAW,     &inetdomain,    IPPROTO_EON,    0,
155
  eoninput,     0,               eonctlinput,            0,
156
  0,
157
  eonprotoinit, 0,               0,               0,
158
},
159
#endif
160
#ifdef IPXIP
161
{ SOCK_RAW,     &inetdomain,    IPPROTO_IDP,    PR_ATOMIC|PR_ADDR,
162
  ipxip_input,  0,               ipxip_ctlinput, 0,
163
  rip_usrreq,
164
  0,             0,               0,               0,
165
},
166
#endif
167
#ifdef NSIP
168
{ SOCK_RAW,     &inetdomain,    IPPROTO_IDP,    PR_ATOMIC|PR_ADDR,
169
  idpip_input,  0,               nsip_ctlinput,  0,
170
  rip_usrreq,
171
  0,             0,               0,               0,
172
},
173
#endif
174
        /* raw wildcard */
175
{ SOCK_RAW,     &inetdomain,    0,               PR_ATOMIC|PR_ADDR,
176
  rip_input,    0,               0,               rip_ctloutput,
177
  rip_usrreq,
178
  rip_init,     0,               0,               0,
179
},
180
};
181
 
182
extern int in_inithead(void **, int);
183
 
184
struct domain inetdomain =
185
    { AF_INET, "internet", 0, 0, 0,
186
      inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])], 0,
187
      in_inithead, 32, sizeof(struct sockaddr_in)
188
    };
189
 
190
DOMAIN_SET(inet);
191
 
192
SYSCTL_NODE(_net,      PF_INET,         inet,   CTLFLAG_RW, 0,
193
        "Internet Family");
194
 
195
SYSCTL_NODE(_net_inet, IPPROTO_IP,      ip,     CTLFLAG_RW, 0,   "IP");
196
SYSCTL_NODE(_net_inet, IPPROTO_ICMP,    icmp,   CTLFLAG_RW, 0,   "ICMP");
197
SYSCTL_NODE(_net_inet, IPPROTO_UDP,     udp,    CTLFLAG_RW, 0,   "UDP");
198
SYSCTL_NODE(_net_inet, IPPROTO_TCP,     tcp,    CTLFLAG_RW, 0,   "TCP");
199
SYSCTL_NODE(_net_inet, IPPROTO_IGMP,    igmp,   CTLFLAG_RW, 0,   "IGMP");
200
#ifdef IPDIVERT
201
SYSCTL_NODE(_net_inet, IPPROTO_DIVERT,  div,    CTLFLAG_RW, 0,   "DIVERT");
202
#endif
203
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.