Changeset 429 for EcnlProtoTool/trunk/asp3_dcre/tinet/netinet
- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- Location:
- EcnlProtoTool/trunk/asp3_dcre/tinet/netinet
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.