1 /* in_proto.c 6.7 85/06/02 */ 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 #ifdef NSIP 37 int idpip_input(); 38 #endif 39 40 extern struct domain inetdomain; 41 42 struct protosw inetsw[] = { 43 { 0, &inetdomain, 0, 0, 44 0, ip_output, 0, 0, 45 0, 46 ip_init, 0, ip_slowtimo, ip_drain, 47 }, 48 { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, 49 udp_input, 0, udp_ctlinput, 0, 50 udp_usrreq, 51 udp_init, 0, 0, 0, 52 }, 53 { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD, 54 tcp_input, 0, tcp_ctlinput, 0, 55 tcp_usrreq, 56 tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, 57 }, 58 { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, 59 rip_input, rip_output, 0, 0, 60 raw_usrreq, 61 0, 0, 0, 0, 62 }, 63 { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR, 64 icmp_input, rip_output, 0, 0, 65 raw_usrreq, 66 0, 0, 0, 0, 67 }, 68 #ifdef NSIP 69 { SOCK_RAW, &inetdomain, IPPROTO_PUP, PR_ATOMIC|PR_ADDR, 70 idpip_input, rip_output, 0, 0, 71 raw_usrreq, 72 0, 0, 0, 0, 73 }, 74 #endif 75 /* raw wildcard */ 76 { SOCK_RAW, &inetdomain, 0, PR_ATOMIC|PR_ADDR, 77 rip_input, rip_output, 0, 0, 78 raw_usrreq, 79 0, 0, 0, 0, 80 }, 81 }; 82 83 struct domain inetdomain = 84 { AF_INET, "internet", 0, 0, 0, 85 inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] }; 86 87 #if NIMP > 0 88 extern struct domain impdomain; 89 90 struct protosw impsw[] = { 91 { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR, 92 0, rimp_output, 0, 0, 93 raw_usrreq, 94 0, 0, hostslowtimo, 0, 95 }, 96 }; 97 98 struct domain impdomain = 99 { AF_IMPLINK, "imp", 0, 0, 0, 100 impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; 101 #endif 102