xref: /csrg-svn/sys/netns/ns_proto.c (revision 21491)
1*21491Ssklower /*      ns_proto.c     6.1     85/05/30     */
2*21491Ssklower 
3*21491Ssklower #include "param.h"
4*21491Ssklower #include "socket.h"
5*21491Ssklower #include "protosw.h"
6*21491Ssklower #include "domain.h"
7*21491Ssklower #include "mbuf.h"
8*21491Ssklower 
9*21491Ssklower #include "ns.h"
10*21491Ssklower 
11*21491Ssklower /*
12*21491Ssklower  * NS protocol family: IDP, ERR, PE, SPP, ROUTE.
13*21491Ssklower  */
14*21491Ssklower int	ns_init(), ns_ctlinput();
15*21491Ssklower int	idp_input(), idp_output(), idp_ctlinput(), idp_usrreq();
16*21491Ssklower int	idp_raw_usrreq();
17*21491Ssklower int	idp_init(), idp_slowtimo(), idp_drain(), idp_ctloutput();
18*21491Ssklower int	spp_input(), spp_ctlinput();
19*21491Ssklower int	spp_usrreq(), spp_usrreq_sp(), spp_ctloutput();
20*21491Ssklower int	spp_init(), spp_fasttimo(), spp_slowtimo(), spp_drain();
21*21491Ssklower extern	int raw_usrreq();
22*21491Ssklower 
23*21491Ssklower extern	struct domain nsdomain;
24*21491Ssklower 
25*21491Ssklower struct protosw nssw[] = {
26*21491Ssklower { 0,		&nsdomain,	0,		0,
27*21491Ssklower   0,		idp_output,	0,		0,
28*21491Ssklower   0,
29*21491Ssklower   ns_init,	0,		0,		0,
30*21491Ssklower },
31*21491Ssklower { SOCK_DGRAM,	&nsdomain,	0,		PR_ATOMIC|PR_ADDR,
32*21491Ssklower   0,		0,		idp_ctlinput,	idp_ctloutput,
33*21491Ssklower   idp_usrreq,
34*21491Ssklower   0,		0,		0,		0,
35*21491Ssklower },
36*21491Ssklower { SOCK_STREAM,	&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD,
37*21491Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
38*21491Ssklower   spp_usrreq,
39*21491Ssklower   spp_init,	spp_fasttimo,	spp_slowtimo,	0,
40*21491Ssklower },
41*21491Ssklower { SOCK_SEQPACKET,&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD|PR_ATOMIC,
42*21491Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
43*21491Ssklower   spp_usrreq_sp,
44*21491Ssklower   0,		0,		0,		0,
45*21491Ssklower },
46*21491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_RAW,	PR_ATOMIC|PR_ADDR,
47*21491Ssklower   idp_input,	idp_output,	0,		idp_ctloutput,
48*21491Ssklower   idp_raw_usrreq,
49*21491Ssklower   0,		0,		0,		0,
50*21491Ssklower },
51*21491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_ERROR,	PR_ATOMIC|PR_ADDR,
52*21491Ssklower   idp_ctlinput,	idp_output,	0,		idp_ctloutput,
53*21491Ssklower   idp_raw_usrreq,
54*21491Ssklower   0,		0,		0,		0,
55*21491Ssklower },
56*21491Ssklower };
57*21491Ssklower 
58*21491Ssklower struct domain nsdomain =
59*21491Ssklower     { AF_NS, "network systems", 0, 0, 0,
60*21491Ssklower       nssw, &nssw[sizeof(nssw)/sizeof(nssw[0])] };
61*21491Ssklower 
62