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