Changeset 429 for EcnlProtoTool/trunk/asp3_dcre/tinet
- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- Location:
- EcnlProtoTool/trunk/asp3_dcre/tinet
- Files:
-
- 1 added
- 58 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tinet/Makefile.tinet
r331 r429 93 93 in_subr.o route_cfg.o 94 94 TINET_CFG_COBJS := $(TINET_CFG_COBJS) tinet_cfg.o 95 TINET_CFG2_OUT_SRCS := $(TINET_CFG2_OUT_SRCS) tinet_cfg.h tinet_cfg.c 95 96 96 97 # IPv6 … … 328 329 329 330 CFG_COBJS := $(CFG_COBJS) $(TINET_CFG_COBJS) 331 CFG2_OUT_SRCS := $(CFG2_OUT_SRCS) $(TINET_CFG2_OUT_SRCS) 330 332 331 333 CLEAN_FILES := $(CLEAN_FILES) $(TINET_CFG_OUT) $(MAKE_TINET_LIB) -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/ethernet.c
r331 r429 195 195 196 196 /** 197 * Called by a driver when its link goes up 198 */ 199 void ether_set_link_up(T_IFNET *ether) 200 { 201 if (!(ether->flags & IF_FLAG_LINK_UP)) { 202 ether->flags |= IF_FLAG_LINK_UP; 203 204 if (ether->flags & IF_FLAG_UP) { 205 #if LWIP_ARP 206 /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ 207 if (ether->flags & IF_FLAG_ETHARP) { 208 etharp_gratuitous(ether); 209 } 210 #endif /* LWIP_ARP */ 211 212 #if LWIP_IGMP 213 /* resend IGMP memberships */ 214 if (ether->_flags & IF_FLAG_IGMP) { 215 igmp_report_groups(ether); 216 } 217 #endif /* LWIP_IGMP */ 218 } 219 if (ether->link_callback) { 220 (ether->link_callback)(ether); 221 } 222 } 223 } 197 * ether_set_link_up -- リンクしたときにNICから呼び出される 198 */ 199 void 200 ether_set_link_up() 201 { 202 if (!(ether_ifnet.flags & IF_FLAG_LINK_UP)) { 203 ether_ifnet.flags |= IF_FLAG_LINK_UP; 204 205 if (ether_ifnet.flags & IF_FLAG_UP) { 206 #if defined(_IP4_CFG) && defined(SUPPORT_ETHER) 207 /* ARP再構築? */ 208 #endif /* #if defined(_IP4_CFG) && defined(SUPPORT_ETHER) */ 209 210 #ifdef SUPPORT_IGMP 211 /* IGMP参加 */ 212 #endif /* #ifdef SUPPORT_IGMP */ 213 } 214 if (ether_ifnet.link_callback) { 215 (ether_ifnet.link_callback)(ðer_ifnet); 216 } 217 } 218 } 224 219 225 220 /** 226 * Called by a driver when its link goes down 227 */ 228 void ether_set_link_down(T_IFNET *ether) 229 { 230 if (ether->flags & IF_FLAG_LINK_UP) { 231 ether->flags &= ~IF_FLAG_LINK_UP; 232 if (ether->link_callback) { 233 (ether->link_callback)(ether); 234 } 235 } 236 } 237 238 /** 239 * Set callback to be called when link is brought up/down 240 */ 241 void ether_set_link_callback(ether_status_callback_fn link_callback) 221 * ether_set_link_up -- リンクが切断したときにNICから呼び出される 222 */ 223 void 224 ether_set_link_down() 225 { 226 if (ether_ifnet.flags & IF_FLAG_LINK_UP) { 227 ether_ifnet.flags &= ~IF_FLAG_LINK_UP; 228 if (ether_ifnet.link_callback) { 229 (ether_ifnet.link_callback)(ðer_ifnet); 230 } 231 } 232 } 233 234 /* 235 * ether_set_up -- DHCPでアドレスが設定されたとき呼び出される 236 */ 237 238 void 239 ether_set_up() 240 { 241 if (!(ether_ifnet.flags & IF_FLAG_UP)) { 242 ether_ifnet.flags |= IF_FLAG_UP; 243 if (ether_ifnet.link_callback) { 244 (ether_ifnet.link_callback)(ðer_ifnet); 245 } 246 } 247 } 248 249 /* 250 * ether_set_down -- DHCPでアドレスが解放されたとき呼び出される 251 */ 252 253 void 254 ether_set_down() 255 { 256 if (ether_ifnet.flags & IF_FLAG_UP) { 257 ether_ifnet.flags &= ~IF_FLAG_UP; 258 if (ether_ifnet.link_callback) { 259 (ether_ifnet.link_callback)(ðer_ifnet); 260 } 261 } 262 } 263 264 /* 265 * ether_set_link_callback -- リンク状態変化時のコールバック登録 266 */ 267 268 void 269 ether_set_link_callback(ether_status_callback_fn link_callback) 242 270 { 243 271 ether_ifnet.link_callback = link_callback; 244 } 272 if (ether_ifnet.link_callback) { 273 (ether_ifnet.link_callback)(ðer_ifnet); 274 } 275 } 245 276 246 277 /* -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/ethernet.h
r331 r429 99 99 100 100 #if defined(__RX) 101 102 101 #pragma pack 102 #elif defined(_MSC_VER) 103 #pragma pack(push, 1) 104 #endif 105 106 #if defined(__RX) || defined(_MSC_VER) 107 103 108 typedef struct t_ether_header { 104 109 … … 113 118 uint16_t type; 114 119 } T_ETHER_HDR; 115 #pragma packoption116 120 117 121 #elif defined(TOPPERS_S810_CLG3_85) /* of #if defined(__RX) */ … … 143 147 uint8_t shost[ETHER_ADDR_LEN]; 144 148 uint16_t type; 145 } __attribute__((packed, aligned(2))) T_ETHER_HDR;149 } __attribute__((packed, aligned(2))) T_ETHER_HDR; 146 150 147 151 #endif /* of #if defined(__RX) */ … … 158 162 typedef struct t_ether_addr { 159 163 uint8_t lladdr[ETHER_ADDR_LEN]; 160 } __attribute__((packed, aligned(2)))T_ETHER_ADDR; 164 } __attribute__((packed, aligned(2))) T_ETHER_ADDR; 165 166 #if defined(__RX) 167 #pragma packoption 168 #elif defined(_MSC_VER) 169 #pragma pack(pop) 170 #endif 161 171 162 172 /* … … 208 218 /* インタフェースのマルチキャストアドレスへの変換 */ 209 219 220 #define IF_FLAG_UP 0x01U 221 #define IF_FLAG_LINK_UP 0x10U 222 210 223 /* 211 224 * 前方参照 … … 266 279 #endif /* of #ifdef T_IF_ETHER_NIC_SOFTC */ 267 280 268 #define IF_FLAG_UP 0x01U269 #define IF_FLAG_LINK_UP 0x10U270 271 281 /* 272 282 * 変数 … … 304 314 extern uint32_t ether_srand (void); 305 315 306 /** Function prototype for netif status- or link-callback functions. */307 316 typedef void (*ether_status_callback_fn)(T_IFNET *ether); 308 317 extern void ether_set_link_callback(ether_status_callback_fn link_callback); 309 extern void ether_set_link_up(T_IFNET *ether); 310 extern void ether_set_link_down(T_IFNET *ether); 318 extern void ether_set_link_up(); 319 extern void ether_set_link_down(); 320 extern void ether_set_up(); 321 extern void ether_set_down(); 311 322 312 323 #endif /* of #ifdef SUPPORT_ETHER */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/if_arp.h
r331 r429 91 91 uint8_t proto_len; /* プロトコル長 */ 92 92 uint16_t opcode; /* 命令コード */ 93 } __attribute__((packed, aligned(2))) T_ARP_HDR;93 } __attribute__((packed, aligned(2))) T_ARP_HDR; 94 94 95 95 #define ARP_HDR_SIZE (sizeof(T_ARP_HDR)) … … 119 119 typedef struct arpcom { 120 120 uint8_t mac_addr[ETHER_ADDR_LEN]; 121 } __attribute__((packed, aligned(2))) T_ARPCOM;121 } __attribute__((packed, aligned(2))) T_ARPCOM; 122 122 123 123 /* -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/net_asp.cfg
r331 r429 41 41 42 42 INCLUDE("net/net.cfg"); 43 44 #ifndef NOUSE_MPF_NET_BUF 43 45 44 46 /* … … 169 171 }); 170 172 #endif /* of #if defined(NUM_MPF_NET_BUF6_65536) && NUM_MPF_NET_BUF6_65536 > 0 */ 173 174 #endif -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/net_buf.c
r331 r429 68 68 #include <netinet/tcp_var.h> 69 69 70 #ifndef NOUSE_MPF_NET_BUF 71 70 72 /* 71 73 * 関数 … … 226 228 #endif /* of #if defined(NUM_MPF_NET_BUF_128) && NUM_MPF_NET_BUF_128 > 0 */ 227 229 228 #if defined(_IP4_CFG) 230 #if defined(_IP6_CFG) 231 232 #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 233 { 234 MPF_NET_BUF_CSEG, 235 IF_HDR_SIZE + IP_HDR_SIZE + TCP_HDR_SIZE, 236 237 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 238 239 NUM_MPF_NET_BUF_CSEG, 240 241 #endif /* of #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF */ 242 243 }, 244 #endif /* of #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 */ 245 246 #endif /* of #if defined(_IP6_CFG) */ 229 247 230 248 #if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0 … … 242 260 #endif /* of #if defined(NUM_MPF_NET_BUF_64) && NUM_MPF_NET_BUF_64 > 0 */ 243 261 244 # endif /* of #if defined(_IP4_CFG) */262 #if defined(_IP4_CFG) && !defined(_IP6_CFG) 245 263 246 264 #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 … … 257 275 }, 258 276 #endif /* of #if defined(NUM_MPF_NET_BUF_CSEG) && NUM_MPF_NET_BUF_CSEG > 0 */ 277 278 #endif /* of #if defined(_IP4_CFG) && !defined(_IP6_CFG) */ 259 279 260 280 }; … … 307 327 308 328 while (1) { 309 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void *)buf, ix == 0 ? tmout : TMO_POL)) == E_OK) {329 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void **)buf, ix == 0 ? tmout : TMO_POL)) == E_OK) { 310 330 (*buf)->idix = (uint8_t)ix; 311 331 (*buf)->len = (uint16_t)minlen; 312 332 (*buf)->flags = 0; 313 333 #ifdef IF_ETHER_MULTI_NIC 334 (*buf)->conn_pos = 0; 335 #endif 314 336 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 315 337 NET_COUNT_NET_BUF(net_buf_table[ix].allocs, 1); … … 318 340 return error; 319 341 } 320 else if (ix == 0 || net_buf_table[ix].size > maxlen) 342 ix --; 343 if (ix < 0 || net_buf_table[ix].size > maxlen) 321 344 break; 322 ix --;323 345 } 324 346 … … 349 371 350 372 while (1) { 351 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void *)buf,373 if ((error = tget_mpf((ID)net_buf_table[ix].index, (void **)buf, 352 374 ix == sizeof(net_buf_table) / sizeof(T_NET_BUF_ENTRY) - 1 ? tmout : TMO_POL)) == E_OK) { 353 375 (*buf)->idix = (uint8_t)ix; 354 376 (*buf)->len = net_buf_table[ix].size; 355 377 (*buf)->flags = 0; 378 #ifdef IF_ETHER_MULTI_NIC 379 (*buf)->conn_pos = 0; 380 #endif 356 381 357 382 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF … … 450 475 /* 固定メモリプールに返す。*/ 451 476 452 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 453 net_buf_table[buf->idix].busies --; 454 #endif 455 if ((error = rel_mpf((ID)net_buf_table[buf->idix].index, buf)) != E_OK) { 456 syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), buf->idix); 477 int idix = buf->idix; 478 #if NET_COUNT_ENABLE & PROTO_FLG_NET_BUF 479 net_buf_table[idix].busies --; 480 #endif 481 if ((error = rel_mpf((ID)net_buf_table[idix].index, buf)) != E_OK) { 482 syslog(LOG_WARNING, "[NET BUF] %s, ID=%d.", itron_strerror(error), idix); 457 483 } 458 484 } … … 505 531 return (uint_t)net_buf_table[0].size; 506 532 } 533 534 #else 535 #include <stdlib.h> 536 537 /* 538 * tget_net_buf_ex -- ネットワークバッファを獲得する(拡張機能)。 539 */ 540 541 ER 542 tget_net_buf_ex (T_NET_BUF **buf, uint_t minlen, uint_t maxlen, ATR nbatr, TMO tmout) 543 { 544 uint_t len = (minlen > maxlen) ? minlen : maxlen; 545 *buf = (T_NET_BUF *)malloc(sizeof(T_NET_BUF) - sizeof(((T_NET_BUF *)0)->buf) + len); 546 if (*buf == NULL) 547 return E_NOMEM; 548 549 (*buf)->idix = 0; 550 (*buf)->len = (uint16_t)len; 551 (*buf)->flags = 0; 552 #ifdef IF_ETHER_MULTI_NIC 553 (*buf)->conn_pos = 0; 554 #endif 555 556 return E_OK; 557 } 558 559 /* 560 * tget_net_buf -- ネットワークバッファを獲得する(互換)。 561 */ 562 563 ER 564 tget_net_buf (T_NET_BUF **buf, uint_t len, TMO tmout) 565 { 566 return tget_net_buf_ex(buf, len, len, NBA_SEARCH_ASCENT, tmout); 567 } 568 569 570 /* 571 * rel_net_buf -- ネットワークバッファを返却する。 572 */ 573 574 ER 575 rel_net_buf (T_NET_BUF *buf) 576 { 577 free(buf); 578 579 return E_OK; 580 } 581 582 583 /* 584 * net_buf_max_siz -- ネットワークバッファの最大サイズを返す。 585 */ 586 587 uint_t 588 net_buf_max_siz (void) 589 { 590 return (uint_t)IF_PDU_SIZE; 591 } 592 593 #endif -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/net_buf.h
r331 r429 55 55 uint8_t idix; /* mpfid のインデックス */ 56 56 uint8_t flags; /* フラグ */ 57 #ifdef IF_ETHER_MULTI_NIC 58 uint8_t conn_pos; 59 #endif 57 60 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 58 61 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 80 83 uint8_t idix; /* mpfid のインデックス */ 81 84 uint8_t flags; /* フラグ */ 85 #ifdef IF_ETHER_MULTI_NIC 86 uint8_t conn_pos; 87 #endif 82 88 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 83 89 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 97 103 uint8_t idix; /* mpfid のインデックス */ 98 104 uint8_t flags; /* フラグ */ 105 #ifdef IF_ETHER_MULTI_NIC 106 uint8_t conn_pos; 107 #endif 99 108 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 100 109 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 114 123 uint8_t idix; /* mpfid のインデックス */ 115 124 uint8_t flags; /* フラグ */ 125 #ifdef IF_ETHER_MULTI_NIC 126 uint8_t conn_pos; 127 #endif 116 128 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 117 129 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 131 143 uint8_t idix; /* mpfid のインデックス */ 132 144 uint8_t flags; /* フラグ */ 145 #ifdef IF_ETHER_MULTI_NIC 146 uint8_t conn_pos; 147 #endif 133 148 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 134 149 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 148 163 uint8_t idix; /* mpfid のインデックス */ 149 164 uint8_t flags; /* フラグ */ 165 #ifdef IF_ETHER_MULTI_NIC 166 uint8_t conn_pos; 167 #endif 150 168 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 151 169 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 167 185 uint8_t idix; /* mpfid のインデックス */ 168 186 uint8_t flags; /* フラグ */ 187 #ifdef IF_ETHER_MULTI_NIC 188 uint8_t conn_pos; 189 #endif 169 190 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 170 191 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/net_count.c
r331 r429 222 222 T_NET_COUNT net_count_igmp; 223 223 224 #endif /* of #if NET_COUNT_ENABLE & PROTO_FLG_I CMP4*/224 #endif /* of #if NET_COUNT_ENABLE & PROTO_FLG_IGMP */ 225 225 226 226 #endif /* of #if defined(_IP4_CFG) */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/net/net_rename.h
r331 r429 71 71 #define tget_net_buf_ex _tinet_tget_net_buf_ex 72 72 #define tget_net_buf _tinet_tget_net_buf 73 #define rel_net_buf _tinet_rel_net_buf74 #define rus_net_buf _tinet_rus_net_buf75 #define net_buf_siz _tinet_net_buf_siz73 #define rel_net_buf _tinet_rel_net_buf 74 #define rus_net_buf _tinet_rus_net_buf 75 #define net_buf_siz _tinet_net_buf_siz 76 76 #define net_buf_max_siz _tinet_net_buf_max_siz 77 77 #define nbuf_get_tbl _tinet_nbuf_get_tbl -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/Makefile.netapp
r331 r429 183 183 NETAPP_COBJS := $(NETAPP_COBJS) udp6_echo_cli.o 184 184 NETAPP_KERNEL_CFG := $(NETAPP_KERNEL_CFG) $(NETAPP_DIRS)/udp6_echo_cli.cfg 185 185 186 186 ifeq ($(SUPPORT_INET4),true) 187 187 ifeq ($(USE_UDP4_ECHO_CLI),true) … … 191 191 endif 192 192 endif 193 193 else 194 194 ifeq ($(SUPPORT_INET4),true) 195 195 SUPPORT_UDP = true … … 364 364 ifeq ($(TARGET_KERNEL),ASP) 365 365 366 APPLDIR := $(APPLDIR) $(NETAPP_DIRS)366 APPLDIRS := $(APPLDIRS) $(NETAPP_DIRS) 367 367 APPL_COBJS := $(APPL_COBJS) $(NETAPP_COBJS) 368 368 APPL_CFLAGS := $(APPL_CFLAGS) -fno-strict-aliasing … … 382 382 ifeq ($(TARGET_KERNEL),ASP) 383 383 384 APPLDIR := $(APPLDIR) $(SRCDIR)/pdic/sc1602384 APPLDIRS := $(APPLDIRS) $(SRCDIR)/pdic/sc1602 385 385 386 386 endif -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dbg_cons.c
r331 r429 666 666 "IX Expire State MAC Address IP Address\n"); 667 667 668 /* expire の単位は [ ms]。*/668 /* expire の単位は [us]。*/ 669 669 get_tim(&now); 670 670 cache = nd6_get_cache(); … … 705 705 "IX Expire MAC Address IP Address\n"); 706 706 707 /* expire の単位は [ ms]。*/707 /* expire の単位は [us]。*/ 708 708 cache = arp_get_cache(); 709 709 for (ix = 0; ix < NUM_ARP_ENTRY; ix ++) { … … 753 753 WAI_NET_CONS_PRINTF(); 754 754 get_tim(&now); 755 cons_printf(portid, "ネットワーク統計情報\t経過時間[ ms]\t%lu\t", now);755 cons_printf(portid, "ネットワーク統計情報\t経過時間[us]\t%lu\t", now); 756 756 if (now > (1000 * 3600 * 24)) 757 757 cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n", … … 938 938 } 939 939 940 cons_printf(portid, "\nネットワーク統計情報\t経過時間[ ms]\t%lu\t", now);940 cons_printf(portid, "\nネットワーク統計情報\t経過時間[us]\t%lu\t", now); 941 941 if (now > (1000 * 3600 * 24)) 942 942 cons_printf(portid, "%3lu日 %2lu時間 %2lu分 %2lu秒\n", … … 1065 1065 WAI_NET_CONS_PRINTF(); 1066 1066 get_tim(&now); 1067 cons_printf(portid, "ネットワークバッファ情報\t経過時間[ ms]\t%u\n", now);1067 cons_printf(portid, "ネットワークバッファ情報\t経過時間[us]\t%u\n", now); 1068 1068 1069 1069 #if NET_COUNT_ENABLE … … 1577 1577 cons_printf(portid, " IP Address\n"); 1578 1578 1579 /* expire の単位は [ ms]。*/1579 /* expire の単位は [us]。*/ 1580 1580 get_tim(&now); 1581 1581 dr = nd6_get_drl(&count); … … 2298 2298 2299 2299 cons_printf(portid, "ND:\n"); 2300 cons_printf(portid, " TMO_ND6_RTR_SOL_DELAY: %5d[ ms]\n", TMO_ND6_RTR_SOL_DELAY);2301 cons_printf(portid, " TMO_ND6_RTR_SOL_INTERVAL: %5d[ ms]\n", TMO_ND6_RTR_SOL_INTERVAL);2300 cons_printf(portid, " TMO_ND6_RTR_SOL_DELAY: %5d[us]\n", TMO_ND6_RTR_SOL_DELAY); 2301 cons_printf(portid, " TMO_ND6_RTR_SOL_INTERVAL: %5d[us]\n", TMO_ND6_RTR_SOL_INTERVAL); 2302 2302 cons_printf(portid, " NUM_IP6_DAD_COUNT: %5d\n", NUM_IP6_DAD_COUNT); 2303 2303 cons_printf(portid, " NUM_ND6_CACHE_ENTRY: %5d\n", NUM_ND6_CACHE_ENTRY); -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dhcp4.h
r331 r429 93 93 uint8_t file [DHCP4_FILE_LEN]; /* boot file name */ 94 94 uint8_t options[DHCP4_DFLT_OPT_LEN]; /* optional parameters field */ 95 } T_DHCP4_MSG;95 } __attribute__((packed)) T_DHCP4_MSG; 96 96 97 97 /* packet type ã®å®ç¾© */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dhcp4_cli.c
r331 r429 206 206 #endif 207 207 208 #ifdef SEM_DHCP4_CLI_TIMER 209 #define DHCP4_CLI_TIMER_LOCK() do { syscall(wai_sem(SEM_DHCP4_CLI_TIMER)); } while(0) 210 #define DHCP4_CLI_TIMER_UNLOCK() do { syscall(sig_sem(SEM_DHCP4_CLI_TIMER)); } while(0) 211 #else 212 #define DHCP4_CLI_TIMER_LOCK() do { } while(0) 213 #define DHCP4_CLI_TIMER_UNLOCK() do { } while(0) 214 #endif 215 216 #ifdef SEM_DHCP4_CLI_READY 217 #define DHCP4_CLI_READY_WAIT(ct) do { syscall(wai_sem(SEM_DHCP4_CLI_READY)); } while(0) 218 #define DHCP4_CLI_READY_SIGNAL(ct) do { syscall(sig_sem(SEM_DHCP4_CLI_READY)); } while(0) 219 #else 220 #define DHCP4_CLI_READY_WAIT(ct) do { } while(0) 221 #define DHCP4_CLI_READY_SIGNAL(ct) do { ct->sig = 1; syscall(wup_tsk(ct->tskid)); } while(0) 222 #endif 223 208 224 /* 209 225 * dhcp4_cksum -- ãã§ãã¯ãµã ã®è¨ç®é¢æ° … … 381 397 #endif /* of #ifdef USE_LCD */ 382 398 #endif 383 399 ether_set_down(); 384 400 } 385 401 } … … 508 524 lcd_putc(LCD_PORTID, '\n'); 509 525 #endif /* of #ifdef USE_LCD */ 510 if (ct->set_addr_callback != NULL) 511 ct->set_addr_callback(); 512 526 ether_set_up(); 513 527 } 514 528 } … … 951 965 int ix; 952 966 953 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));967 DHCP4_CLI_TIMER_LOCK(); 954 968 for (ix = NUM_DHCP4C_TIMERS; ix -- > 0; ) 955 969 ct->timers[ix] = 0; 956 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));970 DHCP4_CLI_TIMER_UNLOCK(); 957 971 } 958 972 … … 970 984 971 985 /* OFFER ã¡ãã»ã¼ã¸åä¿¡ã¿ã¤ã ã¢ã¦ããè¨å®ããã*/ 972 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));986 DHCP4_CLI_TIMER_LOCK(); 973 987 ct->timers[DHCP4C_TIMER_RCV_OFFER] = SYSTIM2TIMER(TMO_DHCP4C_OFFER); 974 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));988 DHCP4_CLI_TIMER_UNLOCK(); 975 989 976 990 /* éä¿¡å … … 987 1001 /* DISCOVER ã¡ãã»ã¼ã¸ãéä¿¡ããã*/ 988 1002 ct->flags |= DHCP4C_FLAG_TMOUT_SND_DISC; 989 syscall(sig_sem(SEM_DHCP4_CLI_READY));1003 DHCP4_CLI_READY_SIGNAL(ct); 990 1004 } 991 1005 … … 1018 1032 1019 1033 /* EXPIREãRENEWãREBIND ã¿ã¤ãã¼ãè¨å®ããã*/ 1020 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1034 DHCP4_CLI_TIMER_LOCK(); 1021 1035 ct->timers[DHCP4C_TIMER_EXPIRE] = SYSTIM2TIMER(ct->expire); /* EXPIRE ã¾ã§ã®æé */ 1022 1036 ct->timers[DHCP4C_TIMER_REBIND] = SYSTIM2TIMER(ct->rebind); /* REBINDï¼T2ï¼ã¾ã§ã®æé */ 1023 1037 ct->timers[DHCP4C_TIMER_RENEW] = SYSTIM2TIMER(ct->renew); /* RENEW ï¼T1ï¼ã¾ã§ã®æé */ 1024 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1038 DHCP4_CLI_TIMER_UNLOCK(); 1025 1039 1026 1040 /* BOUND ç¶æ … … 1048 1062 ã RENEW 以å¤ã§ã¯ ACK/NAK ã¡ãã»ã¼ã¸åä¿¡ã¿ã¤ã ã¢ã¦ããè¨å®ããã*/ 1049 1063 if (fsm != DHCP4_FSM_RENEW) { 1050 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1064 DHCP4_CLI_TIMER_LOCK(); 1051 1065 ct->timers[DHCP4C_TIMER_RCV_ACK] = SYSTIM2TIMER(TMO_DHCP4C_ACK); 1052 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1066 DHCP4_CLI_TIMER_UNLOCK(); 1053 1067 } 1054 1068 … … 1073 1087 /* REQUEST ã¡ãã»ã¼ã¸ãéä¿¡ããã*/ 1074 1088 ct->flags |= DHCP4C_FLAG_TMOUT_SND_REQ; 1075 syscall(sig_sem(SEM_DHCP4_CLI_READY));1089 DHCP4_CLI_READY_SIGNAL(ct); 1076 1090 } 1077 1091 … … 1103 1117 /* RELEASE ã¡ãã»ã¼ã¸ãéä¿¡ããã*/ 1104 1118 ct->flags |= DHCP4C_FLAG_TMOUT_SND_REL; 1105 syscall(sig_sem(SEM_DHCP4_CLI_READY));1119 DHCP4_CLI_READY_SIGNAL(ct); 1106 1120 } 1107 1121 … … 1116 1130 uint8_t *option; 1117 1131 1118 memset((void*)&ct->snd_msg->msg, sizeof(ct->snd_msg->msg), 0);1132 memset((void*)&ct->snd_msg->msg, 0, sizeof(ct->snd_msg->msg)); 1119 1133 ct->snd_msg->len = sizeof(ct->snd_msg->msg); 1120 1134 … … 1410 1424 1411 1425 /* REQUEST ã¡ãã»ã¼ã¸éä¿¡ã¿ã¤ãã¼ãåæ¢ããã*/ 1412 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1426 DHCP4_CLI_TIMER_LOCK(); 1413 1427 ct->timers[DHCP4C_TIMER_SND_REQ] = 0; 1414 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1428 DHCP4_CLI_TIMER_UNLOCK(); 1415 1429 1416 1430 /* … … 1464 1478 1465 1479 /* ACK/NAK ã¡ãã»ã¼ã¸åä¿¡ã¿ã¤ãã¼ãåæ¢ããã*/ 1466 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1480 DHCP4_CLI_TIMER_LOCK(); 1467 1481 ct->timers[DHCP4C_TIMER_RCV_ACK] = 0; 1468 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1482 DHCP4_CLI_TIMER_UNLOCK(); 1469 1483 1470 1484 /* … … 1544 1558 1545 1559 /* åéä¿¡ã¿ã¤ã ã¢ã¦ããè¨å®ããã*/ 1546 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1560 DHCP4_CLI_TIMER_LOCK(); 1547 1561 ct->timers[DHCP4C_TIMER_SND_REQ] = SYSTIM2TIMER(ct->interval); 1548 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1562 DHCP4_CLI_TIMER_UNLOCK(); 1549 1563 } 1550 1564 … … 1582 1596 /* ã¡ãã»ã¼ã¸éä¿¡å¾ 1583 1597 ã¡ãè¡ãã*/ 1584 syscall(wai_sem(SEM_DHCP4_CLI_READY));1598 DHCP4_CLI_READY_WAIT(ct); 1585 1599 1586 1600 /* SLEEP ç¶æ … … 1602 1616 1603 1617 /* DISCOVER ã¡ãã»ã¼ã¸éä¿¡ã¿ã¤ãã¼ãåæ¢ããã*/ 1604 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1618 DHCP4_CLI_TIMER_LOCK(); 1605 1619 ct->timers[DHCP4C_TIMER_SND_DISC] = 0; 1606 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1620 DHCP4_CLI_TIMER_UNLOCK(); 1607 1621 1608 1622 /* REQUEST ã¡ãã»ã¼ã¸ãéä¿¡ã㦠REQUEST ç¶æ … … 1634 1648 1635 1649 /* OFFER ã¡ãã»ã¼ã¸åä¿¡ã¿ã¤ãã¼ãåæ¢ããã*/ 1636 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1650 DHCP4_CLI_TIMER_LOCK(); 1637 1651 ct->timers[DHCP4C_TIMER_RCV_OFFER] = 0; 1638 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1652 DHCP4_CLI_TIMER_UNLOCK(); 1639 1653 1640 1654 /* REQUEST ã¡ãã»ã¼ã¸ãéä¿¡ã㦠REQUEST ç¶æ … … 1692 1706 1693 1707 /* åéä¿¡ã¿ã¤ã ã¢ã¦ããè¨å®ããã*/ 1694 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1708 DHCP4_CLI_TIMER_LOCK(); 1695 1709 ct->timers[DHCP4C_TIMER_SND_DISC] = SYSTIM2TIMER(ct->interval); 1696 syscall(sig_sem(SEM_DHCP4_CLI_TIMER)); 1697 } 1710 DHCP4_CLI_TIMER_UNLOCK(); 1711 } 1712 1713 #ifdef DHCP4_CLI_TASK 1698 1714 1699 1715 /* … … 1706 1722 int ix; 1707 1723 1708 syscall(wai_sem(SEM_DHCP4_CLI_TIMER));1724 DHCP4_CLI_TIMER_LOCK(); 1709 1725 for (ix = NUM_DHCP4C_TIMERS; ix -- > 0; ) { 1710 1726 if (ct->timers[ix] != 0) { … … 1712 1728 if (ct->timers[ix] == 0) { 1713 1729 ct->flags = (ct->flags & ~DHCP4C_FLAG_TMOUT_MASK) | DHCP4C_FLAG_TMOUT_TIMER | ix; 1714 syscall(sig_sem(SEM_DHCP4_CLI_READY));1730 DHCP4_CLI_READY_SIGNAL(ct); 1715 1731 } 1716 1732 } 1717 1733 } 1718 syscall(sig_sem(SEM_DHCP4_CLI_TIMER));1734 DHCP4_CLI_TIMER_UNLOCK(); 1719 1735 1720 1736 /* 1ç§æ¯ã«ã¿ã¤ã ã¢ã¦ãããã*/ 1721 1737 timeout((callout_func)dhcpc_timer, ct, NET_TIMER_HZ); 1722 1738 } 1739 1740 #endif 1723 1741 1724 1742 /* … … 1832 1850 } 1833 1851 1852 #ifdef DHCP4_CLI_TASK 1853 1834 1854 /* 1835 1855 * dispatch_event -- ã¤ãã³ãæ¯ã®å¦ç … … 1845 1865 /* ã¡ãã»ã¼ã¸ã®åä¿¡ã¨ã¿ã¤ã ã¢ã¦ããå¾ 1846 1866 ã¤ã*/ 1847 syscall(wai_sem(SEM_DHCP4_CLI_READY));1867 DHCP4_CLI_READY_WAIT(ct); 1848 1868 1849 1869 if (ct->flags & DHCP4C_FLAG_RCV_MSG) { … … 1863 1883 } 1864 1884 1885 #endif 1886 1865 1887 /* 1866 1888 * init_context -- DHCP ã¯ã©ã¤ã¢ã³ãã³ã³ããã¹ãæ§é ä½ãåæåããã … … 1868 1890 1869 1891 static void 1870 init_context (T_DHCP4_CLI_CONTEXT *ct, ID cepid)1892 init_context (T_DHCP4_CLI_CONTEXT *ct, ID tskid, ID cepid) 1871 1893 { 1872 1894 memset(ct, 0, sizeof(*ct)); 1895 ct->tskid = tskid; 1873 1896 ct->cepid = cepid; 1874 1897 ct->sc = IF_ETHER_NIC_GET_SOFTC(); 1875 1898 ct->dst.portno = DHCP4_SRV_CFG_PORTNO; 1876 1899 ct->dst.ipaddr = IPV4_ADDRANY; 1877 ct->set_addr_callback = DHCP4_CLI_SET_ADDR_CALLBACK;1878 1900 } 1879 1901 … … 1968 1990 1969 1991 /* SLEEP ã解é¤ããã*/ 1970 wup_tsk(DHCP4_CLI_TASK); 1992 context.req = 1; 1993 wup_tsk(context.tskid); 1971 1994 return E_OK; 1972 1995 } … … 2061 2084 } 2062 2085 } 2063 syscall(sig_sem(SEM_DHCP4_CLI_READY));2086 DHCP4_CLI_READY_SIGNAL((&context)); 2064 2087 } 2065 2088 return E_OK; 2066 2089 } 2090 2091 #ifdef DHCP4_CLI_TASK 2067 2092 2068 2093 /* … … 2075 2100 T_DHCP4_CLI_CONTEXT *ct; 2076 2101 ID tskid; 2077 ER error ;2102 ER error = E_OK; 2078 2103 2079 2104 dly_tsk(1000); … … 2084 2109 2085 2110 /* DHCP ã¯ã©ã¤ã¢ã³ãã³ã³ããã¹ãæ§é ä½ãåæåããã*/ 2086 init_context(ct, (ID)exinf); 2111 init_context(ct, tskid, (ID)exinf); 2112 ct->fsm = DHCP4_FSM_SLEEP; 2087 2113 2088 2114 while (true) { 2089 2090 /* 1ç§æ¯ã«ã¿ã¤ã ã¢ã¦ãããããã«ã¿ã¤ãã¼ãè¨å®ããã*/2091 timeout((callout_func)dhcpc_timer, ct, NET_TIMER_HZ / DHCP4C_TIMER_HZ);2092 2093 /* ã¡ãã»ã¼ã¸æ§é ä½ãåæåããã*/2094 if ((error = init_cli_msg(ct)) == E_OK) {2095 2096 /* SELECT ç¶æ2097 ã«é·ç§»ããã*/2098 start_select(ct);2099 2100 /* ã¡ã¤ã³ã«ã¼ã */2101 error = dispatch_event(ct);2102 }2103 2104 /* å2105 ¨ã¦ã® TIMER ããã£ã³ã»ã«ããã*/2106 cancel_all_timers(ct);2107 2108 /* ã¿ã¤ãã¼ãåæ¢ããã*/2109 untimeout((callout_func)dhcpc_timer, ct);2110 2111 /* ã¡ãã»ã¼ã¸æ§é ä½ã解æ¾ããã*/2112 rel_cli_msg (ct);2113 2115 2114 2116 /* ãªã¼ã¹ã解æ¾å¾ãååå¾ãæå®ããã¦ããªããã°ä¼æ¢ããã*/ … … 2116 2118 2117 2119 /* ä¼æ¢ããã*/ 2118 if (error == E_OK) 2119 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2120 if (error == E_OK) { 2121 if (ct->fsm != DHCP4_FSM_SLEEP) 2122 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2123 } 2120 2124 else { 2121 2125 syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(error)); … … 2126 2130 ct->flags = 0; 2127 2131 ct->error = E_OK; 2128 } 2129 } 2130 2132 2133 /* 1ç§æ¯ã«ã¿ã¤ã ã¢ã¦ãããããã«ã¿ã¤ãã¼ãè¨å®ããã*/ 2134 timeout((callout_func)dhcpc_timer, ct, NET_TIMER_HZ / DHCP4C_TIMER_HZ); 2135 2136 /* ã¡ãã»ã¼ã¸æ§é ä½ãåæåããã*/ 2137 if ((error = init_cli_msg(ct)) == E_OK) { 2138 2139 /* SELECT ç¶æ 2140 ã«é·ç§»ããã*/ 2141 start_select(ct); 2142 2143 /* ã¡ã¤ã³ã«ã¼ã */ 2144 error = dispatch_event(ct); 2145 } 2146 2147 /* å 2148 ¨ã¦ã® TIMER ããã£ã³ã»ã«ããã*/ 2149 cancel_all_timers(ct); 2150 2151 /* ã¿ã¤ãã¼ãåæ¢ããã*/ 2152 untimeout((callout_func)dhcpc_timer, ct); 2153 2154 /* ã¡ãã»ã¼ã¸æ§é ä½ã解æ¾ããã*/ 2155 rel_cli_msg (ct); 2156 } 2157 } 2158 2159 #else 2160 2161 T_DHCP4_CLI_CONTEXT * 2162 dhcp4_cli_initialize(ID tskid, ID cepid) 2163 { 2164 T_DHCP4_CLI_CONTEXT *ct = &context; 2165 /* DHCP ã¯ã©ã¤ã¢ã³ãã³ã³ããã¹ãæ§é ä½ãåæåããã*/ 2166 init_context(ct, tskid, cepid); 2167 ct->fsm = DHCP4_FSM_SLEEP; 2168 ct->timer = TMO_FEVR; 2169 return ct; 2170 } 2171 2172 int 2173 dhcp4_cli_get_timer(T_DHCP4_CLI_CONTEXT *ct) 2174 { 2175 if (ct->fsm == DHCP4_FSM_SLEEP) 2176 return TMO_FEVR; 2177 2178 return ct->timer; 2179 } 2180 2181 void 2182 dhcp4_cli_progress(T_DHCP4_CLI_CONTEXT *ct, int elapse) 2183 { 2184 int ix; 2185 2186 if ((ct->fsm == DHCP4_FSM_SLEEP) || (ct->timer == TMO_FEVR)) 2187 return; 2188 2189 ct->timer -= elapse; 2190 if (ct->timer > 0) 2191 return; 2192 2193 /* 1ç§æ¯ã«ã¿ã¤ã ã¢ã¦ãããããã«ã¿ã¤ãã¼ãè¨å®ããã*/ 2194 ct->timer = 1000 * 1000; 2195 2196 for (ix = NUM_DHCP4C_TIMERS; ix-- > 0; ) { 2197 if (ct->timers[ix] != 0) { 2198 ct->timers[ix] --; 2199 if (ct->timers[ix] <= 0) { 2200 ct->timers[ix] = 0; 2201 ct->flags = (ct->flags & ~DHCP4C_FLAG_TMOUT_MASK) | DHCP4C_FLAG_TMOUT_TIMER | ix; 2202 DHCP4_CLI_READY_SIGNAL(ct); 2203 } 2204 } 2205 } 2206 } 2207 2208 void 2209 dhcp4_cli_wakeup(T_DHCP4_CLI_CONTEXT *ct) 2210 { 2211 if (ct->req) { 2212 ct->req = 0; 2213 if (ct->snd_msg == NULL) { 2214 ct->flags = 0; 2215 ct->error = E_OK; 2216 2217 /* ã¡ãã»ã¼ã¸æ§é ä½ãåæåããã*/ 2218 if ((ct->error = init_cli_msg(ct)) != E_OK) 2219 return; 2220 2221 ct->timer = 1000 * 1000; 2222 2223 /* SELECT ç¶æ 2224 ã«é·ç§»ããã*/ 2225 start_select(ct); 2226 } 2227 } 2228 2229 if (!ct->sig) 2230 return; 2231 ct->sig = 0; 2232 2233 if (ct->flags & DHCP4C_FLAG_RCV_MSG) { 2234 while (ct->val_lst != NULL) { 2235 ct->error = eval_rcv_msg(ct); 2236 } 2237 ct->flags &= ~DHCP4C_FLAG_RCV_MSG; 2238 } 2239 } 2240 2241 void 2242 dhcp4_cli_timeout(T_DHCP4_CLI_CONTEXT *ct) 2243 { 2244 if (ct->flags & DHCP4C_FLAG_TMOUT_MASK) 2245 ct->error = dispatch_timeout(ct); 2246 2247 if (ct->error != E_OK || ct->fsm == DHCP4_FSM_SLEEP) { 2248 /* å 2249 ¨ã¦ã® TIMER ããã£ã³ã»ã«ããã*/ 2250 cancel_all_timers(ct); 2251 ct->timer = TMO_FEVR; 2252 2253 /* ã¡ãã»ã¼ã¸æ§é ä½ã解æ¾ããã*/ 2254 rel_cli_msg(ct); 2255 2256 /* ãªã¼ã¹ã解æ¾å¾ãååå¾ãæå®ããã¦ããªããã°ä¼æ¢ããã*/ 2257 if (!(ct->flags & DHCP4C_FLAG_RENEW)) { 2258 2259 /* ä¼æ¢ããã*/ 2260 if (ct->error == E_OK) { 2261 if (ct->fsm != DHCP4_FSM_SLEEP) 2262 syslog(LOG_NOTICE, "[DHCP4C] lease released, go to sleep."); 2263 } 2264 else { 2265 syslog(LOG_NOTICE, "[DHCP4C] server not available, go to sleep, error: %s.", itron_strerror(ct->error)); 2266 ct->error = E_OK; 2267 ct->fsm = DHCP4_FSM_SLEEP; 2268 } 2269 } 2270 } 2271 } 2272 2273 #endif /* DHCP4_CLI_TASK */ 2131 2274 #endif /* of #ifdef DHCP4_CLI_CFG */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dhcp4_cli.h
r331 r429 206 206 207 207 /* åä¿¡ã¿ã¤ã ã¢ã¦ã */ 208 #define TMO_DHCP4C_OFFER ULONG_C(120*1000) /* OFFER ã¡ãã»ã¼ã¸ */209 #define TMO_DHCP4C_ACK ULONG_C(60*1000) /* ACK/NAK ã¡ãã»ã¼ã¸ */208 #define TMO_DHCP4C_OFFER (ULONG_C(120)*SYSTIM_HZ) /* OFFER ã¡ãã»ã¼ã¸ */ 209 #define TMO_DHCP4C_ACK (ULONG_C(60)*SYSTIM_HZ) /* ACK/NAK ã¡ãã»ã¼ã¸ */ 210 210 211 211 /* ãªã¼ã¹æéã®æ¢å®å¤ */ 212 #define TMO_DHCP4C_DEF_LEASE ULONG_C(12*60*60*1000) /* æ¨æºæé */213 #define TMO_DHCP4C_MIN_LEASE ULONG_C(60*1000) /* æå°æé */212 #define TMO_DHCP4C_DEF_LEASE (ULONG_C(12*60*60)*SYSTIM_HZ) /* æ¨æºæé */ 213 #define TMO_DHCP4C_MIN_LEASE (ULONG_C(60)*SYSTIM_HZ) /* æå°æé */ 214 214 215 215 /* ã¡ãã»ã¼ã¸ã®éä¿¡å¨æ */ 216 #define TMO_DHCP4C_INIT_INTVL ULONG_C(3*1000) /* åæå¤ */217 #define TMO_DHCP4C_MAX_BACKOFF ULONG_C(15*1000) /* å¶éå¤ */216 #define TMO_DHCP4C_INIT_INTVL (ULONG_C(3)*SYSTIM_HZ) /* åæå¤ */ 217 #define TMO_DHCP4C_MAX_BACKOFF (ULONG_C(15)*SYSTIM_HZ) /* å¶éå¤ */ 218 218 219 219 /* DHCP ãµã¼ãã¸ã® UDP éä¿¡ã¿ã¤ã ã¢ã¦ã */ … … 230 230 ã¡æé */ 231 231 #define TMO_DHCP4C_SND_REL_WAIT ULONG_C(1000000) /* [us] */ 232 233 /* DHCP ã§ã¢ãã¬ã¹ãæ´æ°ãããæã«å¼ã³åºãã³ã¼ã«ããã¯é¢æ° */234 #ifndef DHCP4_CLI_SET_ADDR_CALLBACK235 #define DHCP4_CLI_SET_ADDR_CALLBACK NULL236 #endif237 232 238 233 #ifndef _MACRO_ONLY -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/dhcp4_cli_var.h
r331 r429 181 181 RELTIM interval; /* éä¿¡éé */ 182 182 ER_UINT error; /* ã¨ã©ã¼ã»ãã¼ã¿é· */ 183 ID cepid; /* CEP ID */ 183 ID tskid; /* ã¿ã¹ã¯ID */ 184 ID cepid; /* CEP ID */ 184 185 uint32_t xid; /* ãã©ã³ã¶ã¯ã·ã§ã³ ID */ 185 186 uint16_t flags; /* å種ãã©ã° */ … … 188 189 uint8_t fsm; /* ç¾å¨ã®ç¶æ 189 190 */ 190 void (* set_addr_callback)(); /* ã¢ãã¬ã¹è¨å®æã®ã³ã¼ã«ãã㯠*/ 191 uint8_t req; 192 uint8_t sig; 193 int timer; 191 194 } T_DHCP4_CLI_CONTEXT; 192 195 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/netapp_subr.c
r331 r429 44 44 #include <sil.h> 45 45 #include <syssvc/serial.h> 46 #include <syssvc/logtask.h> 46 #include <target_syssvc.h> 47 #define LOGTASK_PORTID SIO_PORTID 47 48 #include <t_syslog.h> 48 49 #include "kernel_cfg.h" -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/resolver.c
r331 r429 59 59 #include <kernel.h> 60 60 #include <t_syslog.h> 61 #include <syssvc/logtask.h> 61 #include <target_syssvc.h> 62 #define LOGTASK_PORTID SIO_PORTID 62 63 #include "kernel_cfg.h" 63 64 #include "tinet_cfg.h" … … 253 254 { 254 255 uint_t label_len; 255 uint8_t*tail;256 char *tail; 256 257 257 258 while (*name != '\0') { … … 265 266 266 267 /* ã©ãã«é·ãè¨å®ããã*/ 267 label_len = tail - (uint8_t*)name;268 label_len = tail - name; 268 269 if (label_len > DNS_LABEL_LENGTH) { /* 63 ãªã¯ããããè¶ 269 270 ããã¨ã¨ã©ã¼ */ … … 421 422 422 423 /* ãã¡ã¤ã³åã追å ããã*/ 423 if ((offset = add_name(msg, msg_size, offset, dns_domain_name)) < 0)424 if ((offset = add_name(msg, msg_size, offset, (char *)dns_domain_name)) < 0) 424 425 return offset; 425 426 … … 1075 1076 1076 1077 if (new == NULL) 1077 strcpy( dns_domain_name, RSLV_CFG_DNS_DOMAIN_NAME_STR);1078 strcpy((char *)dns_domain_name, RSLV_CFG_DNS_DOMAIN_NAME_STR); 1078 1079 else { 1079 1080 dst = dns_domain_name; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/resolver.h
r331 r429 70 70 */ 71 71 72 #define TMO_DNS_UDP_SND ULONG_C(1*1000 ) /* [ms]ãDNS ãµã¼ãã¸ã® UDP éä¿¡ã¿ã¤ã ã¢ã¦ã */73 #define TMO_DNS_UDP_RCV ULONG_C(5*1000 ) /* [ms]ãDNS ãµã¼ãããã® UDP åä¿¡ã¿ã¤ã ã¢ã¦ã */72 #define TMO_DNS_UDP_SND ULONG_C(1*1000*1000) /* [us]ãDNS ãµã¼ãã¸ã® UDP éä¿¡ã¿ã¤ã ã¢ã¦ã */ 73 #define TMO_DNS_UDP_RCV ULONG_C(5*1000*1000) /* [us]ãDNS ãµã¼ãããã® UDP åä¿¡ã¿ã¤ã ã¢ã¦ã */ 74 74 #define NUM_DNS_UDP_RETRY 1 /* ãªãã©ã¤åæ° */ 75 75 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netapp/wwws.c
r331 r429 708 708 len += put_str(cepid, srbuf, response); 709 709 get_tim(&finish); 710 syslog(LOG_NOTICE, "[WWWn:%02u SND] send: index.html, len: %4u, time: %lu [ ms]",710 syslog(LOG_NOTICE, "[WWWn:%02u SND] send: index.html, len: %4u, time: %lu [us]", 711 711 cepid, len, (finish - start) * 1000 / SYSTIM_HZ); 712 712 return E_OK; … … 1609 1609 1610 1610 get_tim(&finish); 1611 syslog(LOG_NOTICE, "[WWWn:%02u SND]send: stat.html, len: %4u, time: %lu [ ms]",1611 syslog(LOG_NOTICE, "[WWWn:%02u SND]send: stat.html, len: %4u, time: %lu [us]", 1612 1612 cepid, len, (finish - start) * 1000 / SYSTIM_HZ); 1613 1613 return E_OK; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/if_mbed.c
r331 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ … … 64 64 * SUCH DAMAGE. 65 65 * 66 * $FreeBSD: src/sys/i386/isa/if_ mbed.c,v 1.148.2.4 1999/09/25 13:08:18 nyan Exp $66 * $FreeBSD: src/sys/i386/isa/if_ed.c,v 1.148.2.4 1999/09/25 13:08:18 nyan Exp $ 67 67 */ 68 68 … … 200 200 if_mbed_setrcr(T_IF_SOFTC *ic) 201 201 { 202 T_MBED_SOFTC *sc = ic->sc;203 202 } 204 203 … … 318 317 if_mbed_init(T_IF_SOFTC *ic) 319 318 { 320 T_MBED_SOFTC *sc = ic->sc;321 322 319 /* mbed_init 本体を呼び出す。*/ 323 320 if_mbed_init_sub(ic); … … 347 344 } 348 345 if (link_mode_new != NEGO_FAIL) { 349 ethernetext_set_link_mode(link_mode_new );346 ethernetext_set_link_mode(link_mode_new | PROMISCUOUS_MODE); 350 347 ETHER.EESIPR0 |= EDMAC_EESIPR_INI_TRANS; 351 348 ether_set_link_up(ether); … … 373 370 if_mbed_read(T_IF_SOFTC *ic) 374 371 { 375 T_MBED_SOFTC *sc = ic->sc;376 372 T_NET_BUF *input = NULL; 377 373 uint_t align; … … 406 402 if_mbed_start(T_IF_SOFTC *ic, T_NET_BUF *output) 407 403 { 408 T_MBED_SOFTC *sc = ic->sc;409 404 int32_t len, res, pos; 410 405 … … 429 424 if_mbed_eth_handler(void) 430 425 { 431 uint32_t stat_edmac; 432 uint32_t stat_etherc; 433 434 /* Clear the interrupt request flag */ 435 stat_edmac = (ETHER.EESR0 & ETHER.EESIPR0); /* Targets are restricted to allowed interrupts */ 436 ETHER.EESR0 = stat_edmac; 437 /* Reception-related */ 438 if (stat_edmac & EDMAC_EESIPR_INI_RECV) { 439 isig_sem(if_softc.semid_rxb_ready); 440 } 426 uint32_t stat_edmac; 427 uint32_t stat_etherc; 428 ER ret; 429 430 /* Clear the interrupt request flag */ 431 stat_edmac = (ETHER.EESR0 & ETHER.EESIPR0); /* Targets are restricted to allowed interrupts */ 432 ETHER.EESR0 = stat_edmac; 433 /* Reception-related */ 434 if (stat_edmac & EDMAC_EESIPR_INI_RECV) { 435 ret = isig_sem(if_softc.semid_rxb_ready); 436 if (ret != E_OK) 437 syslog(LOG_INFO, "semid_rxb_ready %d %x", ret, stat_edmac & EDMAC_EESIPR_INI_RECV); 438 } 441 439 if (stat_edmac & EDMAC_EESIPR_INI_TRANS) { 442 isig_sem(if_softc.semid_txb_ready); 443 } 444 /* E-MAC-related */ 445 if (stat_edmac & EDMAC_EESIPR_INI_EtherC) { 446 /* Clear the interrupt request flag */ 447 stat_etherc = (ETHER.ECSR0 & ETHER.ECSIPR0); /* Targets are restricted to allowed interrupts */ 448 ETHER.ECSR0 = stat_etherc; 449 } 450 } 440 ret = isig_sem(if_softc.semid_txb_ready); 441 if (ret != E_OK) 442 syslog(LOG_INFO, "semid_txb_ready %d %x", ret, stat_edmac & EDMAC_EESIPR_INI_TRANS); 443 } 444 /* E-MAC-related */ 445 if (stat_edmac & EDMAC_EESIPR_INI_EtherC) { 446 /* Clear the interrupt request flag */ 447 stat_etherc = (ETHER.ECSR0 & ETHER.ECSIPR0); /* Targets are restricted to allowed interrupts */ 448 ETHER.ECSR0 = stat_etherc; 449 } 450 } -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/if_mbed.cfg
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/if_mbed.h
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/nic.cfg
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/nic_asp.cfg
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/nic_rename.h
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/tinet_nic_config.h
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netdev/if_mbed/tinet_nic_defs.h
r321 r429 4 4 * Copyright (C) 2001-2009 by Dep. of Computer Science and Engineering 5 5 * Tomakomai National College of Technology, JAPAN 6 * Copyright (C) 2014 Cores Co., Ltd. Japan6 * Copyright (C) 2014-2019 Cores Co., Ltd. Japan 7 7 * 8 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/icmp6.h
r331 r429 291 291 typedef struct t_router_advert_hdr { 292 292 T_ICMP6_HDR hdr; 293 uint32_t reachable; /* [ ms] 到達可能時間 */294 uint32_t retransmit; /* [ ms] 近隣要請送信間隔 */293 uint32_t reachable; /* [us] 到達可能時間 */ 294 uint32_t retransmit; /* [us] 近隣要請送信間隔 */ 295 295 /* この後にオプションが続く */ 296 296 } __attribute__((packed, aligned(2))) T_ROUTER_ADVERT_HDR; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in4_subr.c
r331 r429 115 115 #include <net/if_var.h> 116 116 117 #ifdef SUPPORT_IGMP 118 #include <netinet/udp_var.h> 119 #include <netinet/ip_igmp.h> 120 #endif /* of #ifdef SUPPORT_IGMP */ 121 117 122 #if defined(_IP4_CFG) 118 123 … … 294 299 295 300 /* IP ããããè¨å®ããã*/ 296 if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK) 301 if ((error = in4_set_header(*nbuf, len, dstaddr, srcaddr, proto, ttl)) != E_OK) { 302 syscall(rel_net_buf(*nbuf)); 303 *nbuf = NULL; 297 304 return error; 305 } 298 306 299 307 /* 4 ãªã¯ãããå¢çã¾ã§ããã£ã³ã°ã§åããã*/ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in_itron.h
r331 r429 62 62 #define TFN_TCP_ALL (0) 63 63 64 #define TEV_TCP_RCV_OOB ( -0x201)64 #define TEV_TCP_RCV_OOB (0x201) 65 65 66 66 /* UDP 関係 */ … … 75 75 #define TFN_UDP_ALL (0) 76 76 77 #define TEV_UDP_RCV_DAT ( -0x221)77 #define TEV_UDP_RCV_DAT (0x221) 78 78 79 79 /* 一般 */ … … 139 139 extern ER udp_cre_cep (ID cepid, T_UDP_CCEP *pk_ccep); 140 140 141 extern ER udp6_del_cep(ID cepid); 142 extern ER udp6_set_opt(ID cepid, int_t optname, void *optval, int_t optlen); 143 extern ER udp6_get_opt(ID cepid, int_t optname, void *optval, int_t optlen); 141 144 extern ER udp6_cre_cep (ID cepid, T_UDP6_CCEP *pk_ccep); 142 145 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in_rename.h
r331 r429 242 242 #define arp_get_cache _tinet_arp_get_cache 243 243 244 #define ether_map_ipv4_multicast _tinet_ether_map_ipv4_multicast 244 #define ether_map_ipv4_multicast \ 245 _tinet_ether_map_ipv4_multicast 245 246 246 247 /* netinet6/icmp6.c */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/in_var.h
r331 r429 141 141 inn_get_datagram(nbuf,len,maxlen,dst,src,next,hlim,nbatr,tmout) 142 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) 143 #define IN_IS_NET_ADDR_MULTICAST(nbuf) (GET_IP_VER(input)==IPV6_VERSION \ 144 ?IN_IS_ADDR_MULTICAST(&GET_IP6_HDR(input)->dst) \ 145 :IN4_IS_ADDR_MULTICAST(ntohl(GET_IP4_HDR(input)->dst))) 144 146 #define IN_ADDRWITHIFP(ifp,src,dst) inn_addrwithifp(ifp,src,dst) 145 147 #define IN_IS_ADDR_ANY(addr) IN6_IS_ADDR_UNSPECIFIED(addr) -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip4_var.h
r331 r429 106 106 uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */ 107 107 uint8_t flags; /* ãã©ã° */ 108 #ifdef IF_ETHER_MULTI_NIC 109 uint8_t conn_pos; 110 #endif 108 111 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 109 112 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 124 127 uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */ 125 128 uint8_t flags; /* ãã©ã° */ 129 #ifdef IF_ETHER_MULTI_NIC 130 uint8_t conn_pos; 131 #endif 126 132 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 127 133 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 178 184 uint8_t idix; /* mpfid ã®ã¤ã³ããã¯ã¹ */ 179 185 uint8_t flags; /* ãã©ã° */ 186 #ifdef IF_ETHER_MULTI_NIC 187 uint8_t conn_pos; 188 #endif 180 189 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 181 190 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip_igmp.c
r331 r429 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 7 * ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 8 * ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL 9 * q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA 10 * ðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏEÄzziȺC 11 * pÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã® (1)ï½(4) ã®æ¡ä»¶ãï¼Free Software Foundation 9 * ã«ãã£ã¦å 10 ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨ 11 * è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢ 12 * ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼ 14 * å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®æ¡ä»¶ãæºãããã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 33 * 害ãããï¼ä¸è¨èä½æ¨©è 34 ããã³TOPPERSããã¸ã§ã¯ããå 35 責ãããã¨ï¼ 29 36 * 30 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 31 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à 32 * ÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌpÉæè¼ 33 * ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 34 42 * 35 43 * @(#) $Id$ … … 88 96 89 97 static bool_t igmp_send_report_v2(T_IN4_ADDR dst); 90 static uint16_t igmp_get_timer(T_IGMP_ENTRY *entry);98 static int16_t igmp_get_timer(T_IGMP_ENTRY *entry); 91 99 92 100 ER igmp_set_loop(T_UDP_CEP *cep, uint8_t optval) … … 155 163 T_IGMP_ENTRY *entry = NULL; 156 164 int i; 157 uint16_t min;158 165 T_IFNET *ifp = IF_GET_IFNET(); 159 166 ER ret = E_NOMEM; … … 168 175 entry = &igmp_groups[i]; 169 176 if (entry->timer == -1) { 170 entry->timer = igmp_get_timer(entry);177 entry->timer = 0; 171 178 entry->ip_addr = optval->imr_multiaddr; 172 179 ret = E_OK; … … 184 191 T_IGMP_ENTRY *entry = NULL; 185 192 int i; 186 uint16_t min;187 193 ER ret = E_PAR; 188 194 T_IFNET *ifp = IF_GET_IFNET(); … … 223 229 T_NET_BUF *input = *inputp; 224 230 T_IGMPV2_HDR *igmph; 225 T_IN4_ADDR addr;226 231 uint_t len, align; 227 232 T_IP4_HDR *ip4h; … … 234 239 NET_COUNT_IGMP(net_count_igmp.in_packets, 1); 235 240 236 /* ICMP wb_Ì·³ð`FbN·éB*/241 /* ICMP ãããã®é·ãããã§ãã¯ããã*/ 237 242 if (input->len < IF_IP4_IGMP_HDR_SIZE) { 238 243 NET_COUNT_IGMP(net_count_igmp.in_err_packets, 1); … … 243 248 igmph = (T_IGMPV2_HDR *)(input->buf + *offp); 244 249 245 /* 4 INebg«EÌf[^· */250 /* 4 ãªã¯ãããå¢çã®ãã¼ã¿é· */ 246 251 len = input->len - *offp; 247 252 align = (len + 3) >> 2 << 2; 248 253 249 /* 4 INebg«EÜÅpfBOÅßéB*/254 /* 4 ãªã¯ãããå¢çã¾ã§ããã£ã³ã°ã§åããã*/ 250 255 if (align > len) 251 256 memset((uint8_t*)input->buf + input->len, 0, (size_t)(align - len)); 252 257 253 /* `FbNTðvZ·éB*/258 /* ãã§ãã¯ãµã ãè¨ç®ããã*/ 254 259 if (in_cksum(igmph, align) != 0) { 255 260 NET_COUNT_IGMP(net_count_igmp.in_err_packets, 1); … … 257 262 } 258 263 259 /* bZ[WÌ^Éæèªò·éB*/264 /* ã¡ãã»ã¼ã¸ã®åã«ããåå²ããã*/ 260 265 switch (igmph->type) { 261 266 case IGMP_MEMBERSHIP_QUERY: … … 263 268 ret = false; 264 269 265 /* QÁÌO[vAhX©çÌNG[Ìê*/270 /* åå ä¸ã®ã°ã«ã¼ãã¢ãã¬ã¹ããã®ã¯ã¨ãªã¼ã®å ´å */ 266 271 syscall(wai_sem(SEM_IGMP_GROUP_LOCK)); 267 272 268 273 for (i = 0; i < NUM_IGMP_ENTRY; i++) { 269 274 entry = &igmp_groups[i]; 270 if ((entry->timer >= 0) && (entry->ip_addr == addr)) {275 if ((entry->timer >= 0) && (entry->ip_addr == igmph->addr)) { 271 276 entry->resptime = igmph->time; 272 277 ret = true; … … 278 283 279 284 if (ret) { 280 /* o[Vbv|[gðM*/285 /* ã¡ã³ãã¼ã·ãããªãã¼ããéä¿¡ */ 281 286 igmp_send_report_v2(ip4h->src); 282 287 } … … 293 298 T_IGMPV2_HDR *igmph; 294 299 T_NET_BUF *output; 295 uint_t len , align;300 uint_t len = 0, align; 296 301 297 302 if (in4_get_datagram(&output, (uint_t)(IF_IP4_IGMP_HDR_SIZE + len), 0, … … 300 305 return false; 301 306 302 /* IGMP wb_ðÝè·éB*/307 /* IGMP ããããè¨å®ããã*/ 303 308 igmph = GET_IGMPV2_HDR(output, IF_IP4_IGMP_HDR_OFFSET); 304 309 igmph->type = IGMP_MEMBERSHIP_REPORT_V2; 305 310 igmph->time = 0; 306 igmph->addr = dst;307 308 /* 4 INebg«EÌf[^· */311 igmph->addr = htonl(dst); 312 313 /* 4 ãªã¯ãããå¢çã®ãã¼ã¿é· */ 309 314 align = (len + 3) >> 2 << 2; 310 315 311 /* 4 INebg«EÜÅpfBOÅßéB*/316 /* 4 ãªã¯ãããå¢çã¾ã§ããã£ã³ã°ã§åããã*/ 312 317 if (align > len) 313 memset((uint8_t*)GET_IGMP_SDU(output, IF_IP4_IGMP_HDR_OFFSET) + IP4_HDR_SIZE +len,318 memset((uint8_t*)GET_IGMP_SDU(output, IF_IP4_IGMP_HDR_OFFSET) + len, 314 319 0, (size_t)(align - len)); 315 320 316 /* `FbNTðvZ·éB*/321 /* ãã§ãã¯ãµã ãè¨ç®ããã*/ 317 322 igmph->sum = 0; 318 igmph->sum = in_cksum(igmph, (uint_t)(I F_IP4_IGMP_HDR_SIZE + align));319 320 /* M·éB*/323 igmph->sum = in_cksum(igmph, (uint_t)(IGMP_HDR_SIZE + align)); 324 325 /* éä¿¡ããã*/ 321 326 NET_COUNT_IGMP(net_count_igmp.out_octets, 322 327 output->len - GET_IF_IP4_HDR_SIZE(output)); … … 330 335 331 336 /* 332 * igmp_timer -- IGMP ¤Ê^C}[ 337 * igmp_timer -- IGMP å 338 ±éã¿ã¤ãã¼ 333 339 */ 334 340 static void igmp_timer(void *ignore) … … 361 367 362 368 /* 363 * igmp_init -- IGMP @\ðú»·éB369 * igmp_init -- IGMP æ©è½ãåæåããã 364 370 */ 365 371 366 372 void igmp_init(void) 367 373 { 368 T_IGMP_ENTRY *entry = NULL;369 374 int i; 370 375 … … 397 402 } 398 403 399 uint16_t igmp_get_timer(T_IGMP_ENTRY *entry)400 { 401 uint16_t time = entry->resptime;404 int16_t igmp_get_timer(T_IGMP_ENTRY *entry) 405 { 406 int16_t time = entry->resptime; 402 407 403 408 if (time == 0) 404 time = 10;405 406 return net_rand() / (0x7fffffff / time);409 time = 590; 410 411 return (int16_t)(net_rand() % time) + 10; 407 412 } 408 413 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip_igmp.cfg
r331 r429 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 7 * ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 8 * ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL 9 * q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA 10 * ðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏEÄzziȺC 11 * pÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã® (1)ï½(4) ã®æ¡ä»¶ãï¼Free Software Foundation 9 * ã«ãã£ã¦å 10 ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨ 11 * è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢ 12 * ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼ 14 * å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®æ¡ä»¶ãæºãããã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 33 * 害ãããï¼ä¸è¨èä½æ¨©è 34 ããã³TOPPERSããã¸ã§ã¯ããå 35 責ãããã¨ï¼ 29 36 * 30 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 31 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à 32 * ÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌpÉæè¼ 33 * ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 34 42 * 35 43 * @(#) $Id$ … … 37 45 38 46 /* 39 * IGMP RtBM 40 [Vt@C 47 * IGMP ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã« 41 48 */ 42 49 43 50 #if defined(_IP4_CFG) && defined(SUPPORT_IGMP) 44 51 45 /* IGMP O[vXVpZ}tH*/52 /* IGMP ã°ã«ã¼ãæ´æ°ç¨ã»ããã© */ 46 53 47 54 CRE_SEM(SEM_IGMP_GROUP_LOCK, { TA_TPRI, 1, 1 }); -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/ip_igmp.h
r331 r429 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 7 * ãLì ÒÍCÈºÌ (1)`(4) Ìð©CFree Software Foundation 8 * ÉæÁÄö\³êÄ¢é GNU General Public License Ì Version 2 ÉL 9 * q³êÄ¢éðð½·êÉÀèC{\tgEFAi{\tgEFA 10 * ðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»EüÏEÄzziȺC 11 * pÆÄÔj·é±Æð³Åø·éD 12 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 13 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 14 * XR[hÉÜÜêÄ¢é±ÆD 15 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 16 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 17 gip 18 * Ò}j 19 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 20 * ̳ÛØKèðfÚ·é±ÆD 21 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 22 * pÅ«È¢`ÅÄzz·éêÉÍCÌðð½·±ÆD 23 * (a) Äzzɺ¤hL 24 gipÒ}j 25 AÈÇjÉCãLÌ 26 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã® (1)ï½(4) ã®æ¡ä»¶ãï¼Free Software Foundation 9 * ã«ãã£ã¦å 10 ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨ 11 * è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢ 12 * ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼ 14 * å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®æ¡ä»¶ãæºãããã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 33 * 害ãããï¼ä¸è¨èä½æ¨©è 34 ããã³TOPPERSããã¸ã§ã¯ããå 35 責ãããã¨ï¼ 29 36 * 30 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 31 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄC»ÌKpÂ\«à 32 * ÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEFAÌpÉæè¼ 33 * ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»ÌÓCðíÈ¢D 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 34 42 * 35 43 * @(#) $Id$ … … 39 47 #define _IP_IGMP_H_ 40 48 41 #define NUM_IGMP_ENTRY 5 /* }`LXgO[vÌGg */ 42 43 #ifdef __CA850__ 44 #pragma pack(1) 45 #elif __RX 46 #pragma pack 47 #elif _MSC_VER 48 #pragma pack(push, 1) 49 #endif 49 #define NUM_IGMP_ENTRY 5 /* ãã«ããã£ã¹ãã°ã«ã¼ãã®ã¨ã³ããªæ° */ 50 50 51 51 /* 52 * IGMPv1 wb_Ìè`ARFC 111252 * IGMPv1 ãããã®å®ç¾©ãRFC 1112 53 53 */ 54 54 55 55 typedef struct t_igmpv1_hdr 56 56 { 57 uint8_t type; /* bZ[WÌ^*/58 uint8_t unused; /* ¢gp*/59 uint16_t sum; /* `FbNT*/60 T_IN4_ADDR addr; /* O[vAhX*/61 } T_IGMPV1_HDR;57 uint8_t type; /* ã¡ãã»ã¼ã¸ã®å */ 58 uint8_t unused; /* æªä½¿ç¨ */ 59 uint16_t sum; /* ãã§ãã¯ãµã */ 60 T_IN4_ADDR addr; /* ã°ã«ã¼ãã¢ãã¬ã¹ */ 61 } __attribute__((packed)) T_IGMPV1_HDR; 62 62 63 63 /* 64 * IGMPv2 wb_Ìè`ARFC 223664 * IGMPv2 ãããã®å®ç¾©ãRFC 2236 65 65 */ 66 66 67 67 typedef struct t_igmpv2_hdr 68 68 { 69 uint8_t type; /* bZ[WÌ^*/70 uint8_t time; /* ÅåÔ*/71 uint16_t sum; /* `FbNT*/72 T_IN4_ADDR addr; /* O[vAhX*/73 } T_IGMPV2_HDR;69 uint8_t type; /* ã¡ãã»ã¼ã¸ã®å */ 70 uint8_t time; /* æ大å¿çæé */ 71 uint16_t sum; /* ãã§ãã¯ãµã */ 72 T_IN4_ADDR addr; /* ã°ã«ã¼ãã¢ãã¬ã¹ */ 73 } __attribute__((packed)) T_IGMPV2_HDR; 74 74 75 75 typedef struct t_igmpv3_query_hdr 76 76 { 77 uint8_t type; /* bZ[WÌ^*/78 uint8_t time; /* ÅåÔ*/79 uint16_t sum; /* `FbNT*/80 T_IN4_ADDR grpaddr; /* O[vAhX*/81 uint8_t sqrv; /* S tOAQuerier Robustness Value */77 uint8_t type; /* ã¡ãã»ã¼ã¸ã®å */ 78 uint8_t time; /* æ大å¿çæé */ 79 uint16_t sum; /* ãã§ãã¯ãµã */ 80 T_IN4_ADDR grpaddr; /* ã°ã«ã¼ãã¢ãã¬ã¹ */ 81 uint8_t sqrv; /* Sãã©ã°ãQuerier Robustness Value */ 82 82 uint8_t qqic; /* Qurier's Query Interval Code */ 83 uint16_t num; /* M³Ì */ 84 T_IN4_ADDR sdraddr; /* M³AhX */ 85 } T_IGMPV3Q_HDR; 83 uint16_t num; /* éä¿¡å 84 ã®æ° */ 85 T_IN4_ADDR sdraddr; /* éä¿¡å 86 ã¢ãã¬ã¹ */ 87 } __attribute__((packed)) T_IGMPV3Q_HDR; 86 88 87 89 typedef struct t_igmp_group_record 88 90 { 89 uint8_t type; /* bZ[WÌ^ */ 90 uint8_t len; /* âf[^· */ 91 uint16_t num; /* M³Ì */ 92 T_IN4_ADDR grpaddr; /* O[vAhX */ 93 T_IN4_ADDR sdraddr; /* M³AhX */ 94 /* âf[^ */ 95 } T_IGMP_GROUP_RECORD; 91 uint8_t type; /* ã¡ãã»ã¼ã¸ã®å */ 92 uint8_t len; /* è£å©ãã¼ã¿é· */ 93 uint16_t num; /* éä¿¡å 94 ã®æ° */ 95 T_IN4_ADDR grpaddr; /* ã°ã«ã¼ãã¢ãã¬ã¹ */ 96 T_IN4_ADDR sdraddr; /* éä¿¡å 97 ã¢ãã¬ã¹ */ 98 /* è£å©ãã¼ã¿ */ 99 } __attribute__((packed)) T_IGMP_GROUP_RECORD; 96 100 97 101 typedef struct t_igmpv3_report_hdr 98 102 { 99 uint8_t type; /* bZ[WÌ^ */ 100 uint8_t rsv1; /* \ñ */ 101 uint16_t sum; /* `FbNT */ 102 uint16_t rsv2; /* \ñ */ 103 uint16_t num; /* O[vR[hÌ */ 104 T_IGMP_GROUP_RECORD record; /* O[vR[h */ 105 } T_IGMPV3R_HDR; 106 107 #ifdef __CA850__ 108 #pragma pack(8) 109 #elif __RX 110 #pragma unpack 111 #elif _MSC_VER 112 #pragma pack(pop) 113 #endif 103 uint8_t type; /* ã¡ãã»ã¼ã¸ã®å */ 104 uint8_t rsv1; /* äºç´ */ 105 uint16_t sum; /* ãã§ãã¯ãµã */ 106 uint16_t rsv2; /* äºç´ */ 107 uint16_t num; /* ã°ã«ã¼ãã¬ã³ã¼ãã®æ° */ 108 T_IGMP_GROUP_RECORD record; /* ã°ã«ã¼ãã¬ã³ã¼ã */ 109 } __attribute__((packed)) T_IGMPV3R_HDR; 114 110 115 111 #define IGMP_HDR_SIZE (sizeof(T_IGMPV1_HDR)) … … 125 121 126 122 /* 127 * bZ[WÌ^123 * ã¡ãã»ã¼ã¸ã®å 128 124 */ 129 125 130 #define IGMP_MEMBERSHIP_QUERY 0x11 /* o[VbvNG[*/131 #define IGMP_MEMBERSHIP_REPORT 0x12 /* o[Vbv|[g*/132 #define IGMP_MEMBERSHIP_REPORT_V2 0x16 /* o[Vbv|[g*/133 #define IGMP_LEAVE_GROUP 0x17 /* [uO[v*/134 #define IGMP_MEMBERSHIP_REPORT_V3 0x22 /* o[Vbv|[g*/126 #define IGMP_MEMBERSHIP_QUERY 0x11 /* ã¡ã³ãã¼ã·ããã¯ã¨ãªã¼ */ 127 #define IGMP_MEMBERSHIP_REPORT 0x12 /* ã¡ã³ãã¼ã·ããã¬ãã¼ã */ 128 #define IGMP_MEMBERSHIP_REPORT_V2 0x16 /* ã¡ã³ãã¼ã·ããã¬ãã¼ã */ 129 #define IGMP_LEAVE_GROUP 0x17 /* ãªã¼ãã°ã«ã¼ã */ 130 #define IGMP_MEMBERSHIP_REPORT_V3 0x22 /* ã¡ã³ãã¼ã·ããã¬ãã¼ã */ 135 131 136 132 /* 137 * UDP ÊM[_IvV133 * UDPé信端ç¹ãªãã·ã§ã³ 138 134 */ 139 135 … … 168 164 169 165 /* 170 * IGMP O[vGg166 * IGMP ã°ã«ã¼ãã¨ã³ã㪠171 167 */ 172 168 173 169 typedef struct igmp_entry 174 170 { 175 uint16_t timer; /* MÜÅÌÔ[b] */176 uint16_t resptime; /* ÅåÔ[b] */177 T_IN4_ADDR ip_addr; /* IP AhX*/171 int16_t timer; /* éä¿¡ã¾ã§ã®æé[ç§] */ 172 int16_t resptime; /* æ大å¿çæé[ç§] */ 173 T_IN4_ADDR ip_addr; /* IP ã¢ãã¬ã¹ */ 178 174 } T_IGMP_ENTRY; 179 175 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_input.c
r331 r429 521 521 522 522 /* 相手のアドレスをコピーする。*/ 523 524 #if defined(_IP6_CFG) && defined(_IP4_CFG) 525 526 if (cep->flags & TCP_CEP_FLG_IPV4) { 527 (*cep->p_dstaddr4).ipaddr = ntohl(cep->dstaddr.ipaddr.s6_addr32[3]); 528 (*cep->p_dstaddr4).portno = cep->dstaddr.portno; 529 } 530 else 531 *cep->p_dstaddr = cep->dstaddr; 532 533 #else /* of #if defined(_IP6_CFG) && defined(_IP4_CFG) */ 534 523 535 *cep->p_dstaddr = cep->dstaddr; 536 537 #endif /* of #if defined(_IP6_CFG) && defined(_IP4_CFG) */ 524 538 525 539 if (IS_PTR_DEFINED(cep->callback)) { … … 847 861 848 862 /* 相手のアドレスをコピーする。*/ 863 864 #if defined(_IP6_CFG) && defined(_IP4_CFG) 865 866 if (cep->flags & TCP_CEP_FLG_IPV4) { 867 (*cep->p_dstaddr4).ipaddr = ntohl(cep->dstaddr.ipaddr.s6_addr32[3]); 868 (*cep->p_dstaddr4).portno = cep->dstaddr.portno; 869 } 870 else 871 *cep->p_dstaddr = cep->dstaddr; 872 873 #else /* of #if defined(_IP6_CFG) && defined(_IP4_CFG) */ 874 849 875 *cep->p_dstaddr = cep->dstaddr; 876 877 #endif /* of #if defined(_IP6_CFG) && defined(_IP4_CFG) */ 850 878 851 879 if (IS_PTR_DEFINED(cep->callback)) { … … 1363 1391 NTOHS(tcph->sport); 1364 1392 NTOHS(tcph->dport); 1393 1394 /* SDU 長 より 緊急ポインタが大きい場合 */ 1395 if (tcph->urp > tcph->sum) 1396 goto drop; 1365 1397 1366 1398 find_cep: -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_output.c
r331 r429 369 369 tcph->flags |= TCP_FLG_URG; 370 370 } 371 else 371 else { 372 tcph->urp = 0; 372 373 cep->snd_up = cep->snd_una; 374 } 373 375 374 376 #endif /* of #ifdef TCP_CFG_EXTENTIONS */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_subr.c
r331 r429 805 805 806 806 T_TCP_CEP * 807 tcp_drop (T_TCP_CEP *cep, ER err no)807 tcp_drop (T_TCP_CEP *cep, ER err) 808 808 { 809 809 #ifdef SUPPORT_MIB … … 815 815 #endif /* of #ifdef SUPPORT_MIB */ 816 816 817 cep->error = err no;817 cep->error = err; 818 818 if (TCP_FSM_HAVE_RCVD_SYN(cep->fsm_state)) { 819 819 cep->fsm_state = TCP_FSM_CLOSED; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_timer.h
r331 r429 86 86 */ 87 87 88 #define TCP_SLOW_TMO (ULONG_C(500 )/NET_TIMER_CYCLE) /* 500 [ms] */89 #define TCP_FAST_TMO (ULONG_C(200 )/NET_TIMER_CYCLE) /* 200 [ms] */88 #define TCP_SLOW_TMO (ULONG_C(500000)/NET_TIMER_CYCLE) /* 500,000 [us] */ 89 #define TCP_FAST_TMO (ULONG_C(200000)/NET_TIMER_CYCLE) /* 200,000 [us] */ 90 90 91 #define TCP_SLOW_HZ (ULONG_C(1000 )/TCP_SLOW_TMO/NET_TIMER_CYCLE) /* Hz */91 #define TCP_SLOW_HZ (ULONG_C(1000000)/TCP_SLOW_TMO/NET_TIMER_CYCLE) /* Hz */ 92 92 93 93 /* TCP タイマ値 */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_usrreq.c
r331 r429 897 897 898 898 /* tcp_rcv_buf の割当て長をリセットする。*/ 899 cep->rcv_buf_len = 0;899 cep->rcv_buf_len -= len; 900 900 901 901 /* 通信端点のロックを解除する。*/ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcp_var.h
r331 r429 505 505 uint8_t idix; /* mpfid のインデックス */ 506 506 uint8_t flags; /* フラグ */ 507 #ifdef IF_ETHER_MULTI_NIC 508 uint8_t conn_pos; 509 #endif 507 510 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 508 511 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 817 820 extern void tcp_init_iss (void); 818 821 extern T_TCP_CEP *tcp_close (T_TCP_CEP *cep); 819 extern T_TCP_CEP *tcp_drop (T_TCP_CEP *cep, ER err no);822 extern T_TCP_CEP *tcp_drop (T_TCP_CEP *cep, ER err); 820 823 extern void tcp_respond (T_NET_BUF *nbuf, T_TCP_CEP *cep, 821 824 T_TCP_SEQ ack, T_TCP_SEQ seq, uint_t rbfree, uint8_t flags); -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/tcpn_usrreq.c
r331 r429 689 689 cep->p_myaddr4 = p_myaddr; 690 690 cep->p_dstaddr = NULL; 691 cep->p_myaddr = N ULL;691 cep->p_myaddr = NADR; 692 692 693 693 #else /* of #if API_PROTO == API_PROTO_IPV4 */ 694 694 695 695 cep->p_dstaddr4 = NULL; 696 cep->p_myaddr4 = N ULL;696 cep->p_myaddr4 = NADR; 697 697 cep->p_dstaddr = p_dstaddr; 698 698 cep->p_myaddr = p_myaddr; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udp_output.c
r331 r429 182 182 #if defined(_IP6_CFG) && TNUM_UDP6_CEPID > 0 183 183 184 for (ix = tmax_udp6_cepid; ix -- > 0; ) {184 for (ix = TNUM_UDP6_CEPID - 1; ix -- > 0; ) { 185 185 186 186 if (udp6_cep[ix].flags & UDP_CEP_FLG_POST_OUTPUT) { … … 194 194 #if defined(_IP4_CFG) && TNUM_UDP4_CEPID > 0 195 195 196 for (ix = tmax_udp4_cepid; ix -- > 0; ) {196 for (ix = TNUM_UDP4_CEPID - 1; ix -- > 0; ) { 197 197 198 198 if (udp4_cep[ix].flags & UDP_CEP_FLG_POST_OUTPUT) { -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udp_subr.c
r331 r429 146 146 #define UDP_FIND_CEP udp6_find_cep 147 147 #define UDP_NOTIFY udp6_notify 148 #define TMAX_UDP_CEPID tmax_udp6_cepid148 #define TMAX_UDP_CEPID (TNUM_UDP6_CEPID - 1) 149 149 #define UDP_CEP udp6_cep 150 150 #define T_UDP_CEP T_UDP6_CEP … … 183 183 #define UDP_FIND_CEP udp4_find_cep 184 184 #define UDP_NOTIFY udp4_notify 185 #define TMAX_UDP_CEPID tmax_udp4_cepid185 #define TMAX_UDP_CEPID (TNUM_UDP4_CEPID - 1) 186 186 #define T_UDP_CEP T_UDP4_CEP 187 187 #define UDP_CEP udp4_cep -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udp_var.h
r331 r429 101 101 typedef ER (*t_udp_callback)(ID cepid, FN fncd, void *p_parblk); 102 102 103 typedef struct t_udp_rcv_dat_para { 104 uint_t len; 105 T_NET_BUF *input; 106 uint_t off; 107 union { 108 T_IPV4EP rep4; 109 T_IPV6EP rep6; 110 }; 111 } T_UDP_RCV_DAT_PARA; 112 103 113 /* 104 114 * UDP 通信端点 … … 141 151 #endif 142 152 153 #ifdef SUPPORT_IGMP 154 bool_t igmp_loopback; 155 uint8_t igmp_ttl; 156 T_IN4_ADDR igmp_mcaddr; /* */ 157 #endif 158 143 159 } T_UDP6_CEP; 144 160 … … 178 194 ER error; /* 待ち中に発生したエラー */ 179 195 #endif 196 180 197 #ifdef SUPPORT_IGMP 181 198 bool_t igmp_loopback; … … 183 200 T_IN4_ADDR igmp_mcaddr; /* */ 184 201 #endif 202 185 203 } T_UDP4_CEP; 186 204 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udpn_input.c
r331 r429 88 88 { 89 89 T_UDP_HDR *udph; 90 uint_t len;90 T_UDP_RCV_DAT_PARA para; 91 91 92 92 udph = (T_UDP_HDR *)(input->buf + off); 93 len = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE);93 para.len = (uint_t)(ntohs(udph->ulen) - UDP_HDR_SIZE); 94 94 95 95 if (cep->rcv_tskid != TA_NULL) { /* éãã³ããããã³ã°ã³ã¼ã«ã§ãã³ãã£ã³ã°ä¸ */ … … 111 111 /* ãã¼ã¿ããããã¡ã«ç§»ãã*/ 112 112 memcpy(cep->rcv_data, GET_UDP_SDU(input, off), 113 (size_t)( len < cep->rcv_len ?len : cep->rcv_len));113 (size_t)(para.len < cep->rcv_len ? para.len : cep->rcv_len)); 114 114 syscall(rel_net_buf(input)); 115 115 … … 117 117 118 118 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 119 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)(uint32_t) len);119 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)(uint32_t)para.len); 120 120 #else 121 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)& len);121 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_RCV_DAT, (void*)¶.len); 122 122 #endif 123 123 else … … 134 134 135 135 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 136 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)(uint32_t) len);136 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)(uint32_t)para.len); 137 137 #else 138 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)&len); 138 para.input = input; 139 para.off = off; 140 #if API_PROTO == API_PROTO_IPV4 141 para.rep4.portno = ntohs(udph->sport); 142 IN_COPY_TO_HOST(¶.rep4.ipaddr, input); 143 #else 144 para.rep6.portno = ntohs(udph->sport); 145 IN_COPY_TO_HOST(¶.rep6.ipaddr, input); 146 #endif 147 (*cep->callback)(GET_UDP_CEPID(cep), TEV_UDP_RCV_DAT, (void*)¶.len); 139 148 #endif 140 149 /* … … 143 152 * ãã¼ã¿ãèªã¿åºããªãã£ããã¨ã«ãªãã®ã§ãæ¨ã¦ãã 144 153 */ 145 if (cep->cb_netbuf != NULL) 146 syscall(rel_net_buf(cep->cb_netbuf)); 154 if (cep->cb_netbuf != NULL) { 155 if ((input->flags & NB_FLG_NOREL_IFOUT) == 0) 156 syscall(rel_net_buf(cep->cb_netbuf)); 157 cep->cb_netbuf = NULL; 158 } 147 159 } 148 160 else { -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udpn_usrreq.c
r331 r429 322 322 else 323 323 error = UDP_ALLOC_PORT(cep, pk_ccep->myaddr.portno); 324 325 if (error == E_OK) { 326 327 /* UDP é信端ç¹çææ 324 325 if (error == E_OK) { 326 /* UDP é信端ç¹çææ 328 327 å ±ãã³ãã¼ããã*/ 329 cep->cepatr = pk_ccep->cepatr; /* é信端ç¹å±æ§ */330 cep->myaddr.ipaddr = pk_ccep->myaddr.ipaddr; /* èªåã®ã¢ãã¬ã¹ */331 cep->callback = (void*)pk_ccep->callback; /* ã³ã¼ã«ãã㯠*/332 333 /* UDP é信端ç¹ãçææ¸ã¿ã«ããã*/334 cep->flags |= UDP_CEP_FLG_VALID;335 }336 }328 cep->cepatr = pk_ccep->cepatr; /* é信端ç¹å±æ§ */ 329 cep->myaddr.ipaddr = pk_ccep->myaddr.ipaddr; /* èªåã®ã¢ãã¬ã¹ */ 330 cep->callback = (void*)pk_ccep->callback; /* ã³ã¼ã«ãã㯠*/ 331 332 /* UDP é信端ç¹ãçææ¸ã¿ã«ããã*/ 333 cep->flags |= UDP_CEP_FLG_VALID; 334 } 335 } 337 336 338 337 /* é信端ç¹ã®ããã¯ã解é¤ããã*/ … … 426 425 return E_NOEXS; 427 426 #if defined(SUPPORT_INET6) 428 #endif 429 #if defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 427 #elif defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 430 428 switch (optname) { 431 429 case IP_MULTICAST_LOOP: … … 503 501 return E_NOEXS; 504 502 #if defined(SUPPORT_INET6) 505 #endif 506 #if defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 503 #elif defined(SUPPORT_INET4) && defined(SUPPORT_IGMP) && TNUM_UDP4_CEPID > 0 507 504 switch (optname) { 508 505 case IP_MULTICAST_LOOP: -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet/udpn_usrreq_nblk.c
r331 r429 136 136 137 137 #ifdef TCP_CFG_NON_BLOCKING_COMPAT14 138 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_ RCV_DAT, (void*)error);138 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_CAN_CEP, (void*)error); 139 139 #else 140 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_ RCV_DAT, (void*)&error);140 (*cep->callback)(GET_UDP_CEPID(cep), TFN_UDP_CAN_CEP, (void*)&error); 141 141 #endif 142 142 else -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_subr.c
r331 r429 369 369 370 370 /* IPv6 ヘッダを設定する。*/ 371 if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) 371 if ((error = in6_set_header(*nbuf, len, dstaddr, srcaddr, next, hlim)) != E_OK) { 372 syscall(rel_net_buf(*nbuf)); 373 *nbuf = NULL; 372 374 return error; 375 } 373 376 374 377 /* 4 オクテット境界までパディングで埋める。*/ … … 662 665 * in6_rtredirect -- ルーティング表にエントリを登録する。 663 666 * 664 * 注意: 引数 tmo の単位は [ ms]。667 * 注意: 引数 tmo の単位は [us]。 665 668 */ 666 669 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/in6_var.h
r331 r429 184 184 * vltime と pltime は、追加/変更してからの相対時間 185 185 */ 186 uint32_t vltime; /* 有効時間 [ ms] */187 uint32_t pltime; /* 推奨有効時間 [ ms] */186 uint32_t vltime; /* 有効時間 [us] */ 187 uint32_t pltime; /* 推奨有効時間 [us] */ 188 188 } __attribute__((packed, aligned(2)))T_IN6_ADDR_LIFETIME; 189 189 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/ip6_var.h
r331 r429 152 152 uint8_t idix; /* mpfid のインデックス */ 153 153 uint8_t unit; /* インタフェース番号 */ 154 #ifdef IF_ETHER_MULTI_NIC 155 uint8_t conn_pos; 156 #endif 154 157 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 155 158 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 172 175 uint8_t idix; /* mpfid のインデックス */ 173 176 uint8_t flags; /* フラグ */ 177 #ifdef IF_ETHER_MULTI_NIC 178 uint8_t conn_pos; 179 #endif 174 180 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 175 181 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; … … 224 230 uint8_t idix; /* mpfid のインデックス */ 225 231 uint8_t flags; /* フラグ */ 232 #ifdef IF_ETHER_MULTI_NIC 233 uint8_t conn_pos; 234 #endif 226 235 #ifdef IF_ETHER_NIC_NET_BUF_ALIGN 227 236 uint8_t nalign[IF_ETHER_NIC_NET_BUF_ALIGN]; -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.c
r331 r429 353 353 if (nd6_cache[mix].hold != NULL) { 354 354 syscall(rel_net_buf(nd6_cache[mix].hold)); 355 nd6_cache[mix].hold = NULL; 355 356 } 356 357 fix = mix; … … 562 563 if (ln->hold != NULL) { 563 564 syscall(rel_net_buf(ln->hold)); 565 ln->hold = NULL; 564 566 } 565 567 -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6.h
r331 r429 81 81 T_NET_BUF *hold; 82 82 TMO tmout; 83 SYSTIM expire; /* [ ms] 有効時間が切れる時刻 */83 SYSTIM expire; /* [us] 有効時間が切れる時刻 */ 84 84 T_IF_ADDR ifaddr; 85 85 uint8_t state; … … 183 183 typedef struct t_def_router { 184 184 T_IN6_ADDR addr; 185 SYSTIM expire; /* [ ms] 有効時間が切れる時刻 */186 uint32_t lifetime; /* [ ms] 有効時間 */185 SYSTIM expire; /* [us] 有効時間が切れる時刻 */ 186 uint32_t lifetime; /* [us] 有効時間 */ 187 187 uint16_t plistmap; /* プレフィックスマップ */ 188 188 uint8_t flags; /* ルータ通知のフラグ */ -
EcnlProtoTool/trunk/asp3_dcre/tinet/netinet6/nd6_rtr.c
r331 r429 999 999 return; 1000 1000 1001 1002 1003 1004 1005 1001 /* ルータ要請ヘッダを設定する。*/ 1002 rsh = GET_ROUTER_SOLICIT_HDR(output, IF_IP6_ROUTER_SOLICIT_HDR_OFFSET); 1003 rsh->hdr.type = ND_ROUTER_SOLICIT; 1004 rsh->hdr.code = 0; 1005 rsh->nd_rs_reserved = 0; 1006 1006 1007 1007 /* チェックサムを計算する。*/ -
EcnlProtoTool/trunk/asp3_dcre/tinet/tcpip_sym.def
r331 r429 15 15 TMO_UDP_OUTPUT 16 16 TMO_ICMP_OUTPUT 17 TMO_IGMP_OUTPUT 17 18 TMO_ND6_NS_OUTPUT 18 19 TMO_ND6_NA_OUTPUT -
EcnlProtoTool/trunk/asp3_dcre/tinet/tinet.trb
r331 r429 124 124 #include <net/ethernet.h> 125 125 #include <net/net.h> 126 #include <net/net_endian.h> 126 127 #include <net/net_buf.h> 127 128 #include <netinet/in.h> … … 142 143 $tinetCfgC.add(" */") 143 144 $tinetCfgC.add() 144 $includeFiles.each do |file| 145 $tinetCfgC.add("#include #{file}") 146 end 145 GenerateIncludes($tinetCfgC) 147 146 148 147 $tinetCfgC.add() -
EcnlProtoTool/trunk/asp3_dcre/tinet/tinet_asp.cfg
r331 r429 73 73 INCLUDE("netinet/if_ether.cfg"); 74 74 INCLUDE("netinet/ip.cfg"); 75 INCLUDE("netinet/ip_igmp.cfg"); 75 76 INCLUDE("netinet/tcp.cfg"); 76 77 INCLUDE("netinet/udp.cfg");
Note:
See TracChangeset
for help on using the changeset viewer.