1*16990Skarels /* in_proto.c 6.5 84/08/21 */ 27618Sroot 37618Sroot #include "../h/param.h" 47618Sroot #include "../h/socket.h" 57618Sroot #include "../h/protosw.h" 67620Sroot #include "../h/domain.h" 77618Sroot #include "../h/mbuf.h" 87618Sroot 99030Sroot #include "../netinet/in.h" 109030Sroot #include "../netinet/in_systm.h" 119030Sroot 127618Sroot /* 137618Sroot * TCP/IP protocol family: IP, ICMP, UDP, TCP. 147618Sroot */ 157618Sroot int ip_output(); 167618Sroot int ip_init(),ip_slowtimo(),ip_drain(); 177618Sroot int icmp_input(); 187618Sroot int udp_input(),udp_ctlinput(); 197618Sroot int udp_usrreq(); 207618Sroot int udp_init(); 217618Sroot int tcp_input(),tcp_ctlinput(); 227618Sroot int tcp_usrreq(); 237618Sroot int tcp_init(),tcp_fasttimo(),tcp_slowtimo(),tcp_drain(); 247618Sroot int rip_input(),rip_output(); 257620Sroot extern int raw_usrreq(); 267618Sroot /* 277618Sroot * IMP protocol family: raw interface. 287618Sroot * Using the raw interface entry to get the timer routine 297618Sroot * in is a kludge. 307618Sroot */ 317618Sroot #include "imp.h" 327618Sroot #if NIMP > 0 337618Sroot int rimp_output(), hostslowtimo(); 347618Sroot #endif 357618Sroot 36*16990Skarels extern struct domain inetdomain; 37*16990Skarels 387618Sroot struct protosw inetsw[] = { 39*16990Skarels { 0, &inetdomain, 0, 0, 407618Sroot 0, ip_output, 0, 0, 417618Sroot 0, 427618Sroot ip_init, 0, ip_slowtimo, ip_drain, 437618Sroot }, 44*16990Skarels { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, 457618Sroot udp_input, 0, udp_ctlinput, 0, 467618Sroot udp_usrreq, 477618Sroot udp_init, 0, 0, 0, 487618Sroot }, 49*16990Skarels { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD, 507618Sroot tcp_input, 0, tcp_ctlinput, 0, 517618Sroot tcp_usrreq, 527618Sroot tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, 537618Sroot }, 54*16990Skarels { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, 557618Sroot rip_input, rip_output, 0, 0, 567618Sroot raw_usrreq, 577618Sroot 0, 0, 0, 0, 587618Sroot }, 59*16990Skarels { SOCK_RAW, &inetdomain, IPPROTO_EGP, PR_ATOMIC|PR_ADDR, 6016797Skarels rip_input, rip_output, 0, 0, 6116797Skarels raw_usrreq, 6216797Skarels 0, 0, 0, 0, 6316797Skarels }, 64*16990Skarels { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR, 6516052Skarels icmp_input, rip_output, 0, 0, 6616052Skarels raw_usrreq, 6716052Skarels 0, 0, 0, 0, 6816052Skarels }, 697620Sroot }; 707620Sroot 717620Sroot struct domain inetdomain = 72*16990Skarels { AF_INET, "internet", 0, 0, 0, 73*16990Skarels inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] }; 747620Sroot 757618Sroot #if NIMP > 0 76*16990Skarels extern struct domain impdomain; 77*16990Skarels 787620Sroot struct protosw impsw[] = { 79*16990Skarels { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR, 807618Sroot 0, rimp_output, 0, 0, 817618Sroot raw_usrreq, 827618Sroot 0, 0, hostslowtimo, 0, 837620Sroot }, 847618Sroot }; 857618Sroot 867620Sroot struct domain impdomain = 87*16990Skarels { AF_IMPLINK, "imp", 0, 0, 0, 88*16990Skarels impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; 897620Sroot #endif 90