in_proto.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* in_proto.c - internet protocol data structures */
  2. /* Copyright 1984 - 2001 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5.  * Copyright (c) 1982, 1986, 1993, 1995
  6.  * The Regents of the University of California.  All rights reserved.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in the
  15.  *    documentation and/or other materials provided with the distribution.
  16.  * 3. All advertising materials mentioning features or use of this software
  17.  *    must display the following acknowledgement:
  18.  * This product includes software developed by the University of
  19.  * California, Berkeley and its contributors.
  20.  * 4. Neither the name of the University nor the names of its contributors
  21.  *    may be used to endorse or promote products derived from this software
  22.  *    without specific prior written permission.
  23.  *
  24.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  25.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  30.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  31.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  32.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  33.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  34.  * SUCH DAMAGE.
  35.  *
  36.  * @(#)in_proto.c 8.2 (Berkeley) 2/9/95
  37.  */
  38. /*
  39. modification history
  40. --------------------
  41. 01d,12oct01,rae  merge from truestack (VIRTUAL_STACK)
  42. 01c,13feb97,rjc  set starting bit for masks to 27 for tos routing
  43. 01b,03jan97,vin  moved protoswitch initialization to netLib.c.
  44. 01a,03mar96,vin  created from BSD4.4 stuff,integrated with 02g of in_proto.c.
  45. */
  46. #include "vxWorks.h"
  47. #include "netLib.h"
  48. #include "sys/socket.h"
  49. #include "net/protosw.h"
  50. #include "net/domain.h"
  51. #include "net/mbuf.h"
  52. #include "net/if.h"
  53. #include "net/radix.h"
  54. #include "net/route.h"
  55. #include "netinet/in.h"
  56. #include "netinet/in_systm.h"
  57. #include "netinet/ip.h"
  58. #include "netinet/ip_var.h"
  59. #include "netinet/ip_icmp.h"
  60. #include "netinet/in_pcb.h"
  61. #include "netinet/igmp_var.h"
  62. #include "netinet/tcp.h"
  63. #include "netinet/tcp_fsm.h"
  64. #include "netinet/tcp_seq.h"
  65. #include "netinet/tcp_timer.h"
  66. #include "netinet/tcp_var.h"
  67. #include "netinet/tcpip.h"
  68. #include "netinet/tcp_debug.h"
  69. #include "netinet/udp.h"
  70. #include "netinet/udp_var.h"
  71. #ifdef VIRTUAL_STACK
  72. #include "netinet/vsLib.h"
  73. #endif    /* VIRTUAL_STACK */
  74. /*
  75.  * TCP/IP protocol family: IP, ICMP, UDP, TCP.
  76.  */
  77. /*
  78.  * WRS MODS, each entry is initialized in the appropriate library, 
  79.  * see usrNetProtoInit() in src/config/usrNetwork.c
  80.  */
  81. #if 0 
  82. struct protosw inetsw[] = {
  83. { 0, &inetdomain, 0, 0,
  84.   0, ip_output, 0, 0,
  85.   0,
  86.   ip_init, 0, ip_slowtimo, ip_drain, 0
  87. },
  88. { SOCK_DGRAM, &inetdomain, IPPROTO_UDP, PR_ATOMIC|PR_ADDR,
  89.   udp_input, 0, udp_ctlinput, ip_ctloutput,
  90.   udp_usrreq,
  91.   udp_init, 0, 0, 0, 0
  92. },
  93. { SOCK_STREAM, &inetdomain, IPPROTO_TCP, PR_CONNREQUIRED|PR_WANTRCVD,
  94.   tcp_input, 0, tcp_ctlinput, tcp_ctloutput,
  95.   tcp_usrreq,
  96.   tcp_init, tcp_fasttimo, tcp_slowtimo, tcp_drain,
  97. },
  98. { SOCK_RAW, &inetdomain, IPPROTO_RAW, PR_ATOMIC|PR_ADDR,
  99.   rip_input, rip_output, 0, rip_ctloutput,
  100.   rip_usrreq,
  101.   0, 0, 0, 0,
  102. },
  103. { SOCK_RAW, &inetdomain, IPPROTO_ICMP, PR_ATOMIC|PR_ADDR,
  104.   icmp_input, rip_output, 0, rip_ctloutput,
  105.   rip_usrreq,
  106.   0, 0, 0, 0, 0
  107. },
  108. { SOCK_RAW, &inetdomain, IPPROTO_IGMP, PR_ATOMIC|PR_ADDR,
  109.   igmp_input, rip_output, 0, rip_ctloutput,
  110.   rip_usrreq,
  111.   igmp_init, igmp_fasttimo, 0, 0,
  112. },
  113. /* raw wildcard */
  114. { SOCK_RAW, &inetdomain, 0, PR_ATOMIC|PR_ADDR,
  115.   rip_input, rip_output, 0, rip_ctloutput,
  116.   rip_usrreq,
  117.   rip_init, 0, 0, 0,
  118. },
  119. };
  120. #else
  121. #ifndef VIRTUAL_STACK
  122. struct protosw inetsw [IP_PROTO_NUM_MAX]; 
  123. #endif    /* VIRTUAL_STACK */
  124. #endif /* XXX */
  125. #ifndef VIRTUAL_STACK
  126. struct domain inetdomain =
  127.     { AF_INET, "internet", 0, 0, 0, 
  128.       inetsw, &inetsw[sizeof(inetsw)/sizeof(inetsw[0])], 0,
  129.       rn_inithead, 27, sizeof(struct sockaddr_in) };
  130. #endif    /* VIRTUAL_STACK */