1: /* 2: * Copyright (c) 1984, 1985, 1986 Regents of the University of California. 3: * All rights reserved. The Berkeley software License Agreement 4: * specifies the terms and conditions for redistribution. 5: * 6: * @(#)ns_proto.c 7.1 (Berkeley) 6/5/86 7: */ 8: 9: #include "param.h" 10: #include "socket.h" 11: #include "protosw.h" 12: #include "domain.h" 13: #include "mbuf.h" 14: 15: #include "ns.h" 16: 17: /* 18: * NS protocol family: IDP, ERR, PE, SPP, ROUTE. 19: */ 20: int ns_init(); 21: int idp_input(), idp_output(), idp_ctlinput(), idp_usrreq(); 22: int idp_raw_usrreq(), idp_ctloutput(); 23: int spp_input(), spp_ctlinput(); 24: int spp_usrreq(), spp_usrreq_sp(), spp_ctloutput(); 25: int spp_init(), spp_fasttimo(), spp_slowtimo(); 26: extern int raw_usrreq(); 27: 28: extern struct domain nsdomain; 29: 30: struct protosw nssw[] = { 31: { 0, &nsdomain, 0, 0, 32: 0, idp_output, 0, 0, 33: 0, 34: ns_init, 0, 0, 0, 35: }, 36: { SOCK_DGRAM, &nsdomain, 0, PR_ATOMIC|PR_ADDR, 37: 0, 0, idp_ctlinput, idp_ctloutput, 38: idp_usrreq, 39: 0, 0, 0, 0, 40: }, 41: { SOCK_STREAM, &nsdomain, NSPROTO_SPP, PR_CONNREQUIRED|PR_WANTRCVD, 42: spp_input, 0, spp_ctlinput, spp_ctloutput, 43: spp_usrreq, 44: spp_init, spp_fasttimo, spp_slowtimo, 0, 45: }, 46: { SOCK_SEQPACKET,&nsdomain, NSPROTO_SPP, PR_CONNREQUIRED|PR_WANTRCVD|PR_ATOMIC, 47: spp_input, 0, spp_ctlinput, spp_ctloutput, 48: spp_usrreq_sp, 49: 0, 0, 0, 0, 50: }, 51: { SOCK_RAW, &nsdomain, NSPROTO_RAW, PR_ATOMIC|PR_ADDR, 52: idp_input, idp_output, 0, idp_ctloutput, 53: idp_raw_usrreq, 54: 0, 0, 0, 0, 55: }, 56: { SOCK_RAW, &nsdomain, NSPROTO_ERROR, PR_ATOMIC|PR_ADDR, 57: idp_ctlinput, idp_output, 0, idp_ctloutput, 58: idp_raw_usrreq, 59: 0, 0, 0, 0, 60: }, 61: }; 62: 63: struct domain nsdomain = 64: { AF_NS, "network systems", 0, 0, 0, 65: nssw, &nssw[sizeof(nssw)/sizeof(nssw[0])] };