|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 1986 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: *
17: * @(#)in_proto.c 7.3 (Berkeley) 6/29/88
18: */
19:
20: #include "param.h"
21: #include "socket.h"
22: #include "protosw.h"
23: #include "domain.h"
24: #include "mbuf.h"
25:
26: #include "in.h"
27: #include "in_systm.h"
28:
29: /*
30: * TCP/IP protocol family: IP, ICMP, UDP, TCP.
31: */
32: int ip_output(),ip_ctloutput();
33: int ip_init(),ip_slowtimo(),ip_drain();
34: int icmp_input();
35: int udp_input(),udp_ctlinput();
36: int udp_usrreq();
37: int udp_init();
38: int tcp_input(),tcp_ctlinput();
39: int tcp_usrreq(),tcp_ctloutput();
40: int tcp_init(),tcp_fasttimo(),tcp_slowtimo(),tcp_drain();
41: int rip_input(),rip_output(),rip_ctloutput();
42: extern int raw_usrreq();
43: /*
44: * IMP protocol family: raw interface.
45: * Using the raw interface entry to get the timer routine
46: * in is a kludge.
47: */
48: #include "imp.h"
49: #if NIMP > 0
50: int rimp_output(), hostslowtimo();
51: #endif
52:
53: #ifdef NSIP
54: int idpip_input(), nsip_ctlinput();
55: #endif
56:
57: extern struct domain inetdomain;
58:
59: struct protosw inetsw[] = {
60: { 0, &inetdomain, 0, 0,
61: 0, ip_output, 0, 0,
62: 0,
63: ip_init, 0, ip_slowtimo, ip_drain,
64: },
65: { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR,
66: udp_input, 0, udp_ctlinput, ip_ctloutput,
67: udp_usrreq,
68: udp_init, 0, 0, 0,
69: },
70: { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD,
71: tcp_input, 0, tcp_ctlinput, tcp_ctloutput,
72: tcp_usrreq,
73: tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain,
74: },
75: { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR,
76: rip_input, rip_output, 0, rip_ctloutput,
77: raw_usrreq,
78: 0, 0, 0, 0,
79: },
80: { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR,
81: icmp_input, rip_output, 0, rip_ctloutput,
82: raw_usrreq,
83: 0, 0, 0, 0,
84: },
85: #ifdef NSIP
86: { SOCK_RAW, &inetdomain, IPPROTO_IDP, PR_ATOMIC|PR_ADDR,
87: idpip_input, rip_output, nsip_ctlinput, 0,
88: raw_usrreq,
89: 0, 0, 0, 0,
90: },
91: #endif
92: /* raw wildcard */
93: { SOCK_RAW, &inetdomain, 0, PR_ATOMIC|PR_ADDR,
94: rip_input, rip_output, 0, rip_ctloutput,
95: raw_usrreq,
96: 0, 0, 0, 0,
97: },
98: };
99:
100: struct domain inetdomain =
101: { AF_INET, "internet", 0, 0, 0,
102: inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] };
103:
104: #if NIMP > 0
105: extern struct domain impdomain;
106:
107: struct protosw impsw[] = {
108: { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR,
109: 0, rimp_output, 0, 0,
110: raw_usrreq,
111: 0, 0, hostslowtimo, 0,
112: },
113: };
114:
115: struct domain impdomain =
116: { AF_IMPLINK, "imp", 0, 0, 0,
117: impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] };
118: #endif
119:
120: #include "hy.h"
121: #if NHY > 0
122: /*
123: * HYPERchannel protocol family: raw interface.
124: */
125: int rhy_output();
126: extern struct domain hydomain;
127:
128: struct protosw hysw[] = {
129: { SOCK_RAW, &hydomain, 0, PR_ATOMIC|PR_ADDR,
130: 0, rhy_output, 0, 0,
131: raw_usrreq,
132: 0, 0, 0, 0,
133: },
134: };
135:
136: struct domain hydomain =
137: { AF_HYLINK, "hy", 0, 0, 0, hysw, &hysw[sizeof (hysw)/sizeof(hysw[0])] };
138: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.