1*17059Sbloom /* in_proto.c 6.6 84/08/29 */ 27618Sroot 3*17059Sbloom #include "param.h" 4*17059Sbloom #include "socket.h" 5*17059Sbloom #include "protosw.h" 6*17059Sbloom #include "domain.h" 7*17059Sbloom #include "mbuf.h" 87618Sroot 9*17059Sbloom #include "in.h" 10*17059Sbloom #include "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 3616990Skarels extern struct domain inetdomain; 3716990Skarels 387618Sroot struct protosw inetsw[] = { 3916990Skarels { 0, &inetdomain, 0, 0, 407618Sroot 0, ip_output, 0, 0, 417618Sroot 0, 427618Sroot ip_init, 0, ip_slowtimo, ip_drain, 437618Sroot }, 4416990Skarels { 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 }, 4916990Skarels { 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 }, 5416990Skarels { 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 }, 5916990Skarels { 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 }, 6416990Skarels { 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 = 7216990Skarels { AF_INET, "internet", 0, 0, 0, 7316990Skarels inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] }; 747620Sroot 757618Sroot #if NIMP > 0 7616990Skarels extern struct domain impdomain; 7716990Skarels 787620Sroot struct protosw impsw[] = { 7916990Skarels { 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 = 8716990Skarels { AF_IMPLINK, "imp", 0, 0, 0, 8816990Skarels impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; 897620Sroot #endif 90