xref: /csrg-svn/sys/netns/ns_proto.c (revision 68251)
123213Smckusick /*
263231Sbostic  * Copyright (c) 1984, 1985, 1986, 1987, 1993
363231Sbostic  *	The Regents of the University of California.  All rights reserved.
423213Smckusick  *
544506Sbostic  * %sccs.include.redist.c%
633371Ssklower  *
7*68251Ssklower  *	@(#)ns_proto.c	8.2 (Berkeley) 02/09/95
823213Smckusick  */
921491Ssklower 
1056534Sbostic #include <sys/param.h>
1156534Sbostic #include <sys/socket.h>
1256534Sbostic #include <sys/protosw.h>
1356534Sbostic #include <sys/domain.h>
1456534Sbostic #include <sys/mbuf.h>
1521491Ssklower 
1656534Sbostic #include <net/radix.h>
1721491Ssklower 
1856534Sbostic #include <netns/ns.h>
1956534Sbostic 
2021491Ssklower /*
2121491Ssklower  * NS protocol family: IDP, ERR, PE, SPP, ROUTE.
2221491Ssklower  */
23*68251Ssklower void	ns_init();
24*68251Ssklower int	idp_output(), idp_usrreq(), idp_raw_usrreq(), idp_ctloutput();
25*68251Ssklower void	idp_input(), idp_ctlinput();
26*68251Ssklower void	spp_input(), spp_ctlinput();
2721491Ssklower int	spp_usrreq(), spp_usrreq_sp(), spp_ctloutput();
28*68251Ssklower void	spp_init(), spp_fasttimo(), spp_slowtimo();
2921491Ssklower extern	int raw_usrreq();
3021491Ssklower 
3121491Ssklower extern	struct domain nsdomain;
3221491Ssklower 
3321491Ssklower struct protosw nssw[] = {
3421491Ssklower { 0,		&nsdomain,	0,		0,
3521491Ssklower   0,		idp_output,	0,		0,
3621491Ssklower   0,
3721491Ssklower   ns_init,	0,		0,		0,
3821491Ssklower },
3921491Ssklower { SOCK_DGRAM,	&nsdomain,	0,		PR_ATOMIC|PR_ADDR,
4024561Ssklower   0,		0,		idp_ctlinput,	idp_ctloutput,
4121491Ssklower   idp_usrreq,
4221491Ssklower   0,		0,		0,		0,
4321491Ssklower },
4421491Ssklower { SOCK_STREAM,	&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD,
4524561Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
4621491Ssklower   spp_usrreq,
4721491Ssklower   spp_init,	spp_fasttimo,	spp_slowtimo,	0,
4821491Ssklower },
4921491Ssklower { SOCK_SEQPACKET,&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD|PR_ATOMIC,
5024561Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
5121491Ssklower   spp_usrreq_sp,
5221491Ssklower   0,		0,		0,		0,
5321491Ssklower },
5421491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_RAW,	PR_ATOMIC|PR_ADDR,
5521491Ssklower   idp_input,	idp_output,	0,		idp_ctloutput,
5621491Ssklower   idp_raw_usrreq,
5721491Ssklower   0,		0,		0,		0,
5821491Ssklower },
5921491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_ERROR,	PR_ATOMIC|PR_ADDR,
6021491Ssklower   idp_ctlinput,	idp_output,	0,		idp_ctloutput,
6121491Ssklower   idp_raw_usrreq,
6221491Ssklower   0,		0,		0,		0,
6321491Ssklower },
6421491Ssklower };
6521491Ssklower 
6621491Ssklower struct domain nsdomain =
6721491Ssklower     { AF_NS, "network systems", 0, 0, 0,
6854826Ssklower       nssw, &nssw[sizeof(nssw)/sizeof(nssw[0])], 0,
6954826Ssklower       rn_inithead, 16, sizeof(struct sockaddr_ns)};
7021491Ssklower 
71