Index: EcnlProtoTool/trunk/asp3_dcre/tinet/net/ethernet.h
===================================================================
--- EcnlProtoTool/trunk/asp3_dcre/tinet/net/ethernet.h	(revision 321)
+++ EcnlProtoTool/trunk/asp3_dcre/tinet/net/ethernet.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
  *
@@ -98,4 +98,38 @@
 #endif	/* of #ifndef IF_ETHER_NIC_HDR_ALIGN */
 
+#if defined(__RX)
+
+#pragma pack
+typedef struct t_ether_header {
+
+#if IF_ETHER_NIC_HDR_ALIGN != 0
+
+	uint8_t		align[IF_ETHER_NIC_HDR_ALIGN];	/* アライン調整 */
+
+#endif	/* of #if IF_ETHER_NIC_HDR_ALIGN != 0 */
+
+	uint8_t		dhost[ETHER_ADDR_LEN];
+	uint8_t		shost[ETHER_ADDR_LEN];
+	uint16_t	type;
+	} T_ETHER_HDR;
+#pragma packoption
+
+#elif defined(TOPPERS_S810_CLG3_85)	/* of #if defined(__RX) */
+
+typedef struct t_ether_header {
+
+#if IF_ETHER_NIC_HDR_ALIGN != 0
+
+	uint8_t		align[IF_ETHER_NIC_HDR_ALIGN];	/* アライン調整 */
+
+#endif	/* of #if IF_ETHER_NIC_HDR_ALIGN != 0 */
+
+	uint8_t		dhost[ETHER_ADDR_LEN];
+	uint8_t		shost[ETHER_ADDR_LEN];
+	uint16_t	type;
+	} T_ETHER_HDR;
+
+#else	/* of #if defined(__RX) */
+
 typedef struct t_ether_header {
 
@@ -111,4 +145,6 @@
 	} __attribute__((packed, aligned(2)))T_ETHER_HDR;
 
+#endif	/* of #if defined(__RX) */
+
 #define GET_ETHER_HDR(nbuf)		((T_ETHER_HDR*)((nbuf)->buf))
 
@@ -140,4 +176,5 @@
 #define IF_HDR_ALIGN		2			/* ヘッダのアライン単位				*/
 #define IF_MTU			1500			/* インタフェースの MTU				*/
+#define IF_MIN_LEN		ETHER_MIN_LEN		/* インターフェースフレームの最短長		*/
 
 #define IF_OUTPUT(o,d,g,t)	ether_output(o,d,g,t)	/* インタフェースの出力関数			*/
@@ -148,9 +185,10 @@
 							/* ソフトウェア情報から MAC アドレスを取り出す	*/
 #define IF_GET_IFNET()		ether_get_ifnet()	/* ネットワークインタフェース構造体を返す。		*/
-#define IF_TYPE			IFT_ETHER		/* インターフェースの型				*/
+#define IF_TYPE			IFT_ETHER		/* インタフェースの型				*/
+#define IF_SRAND()		ether_srand()	/* インタフェースの乱数初期値			*/
 
 /* IPv4 関係 */
 
-#define IF_PROTO_IP		ETHER_TYPE_IP		/* インタフェースの IP プロトコル指定		*/
+#define IF_PROTO_IP		ETHER_TYPE_IP		/* インタフェースの IPv4 プロトコル指定		*/
 #define IF_PROTO_ARP		ETHER_TYPE_ARP		/* インタフェースの ARP プロトコル指定		*/
 
@@ -160,5 +198,5 @@
 #define IF_MADDR_INIT		{ { { 0, 0, 0, 0, 0, 0 } }, { { 0, 0, 0, 0, 0, 0 } } }
 							/* インタフェースのマルチキャストアドレス配列の初期化	*/
-#define IF_PROTO_IPV6		ETHER_TYPE_IPV6		/* インタフェースの IP プロトコル指定			*/
+#define IF_PROTO_IPV6		ETHER_TYPE_IPV6		/* インタフェースの IPv6 プロトコル指定			*/
 #define IF_ADDMULTI(s)		IF_ETHER_NIC_ADDMULTI(s)
 							/* マルチキャストアドレスの登録				*/
@@ -215,13 +253,13 @@
 	T_IF_ADDR		ifaddr;			/* ネットワークインタフェースのアドレス	*/
 	uint16_t		timer;			/* 送信タイムアウト			*/
-	T_IF_ETHER_NIC_SOFTC	*sc;	/* ディバイス依存のソフトウェア情報	*/
+	T_IF_ETHER_NIC_SOFTC	*sc;			/* ディバイス依存のソフトウェア情報	*/
 	ID			semid_txb_ready;	/* 送信セマフォ				*/
 	ID			semid_rxb_ready;	/* 受信セマフォ				*/
 
-#ifdef SUPPORT_INET6
+#ifdef _IP6_CFG
 
 	T_IF_ADDR 	maddrs[MAX_IF_MADDR_CNT];	/* マルチキャストアドレスリスト	*/
 
-#endif	/* of #ifdef SUPPORT_INET6 */
+#endif	/* of #ifdef _IP6_CFG */
 	};
 
@@ -231,5 +269,19 @@
 #define IF_FLAG_LINK_UP			0x10U
 
-#ifdef SUPPORT_INET6
+/*
+ *  変数
+ */
+
+#ifdef ETHER_CFG_COLLECT_ADDR
+
+T_ETHER_ADDR ether_collect_addr;
+
+#endif	/* of #ifdef ETHER_CFG_COLLECT_ADDR */
+
+/*
+ *  関数
+ */
+
+#ifdef _IP6_CFG
 
 /* 前方参照 */
@@ -243,19 +295,12 @@
 #endif	/* of #ifndef T_IN6_ADDR_DEFINED */
 
-/*
- *  関数
- */
-
-extern ER ether_in6_resolve_multicast(T_ETHER_ADDR *ifaddr, T_IN6_ADDR *maddr);
-
-#endif	/* of #ifdef SUPPORT_INET6 */
-
-/*
- *  関数
- */
+extern ER ether_in6_resolve_multicast(T_ETHER_ADDR *ifaddr, const T_IN6_ADDR *maddr);
+
+#endif	/* of #ifdef _IP6_CFG */
 
 extern T_IFNET *ether_get_ifnet (void);
-extern ER ether_output (T_NET_BUF *data, void *dst, T_IF_ADDR *gw, TMO tmout);
+extern ER ether_output (T_NET_BUF *data, const void *dst, T_IF_ADDR *gw, TMO tmout);
 extern ER ether_raw_output (T_NET_BUF *data, TMO tmout);
+extern uint32_t ether_srand (void);
 
 /** Function prototype for netif status- or link-callback functions. */
