|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms, with or without ! 6: * modification, are permitted provided that the following conditions ! 7: * are met: ! 8: * 1. Redistributions of source code must retain the above copyright ! 9: * notice, this list of conditions and the following disclaimer. ! 10: * 2. Redistributions in binary form must reproduce the above copyright ! 11: * notice, this list of conditions and the following disclaimer in the ! 12: * documentation and/or other materials provided with the distribution. ! 13: * 3. All advertising materials mentioning features or use of this software ! 14: * must display the following acknowledgement: ! 15: * This product includes software developed by the University of ! 16: * California, Berkeley and its contributors. ! 17: * 4. Neither the name of the University nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: * ! 33: * @(#)in_proto.c 7.5 (Berkeley) 6/28/90 ! 34: */ ! 35: ! 36: #include "param.h" ! 37: #include "socket.h" ! 38: #include "protosw.h" ! 39: #include "domain.h" ! 40: #include "mbuf.h" ! 41: ! 42: #include "in.h" ! 43: #include "in_systm.h" ! 44: ! 45: /* ! 46: * TCP/IP protocol family: IP, ICMP, UDP, TCP. ! 47: */ ! 48: int ip_output(),ip_ctloutput(); ! 49: int ip_init(),ip_slowtimo(),ip_drain(); ! 50: int icmp_input(); ! 51: int udp_input(),udp_ctlinput(); ! 52: int udp_usrreq(); ! 53: int udp_init(); ! 54: int tcp_input(),tcp_ctlinput(); ! 55: int tcp_usrreq(),tcp_ctloutput(); ! 56: int tcp_init(),tcp_fasttimo(),tcp_slowtimo(),tcp_drain(); ! 57: int rip_input(),rip_output(),rip_ctloutput(), rip_usrreq(); ! 58: /* ! 59: * IMP protocol family: raw interface. ! 60: * Using the raw interface entry to get the timer routine ! 61: * in is a kludge. ! 62: */ ! 63: #include "imp.h" ! 64: #if NIMP > 0 ! 65: int rimp_output(), hostslowtimo(); ! 66: #endif ! 67: ! 68: #ifdef NSIP ! 69: int idpip_input(), nsip_ctlinput(); ! 70: #endif ! 71: ! 72: #ifdef TPIP ! 73: int tpip_input(), tpip_ctlinput(), tp_ctloutput(), tp_usrreq(); ! 74: int tp_init(), tp_slowtimo(), tp_drain(); ! 75: #endif ! 76: ! 77: #ifdef EON ! 78: int eoninput(), eonctlinput(), eonprotoinit(); ! 79: #endif EON ! 80: ! 81: extern struct domain inetdomain; ! 82: ! 83: struct protosw inetsw[] = { ! 84: { 0, &inetdomain, 0, 0, ! 85: 0, ip_output, 0, 0, ! 86: 0, ! 87: ip_init, 0, ip_slowtimo, ip_drain, ! 88: }, ! 89: { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR, ! 90: udp_input, 0, udp_ctlinput, ip_ctloutput, ! 91: udp_usrreq, ! 92: udp_init, 0, 0, 0, ! 93: }, ! 94: { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD, ! 95: tcp_input, 0, tcp_ctlinput, tcp_ctloutput, ! 96: tcp_usrreq, ! 97: tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain, ! 98: }, ! 99: { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR, ! 100: rip_input, rip_output, 0, rip_ctloutput, ! 101: rip_usrreq, ! 102: 0, 0, 0, 0, ! 103: }, ! 104: { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR, ! 105: icmp_input, rip_output, 0, rip_ctloutput, ! 106: rip_usrreq, ! 107: 0, 0, 0, 0, ! 108: }, ! 109: #ifdef TPIP ! 110: { SOCK_SEQPACKET,&inetdomain, IPPROTO_TP, PR_CONNREQUIRED|PR_WANTRCVD, ! 111: tpip_input, 0, tpip_ctlinput, tp_ctloutput, ! 112: tp_usrreq, ! 113: tp_init, 0, tp_slowtimo, tp_drain, ! 114: }, ! 115: #endif ! 116: /* EON (ISO CLNL over IP) */ ! 117: #ifdef EON ! 118: { SOCK_RAW, &inetdomain, IPPROTO_EON, 0, ! 119: eoninput, 0, eonctlinput, 0, ! 120: 0, ! 121: eonprotoinit, 0, 0, 0, ! 122: }, ! 123: #endif ! 124: #ifdef NSIP ! 125: { SOCK_RAW, &inetdomain, IPPROTO_IDP, PR_ATOMIC|PR_ADDR, ! 126: idpip_input, rip_output, nsip_ctlinput, 0, ! 127: rip_usrreq, ! 128: 0, 0, 0, 0, ! 129: }, ! 130: #endif ! 131: /* raw wildcard */ ! 132: { SOCK_RAW, &inetdomain, 0, PR_ATOMIC|PR_ADDR, ! 133: rip_input, rip_output, 0, rip_ctloutput, ! 134: rip_usrreq, ! 135: 0, 0, 0, 0, ! 136: }, ! 137: }; ! 138: ! 139: struct domain inetdomain = ! 140: { AF_INET, "internet", 0, 0, 0, ! 141: inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])] }; ! 142: ! 143: #if NIMP > 0 ! 144: extern struct domain impdomain; ! 145: ! 146: struct protosw impsw[] = { ! 147: { SOCK_RAW, &impdomain, 0, PR_ATOMIC|PR_ADDR, ! 148: 0, rimp_output, 0, 0, ! 149: rip_usrreq, ! 150: 0, 0, hostslowtimo, 0, ! 151: }, ! 152: }; ! 153: ! 154: struct domain impdomain = ! 155: { AF_IMPLINK, "imp", 0, 0, 0, ! 156: impsw, &impsw[sizeof (impsw)/sizeof(impsw[0])] }; ! 157: #endif ! 158: ! 159: #include "hy.h" ! 160: #if NHY > 0 ! 161: /* ! 162: * HYPERchannel protocol family: raw interface. ! 163: */ ! 164: int rhy_output(); ! 165: extern struct domain hydomain; ! 166: ! 167: struct protosw hysw[] = { ! 168: { SOCK_RAW, &hydomain, 0, PR_ATOMIC|PR_ADDR, ! 169: 0, rhy_output, 0, 0, ! 170: rip_usrreq, ! 171: 0, 0, 0, 0, ! 172: }, ! 173: }; ! 174: ! 175: struct domain hydomain = ! 176: { AF_HYLINK, "hy", 0, 0, 0, hysw, &hysw[sizeof (hysw)/sizeof(hysw[0])] }; ! 177: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.