1 /* in_proto.c 6.6 84/08/29 */ 2 3 #include "param.h" 4 #include "socket.h" 5 #include "protosw.h" 6 #include "domain.h" 7 #include "mbuf.h" 8 9 #include "in.h" 10 #include "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 extern struct domain inetdomain; 37 38 struct protosw inetsw[] = { 39 { 0, &inetdomain, 0, 0, 40 0, ip_output, 0, 0, 41 0, 42 ip_init, 0, ip_slowtimo, ip_drain, 43 }, 44 { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, 45 udp_input, 0, udp_ctlinput, 0, 46 udp_usrreq, 47 udp_init, 0, 0, 0, 48 }, 49 { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD, 50 tcp_input, 0, tcp_ctlinput, 0, 51 tcp_usrreq, 52 tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, 53 }, 54 { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, 55 rip_input, rip_output, 0, 0, 56 raw_usrreq, 57 0, 0, 0, 0, 58 }, 59 { SOCK_RAW, &inetdomain, IPPROTO_EGP, PR_ATOMIC|PR_ADDR, 60 rip_input, rip_output, 0, 0, 61 raw_usrreq, 62 0, 0, 0, 0, 63 }, 64 { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR, 65 icmp_input, rip_output, 0, 0, 66 raw_usrreq, 67 0, 0, 0, 0, 68 }, 69 }; 70 71 struct domain inetdomain = 72 { AF_INET, "internet", 0, 0, 0, 73 inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] }; 74 75 #if NIMP > 0 76 extern struct domain impdomain; 77 78 struct protosw impsw[] = { 79 { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR, 80 0, rimp_output, 0, 0, 81 raw_usrreq, 82 0, 0, hostslowtimo, 0, 83 }, 84 }; 85 86 struct domain impdomain = 87 { AF_IMPLINK, "imp", 0, 0, 0, 88 impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; 89 #endif 90