00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef DUMMYIN6_H
00030 #define DUMMYIN6_H
00031
00032 #ifdef HAVE_CONFIG_H
00033 #include "config.h"
00034 #endif
00035
00036 #include <sys/types.h>
00037 #include <sys/socket.h>
00038 #include <netinet/in.h>
00039 #include <netdb.h>
00040
00041 #ifndef AF_INET6
00042 #define AF_INET6 (AF_INET + 1)
00043 #endif
00044
00045 #ifndef PF_INET6
00046 #define PF_INET6 (PF_INET + 1)
00047 #endif
00048
00049 #ifndef AF_UNSPEC
00050 #define AF_UNSPEC AF_INET
00051 #endif
00052
00053 #ifndef PF_UNSPEC
00054 #define PF_UNSPEC PF_INET
00055 #endif
00056
00057 #ifndef INET6_ADDRSTRLEN
00058 #define INET6_ADDRSTRLEN 46
00059 #endif
00060
00061 #ifndef INET_ADDRSTRLEN
00062 #define INET_ADDRSTRLEN 16
00063 #endif
00064
00065 #ifndef HAVE_STRUCT_IN6_ADDR
00066 struct in6_addr {
00067 unsigned char s6_addr[16];
00068 };
00069 #endif
00070
00071 #ifndef HAVE_STRUCT_SOCKADDR_IN6
00072 struct sockaddr_in6 {
00073 sa_family_t sin6_family;
00074 in_port_t sin6_port;
00075 unsigned long sin6_flowinfo;
00076 struct in6_addr sin6_addr;
00077 unsigned long sin6_scope_id;
00078 };
00079 #endif
00080
00081 #if !defined(HAVE_STRUCT_SOCKADDR_STORAGE) && !defined(sockaddr_storage)
00082 #define sockaddr_storage sockaddr_in
00083 #endif
00084
00085 #ifndef IN6ADDR_ANY_DECLARED
00086 extern const struct in6_addr in6addr_any;
00087 #endif
00088
00089 #ifndef IN6ADDR_LOOPBACK_DECLARED
00090 extern const struct in6_addr in6addr_loopback;
00091 #endif
00092
00093 #ifndef IN6ADDR_ANY_INIT
00094 #define IN6ADDR_ANY_INIT \
00095 {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
00096 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}
00097 #endif
00098
00099 #ifndef IN6ADDR_LOOPBACK_INIT
00100 #define IN6ADDR_LOOPBACK_INIT \
00101 {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
00102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}}
00103 #endif
00104
00105 #ifndef IN6_IS_ADDR_UNSPECIFIED
00106 #define IN6_IS_ADDR_UNSPECIFIED(a) \
00107 ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \
00108 && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \
00109 && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \
00110 && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \
00111 && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \
00112 && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \
00113 && (a)->s6_addr[12] == 0 && (a)->s6_addr[13] == 0 \
00114 && (a)->s6_addr[14] == 0 && (a)->s6_addr[15] == 0)
00115 #endif
00116
00117 #ifndef IN6_IS_ADDR_LOOPBACK
00118 #define IN6_IS_ADDR_LOOPBACK(a) \
00119 ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \
00120 && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \
00121 && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \
00122 && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \
00123 && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \
00124 && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \
00125 && (a)->s6_addr[12] == 0 && (a)->s6_addr[13] == 0 \
00126 && (a)->s6_addr[14] == 0 && (a)->s6_addr[15] == 1)
00127 #endif
00128
00129 #ifndef IN6_IS_ADDR_MULTICAST
00130 #define IN6_IS_ADDR_MULTICAST(a) \
00131 ((a)->s6_addr[0] == 0xff)
00132 #endif
00133
00134 #ifndef IN6_IS_ADDR_LINKLOCAL
00135 #define IN6_IS_ADDR_LINKLOCAL(a) \
00136 (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
00137 #endif
00138
00139 #ifndef IN6_IS_ADDR_SITELOCAL
00140 #define IN6_IS_ADDR_SITELOCAL(a) \
00141 (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
00142 #endif
00143
00144 #ifndef IN6_IS_ADDR_V4MAPPED
00145 #define IN6_IS_ADDR_V4MAPPED(a) \
00146 ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \
00147 && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \
00148 && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \
00149 && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \
00150 && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \
00151 && (a)->s6_addr[10] == 0xff && (a)->s6_addr[11] == 0xff)
00152 #endif
00153
00154 #ifndef IN6_IS_ADDR_V4COMPAT
00155 #define IN6_IS_ADDR_V4COMPAT(a) \
00156 ( (a)->s6_addr[ 0] == 0 && (a)->s6_addr[ 1] == 0 \
00157 && (a)->s6_addr[ 2] == 0 && (a)->s6_addr[ 3] == 0 \
00158 && (a)->s6_addr[ 4] == 0 && (a)->s6_addr[ 5] == 0 \
00159 && (a)->s6_addr[ 6] == 0 && (a)->s6_addr[ 7] == 0 \
00160 && (a)->s6_addr[ 8] == 0 && (a)->s6_addr[ 9] == 0 \
00161 && (a)->s6_addr[10] == 0 && (a)->s6_addr[11] == 0 \
00162 && ((a)->s6_addr[12] != 0 || (a)->s6_addr[13] != 0 \
00163 || (a)->s6_addr[14] != 0 \
00164 || ((a)->s6_addr[15] != 0 && (a)->s6_addr[15] != 1)))
00165 #endif
00166
00167 #endif