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