Index: EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_subr_cs.c
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_subr_cs.c	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_subr_cs.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
  *
@@ -95,6 +95,6 @@
 #include <net/ethernet.h>
 #include <net/if_arp.h>
-#include <net/ppp_ipcp.h>
 #include <net/net.h>
+#include <net/net_endian.h>
 #include <net/net_var.h>
 #include <net/net_buf.h>
@@ -103,18 +103,13 @@
 
 #include <netinet/in.h>
-#include <netinet6/in6.h>
-#include <netinet6/in6_var.h>
 #include <netinet/in_var.h>
+#include <netinet/in_itron.h>
 #include <netinet/ip.h>
 #include <netinet/ip_var.h>
-#include <netinet/ip6.h>
-#include <netinet6/ip6_var.h>
-#include <netinet6/nd6.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/in_itron.h>
+#include <netinet/tcp_timer.h>
 
 #ifdef SUPPORT_TCP
@@ -122,5 +117,7 @@
 #ifdef TCP_CFG_SWBUF_CSAVE
 
-#ifndef TCP_CFG_SWBUF_CSAVE_ONLY
+#ifdef TCP_CFG_SWBUF_CSAVE_ONLY
+
+#else	/* of #ifdef TCP_CFG_SWBUF_CSAVE_ONLY */
 
 /*
@@ -242,5 +239,5 @@
 	}
 
-#endif	/* of #ifndef TCP_CFG_SWBUF_CSAVE_ONLY */
+#endif	/* of #ifdef TCP_CFG_SWBUF_CSAVE_ONLY */
 
 /*
@@ -270,10 +267,10 @@
 {
 	ER_UINT	error;
+	uint_t	hdr_size = IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr);
 
 	/* 通信端点をロックする。*/
 	syscall(wai_sem(cep->semid_lock));
 
-	if ((error = net_buf_siz(cep->swbufq)) > 0 && error >= IF_IP_TCP_HDR_SIZE) {
-
+	if ((error = net_buf_siz(cep->swbufq)) > 0 && error >= hdr_size) {
 
 		/*
@@ -291,10 +288,10 @@
 		 *  空きサイズを 4 オクテット境界に調整する。
 		 */
-		error = (uint_t)(((error - IF_IP_TCP_HDR_SIZE) >> 2 << 2) + IF_IP_TCP_HDR_SIZE);
+		error = (uint_t)(((error - hdr_size) >> 2 << 2) + hdr_size);
 
 		if (len > cep->sbufsz - cep->swbuf_count)
 			len = (uint_t)(cep->sbufsz - cep->swbuf_count);
-		if (len > (error - IF_IP_TCP_HDR_SIZE))
-			len = (uint_t)(error - IF_IP_TCP_HDR_SIZE);
+		if (len > (error - hdr_size))
+			len = (uint_t)(error - hdr_size);
 
 		/* 送信ウインドサイズによりサイズを調整する。*/
@@ -315,6 +312,6 @@
 
 		/* ネットワークバッファ長と IP データグラム長を設定する。*/
-		cep->swbufq->len = (uint16_t)(cep->swbuf_count + IF_IP_TCP_HDR_SIZE);
-		SET_IP_SDU_SIZE(GET_IP_HDR(cep->swbufq), cep->swbuf_count + TCP_HDR_SIZE);
+		cep->swbufq->len = (uint16_t)(cep->swbuf_count + hdr_size);
+		SET_IP_SDU_SIZE(cep->swbufq, cep->swbuf_count + TCP_HDR_SIZE);
 
 		/* フラグを、送信可能に設定する。*/
@@ -324,5 +321,5 @@
 	else {	/* 送信ウインドバッファが不正 */
 		syslog(LOG_WARNING, "[TCP] illegal window buff for send, CEP: %d, %4d < %4d.",
-		                    GET_TCP_CEPID(cep), error, IF_IP_TCP_HDR_SIZE);
+		                    GET_TCP_CEPID(cep), error, hdr_size);
 
 		/* 送信ウィンドバッファキューのネットワークバッファを解放する。*/
@@ -348,8 +345,7 @@
 	int_t	win;
 
-
 	/* 送信ウィンドバッファが割当て済みで、空きがあれば終了する。*/
 	if ((cep->flags & TCP_CEP_FLG_WBCS_MASK) == TCP_CEP_FLG_WBCS_NBUF_READY &&
-	    (cep->swbuf_count + IF_IP_TCP_HDR_SIZE) < net_buf_siz(cep->swbufq))
+	    (cep->swbuf_count + IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr)) < net_buf_siz(cep->swbufq))
 		return E_OK;
 
@@ -423,7 +419,7 @@
 
 	/* ネットワークバッファを獲得する。*/
-	if ((error = tcp_get_segment(&cep->swbufq, cep, 0,
+	if ((error = tcpn_get_segment(&cep->swbufq, cep, 0,
 	                             TCP_CFG_SWBUF_CSAVE_MIN_SIZE,
-	                             TCP_CFG_SWBUF_CSAVE_MAX_SIZE - IF_IP_TCP_HDR_SIZE,
+	                             TCP_CFG_SWBUF_CSAVE_MAX_SIZE,
 	                             NBA_SEARCH_DESCENT, tmout)) != E_OK)
 		return error;
@@ -463,5 +459,5 @@
 		 *  空きサイズを 4 オクテット境界に調整する。
 		 */
-		error = (uint_t)(((error - IF_IP_TCP_HDR_SIZE) >> 2 << 2) - cep->swbuf_count);
+		error = (uint_t)(((error - IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr)) >> 2 << 2) - cep->swbuf_count);
 
 		/* 送信ウインドサイズによりサイズを調整する。*/
@@ -508,6 +504,6 @@
 
 	/* ネットワークバッファ長と IP データグラム長を設定する。*/
-	cep->swbufq->len = (uint16_t)(cep->swbuf_count + IF_IP_TCP_HDR_SIZE);
-	SET_IP_SDU_SIZE(GET_IP_HDR(cep->swbufq), len + TCP_HDR_SIZE);
+	cep->swbufq->len = (uint16_t)(cep->swbuf_count + IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr));
+	SET_IP_SDU_SIZE(cep->swbufq, len + TCP_HDR_SIZE);
 
 	/* tcp_get_buf の割当て長をリセットする。*/
@@ -573,5 +569,5 @@
 {
 	return (cep->flags & TCP_CEP_FLG_WBCS_MASK) != TCP_CEP_FLG_WBCS_NBUF_READY ||
-	        cep->swbuf_count >= cep->swbufq->len - IF_IP_TCP_HDR_SIZE;
+	        cep->swbuf_count >= cep->swbufq->len - IF_IP_TCP_NET_HDR_SIZE(&cep->dstaddr.ipaddr);
 	}
 
@@ -590,5 +586,5 @@
 
 	/* 送信ウインドバッファのアドレスを設定する。*/
-	cep->sbuf_wptr = cep->sbuf_rptr = GET_TCP_SDU(cep->swbufq, IF_IP_TCP_HDR_OFFSET);
+	cep->sbuf_wptr = cep->sbuf_rptr = GET_TCP_SDU(cep->swbufq, IF_IP_TCP_NET_HDR_OFFSET(&cep->dstaddr.ipaddr));
 
 	/* フラグを、ネットワークバッファ割当て済みに設定する。*/
@@ -664,5 +660,7 @@
 #ifdef TCP_CFG_RWBUF_CSAVE 
 
-#ifndef TCP_CFG_RWBUF_CSAVE_ONLY
+#ifdef TCP_CFG_RWBUF_CSAVE_ONLY
+
+#else	/* of #ifdef TCP_CFG_RWBUF_CSAVE_ONLY */
 
 /*
@@ -736,5 +734,5 @@
 	}
 
-#endif	/* of #ifndef TCP_CFG_RWBUF_CSAVE_ONLY */
+#endif	/* of #ifdef TCP_CFG_RWBUF_CSAVE_ONLY */
 
 /*
@@ -753,5 +751,5 @@
 	if (cep->rwbufq != NULL) {
 
-		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff);
+		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq));
 		cep->rwbuf_count -= len;
 
@@ -796,5 +794,5 @@
 	 */
 	while (cep->rwbufq != NULL && len > 0) {
-		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff);
+		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq));
 
 		/*
@@ -808,5 +806,5 @@
 
 		memcpy(buf,
-		       GET_TCP_SDU(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff) + qhdr->soff,
+		       GET_TCP_SDU(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq)) + qhdr->soff,
 		       (size_t)blen);
 
@@ -850,6 +848,6 @@
 
 		/* 受信ウィンドバッファのデータのアドレスの先頭を設定する。*/
-		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff);
-		*p_buf = GET_TCP_SDU(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff) + qhdr->soff;
+		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq));
+		*p_buf = GET_TCP_SDU(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq)) + qhdr->soff;
 
 		/* 受信ウィンドバッファのデータ長を計算する。*/
@@ -880,5 +878,5 @@
 	if (cep->rwbuf_count == 0 && cep->reassq == NULL) {
 		while (cep->rwbufq != NULL) {
-			next = GET_TCP_Q_HDR(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff)->next;
+			next = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq))->next;
 
 #ifdef TCP_CFG_RWBUF_CSAVE_MAX_QUEUES
@@ -961,5 +959,5 @@
 	nextp = &cep->rwbufq;
 	while (*nextp)
-		nextp = &GET_TCP_Q_HDR(*nextp, GET_TCP_IP_Q_HDR(*nextp)->thoff)->next;
+		nextp = &GET_TCP_Q_HDR(*nextp, GET_IP_TCP_Q_HDR_OFFSET(*nextp))->next;
 	*nextp = input;
 
@@ -984,5 +982,5 @@
 		int_t	len;
 
-		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff);
+		qhdr = GET_TCP_Q_HDR(cep->rwbufq, GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq));
 		len = qhdr->slen;
 
@@ -999,18 +997,13 @@
 			/* 受信ウィンドバッファのアドレスを返す。*/
 			*cep->rcv_p_buf = GET_TCP_SDU(cep->rwbufq,
-			                  GET_TCP_IP_Q_HDR(cep->rwbufq)->thoff) + qhdr->soff;
+			                  GET_IP_TCP_Q_HDR_OFFSET(cep->rwbufq)) + qhdr->soff;
 
 			if (IS_PTR_DEFINED(cep->callback))
 
 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14
-
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->rcv_nblk_tfn, (void*)len);
-
-#else	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#else
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->rcv_nblk_tfn, (void*)&len);
-
-#endif	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#endif
 			else
 				syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
@@ -1053,13 +1046,8 @@
 
 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14
-
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->rcv_nblk_tfn, (void*)len);
-
-#else	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#else
 				(*cep->callback)(GET_TCP_CEPID(cep), cep->rcv_nblk_tfn, (void*)&len);
-
-#endif	/* of #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 */
-
+#endif
 			else
 				syslog(LOG_WARNING, "[TCP] no call back, CEP: %d.", GET_TCP_CEPID(cep));
