inet.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. /*
  2.  * Copyright (c) 1991-1994 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 the Network Research Group at
  17.  *      Lawrence Berkeley Laboratory.
  18.  * 4. Neither the name of the University nor of the Laboratory may be used
  19.  *    to endorse or promote products derived from this software without
  20.  *    specific prior written permission.
  21.  *
  22.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32.  * SUCH DAMAGE.
  33.  *
  34.  * @(#) $Header: /cvsroot/nsnam/ns-2/emulate/inet.h,v 1.3 2003/02/15 00:55:31 buchheim Exp $ (LBL)
  35.  */
  36. #ifndef ns_inet_h
  37. #define ns_inet_h
  38. #include <sys/types.h>
  39. #ifdef WIN32
  40. #include <winsock.h>
  41. #endif
  42. #if defined(__osf__)
  43. #include <machine/endian.h>
  44. #endif
  45. #if defined(__linux__)
  46. #include <endian.h>
  47. #endif
  48. #ifndef IPPROTO_IP
  49. #if defined(__ultrix__) && defined(__cplusplus)
  50. extern "C" {
  51. #include <netinet/in.h>
  52. }
  53. #else
  54. #include <netinet/in.h>
  55. #endif
  56. #endif
  57. #ifndef WIN32
  58. #include <arpa/inet.h>
  59. #endif
  60. #include "config.h"
  61. #ifdef __cplusplus
  62. extern "C" {
  63. #endif
  64. extern char *LookupHostName(u_int32_t addr);
  65. extern char *InetNtoa(u_int32_t addr);
  66. extern u_int32_t LookupLocalAddr(void);
  67. extern u_int32_t LookupHostAddr(const char* host);
  68. extern const char* intoa(u_int32_t addr);
  69. extern u_short in_cksum(u_short*, int);
  70. #ifdef __cplusplus
  71. }
  72. #endif
  73. #ifndef NTOHL
  74. #if BYTE_ORDER==LITTLE_ENDIAN
  75. #define NTOHL(d) ((d) = ntohl((d)))
  76. #define NTOHS(d) ((d) = ntohs((d)))
  77. #define HTONL(d) ((d) = htonl((d)))
  78. #define HTONS(d) ((d) = htons((d)))
  79. #elif BYTE_ORDER==BIG_ENDIAN
  80. #define NTOHL(d)
  81. #define NTOHS(d)
  82. #define HTONL(d)
  83. #define HTONS(d)
  84. #else
  85. #error error - BYTE_ORDER not defined.
  86. #endif
  87. #endif
  88. #ifndef INADDR_LOOPBACK
  89. #define INADDR_LOOPBACK (u_int32_t)0x7F000001
  90. #endif
  91. #if defined(WIN32)
  92. struct msghdr {
  93. caddr_t msg_name; /* optional address */
  94. u_int msg_namelen; /* size of address */
  95. struct iovec *msg_iov; /* scatter/gather array */
  96. u_int msg_iovlen; /* # elements in msg_iov */
  97. caddr_t msg_control; /* ancillary data, see below */
  98. u_int msg_controllen; /* ancillary data buffer len */
  99. int msg_flags; /* flags on received message */
  100. };
  101. #endif
  102. /* XXX winsock.h should have these !! */
  103. #ifdef WIN32
  104. #define IN_CLASSD(i) (((u_long)(i) & ((u_long)0xf0000000)) == 
  105.   ((u_long)0xe0000000))
  106. #define IN_CLASSD_NET ((u_long)0xf0000000)/* These aren't really    */
  107. #define IN_CLASSD_NSHIFT 28     /* net and host fields,but*/
  108. #define IN_CLASSD_HOST ((u_long)0x0fffffff)/* routing needn't know.  */
  109. #define IN_MULTICAST(i) IN_CLASSD(i)
  110. #endif
  111. /* for systems without socklen_t (such as Darwin/Mac OS X) */
  112. #ifndef HAVE_SOCKLEN_T
  113. typedef int socklen_t;
  114. #endif
  115. #endif