VirtualBox

Ignore:
Timestamp:
Jan 7, 2014 3:44:55 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
91487
Message:

pxping_recv6: translate errors from proxy_sendto() into ICMPv6 error messages.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/NetworkServices/NAT/pxping.c

    r50028 r50029  
    721721    }
    722722
    723     proxy_sendto(pxping->sock6, p,
    724                  &pcb->peer.sin6, sizeof(pcb->peer.sin6));
     723    status = proxy_sendto(pxping->sock6, p,
     724                          &pcb->peer.sin6, sizeof(pcb->peer.sin6));
     725    if (status != 0) {
     726        int error = -status;
     727        DPRINTF(("%s: sendto errno %d\n", __func__, error));
     728
     729        status = pbuf_header(p, iphlen); /* back to IP header */
     730        if (RT_UNLIKELY(status != 0)) {
     731            pbuf_free(p);
     732            return;
     733        }
     734
     735        /* restore original ICMP header */
     736        icmph->id = pcb->guest_id;
     737
     738        switch (error) {
     739        case EACCES:
     740            icmp6_dest_unreach(p, ICMP6_DUR_PROHIBITED);
     741            break;
     742
     743#ifdef ENONET
     744        case ENONET:
     745#endif
     746        case ENETDOWN:
     747        case ENETUNREACH:
     748        case EHOSTDOWN:
     749        case EHOSTUNREACH:
     750            icmp6_dest_unreach(p, ICMP6_DUR_NO_ROUTE);
     751            break;
     752        }
     753    }
    725754
    726755    pbuf_free(p);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette