VirtualBox

Ignore:
Timestamp:
Jun 5, 2009 8:45:06 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
48197
Message:

NAT: fix solaris burns

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/slirp_state.h

    r20301 r20302  
    347347#define queue_tcp_label tcb
    348348#define queue_udp_label udb
    349 #define __X(x) x
    350 #define _X(x) __X(x)
    351 #define _str(x) #x
    352 #define str(x) _str(x)
     349#define VBOX_X2(x) x
     350#define VBOX_X(x) VBOX_X2(x)
     351#define VBOX_STR2(x) #x
     352#define VBOX_STR(x) VBOX_STR2(x)
    353353
    354354#ifdef VBOX_WITH_SLIRP_MT
     
    358358        int rc;                                                       \
    359359        /* Assert(strcmp(RTThreadSelfName(), "EMT") != 0); */         \
    360         rc = RTCritSectEnter(&_X(queue) ## _mutex);                   \
     360        rc = RTCritSectEnter(&VBOX_X(queue) ## _mutex);               \
    361361        AssertReleaseRC(rc);                                          \
    362362    } while (0)
     
    364364    do {                                                              \
    365365        int rc;                                                       \
    366         rc = RTCritSectLeave(&_X(queue) ## _mutex);                   \
     366        rc = RTCritSectLeave(&VBOX_X(queue) ## _mutex);               \
    367367        AssertReleaseRC(rc);                                          \
    368368    } while (0)
     
    380380
    381381# define QSOCKET_FOREACH(so, sonext, label)                           \
    382     QSOCKET_LOCK(__X(queue_## label ## _label));                      \
    383     (so) = (_X(queue_ ## label ## _label)).so_next;                   \
    384     QSOCKET_UNLOCK(__X(queue_## label ##_label));                     \
    385     if ((so) != &(_X(queue_## label ## _label))) SOCKET_LOCK((so));   \
     382    QSOCKET_LOCK(VBOX_X2(queue_## label ## _label));                  \
     383    (so) = (VBOX_X(queue_ ## label ## _label)).so_next;               \
     384    QSOCKET_UNLOCK(VBOX_X2(queue_## label ##_label));                 \
     385    if ((so) != &(VBOX_X(queue_## label ## _label))) SOCKET_LOCK((so));\
    386386    for (;;)                                                          \
    387387    {                                                                 \
    388         if ((so) == &(_X(queue_## label ## _label)))                  \
     388        if ((so) == &(VBOX_X(queue_## label ## _label)))              \
    389389        {                                                             \
    390390            break;                                                    \
     
    399399    (sonext) = (so)->so_next;                                           \
    400400    SOCKET_UNLOCK(so);                                                  \
    401     QSOCKET_LOCK(_X(queue_ ## label ## _label));                        \
    402     if ((sonext) != &(_X(queue_## label ## _label)))                    \
     401    QSOCKET_LOCK(VBOX_X(queue_ ## label ## _label));                    \
     402    if ((sonext) != &(VBOX_X(queue_## label ## _label)))                \
    403403    {                                                                   \
    404404        SOCKET_LOCK((sonext));                                          \
    405         QSOCKET_UNLOCK(_X(queue_ ## label ## _label));                  \
     405        QSOCKET_UNLOCK(VBOX_X(queue_ ## label ## _label));              \
    406406    }                                                                   \
    407407    else                                                                \
    408408    {                                                                   \
    409         so = &_X(queue_ ## label ## _label);                            \
    410         QSOCKET_UNLOCK(_X(queue_ ## label ## _label));                  \
     409        so = &VBOX_X(queue_ ## label ## _label);                        \
     410        QSOCKET_UNLOCK(VBOX_X(queue_ ## label ## _label));              \
    411411        break;                                                          \
    412412    }                                                                   \
     
    590590                && so->so_fport        == (dport))                      \
    591591                {                                                       \
    592                     if (sonxt != &__X(queue_ ## label ## _label))       \
     592                    if (sonxt != &VBOX_X2(queue_ ## label ## _label))       \
    593593                        SOCKET_UNLOCK(sonxt);                           \
    594594                    break; /*so is locked*/                             \
     
    606606# define QSOCKET_LOCK_DESTROY(queue) do {} while (0)
    607607# define QSOCKET_FOREACH(so, sonext, label)                              \
    608     for ((so)  = __X(queue_ ## label ## _label).so_next;                 \
    609          (so) != &(__X(queue_ ## label ## _label));                      \
     608    for ((so)  = VBOX_X2(queue_ ## label ## _label).so_next;                 \
     609         (so) != &(VBOX_X2(queue_ ## label ## _label));                      \
    610610         (so) = (sonext))                                                \
    611611    {                                                                    \
     
    628628# define SOLOOKUP(so, label, src, sport, dst, dport)                                      \
    629629    do {                                                                                  \
    630         (so) = solookup(&__X(queue_ ## label ## _label), (src), (sport), (dst), (dport)); \
     630        (so) = solookup(&VBOX_X2(queue_ ## label ## _label), (src), (sport), (dst), (dport)); \
    631631    } while (0)
    632632# define DO_UDP_DETACH(data, so, ignored) udp_detach((data), (so))
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