VirtualBox

Changeset 5266 in vbox for trunk


Ignore:
Timestamp:
Oct 12, 2007 5:26:21 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
25260
Message:

Show a warning message when the guest tries to send a ping packet that
cannot be handled in the NAT code. Just once per VM powerup.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/pdmdrv.h

    r4787 r5266  
    555555    /**
    556556     * Creates a PDM thread.
    557      * 
    558      * This differs from the RTThreadCreate() API in that PDM takes care of suspending, 
     557     *
     558     * This differs from the RTThreadCreate() API in that PDM takes care of suspending,
    559559     * resuming, and destroying the thread as the VM state changes.
    560      * 
     560     *
    561561     * @returns VBox status code.
    562562     * @param   pDrvIns     The driver instance.
     
    668668 */
    669669#define PDMDRV_SET_RUNTIME_ERROR(pDrvIns, fFatal, pszErrorID, pszError)  \
    670     PDMDrvHlpVMSetError(pDrvIns, fFatal, pszErrorID, "%s", pszError)
     670    PDMDrvHlpVMSetRuntimeError(pDrvIns, fFatal, pszErrorID, "%s", pszError)
    671671
    672672#endif /* IN_RING3 */
  • trunk/src/VBox/Devices/Network/DrvNAT.cpp

    r4071 r5266  
    5252    /** NAT state for this instance. */
    5353    PNATState               pNATState;
     54    /** Flag whether a NAT ping warning has been shown. */
     55    bool                    fSuppressPingWarning;
    5456} DRVNAT, *PDRVNAT;
    5557
     
    238240    LogFlow(("slirp_output END %x %d\n", pu8Buf, cb));
    239241}
     242
     243
     244/**
     245 * Function called by slirp to signal that a ping had to be dropped.
     246 */
     247void slirp_cannot_ping(void *pvUser)
     248{
     249    PDRVNAT pData = (PDRVNAT)pvUser;
     250
     251    Assert(pData);
     252
     253    /** Happens during termination */
     254    if (!RTCritSectIsOwner(&pData->CritSect))
     255        return;
     256
     257    if (!pData->fSuppressPingWarning)
     258    {
     259        pData->fSuppressPingWarning = true;
     260        PDMDRV_SET_RUNTIME_ERROR(pData->pDrvIns, false, "NAT_PING", "The guest OS sent out a ping request which cannot be handled by NAT");
     261    }
     262}
     263
    240264
    241265/**
  • trunk/src/VBox/Devices/Network/slirp/ip_icmp.c

    r1076 r5266  
    115115      icmp_reflect(pData, m);
    116116    } else {
     117#if 1
     118      slirp_cannot_ping(pData->pvUser);
     119#else
    117120      struct socket *so;
    118121      struct sockaddr_in addr;
     
    158161        udp_detach(pData, so);
    159162      }
     163#endif
    160164    } /* if ip->ip_dst.s_addr == alias_addr.s_addr */
    161165    break;
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r3693 r5266  
    4242int slirp_can_output(void * pvUser);
    4343void slirp_output(void * pvUser, const uint8_t *pkt, int pkt_len);
     44void slirp_cannot_ping(void * pvUser);
    4445
    4546int slirp_redir(PNATState pData, int is_udp, int host_port,
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