xref: /csrg-svn/sys/netns/ns_proto.c (revision 33371)
123213Smckusick /*
2*33371Ssklower  * Copyright (c) 1984, 1985, 1986, 1987 Regents of the University of California.
3*33371Ssklower  * All rights reserved.
423213Smckusick  *
5*33371Ssklower  * Redistribution and use in source and binary forms are permitted
6*33371Ssklower  * provided that this notice is preserved and that due credit is given
7*33371Ssklower  * to the University of California at Berkeley. The name of the University
8*33371Ssklower  * may not be used to endorse or promote products derived from this
9*33371Ssklower  * software without specific prior written permission. This software
10*33371Ssklower  * is provided ``as is'' without express or implied warranty.
11*33371Ssklower  *
12*33371Ssklower  *      @(#)ns_proto.c	7.2 (Berkeley) 01/20/88
1323213Smckusick  */
1421491Ssklower 
1521491Ssklower #include "param.h"
1621491Ssklower #include "socket.h"
1721491Ssklower #include "protosw.h"
1821491Ssklower #include "domain.h"
1921491Ssklower #include "mbuf.h"
2021491Ssklower 
2121491Ssklower #include "ns.h"
2221491Ssklower 
2321491Ssklower /*
2421491Ssklower  * NS protocol family: IDP, ERR, PE, SPP, ROUTE.
2521491Ssklower  */
2626470Ssklower int	ns_init();
2721491Ssklower int	idp_input(), idp_output(), idp_ctlinput(), idp_usrreq();
2826470Ssklower int	idp_raw_usrreq(), idp_ctloutput();
2921491Ssklower int	spp_input(), spp_ctlinput();
3021491Ssklower int	spp_usrreq(), spp_usrreq_sp(), spp_ctloutput();
3126470Ssklower int	spp_init(), spp_fasttimo(), spp_slowtimo();
3221491Ssklower extern	int raw_usrreq();
3321491Ssklower 
3421491Ssklower extern	struct domain nsdomain;
3521491Ssklower 
3621491Ssklower struct protosw nssw[] = {
3721491Ssklower { 0,		&nsdomain,	0,		0,
3821491Ssklower   0,		idp_output,	0,		0,
3921491Ssklower   0,
4021491Ssklower   ns_init,	0,		0,		0,
4121491Ssklower },
4221491Ssklower { SOCK_DGRAM,	&nsdomain,	0,		PR_ATOMIC|PR_ADDR,
4324561Ssklower   0,		0,		idp_ctlinput,	idp_ctloutput,
4421491Ssklower   idp_usrreq,
4521491Ssklower   0,		0,		0,		0,
4621491Ssklower },
4721491Ssklower { SOCK_STREAM,	&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD,
4824561Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
4921491Ssklower   spp_usrreq,
5021491Ssklower   spp_init,	spp_fasttimo,	spp_slowtimo,	0,
5121491Ssklower },
5221491Ssklower { SOCK_SEQPACKET,&nsdomain,	NSPROTO_SPP,	PR_CONNREQUIRED|PR_WANTRCVD|PR_ATOMIC,
5324561Ssklower   spp_input,	0,		spp_ctlinput,	spp_ctloutput,
5421491Ssklower   spp_usrreq_sp,
5521491Ssklower   0,		0,		0,		0,
5621491Ssklower },
5721491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_RAW,	PR_ATOMIC|PR_ADDR,
5821491Ssklower   idp_input,	idp_output,	0,		idp_ctloutput,
5921491Ssklower   idp_raw_usrreq,
6021491Ssklower   0,		0,		0,		0,
6121491Ssklower },
6221491Ssklower { SOCK_RAW,	&nsdomain,	NSPROTO_ERROR,	PR_ATOMIC|PR_ADDR,
6321491Ssklower   idp_ctlinput,	idp_output,	0,		idp_ctloutput,
6421491Ssklower   idp_raw_usrreq,
6521491Ssklower   0,		0,		0,		0,
6621491Ssklower },
6721491Ssklower };
6821491Ssklower 
6921491Ssklower struct domain nsdomain =
7021491Ssklower     { AF_NS, "network systems", 0, 0, 0,
7121491Ssklower       nssw, &nssw[sizeof(nssw)/sizeof(nssw[0])] };
7221491Ssklower 
73