xref: /csrg-svn/sys/netinet/in_proto.c (revision 16990)
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