Changeset 331 for EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in.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.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 * … … 73 73 #include <tinet_kernel_defs.h> 74 74 75 #include <netinet/in4.h> 75 76 #include <netinet6/in6.h> 76 77 … … 79 80 */ 80 81 81 #define TINET_PRVER UINT_C(0x10 54) /* TINET のバージョン番号 */82 #define TINET_PRVER UINT_C(0x1070) /* TINET のバージョン番号 */ 82 83 83 84 /* … … 92 93 #define IPPROTO_HOPOPTS UINT_C(0) /* IPv6 中継点 (Hop-by-Hop) オプション */ 93 94 #define IPPROTO_ICMP UINT_C(1) /* ICMP */ 95 #define IPPROTO_IGMP UINT_C(2) /* IGMP */ 94 96 #define IPPROTO_TCP UINT_C(6) /* TCP */ 95 97 #define IPPROTO_UDP UINT_C(17) /* UDP */ … … 107 109 108 110 /* 109 * IPv4 アドレス111 * ポートの長さ 110 112 */ 111 113 112 /* 前方参照 */113 114 #ifndef T_IN4_ADDR_DEFINED115 116 typedef uint32_t T_IN4_ADDR;117 118 #define T_IN4_ADDR_DEFINED119 120 #endif /* of #ifndef T_IN4_ADDR_DEFINED */121 122 /*123 * ITRON TCP/IPv4 アドレス/ポート番号の定義124 */125 126 typedef struct t_ipv4ep {127 uint32_t ipaddr; /* IPv4 アドレス */128 uint16_t portno; /* ポート番号 */129 } T_IPV4EP;130 131 /*132 * アドレス/ポートの長さ133 */134 135 #define IPV4_ADDR_LEN 4136 114 #define PORT_NUM_LEN 2 137 115 … … 152 130 153 131 /* 154 * IP アドレスの定義132 * API IPプロトコルの指定 155 133 */ 156 134 157 #define IPV4_ADDRANY ULONG_C(0x00000000) /* ITRON TCP/IP 標準 */ 158 159 #define IPV4_ADDR_LOOPBACK ULONG_C(0x7f000001) 160 #define IPV4_ADDR_LOOPBACK_MASK IPV4_CLASS_A_MASK 161 #define IPV4_ADDR_BROADCAST ULONG_C(0xffffffff) 162 163 #define IPV4_CLASS_A(i) (((i) & ULONG_C(0x80000000)) == 0) 164 #define IPV4_CLASS_A_NET ULONG_C(0xff000000) 165 #define IPV4_CLASS_A_MASK ULONG_C(0xff000000) 166 #define IPV4_CLASS_A_HOST ULONG_C(0x00ffffff) 167 168 #define IPV4_CLASS_B(i) (((i) & ULONG_C(0xc0000000)) == ULONG_C(0x80000000)) 169 #define IPV4_CLASS_B_NET ULONG_C(0xffff0000) 170 #define IPV4_CLASS_B_MASK ULONG_C(0xffff0000) 171 #define IPV4_CLASS_B_HOST ULONG_C(0x0000ffff) 172 173 #define IPV4_CLASS_C(i) (((i) & ULONG_C(0xe0000000)) == ULONG_C(0xc0000000)) 174 #define IPV4_CLASS_C_NET ULONG_C(0xffffff00) 175 #define IPV4_CLASS_C_MASK ULONG_C(0xffffff00) 176 #define IPV4_CLASS_C_HOST ULONG_C(0x000000ff) 177 178 #define IPV4_CLASS_D(i) (((i) & ULONG_C(0xf0000000)) == ULONG_C(0xe0000000)) 179 180 #define IN4_IS_ADDR_MULTICAST(i) IPV4_CLASS_D(i) 181 182 #define MAKE_IPV4_LOCAL_BROADCAST(i) (IPV4_CLASS_A(i)?((i)|IPV4_CLASS_A_HOST):\ 183 IPV4_CLASS_B(i)?((i)|IPV4_CLASS_B_HOST):\ 184 IPV4_CLASS_C(i)?((i)|IPV4_CLASS_C_HOST):\ 185 IPV4_ADDR_BROADCAST) 186 187 #define MAKE_IPV4_LOCAL_MASK(i) (IPV4_CLASS_A(i)?IPV4_CLASS_A_MASK:\ 188 IPV4_CLASS_B(i)?IPV4_CLASS_B_MASK:\ 189 IPV4_CLASS_C(i)?IPV4_CLASS_C_MASK:\ 190 IPV4_ADDRANY) 191 192 #define MAKE_IPV4_ADDR(a,b,c,d) ((T_IN4_ADDR)(((uint32_t)(a)<<24)|((uint32_t)(b)<<16)|((uint32_t)(c)<<8)|(d))) 135 #define API_PROTO_IPVn 'n' 136 #define API_PROTO_IPV6 '6' 137 #define API_PROTO_IPV4 '4' 193 138 194 139 /* 195 * 動的生成用 TCP 通信端点140 * 動的生成用 TCP/IPv6 通信端点 196 141 */ 197 142 198 typedef struct t_tcp_ccep { 199 /* 標準 */ 200 ATR cepatr; /* 通信端点属性 */ 201 void *sbuf; /* 送信用ウィンドバッファ */ 202 int_t sbufsz; /* 送信用ウィンドバッファサイズ */ 203 void *rbuf; /* 受信用ウィンドバッファ */ 204 int_t rbufsz; /* 受信用ウィンドバッファサイズ */ 205 FP callback; /* コールバック */ 206 /* 実装依存 */ 207 } T_TCP_CCEP; 143 #define T_TCP6_CCEP T_TCP_CCEP 208 144 209 145 /* 210 * 動的生成用 TCP 受付口 146 * バイトオーダ関数の定義 147 * 148 * tinet/net/net.h でもバイトオーダの定義を行っているが、 149 * tinet/net/net.h をインクルードしない 150 * アプリケーションプログラム用に 151 * ターゲット依存しないバイトオーダ関数を定義する。 211 152 */ 212 153 213 #if defined( SUPPORT_INET4)154 #if defined(_NET_CFG_BYTE_ORDER) 214 155 215 typedef struct t_tcp_crep { 216 /* 標準 */ 217 ATR repatr; /* 受付口属性 */ 218 T_IPV4EP myaddr; /* 自分のアドレス */ 219 /* 実装依存 */ 220 } T_TCP_CREP; 156 /* tinet/net/net.h をインクルードしている。*/ 221 157 222 #e ndif /* of #if defined(SUPPORT_INET4) */158 #else /* of #if defined(_NET_CFG_BYTE_ORDER) */ 223 159 224 /* 225 * 動的生成用 UDP 通信端点 226 */ 160 extern uint16_t ntohs (uint16_t net); 161 extern uint16_t htons (uint16_t host); 162 extern uint32_t ntohl (uint32_t net); 163 extern uint32_t htonl (uint32_t host); 227 164 228 #if defined(SUPPORT_INET4) 165 #define NTOHS(n) (n=ntohs(n)) 166 #define HTONS(h) (h=htons(h)) 167 #define NTOHL(n) (n=ntohl(n)) 168 #define HTONL(h) (h=htonl(h)) 229 169 230 typedef struct t_udp_ccep { 231 /* 標準 */ 232 ATR cepatr; /* UDP 通信端点属性 */ 233 T_IPV4EP myaddr; /* 自分のアドレス */ 234 FP callback; /* コールバック関数 */ 235 /* 実装依存 */ 236 } T_UDP_CCEP; 237 238 #endif /* of #if defined(SUPPORT_INET4) */ 239 240 /* 241 * IPv4 と IPv6 をコンパイル時に選択するためのマクロ 242 */ 243 244 #if defined(SUPPORT_INET4) 245 246 #define T_IN_ADDR T_IN4_ADDR 247 #define T_IPEP T_IPV4EP 248 #define IP_ADDRANY IPV4_ADDRANY 249 250 #define IN_ARE_ADDR_EQUAL(n,h) (*(n)==*(h)) 251 #define IN_ARE_NET_ADDR_EQUAL(n,h) (ntohl(*(n))==*(h)) 252 #define IN_COPY_TO_NET(d,s) (*(d)=htonl(*(s))) 253 #define IN_COPY_TO_HOST(d,s) (*(d)=ntohl(*(s))) 254 #define IN_IS_ADDR_MULTICAST(a) IN4_IS_ADDR_MULTICAST(*(a)) 255 #define IN_IS_NET_ADDR_MULTICAST(a) IN4_IS_ADDR_MULTICAST(ntohl(*(a))) 256 #define IN_IS_ADDR_ANY(a) (*(a)==IPV4_ADDRANY) 257 258 #endif /* of #if defined(SUPPORT_INET4) */ 170 #endif /* of #if defined(_NET_CFG_BYTE_ORDER) */ 259 171 260 172 /* … … 264 176 extern const char *in_strtfn (FN fncd); 265 177 266 #if defined(SUPPORT_INET4)267 268 extern ER in4_add_ifaddr (T_IN4_ADDR addr, T_IN4_ADDR mask);269 extern ER in4_add_route (int_t index, T_IN4_ADDR target,270 T_IN4_ADDR mask, T_IN4_ADDR gateway);271 extern char *ip2str (char *buf, const T_IN4_ADDR *p_ipaddr);272 extern const T_IN4_ADDR *in4_get_ifaddr (int_t index);273 274 #endif /* of #if defined(SUPPORT_INET4) */275 276 178 #endif /* of #ifndef _IN_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.