VirtualBox

Changeset 97869 in vbox for trunk/include


Ignore:
Timestamp:
Dec 27, 2022 12:11:55 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
154958
Message:

PDM/network: Tried to make PDMNetGsoIsValid more readable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmnetinline.h

    r96407 r97869  
    8888DECLINLINE(bool) PDMNetGsoIsValid(PCPDMNETWORKGSO pGso, size_t cbGsoMax, size_t cbFrame)
    8989{
     90#define CHECK_COND_RETURN_FALSE(expr) if (RT_LIKELY(expr)) { /* likely */ } else return false
    9091    PDMNETWORKGSOTYPE enmType;
    9192
    92     if (RT_LIKELY(cbGsoMax >= sizeof(*pGso)))
    93     { /* likely */ } else return false;
     93    CHECK_COND_RETURN_FALSE(cbGsoMax >= sizeof(*pGso));
    9494
    9595    enmType = (PDMNETWORKGSOTYPE)pGso->u8Type;
    96     if (RT_LIKELY( enmType > PDMNETWORKGSOTYPE_INVALID && enmType < PDMNETWORKGSOTYPE_END ))
    97     { /* likely */ } else return false;
     96    CHECK_COND_RETURN_FALSE(enmType > PDMNETWORKGSOTYPE_INVALID && enmType < PDMNETWORKGSOTYPE_END);
    9897
    9998    /* all types requires both headers. */
    100     if (RT_LIKELY( pGso->offHdr1 >= sizeof(RTNETETHERHDR) ))
    101     { /* likely */ } else return false;
    102     if (RT_LIKELY( pGso->offHdr2 > pGso->offHdr1 ))
    103     { /* likely */ } else return false;
    104     if (RT_LIKELY( pGso->cbHdrsTotal > pGso->offHdr2 ))
    105     { /* likely */ } else return false;
     99    CHECK_COND_RETURN_FALSE(pGso->offHdr1 >= sizeof(RTNETETHERHDR));
     100    CHECK_COND_RETURN_FALSE(pGso->offHdr2 > pGso->offHdr1);
     101    CHECK_COND_RETURN_FALSE(pGso->cbHdrsTotal > pGso->offHdr2);
    106102
    107103    /* min size of the 1st header(s). */
     
    110106        case PDMNETWORKGSOTYPE_IPV4_TCP:
    111107        case PDMNETWORKGSOTYPE_IPV4_UDP:
    112             if (RT_LIKELY( (unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV4_MIN_LEN ))
    113             { /* likely */ } else return false;
     108            CHECK_COND_RETURN_FALSE((unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV4_MIN_LEN);
    114109            break;
    115110        case PDMNETWORKGSOTYPE_IPV6_TCP:
    116111        case PDMNETWORKGSOTYPE_IPV6_UDP:
    117             if (RT_LIKELY( (unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV6_MIN_LEN ))
    118             { /* likely */ } else return false;
     112            CHECK_COND_RETURN_FALSE((unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV6_MIN_LEN);
    119113            break;
    120114        case PDMNETWORKGSOTYPE_IPV4_IPV6_TCP:
    121115        case PDMNETWORKGSOTYPE_IPV4_IPV6_UDP:
    122             if (RT_LIKELY( (unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV4_MIN_LEN + RTNETIPV6_MIN_LEN ))
    123             { /* likely */ } else return false;
    124             break;
     116            CHECK_COND_RETURN_FALSE((unsigned)pGso->offHdr2 - pGso->offHdr1 >= RTNETIPV4_MIN_LEN + RTNETIPV6_MIN_LEN);
     117            break;
     118        /* These two have been rejected above already, but we need to include them to avoid gcc warnings. */
    125119        case PDMNETWORKGSOTYPE_INVALID:
    126120        case PDMNETWORKGSOTYPE_END:
    127121            break;
    128         /* no default case! want gcc warnings. */
     122        /* No default case! Want gcc warnings. */
    129123    }
    130124
     
    135129        case PDMNETWORKGSOTYPE_IPV6_TCP:
    136130        case PDMNETWORKGSOTYPE_IPV4_IPV6_TCP:
    137             if (RT_LIKELY( (unsigned)pGso->cbHdrsTotal - pGso->offHdr2 >= RTNETTCP_MIN_LEN ))
    138             { /* likely */ } else return false;
     131            CHECK_COND_RETURN_FALSE((unsigned)pGso->cbHdrsTotal - pGso->offHdr2 >= RTNETTCP_MIN_LEN);
    139132            break;
    140133        case PDMNETWORKGSOTYPE_IPV4_UDP:
    141134        case PDMNETWORKGSOTYPE_IPV6_UDP:
    142135        case PDMNETWORKGSOTYPE_IPV4_IPV6_UDP:
    143             if (RT_LIKELY( (unsigned)pGso->cbHdrsTotal - pGso->offHdr2 >= RTNETUDP_MIN_LEN ))
    144             { /* likely */ } else return false;
    145             break;
     136            CHECK_COND_RETURN_FALSE((unsigned)pGso->cbHdrsTotal - pGso->offHdr2 >= RTNETUDP_MIN_LEN);
     137            break;
     138        /* These two have been rejected above already, but we need to include them to avoid gcc warnings. */
    146139        case PDMNETWORKGSOTYPE_INVALID:
    147140        case PDMNETWORKGSOTYPE_END:
    148141            break;
    149         /* no default case! want gcc warnings. */
     142        /* No default case! Want gcc warnings. */
    150143    }
    151144
    152145    /* There must be at more than one segment. */
    153     if (RT_LIKELY( cbFrame > pGso->cbHdrsTotal ))
    154     { /* likely */ } else return false;
    155     if (RT_LIKELY( cbFrame - pGso->cbHdrsTotal >= pGso->cbMaxSeg ))
    156     { /* likely */ } else return false;
     146    CHECK_COND_RETURN_FALSE(cbFrame > pGso->cbHdrsTotal);
     147    CHECK_COND_RETURN_FALSE(cbFrame - pGso->cbHdrsTotal >= pGso->cbMaxSeg);
    157148
    158149    /* Make sure the segment size is enough to fit a UDP header. */
    159     if (RT_LIKELY(enmType != PDMNETWORKGSOTYPE_IPV4_UDP || pGso->cbMaxSeg >= RTNETUDP_MIN_LEN))
    160     { /* likely */ } else return false;
     150    CHECK_COND_RETURN_FALSE(enmType != PDMNETWORKGSOTYPE_IPV4_UDP || pGso->cbMaxSeg >= RTNETUDP_MIN_LEN);
    161151
    162152    /* Make sure the segment size is not zero. */
    163     if (RT_LIKELY(pGso->cbMaxSeg > 0))
    164     { /* likely */ } else return false;
     153    CHECK_COND_RETURN_FALSE(pGso->cbMaxSeg > 0);
    165154
    166155    return true;
     156#undef CHECK_COND_RETURN_FALSE
    167157}
    168158
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