Index: EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_output.c
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_output.c	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_output.c	(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
  *
@@ -93,4 +93,6 @@
 #include <net/ethernet.h>
 #include <net/net.h>
+#include <net/net_endian.h>
+#include <net/net_var.h>
 #include <net/net_buf.h>
 #include <net/net_timer.h>
@@ -98,17 +100,13 @@
 
 #include <netinet/in.h>
-#include <netinet6/in6.h>
 #include <netinet/in_var.h>
 #include <netinet/in_itron.h>
 #include <netinet/ip.h>
 #include <netinet/ip_var.h>
-#include <netinet6/in6_var.h>
-#include <netinet/ip6.h>
-#include <netinet6/ip6_var.h>
 #include <netinet/tcp.h>
-#include <netinet/tcp_timer.h>
 #include <netinet/tcp_var.h>
 #include <netinet/tcp_fsm.h>
 #include <netinet/tcp_seq.h>
+#include <netinet/tcp_timer.h>
 
 #ifdef SUPPORT_TCP
@@ -150,5 +148,5 @@
 	T_NET_BUF	*output;
 	T_TCP_HDR	*tcph;
-	uint_t		optlen;
+	uint_t		optlen, hdr_offset;
 	ER		error;
 
@@ -210,6 +208,6 @@
 		 */
 		len = 0;
-		if ((error = tcp_get_segment(&output, cep, optlen,
-	                                    len, (uint_t)(net_buf_max_siz() - IF_IP_TCP_HDR_SIZE),
+		if ((error = tcpn_get_segment(&output, cep, optlen,
+	                                    len, (uint_t)net_buf_max_siz(),
 	                                    NBA_SEARCH_ASCENT, TMO_TCP_GET_NET_BUF)) != E_OK) {
 			if (cep->timer[TCP_TIM_REXMT] == 0)
@@ -222,6 +220,6 @@
 
 	if (IS_PTR_DEFINED(cep->sbuf)) {
-		if ((error = tcp_get_segment(&output, cep, optlen,
-		                             len, (uint_t)(net_buf_max_siz() - IF_IP_TCP_HDR_SIZE),
+		if ((error = tcpn_get_segment(&output, cep, optlen,
+		                             len, (uint_t)net_buf_max_siz(),
 		                             NBA_SEARCH_ASCENT, TMO_TCP_GET_NET_BUF)) != E_OK) {
 			if (cep->timer[TCP_TIM_REXMT] == 0)
@@ -247,6 +245,6 @@
 		 */
 		len = 0;
-		if ((error = tcp_get_segment(&output, cep, optlen,
-	                                    len, (uint_t)(net_buf_max_siz() - IF_IP_TCP_HDR_SIZE),
+		if ((error = tcpn_get_segment(&output, cep, optlen,
+	                                    len, (uint_t)net_buf_max_siz(),
 	                                    NBA_SEARCH_ASCENT, TMO_TCP_GET_NET_BUF)) != E_OK) {
 			if (cep->timer[TCP_TIM_REXMT] == 0)
@@ -258,6 +256,6 @@
 #else	/* of #if defined(TCP_CFG_SWBUF_CSAVE_ONLY) */
 
-	if ((error = tcp_get_segment(&output, cep, optlen,
-	                             len, (uint_t)(net_buf_max_siz() - IF_IP_TCP_HDR_SIZE),
+	if ((error = tcpn_get_segment(&output, cep, optlen,
+	                             len, (uint_t)net_buf_max_siz(),
 	                             NBA_SEARCH_ASCENT, TMO_TCP_GET_NET_BUF)) != E_OK) {
 		if (cep->timer[TCP_TIM_REXMT] == 0)
@@ -272,4 +270,5 @@
 	 *  本実装では、最大セグメントサイズのみ設定する。
 	 */
+	hdr_offset = IF_IP_TCP_HDR_OFFSET(output);
 	if (flags & TCP_FLG_SYN) {
 		cep->snd_nxt = cep->iss;
@@ -277,5 +276,5 @@
 #ifdef TCP_CFG_OPT_MSS
 
-		optp = GET_TCP_OPT(output, IF_IP_TCP_HDR_OFFSET);
+		optp = GET_TCP_OPT(output, hdr_offset);
 		*optp ++ = TCP_OPT_MAXSEG;
 		*optp ++ = TCP_OPT_LEN_MAXSEG;
@@ -324,5 +323,5 @@
 		}
 
-	tcph = GET_TCP_HDR(output, IF_IP_TCP_HDR_OFFSET);
+	tcph = GET_TCP_HDR(output, hdr_offset);
 
 	/*
@@ -379,9 +378,8 @@
 	 */
 	tcph->sum = 0;
-	tcph->sum = IN_CKSUM(output, IPPROTO_TCP, (uint_t)GET_TCP_HDR_OFFSET(output),
-		             GET_TCP_HDR_SIZE2(output, IF_IP_TCP_HDR_OFFSET) + len);
+	tcph->sum = IN_CKSUM(output, IPPROTO_TCP, hdr_offset, GET_TCP_HDR_SIZE(output, hdr_offset) + len);
 
 	/* ネットワークバッファ長を調整する。*/
-	output->len = (uint16_t)(GET_IF_IP_TCP_HDR_SIZE2(output, IF_IP_TCP_HDR_OFFSET) + len);
+	output->len = (uint16_t)(GET_IF_IP_TCP_HDR_SIZE(output, hdr_offset) + len);
 
 	/*
@@ -490,6 +488,5 @@
 	 * ・動的な通信端点の生成・削除機能
 	 */
-	cep->flags &= (TCP_CEP_FLG_WBCS_NBUF_REQ | TCP_CEP_FLG_WBCS_MASK | 
-	               TCP_CEP_FLG_DYNAMIC       | TCP_CEP_FLG_VALID);
+	cep->flags &= TCP_CEP_FLG_NOT_CLEAR;
 
 	return error;
@@ -864,7 +861,7 @@
 #endif	/* of #ifdef TCP_CFG_NON_BLOCKING */
 
-		if ((error = tcp_get_segment(&cep->swbufq, cep, 0,
-		                             (uint_t) TCP_CFG_SWBUF_CSAVE_MIN_SIZE,
-		                             (uint_t)(TCP_CFG_SWBUF_CSAVE_MAX_SIZE - IF_IP_TCP_HDR_SIZE),
+		if ((error = tcpn_get_segment(&cep->swbufq, cep, 0,
+		                             (uint_t)TCP_CFG_SWBUF_CSAVE_MIN_SIZE,
+		                             (uint_t)TCP_CFG_SWBUF_CSAVE_MAX_SIZE,
 		                             (ATR)(NBA_SEARCH_DESCENT |
 		                                   NBA_RESERVE_TCP    |
@@ -888,15 +885,10 @@
 				len = TCP_GET_SWBUF_ADDR(cep, cep->snd_p_buf);
 
+				/* コールバック関数を呼び出す。*/
 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14
-
-				/* コールバック関数を呼び出す。*/
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)(uint32_t)len);
-
-#else	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
-				/* コールバック関数を呼び出す。*/
+#else
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)&len);
-
-#endif	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
+#endif
 
 
@@ -924,15 +916,11 @@
 				/* フラグを、送信可能に設定し、強制的に送信する。*/
 				cep->flags |= TCP_CEP_FLG_FORCE | TCP_CEP_FLG_FORCE_CLEAR | TCP_CEP_FLG_POST_OUTPUT;
+
+				/* コールバック関数を呼び出す。*/
 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14
-
-				/* コールバック関数を呼び出す。*/
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)(uint32_t)len);
-
-#else	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
-				/* コールバック関数を呼び出す。*/
+#else
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)&len);
-
-#endif	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
+#endif
 
 
@@ -999,10 +987,10 @@
 	tcp_init();
 
-#ifdef SUPPORT_INET6
+#ifdef _IP6_CFG
 
 	/* IPv6 のステートレス・アドレス自動設定を実行する。*/
 	in6_if_up(IF_GET_IFNET());
 
-#endif	/* of #ifdef SUPPORT_INET6 */
+#endif	/* of #ifdef _IP6_CFG */
 
 	while (true) {
@@ -1083,15 +1071,9 @@
 
 						if (IS_PTR_DEFINED(cep->callback))
-
 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14
-
 							(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)error);
-
-#else	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#else
 							(*cep->callback)(GET_TCP_CEPID(cep), cep->snd_nblk_tfn, (void*)&error);
-
-#endif	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#endif
 						else
 							syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
