|
|
1.1 root 1: /* in_proto.c 6.1 83/07/29 */
2:
3: #include "../h/param.h"
4: #include "../h/socket.h"
5: #include "../h/protosw.h"
6: #include "../h/domain.h"
7: #include "../h/mbuf.h"
8:
9: #include "../netinet/in.h"
10: #include "../netinet/in_systm.h"
11:
12: /*
13: * TCP/IP protocol family: IP, ICMP, UDP, TCP.
14: */
15: int ip_output();
16: int ip_init(),ip_slowtimo(),ip_drain();
17: int icmp_input();
18: int udp_input(),udp_ctlinput();
19: int udp_usrreq();
20: int udp_init();
21: int tcp_input(),tcp_ctlinput();
22: int tcp_usrreq();
23: int tcp_init(),tcp_fasttimo(),tcp_slowtimo(),tcp_drain();
24: int rip_input(),rip_output();
25: extern int raw_usrreq();
26: /*
27: * IMP protocol family: raw interface.
28: * Using the raw interface entry to get the timer routine
29: * in is a kludge.
30: */
31: #include "imp.h"
32: #if NIMP > 0
33: int rimp_output(), hostslowtimo();
34: #endif
35: /*
36: * Network disk protocol: runs on top of IP
37: */
38: #include "nd.h"
39: #if NND > 0
40: int nd_input(), nd_slowtimo(), nd_init();
41: #endif
42:
43: struct protosw inetsw[] = {
44: { 0, PF_INET, 0, 0,
45: 0, ip_output, 0, 0,
46: 0,
47: ip_init, 0, ip_slowtimo, ip_drain,
48: },
49: { 0, PF_INET, IPPROTO_ICMP, 0,
50: icmp_input, 0, 0, 0,
51: 0,
52: 0, 0, 0, 0,
53: },
54: { SOCK_DGRAM, PF_INET, IPPROTO_UDP, PR_ATOMIC|PR_ADDR,
55: udp_input, 0, udp_ctlinput, 0,
56: udp_usrreq,
57: udp_init, 0, 0, 0,
58: },
59: { SOCK_STREAM, PF_INET, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD,
60: tcp_input, 0, tcp_ctlinput, 0,
61: tcp_usrreq,
62: tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain,
63: },
64: { SOCK_RAW, PF_INET, IPPROTO_RAW, PR_ATOMIC|PR_ADDR,
65: rip_input, rip_output, 0, 0,
66: raw_usrreq,
67: 0, 0, 0, 0,
68: },
69: #if NND > 0
70: { 0, PF_INET, IPPROTO_ND, 0,
71: nd_input, 0, 0, 0,
72: 0,
73: nd_init, 0, nd_slowtimo, 0,
74: },
75: #endif
76: };
77:
78: struct domain inetdomain =
79: { AF_INET, "internet", inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] };
80:
81: #if NIMP > 0
82: struct protosw impsw[] = {
83: { SOCK_RAW, PF_IMPLINK, 0, PR_ATOMIC|PR_ADDR,
84: 0, rimp_output, 0, 0,
85: raw_usrreq,
86: 0, 0, hostslowtimo, 0,
87: },
88: };
89:
90: struct domain impdomain =
91: { AF_IMPLINK, "imp", impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] };
92: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.