VirtualBox

Ignore:
Timestamp:
Oct 27, 2015 4:30:34 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
103701
Message:

IPRT/net: add RTNetStrIsIPv4AddrAny, RTNetStrIsIPv6AddrAny.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/net/netaddrstr2.cpp

    r57358 r58438  
    127127
    128128
     129RTDECL(bool) RTNetStrIsIPv4AddrAny(const char *pcszAddr)
     130{
     131    RTNETADDRIPV4 addrIPv4;
     132    char *pszNext;
     133    int rc;
     134
     135    if (pcszAddr == NULL)
     136        return false;
     137
     138    pcszAddr = RTStrStripL(pcszAddr);
     139    rc = rtNetStrToIPv4AddrEx(pcszAddr, &addrIPv4, &pszNext);
     140    if (rc != VINF_SUCCESS)
     141        return false;
     142
     143    pszNext = RTStrStripL(pszNext);
     144    if (*pszNext != '\0')
     145        return false;
     146
     147    if (addrIPv4.u != 0u)       /* INADDR_ANY? */
     148        return false;
     149
     150    return true;
     151}
     152RT_EXPORT_SYMBOL(RTNetStrIsIPv4AddrAny);
     153
     154
    129155static int rtNetStrToHexGroup(const char *pcszValue, char **ppszNext,
    130156                              uint16_t *pu16)
     
    408434}
    409435RT_EXPORT_SYMBOL(RTNetIsIPv6AddrStr);
     436
     437
     438RTDECL(bool) RTNetStrIsIPv6AddrAny(const char *pcszAddr)
     439{
     440    RTNETADDRIPV6 addrIPv6;
     441    char *pszZone, *pszNext;
     442    int rc;
     443
     444    if (pcszAddr == NULL)
     445        return false;
     446
     447    pcszAddr = RTStrStripL(pcszAddr);
     448    rc = rtNetStrToIPv6AddrEx(pcszAddr, &addrIPv6, &pszZone, &pszNext);
     449    if (rc != VINF_SUCCESS && rc != VWRN_TRAILING_SPACES)
     450        return false;
     451
     452    if (pszZone != NULL)
     453        return false;
     454
     455    if (addrIPv6.s.Lo != 0 || addrIPv6.s.Hi != 0) /* in6addr_any? */
     456        return false;
     457
     458    return true;
     459}
     460RT_EXPORT_SYMBOL(RTNetStrIsIPv6AddrAny);
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