Changeset 35923 in vbox for trunk/src/VBox/Devices/Network
- Timestamp:
- Feb 10, 2011 3:48:27 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 69951
- Location:
- trunk/src/VBox/Devices/Network/slirp
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/ip_icmp.c
r34103 r35923 537 537 * packet. The maximum payload is 576-20(ip hdr)-8(icmp hdr)=548 538 538 * 539 * @note This function will NOTfree msrc!539 * @note This function will free msrc! 540 540 */ 541 541 … … 591 591 new_m_size = sizeof(struct ip) + ICMP_MINLEN + msrc->m_len + ICMP_MAXDATALEN; 592 592 if (new_m_size < MSIZE) 593 {594 593 size = MCLBYTES; 595 }596 594 else if (new_m_size < MCLBYTES) 597 {598 595 size = MCLBYTES; 599 }600 596 else if(new_m_size < MJUM9BYTES) 601 {602 597 size = MJUM9BYTES; 603 }604 598 else if (new_m_size < MJUM16BYTES) 605 {606 599 size = MJUM16BYTES; 607 }608 600 else 609 {610 601 AssertMsgFailed(("Unsupported size")); 611 }612 602 m = m_getjcl(pData, M_NOWAIT, MT_HEADER, M_PKTHDR, size); 613 603 if (!m) … … 645 635 646 636 memcpy(&icp->icmp_ip, msrc->m_data, s_ip_len); /* report the ip packet */ 637 m_freem(pData, msrc); 647 638 648 639 HTONS(icp->icmp_ip.ip_len); -
trunk/src/VBox/Devices/Network/slirp/ip_input.c
r34103 r35923 131 131 { 132 132 ipstat.ips_toosmall++; 133 STAM_PROFILE_STOP(&pData->StatIP_input, a); 134 return; 133 goto bad_free_m; 135 134 } 136 135 … … 194 193 { 195 194 icmp_error(pData, m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0, "ttl"); 196 goto bad_free_m;195 goto no_free_m; 197 196 } 198 197 … … 210 209 m = ip_reass(pData, m); 211 210 if (m == NULL) 212 { 213 STAM_PROFILE_STOP(&pData->StatIP_input, a); 214 return; 215 } 211 goto no_free_m; 216 212 ip = mtod(m, struct ip *); 217 213 hlen = ip->ip_hl << 2; … … 239 235 m_freem(pData, m); 240 236 } 241 STAM_PROFILE_STOP(&pData->StatIP_input, a); 242 return; 237 goto no_free_m; 243 238 244 239 bad_free_m: … … 246 241 &ip->ip_dst, ip->ip_len)); 247 242 m_freem(pData, m); 243 no_free_m: 248 244 STAM_PROFILE_STOP(&pData->StatIP_input, a); 249 245 return; -
trunk/src/VBox/Devices/Network/slirp/socket.c
r35826 r35923 815 815 Log2((" rx error, tx icmp ICMP_UNREACH:%i\n", code)); 816 816 icmp_error(pData, so->so_m, ICMP_UNREACH, code, 0, strerror(errno)); 817 m_freem(pData, so->so_m);818 817 so->so_m = NULL; 819 818 } … … 1368 1367 code = (code != ~0 ? code : ICMP_UNREACH_PORT); 1369 1368 icmp_error(pData, so->so_m, ICMP_UNREACH, code, 0, "Error occurred!!!"); 1370 m_freem(pData, so->so_m);1371 1369 so->so_m = NULL; 1372 1370 break; … … 1487 1485 LogRel((" udp icmp rx errno = %d (%s)\n", errno, strerror(errno))); 1488 1486 icmp_error(pData, so->so_m, ICMP_UNREACH, code, 0, strerror(errno)); 1489 m_freem(pData, so->so_m);1490 1487 so->so_m = NULL; 1491 1488 Log(("sorecvfrom_icmp_unix: 1 - step can't read IP datagramm\n")); -
trunk/src/VBox/Devices/Network/slirp/tcp_input.c
r35860 r35923 790 790 *ip = save_ip; 791 791 icmp_error(pData, m, ICMP_UNREACH, code, 0, strerror(errno)); 792 m_freem(pData, m);793 792 tp->t_socket->so_m = NULL; 794 793 }
Note:
See TracChangeset
for help on using the changeset viewer.