Index: EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/icmp6.h
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/icmp6.h	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/icmp6.h	(revision 331)
@@ -2,5 +2,5 @@
  *  TINET (TCP/IP Protocol Stack)
  * 
- *  Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering
+ *  Copyright (C) 2001-2017 by Dep. of Computer Science and Engineering
  *                   Tomakomai National College of Technology, JAPAN
  *
@@ -102,6 +102,4 @@
 #define _IP_ICMP6_H_
 
-#ifdef SUPPORT_INET6
-
 /*
  *  ICMPv6 ヘッダ
@@ -117,5 +115,5 @@
 		uint8_t		data8[4];
 		} data;
-	} __attribute__((packed, aligned(2)))T_ICMP6_HDR;
+	} __attribute__((packed, aligned(2))) T_ICMP6_HDR;
 
 #define icmp6_data32			data.data32
@@ -133,5 +131,5 @@
 #define GET_ICMP6_SDU(nbuf,ihoff)	((uint8_t*)((nbuf)->buf) + ihoff + ICMP6_HDR_SIZE)
 
-#define GET_IP6_ICMP6_HDR_SIZE(nbuf)	(GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf)) + ICMP6_HDR_SIZE)
+#define GET_IP6_ICMP6_HDR_SIZE(nbuf)	(GET_IP6_HDR_SIZE(nbuf) + ICMP6_HDR_SIZE)
 #define GET_IF_IP6_ICMP6_HDR_SIZE(nbuf)	(IF_HDR_SIZE + GET_IP6_ICMP6_HDR_SIZE(nbuf))
 
@@ -218,5 +216,5 @@
 	T_IN6_ADDR	target;
 	/* この後にオプションが続く */
-	} __attribute__((packed, aligned(2)))T_NEIGHBOR_SOLICIT_HDR;
+	} T_NEIGHBOR_SOLICIT_HDR;
 
 #define NEIGHBOR_SOLICIT_HDR_SIZE	(sizeof(T_NEIGHBOR_SOLICIT_HDR))
@@ -230,5 +228,5 @@
 
 #define GET_IP6_NEIGHBOR_SOLICIT_HDR_SIZE(nbuf)		\
-					(GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf)) + NEIGHBOR_SOLICIT_HDR_SIZE)
+					(GET_IP6_HDR_SIZE(nbuf) + NEIGHBOR_SOLICIT_HDR_SIZE)
 #define GET_IF_IP6_NEIGHBOR_SOLICIT_HDR_SIZE(nbuf)	\
 					(GET_IP6_NEIGHBOR_SOLICIT_HDR_SIZE(nbuf) + IF_HDR_SIZE)
@@ -242,5 +240,5 @@
 	T_IN6_ADDR	target;
 	/* この後にオプションが続く */
-	} __attribute__((packed, aligned(2)))T_NEIGHBOR_ADVERT_HDR;
+	} __attribute__((packed, aligned(2))) T_NEIGHBOR_ADVERT_HDR;
 
 /* ICMP6 ヘッダのデータ部の定義 */
@@ -261,5 +259,5 @@
 
 #define GET_IP6_NEIGHBOR_ADVERT_HDR_SIZE(nbuf)		\
-					(GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf)) + NEIGHBOR_ADVERT_HDR_SIZE)
+					(GET_IP6_HDR_SIZE(nbuf) + NEIGHBOR_ADVERT_HDR_SIZE)
 #define GET_IF_IP6_NEIGHBOR_ADVERT_HDR_SIZE(nbuf)	\
 					(GET_IP6_NEIGHBOR_ADVERT_HDR_SIZE(nbuf) + IF_HDR_SIZE)
@@ -285,4 +283,8 @@
 /*
  *  ルータ通知
+ *
+ *    RFC4291: IP Version 6 Addressing Architecture
+ *    RFC4941: Privacy Extensions for Stateless Address Autoconfiguration in IPv6
+ *    RFC6106: IPv6 Router Advertisement Options for DNS Configuration
  */
 
@@ -292,5 +294,5 @@
 	uint32_t	retransmit;		/* [ms] 近隣要請送信間隔	*/
 	/* この後にオプションが続く */
-	} __attribute__((packed, aligned(2)))T_ROUTER_ADVERT_HDR;
+	} __attribute__((packed, aligned(2))) T_ROUTER_ADVERT_HDR;
 
 /* ICMP6 ヘッダのデータ部の定義 */
@@ -311,5 +313,5 @@
 
 #define GET_IP6_ROUTER_ADVERT_HDR_SIZE(nbuf)	\
-					(GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf)) + ROUTER_ADVERT_HDR_SIZE)
+					(GET_IP6_HDR_SIZE(nbuf) + ROUTER_ADVERT_HDR_SIZE)
 #define GET_IF_IP6_ROUTER_ADVERT_HDR_SIZE(nbuf)	\
 					(GET_IP6_ROUTER_ADVERT_HDR_SIZE(nbuf) + IF_HDR_SIZE)
@@ -324,4 +326,15 @@
 
 /*
+ *  M: RA以外の方法で自動的にアドレスを設定することを許可する。
+ *  O: RA以外の方法で自動的にアドレス以外の情報を設定することをを許可する。
+ *
+ *   M   O
+ *  ON  ON	アドレスとそれ以外の情報をDHCPv6で設定する（statefull）
+ *  ON  OFF	アドレスはDHCPv6で設定するが、それ以外は手動で設定する。
+ *  OFF ON	アドレスは RA で設定するが、それ以外の情報をDHCPv6で設定する（stateless）
+ *  OFF OFF	DHCPv6 は使用しない。
+ */
+
+/*
  *  ルータ要請
  */
@@ -329,5 +342,5 @@
 typedef struct t_router_solicit_hdr {
 	T_ICMP6_HDR	hdr;
-	} __attribute__((packed, aligned(2)))T_ROUTER_SOLICIT_HDR;
+	} __attribute__((packed, aligned(2))) T_ROUTER_SOLICIT_HDR;
 
 /* ICMP6 ヘッダのデータ部の定義 */
@@ -347,5 +360,5 @@
 
 #define GET_IP6_ROUTER_SOLICIT_HDR_SIZE(nbuf)		\
-					(GET_IP6_HDR_SIZE(GET_IP6_HDR(nbuf)) + ROUTER_SOLICIT_HDR_SIZE)
+					(GET_IP6_HDR_SIZE(nbuf) + ROUTER_SOLICIT_HDR_SIZE)
 #define GET_IF_IP6_ROUTER_SOLICIT_HDR_SIZE(nbuf)	\
 					(GET_IP6_ROUTER_SOLICIT_HDR_SIZE(nbuf) + IF_HDR_SIZE)
@@ -360,5 +373,5 @@
 	T_ICMP6_HDR	hdr;
 	T_IN6_ADDR	target;
-	} __attribute__((packed, aligned(2)))T_NEIGHBOR_HDR;
+	} __attribute__((packed, aligned(2))) T_NEIGHBOR_HDR;
 
 /* 近隣探索オプションヘッダ */
@@ -367,5 +380,5 @@
 	uint8_t		type;			/* オプションタイプ			*/
 	uint8_t		len;			/* オプション長、単位は 8 バイト	*/
-	} __attribute__((packed, aligned(2)))T_ND_OPT_HDR;
+	} __attribute__((packed, aligned(2))) T_ND_OPT_HDR;
 
 #define ND_OPT_HDR_SIZE			(sizeof(T_ND_OPT_HDR))
@@ -393,5 +406,5 @@
 	uint32_t	reserved;
 	T_IN6_ADDR	prefix;		/* プレフィックス		*/
-	} __attribute__((packed, aligned(2)))T_ND_OPT_PREFIX_INFO;
+	} __attribute__((packed, aligned(2))) T_ND_OPT_PREFIX_INFO;
 
 #define ND_OPT_PI_FLAG_ONLINK	UINT_C(0x80)		/* オンリンクプレフィックス	*/
@@ -405,5 +418,5 @@
 	uint16_t	reserved;
 	uint32_t	mtu;		/* MTU				*/
-	} __attribute__((packed, aligned(2)))T_ND_OPT_MTU_HDR;
+	} __attribute__((packed, aligned(2))) T_ND_OPT_MTU_HDR;
 
 /*
@@ -416,5 +429,5 @@
 	T_IN6_ADDR	dst;		/* 向け直しの終点アドレス		*/
 	/* この後にオプションが続く */
-	} __attribute__((packed, aligned(2)))T_ND_REDIRECT_HDR;
+	} __attribute__((packed, aligned(2))) T_ND_REDIRECT_HDR;
 
 #define ND_REDIRECT_HDR_SIZE		(sizeof(T_ND_REDIRECT_HDR))
@@ -480,5 +493,3 @@
 #endif	/* of #ifdef ICMP_CFG_CALLBACK_ECHO_REPLY */
 
-#endif	/* of #ifdef SUPPORT_INET6 */
-
 #endif	/* of #ifndef _IP_ICMP6_H_ */
