Changeset 331 for EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6.h
- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6.h
r321 r331 2 2 * TINET (TCP/IP Protocol Stack) 3 3 * 4 * Copyright (C) 2001-20 09by Dep. of Computer Science and Engineering4 * Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * … … 103 103 104 104 /* 105 * IPv6 アドレス構造 106 * 107 * RFC4291(RFC1884、RFC2373、RFC3513 のアップデート) 108 */ 109 110 /* 105 111 * IPv6 アドレス 106 112 */ … … 150 156 151 157 /* 152 * アドレスの定義153 */154 155 #ifdef _NET_CFG_BYTE_ORDER156 157 #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN158 159 #define IPV6_ADDR_INT32_ONE ULONG_C(0x00000001)160 #define IPV6_ADDR_INT32_TWO ULONG_C(0x00000002)161 #define IPV6_ADDR_INT32_0000FFFF ULONG_C(0x0000ffff)162 #define IPV6_ADDR_INT32_MNL ULONG_C(0xff010000)163 #define IPV6_ADDR_INT32_MLL ULONG_C(0xff020000)164 #define IPV6_ADDR_INT32_ULL ULONG_C(0xfe800000)165 #define IPV6_ADDR_INT16_ULL UINT_C(0xfe80)166 #define IPV6_ADDR_INT16_USL UINT_C(0xfec0)167 #define IPV6_ADDR_INT16_MLL UINT_C(0xff02)168 169 #elif _NET_CFG_BYTE_ORDER == _NET_CFG_LITTLE_ENDIAN170 171 #define IPV6_ADDR_INT32_ONE ULONG_C(0x01000000)172 #define IPV6_ADDR_INT32_TWO ULONG_C(0x02000000)173 #define IPV6_ADDR_INT32_0000FFFF ULONG_C(0xffff0000)174 #define IPV6_ADDR_INT32_MNL ULONG_C(0x000001ff)175 #define IPV6_ADDR_INT32_MLL ULONG_C(0x000002ff)176 #define IPV6_ADDR_INT32_ULL ULONG_C(0x000080fe)177 #define IPV6_ADDR_INT16_ULL UINT_C(0x80fe)178 #define IPV6_ADDR_INT16_USL UINT_C(0xc0fe)179 #define IPV6_ADDR_INT16_MLL UINT_C(0x02ff)180 181 #endif /* #if _NET_CFG_BYTE_ORDER == _NET_CFG_BIG_ENDIAN */182 183 #endif /* of #ifdef _NET_CFG_BYTE_ORDER */184 185 /*186 158 * 特別なアドレスのチェック 187 159 */ … … 197 169 (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR) - 1) == 0 && \ 198 170 (a)->s6_addr8[15] == 0x01) 199 200 /* IPv4 互換 */201 202 #define IN6_IS_ADDR_V4COMPAT(a) \203 (memcmp((void *)(a), (void *)&in6_addr_unspecified, sizeof(T_IN6_ADDR) - 4) == 0 && \204 (a)->s6_addr32[3] > IPV6_ADDR_INT32_ONE)205 206 /* IPv4 マップ */207 208 #define IN6_IS_ADDR_V4MAPPED(a) \209 (((a)->s6_addr32[0] == ULONG_C(0x00000000)) && \210 ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \211 ((a)->s6_addr32[2] == IPV6_ADDR_INT32_0000FFFF))212 171 213 172 /* … … 248 207 #define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr8[0] == UINT_C(0xff)) 249 208 250 /* 要請マルチキャスト */251 252 #define IN6_IS_ADDR_NS_MULTICAST(a) \253 (((a)->s6_addr32[0] == IPV6_ADDR_INT32_MLL) && \254 ((a)->s6_addr32[1] == ULONG_C(0x00000000)) && \255 ((a)->s6_addr32[2] == IPV6_ADDR_INT32_ONE) && \256 ((a)->s6_addr8[12] == UINT_C(0xff)))257 258 209 /* 259 210 * 同一のチェック … … 272 223 */ 273 224 274 #define IPV6_DEFAULT_MULTICAST_HOPS 1 /* マルチキャスト時のホップリミットの規定値 */ 225 #define IPV6_DEFAULT_MULTICAST_HOPS 1 /* マルチキャスト時のホップリミットの規定値 */ 226 #define ND6_INFINITE_LIFETIME 0xffffffff /* アドレスの無制限有効時間 */ 275 227 276 228 /* … … 282 234 uint16_t portno; /* ポート番号 */ 283 235 } T_IPV6EP; 236 237 #define T_IPV6EP_DEFINED 284 238 285 239 /* … … 299 253 /* 実装依存 */ 300 254 } T_TCP6_CREP; 301 302 #if defined(SUPPORT_INET6)303 #define T_TCP_CREP T_TCP6_CREP304 #endif305 255 306 256 /* … … 316 266 } T_UDP6_CCEP; 317 267 318 #if defined(SUPPORT_INET6)319 #define T_UDP_CCEP T_UDP6_CCEP320 #endif321 322 /*323 * IPv4 と IPv6 をコンパイル時に選択するためのマクロ324 */325 326 #if defined(SUPPORT_INET6)327 328 #define T_IN_ADDR T_IN6_ADDR329 #define T_IPEP T_IPV6EP330 #define IP_ADDRANY IPV6_ADDRANY331 332 #define IN_ARE_ADDR_EQUAL(n,h) IN6_ARE_ADDR_EQUAL(n,h)333 #define IN_ARE_NET_ADDR_EQUAL(n,h) IN6_ARE_ADDR_EQUAL(n,h)334 #define IN_COPY_TO_NET(d,s) memcpy(d,s,sizeof(T_IN6_ADDR))335 #define IN_COPY_TO_HOST(d,s) memcpy(d,s,sizeof(T_IN6_ADDR))336 #define IN_IS_ADDR_MULTICAST(a) IN6_IS_ADDR_MULTICAST(a)337 #define IN_IS_NET_ADDR_MULTICAST(a) IN6_IS_ADDR_MULTICAST(a)338 #define IN_IS_ADDR_ANY(a) IN6_IS_ADDR_UNSPECIFIED(a)339 340 #endif /* of #if defined(SUPPORT_INET6) */341 342 268 /* 343 269 * 前方参照 … … 356 282 */ 357 283 358 extern T_IN6_ADDR in6_addr_unspecified;359 extern T_IN6_ADDR in6_addr_linklocal_allnodes;360 extern T_IN6_ADDR in6_addr_linklocal_allrouters;284 extern const T_IN6_ADDR in6_addr_unspecified; 285 extern const T_IN6_ADDR in6_addr_linklocal_allnodes; 286 extern const T_IN6_ADDR in6_addr_linklocal_allrouters; 361 287 362 288 #define ipv6_addrany in6_addr_unspecified … … 366 292 */ 367 293 368 extern char *ipv62str (char *buf, const T_IN6_ADDR *p_ ip6addr);369 extern ER_UINTin6_get_maxnum_ifaddr (void);294 extern char *ipv62str (char *buf, const T_IN6_ADDR *p_addr); 295 extern uint_t in6_get_maxnum_ifaddr (void); 370 296 extern const T_IN6_ADDR *in6_get_ifaddr (int_t index); 297 extern ER in6_upd_ifaddr (T_IN6_ADDR *addr, uint_t prefixlen, 298 uint32_t vltime, uint32_t pltime); 299 extern ER in6_del_ifaddr (T_IN6_ADDR *addr); 300 extern T_IN6_ADDR *in6_make_ipv4mapped (T_IN6_ADDR *dst, T_IN4_ADDR src); 301 extern bool_t in6_is_addr_ipv4mapped (const T_IN6_ADDR *addr); 371 302 372 303 #endif /* of #ifndef _IN6_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.