VirtualBox

Changeset 29837 in vbox


Ignore:
Timestamp:
May 27, 2010 10:01:51 AM (15 years ago)
Author:
vboxsync
Message:

Runtime: fixed cDelimiterLimit calculation, short form (n.n/16 is the same as n.n.0.0/16). more testcases added.

Location:
trunk/src/VBox/Runtime
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/misc/cidr.cpp

    r29834 r29837  
    5555    *(uint32_t *)addr = 0;
    5656    if (pszNetmask == NULL)
    57         cBits = 0;
     57        cBits = 32;
    5858    else
    5959    {
     
    7272    if (cBits < 9)
    7373        cDelimiterLimit = 0;
    74     else if (cBits < 16)
     74    else if (cBits <= 16)
    7575        cDelimiterLimit = 1;
    76     else if (cBits < 25)
     76    else if (cBits <= 24)
    7777        cDelimiterLimit = 2;
    7878    else if (cBits <= 32)
     
    8484        if (*pszNext == '.')
    8585            cDelimiter++;
    86         else if(cDelimiter >= cDelimiterLimit)
     86        else if(   cDelimiter >= cDelimiterLimit
     87                && (   *pszNext == '\0'
     88                    || *pszNext == '/'))
    8789            break;
    8890        else
  • trunk/src/VBox/Runtime/testcase/tstRTCidr.cpp

    r29836 r29837  
    8686    /* RFC 4632 s3.1: legacy "Class B" is n.n.0.0/16 */
    8787    CHECKNETWORK("10.1.2/16",      VERR_INVALID_PARAMETER,          0,          0);
     88    CHECKNETWORK("10.1/16",     VINF_SUCCESS,          0x0A010000,          0xFFFF0000);
    8889    CHECKNETWORK("10.1.0.0/16",              VINF_SUCCESS, 0x0A010000, 0xFFFF0000);
    89     CHECKNETWORK("10.1/16",                  VINF_SUCCESS, 0x0A010000, 0xFFFF0000);
    9090    CHECKNETWORK("1.2.3.4",                  VINF_SUCCESS, 0x01020304, 0xFFFFFFFF);
    9191    CHECKNETWORK("1.2.3.255",                VINF_SUCCESS, 0x010203FF, 0xFFFFFFFF);
     
    9595    CHECKNETWORK("10.255.1/24",              VINF_SUCCESS, 0x0AFF0100, 0xFFFFFF00);
    9696    CHECKNETWORK("10.255.1.1/24",  VERR_INVALID_PARAMETER,          0,          0);
     97    CHECKNETWORK("1.2",            VERR_INVALID_PARAMETER,          0,          0);
    9798
    9899    return RTTestSummaryAndDestroy(hTest);
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