VirtualBox

Changeset 39775 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jan 17, 2012 11:03:12 AM (13 years ago)
Author:
vboxsync
Message:

NAT: introduces CFGM value .../HostResolverMappings/HostNamePattern which used for specifying
range of host names user expects to return .../HostResolverMappings/HostIP on DNS requests from HostResolver mode.

Location:
trunk/src/VBox/Devices/Network/slirp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/libalias/alias_dns.c

    r39774 r39775  
    377377
    378378#ifdef VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER
     379static bool isDnsMappingEntryMatchOrEqual2Str(const PDNSMAPPINGENTRY pDNSMapingEntry, const char *pcszString)
     380{
     381    return (    (   pDNSMapingEntry->pszCName
     382                 && !strcmp(pDNSMapingEntry->pszCName, pcszString))
     383            || (   pDNSMapingEntry->pszPattern
     384                && RTStrSimplePatternMatch(pDNSMapingEntry->pszPattern, pcszString)));
     385}
     386
    379387static void alterHostentWithDataFromDNSMap(PNATState pData, struct hostent *pHostent)
    380388{
     
    384392    {
    385393        char **pszAlias = NULL;
    386         if (!strcmp(pDNSMapingEntry->pszCName, pHostent->h_name))
     394        if (isDnsMappingEntryMatchOrEqual2Str(pDNSMapingEntry, pHostent->h_name))
    387395        {
    388396            fMatch = true;
     
    392400        for (pszAlias = pHostent->h_aliases; *pszAlias && !fMatch; pszAlias++)
    393401        {
    394             if (!strcmp(pDNSMapingEntry->pszCName, *pszAlias))
     402            if (isDnsMappingEntryMatchOrEqual2Str(pDNSMapingEntry, *pszAlias))
    395403            {
    396404
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r39766 r39775  
    149149
    150150#ifdef VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER
    151 void  slirp_add_host_resolver_mapping(PNATState pData, const char *pszHostName, uint32_t u32HostIP);
     151void  slirp_add_host_resolver_mapping(PNATState pData, const char *pszHostName, const char *pszHostNamePattern, uint32_t u32HostIP);
    152152#endif
    153153
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r39772 r39775  
    21592159}
    21602160#ifdef VBOX_WITH_DNSMAPPING_IN_HOSTRESOLVER
    2161 void  slirp_add_host_resolver_mapping(PNATState pData, const char *pszHostName, uint32_t u32HostIP)
    2162 {
    2163     LogFlowFunc(("ENTER: pszHostName:%s, u32HostIP:%RTnaipv4\n", pszHostName, u32HostIP));
    2164     if (   pszHostName
    2165         || u32HostIP != INADDR_ANY
    2166         || u32HostIP != INADDR_BROADCAST)
     2161void  slirp_add_host_resolver_mapping(PNATState pData, const char *pszHostName, const char *pszHostNamePattern, uint32_t u32HostIP)
     2162{
     2163    LogFlowFunc(("ENTER: pszHostName:%s, pszHostNamePattern:%s u32HostIP:%RTnaipv4\n",
     2164                pszHostName ? pszHostName : "(null)",
     2165                pszHostNamePattern ? pszHostNamePattern : "(null)",
     2166                u32HostIP));
     2167    if (   (   pszHostName
     2168            || pszHostNamePattern)
     2169        && u32HostIP != INADDR_ANY
     2170        && u32HostIP != INADDR_BROADCAST)
    21672171    {
    21682172        PDNSMAPPINGENTRY pDnsMapping = RTMemAllocZ(sizeof(DNSMAPPINGENTRY));
     
    21742178        }
    21752179        pDnsMapping->u32IpAddress = u32HostIP;
    2176         pDnsMapping->pszCName = RTStrDup(pszHostName);
    2177         if (!pDnsMapping->pszCName)
    2178         {
    2179             LogFunc(("Can't allocate enough room for %s\n", pszHostName));
     2180        if (pszHostName)
     2181            pDnsMapping->pszCName = RTStrDup(pszHostName);
     2182        else if (pszHostNamePattern)
     2183            pDnsMapping->pszPattern = RTStrDup(pszHostNamePattern);
     2184        if (   !pDnsMapping->pszCName
     2185            && !pDnsMapping->pszPattern)
     2186        {
     2187            LogFunc(("Can't allocate enough room for %s\n", pszHostName ? pszHostName : pszHostNamePattern));
    21802188            RTMemFree(pDnsMapping);
    21812189            LogFlowFuncLeave();
  • trunk/src/VBox/Devices/Network/slirp/slirp_state.h

    r39766 r39775  
    6969typedef struct DNSMAPPINGENTRY
    7070{
     71    /*
     72     * host name to map
     73     * Note: if pszCName isn't null pszPattern won't be used (see alias_dns.c for details)
     74     */
    7175    char        *pszCName;
     76    /* pattern of hostnames to map to specifaied IP */
     77    char        *pszPattern;
    7278    uint32_t    u32IpAddress;
    7379    LIST_ENTRY(DNSMAPPINGENTRY) MapList;
Note: See TracChangeset for help on using the changeset viewer.

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