Changeset 331 for EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in_var.h
- Timestamp:
- Jan 21, 2018, 12:10:09 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in_var.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 * … … 71 71 #define _IN_VAR_H_ 72 72 73 #if defined(SUPPORT_INET6) 74 73 #include <netinet/in4_var.h> 75 74 #include <netinet6/in6_var.h> 76 77 #endif /* of #if defined(SUPPORT_INET6) */78 75 79 76 /* … … 102 99 103 100 /* 104 * インタフェースアドレス構造体105 */106 107 typedef struct t_in4_ifaddr {108 T_IN4_ADDR addr; /* IPv4 アドレス */109 T_IN4_ADDR mask; /* サブネットマスク */110 } T_IN4_IFADDR;111 112 /*113 * ルーティング表エントリ構造体114 */115 116 typedef struct t_in4_rtentry {117 T_IN4_ADDR target; /* 目標ネットワークアドレス */118 T_IN4_ADDR mask; /* 目標ネットワークアドレスのサブネットマスク */119 T_IN4_ADDR gateway; /* ゲートウェイの IP アドレス */120 uint32_t expire; /* 有効時間が切れる時刻 [s] */121 uint8_t flags; /* フラグ */122 } T_IN4_RTENTRY;123 124 /*125 * TINET 1.1 との互換性のための定義126 */127 128 #ifdef NUM_ROUTE_ENTRY129 130 #define NUM_STATIC_ROUTE_ENTRY NUM_ROUTE_ENTRY131 #define NUM_REDIRECT_ROUTE_ENTRY 0132 #define T_RT_ENTRY T_IN_RTENTRY133 134 #else /* of #ifdef NUM_ROUTE_ENTRY */135 136 #define NUM_ROUTE_ENTRY \137 (NUM_STATIC_ROUTE_ENTRY + NUM_REDIRECT_ROUTE_ENTRY)138 /* ルーティング表のエントリ数 */139 140 #endif /* of #ifdef NUM_ROUTE_ENTRY */141 142 /*143 101 * ルーティングエントリ状態フラグ 144 102 */ … … 151 109 */ 152 110 153 #if defined(SUPPORT_INET4) 154 155 #define IN_SET_HEADER(nbuf,len,dst,src,proto,ttl) \ 156 in4_set_header(nbuf,len,dst,src,proto,ttl) 111 #if defined(_IP6_CFG) 112 113 #define T_IN_ADDR T_IN6_ADDR 114 #define T_IPEP T_IPV6EP 115 #define IP_ADDRANY IPV6_ADDRANY 116 117 #elif defined(_IP4_CFG) /* of #if defined(_IP6_CFG) */ 118 119 #define T_IN_ADDR T_IN4_ADDR 120 #define T_IPEP T_IPV4EP 121 #define IP_ADDRANY IPV4_ADDRANY 122 123 #endif /* of #if defined(_IP6_CFG) */ 124 125 #if defined(_IP6_CFG) 126 127 #if defined(_IP4_CFG) 128 129 #define IN_CKSUM(nbuf,proto,off,len) (GET_IP_VER(nbuf)==IPV6_VERSION \ 130 ?in6_cksum(nbuf,proto,off,len) \ 131 :in4_cksum(nbuf,proto,off,len)) 132 #define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \ 133 inn_is_dstaddr_accept(myaddr,nbuf) 134 #define IN_ARE_HDR_ADDR_EQUAL(nbuf) (GET_IP_VER(nbuf)==IPV6_VERSION \ 135 ?IN6_ARE_ADDR_EQUAL(&GET_IP6_HDR(nbuf)->dst,&GET_IP6_HDR(nbuf)->src) \ 136 :IN4_ARE_ADDR_EQUAL(&GET_IP4_HDR(nbuf)->dst,&GET_IP4_HDR(nbuf)->src)) 137 #define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \ 138 inn_are_net_srcaddr_equal(ipaddr,nbuf) 139 #define IN_COPY_TO_HOST(dst,nbuf) inn_copy_to_host(dst,nbuf) 140 #define IN_GET_DATAGRAM(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) \ 141 inn_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) 142 #define IN_IS_ADDR_MULTICAST(addr) inn_is_addr_multicast(addr) 143 #define IN_IS_NET_ADDR_MULTICAST(nbuf) IN_IS_ADDR_MULTICAST(&GET_IP6_HDR(nbuf)->dst) 144 #define IN_ADDRWITHIFP(ifp,src,dst) inn_addrwithifp(ifp,src,dst) 145 #define IN_IS_ADDR_ANY(addr) IN6_IS_ADDR_UNSPECIFIED(addr) 146 147 #else /* of #if defined(_IP4_CFG) */ 148 149 #define IN_CKSUM(nbuf,proto,off,len) in6_cksum(nbuf,proto,off,len) 150 #define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \ 151 INN6_IS_DSTADDR_ACCEPT(myaddr,nbuf) 152 #define IN_ARE_HDR_ADDR_EQUAL(nbuf) IN6_ARE_ADDR_EQUAL(&GET_IP6_HDR(nbuf)->dst,&GET_IP6_HDR(nbuf)->src) 153 #define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \ 154 IN6_ARE_ADDR_EQUAL(ipaddr,&GET_IP6_HDR(nbuf)->src) 155 #define IN_COPY_TO_HOST(dst,nbuf) IN6_COPY_TO_HOST(dst, nbuf) 156 #define IN_GET_DATAGRAM(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) \ 157 in6_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) 158 #define IN_IS_ADDR_MULTICAST(addr) IN6_IS_ADDR_MULTICAST(addr) 159 #define IN_IS_NET_ADDR_MULTICAST(nbuf) IN6_IS_ADDR_MULTICAST(&GET_IP6_HDR(nbuf)->dst) 160 #define IN_ADDRWITHIFP(ifp,src,dst) in6_addrwithifp(ifp,src,dst) 161 #define IN_IS_ADDR_ANY(addr) IN6_IS_ADDR_UNSPECIFIED(addr) 162 163 #endif /* of #if defined(_IP4_CFG) */ 164 165 #else /* of #if defined(_IP6_CFG) */ 166 167 #if defined(_IP4_CFG) 168 169 #define IN_CKSUM(nbuf,proto,off,len) in4_cksum(nbuf,proto,off,len) 170 #define IN_IS_DSTADDR_ACCEPT(myaddr,nbuf) \ 171 inn4_is_dstaddr_accept(myaddr,nbuf) 172 #define IN_ARE_HDR_ADDR_EQUAL(nbuf) IN4_ARE_ADDR_EQUAL(&GET_IP4_HDR(nbuf)->dst,&GET_IP4_HDR(nbuf)->src) 173 #define IN_ARE_NET_SRCADDR_EQUAL(ipaddr,nbuf) \ 174 (*(ipaddr)==ntohl(GET_IP4_HDR(nbuf)->src)) 175 #define IN_COPY_TO_HOST(dst,nbuf) IN4_COPY_TO_HOST(dst, nbuf) 157 176 #define IN_GET_DATAGRAM(nbuf,len,maxlen, dst,src,proto,ttl,nbatr,tmout) \ 158 177 in4_get_datagram(nbuf,len,maxlen, dst,src,proto,ttl,nbatr,tmout) 159 #define IN_CKSUM(nbuf,proto,off,len) in4_cksum(nbuf,proto,off,len) 160 #define IN_IS_DSTADDR_ACCEPT(myaddr,dstaddr) \ 161 in4_is_dstaddr_accept(myaddr,dstaddr) 162 #define IN_IFAWITHIFP(ifp,dst) in4_ifawithifp(ifp,dst) 163 #define T_IN_IFADDR T_IN4_IFADDR 164 #define T_IN_RTENTRY T_IN4_RTENTRY 165 166 #endif /* of #if defined(SUPPORT_INET4) */ 167 168 /* 169 * ルーティング表 170 */ 171 172 extern T_IN_RTENTRY routing_tbl[]; 173 174 /* 175 * 前方参照 176 */ 177 178 #ifndef T_NET_BUF_DEFINED 179 typedef struct t_net_buf T_NET_BUF; 180 #define T_NET_BUF_DEFINED 181 #endif 182 183 #ifndef T_IFNET_DEFINED 184 typedef struct t_ifnet T_IFNET; 185 #define T_IFNET_DEFINED 186 #endif 178 #define IN_IS_ADDR_MULTICAST(addr) IN4_IS_ADDR_MULTICAST(*(addr)) 179 #define IN_IS_NET_ADDR_MULTICAST(nbuf) IN4_IS_ADDR_MULTICAST(ntohl(GET_IP4_HDR(nbuf)->dst)) 180 #define IN_ADDRWITHIFP(ifp,src,dst) in4_addrwithifp(ifp,src,dst) 181 #define IN_IS_ADDR_ANY(addr) IN4_IS_ADDR_ANY(addr) 182 183 #else /* of #if defined(_IP4_CFG) */ 184 185 #error "not implemented." 186 187 #endif /* of #if defined(_IP4_CFG) */ 188 189 #endif /* of #if defined(_IP6_CFG) */ 190 191 #ifndef _MACRO_ONLY 187 192 188 193 /* 189 194 * 関数 190 195 */ 191 192 extern void ip_input (T_NET_BUF *data); 193 extern ER in4_set_header (T_NET_BUF *nbuf, uint_t len, 194 T_IN4_ADDR *dstaddr, T_IN4_ADDR *srcaddr, uint8_t proto, uint8_t ttl); 195 extern ER in4_get_datagram (T_NET_BUF **nbuf, uint_t len, uint_t maxlen, 196 T_IN4_ADDR *dstaddr, T_IN4_ADDR *srcaddr, 197 uint8_t proto, uint8_t ttl, ATR nbatr, TMO tmout); 198 extern uint16_t in4_cksum (T_NET_BUF *nbuf, uint8_t proto, uint_t off, uint_t len); 199 extern T_IN4_ADDR in4_rtalloc (T_IN4_ADDR dst); 200 extern void in4_rtredirect (T_IN4_ADDR gateway, T_IN4_ADDR target, uint8_t flags, uint32_t tmo); 201 extern void in4_init (void); 202 extern T_IN4_IFADDR *in4_ifawithifp (T_IFNET *ifp, T_IN4_ADDR *dst); 203 extern T_IN_RTENTRY *in_rtnewentry (uint8_t flags, uint32_t tmo); 204 extern void in_rttimer (void); 205 extern void in_rtinit (void); 206 extern const T_NET_BUF**ip_get_frag_queue (void); 207 208 /* 209 * in4_is_dstaddr_accept -- 宛先アドレスとして正しいかチェックする。 210 * 211 * 注意: dstaddr は、 212 * TINET-1.2 からネットワークバイトオーダ、 213 * TINET-1.1 までは、ホストバイトオーダ 214 */ 215 extern bool_t in4_is_dstaddr_accept (T_IN4_ADDR *myaddr, T_IN4_ADDR *dstaddr); 216 217 /* 218 * in_cksum -- チェックサム計算関数、IPv4、ICMPv4 用 219 * 220 * 注意: data は 4 オクテット単位でパディングすること。 221 * data が 2 オクテット単位にアラインされていないと 222 * 例外が発生する可能性がある。 223 * len は 4 オクテット単位にアラインされていること。 224 */ 225 extern uint16_t in_cksum(void *data, uint_t len /*オクテット単位*/); 226 227 /* 228 * in_cksum_sum -- チェックサムの合計計算関数 229 * 230 * 注意: data は 4 オクテット単位でパディングすること。 231 * data が 2 オクテット単位にアラインされていないと 232 * 例外が発生する可能性がある。 233 * len は 4 オクテット単位にアラインされていること。 234 */ 235 extern uint32_t in_cksum_sum (void *data, uint_t len /*オクテット単位*/); 236 237 /* 238 * in_cksum_carry -- チェックサムの桁上げ計算関数 239 * 240 * 注意: data は 4 オクテット単位でパディングすること。 241 * data が 2 オクテット単位にアラインされていないと 242 * 例外が発生する可能性がある。 243 * len は 4 オクテット単位にアラインされていること。 244 */ 245 extern uint32_t in_cksum_carry (uint32_t sum); 196 extern bool_t inn_is_dstaddr_accept (T_IN6_ADDR *myaddr, T_NET_BUF *nbuf); 197 extern bool_t inn_is_addr_multicast (T_IN6_ADDR *addr); 198 extern bool_t inn_are_net_srcaddr_equal (T_IN6_ADDR *ipaddr, T_NET_BUF *nbuf); 199 extern void inn_copy_to_host (T_IN6_ADDR *dst, T_NET_BUF *nbuf); 200 extern ER inn_get_datagram (T_NET_BUF **nbuf, uint_t len, uint_t maxlen, 201 T_IN6_ADDR *dstaddr, T_IN6_ADDR *srcaddr, 202 uint8_t next, uint8_t hlim, ATR nbatr, TMO tmout); 203 extern T_IN6_ADDR *inn_addrwithifp (T_IFNET *ifp, T_IN6_ADDR *src, T_IN6_ADDR *dst); 204 205 #endif /* of #ifndef _MACRO_ONLY */ 246 206 247 207 #endif /* of #ifndef _IN_VAR_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.