VirtualBox

Changeset 16725 in vbox for trunk/src/VBox/Devices/Network


Ignore:
Timestamp:
Feb 13, 2009 3:20:01 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
42761
Message:

NAT: using per-socket index of pollfd, while updating corresponding element of pollfd array

File:
1 edited

Legend:

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

    r16709 r16725  
    3333#  define DO_UNIX_CHECK_FD_SET(so, events, fdset )  0 /*specific for Unix API */
    3434# else /* !VBOX_WITH_SIMPLIFIED_SLIRP_SYNC */
    35 #  define DO_ENGAGE_EVENT1(so, fdset, label)                    \
     35#  define DO_ENGAGE_EVENT1(so, fdset, label)                        \
     36    do {                                                            \
     37        if(    so->so_poll_index != -1                              \
     38            && so->s == polls[so->so_poll_index].fd) {              \
     39            polls[so->so_poll_index].events |= N_(fdset ## _poll);  \
     40            break; /* out of this loop */                           \
     41        }                                                           \
     42        AssertRelease(poll_index < (nfds));                         \
     43        AssertRelease(poll_index >= 0 && poll_index < (nfds));      \
     44        polls[poll_index].fd = (so)->s;                             \
     45        (so)->so_poll_index = poll_index;                           \
     46        polls[poll_index].events = N_(fdset ## _poll);              \
     47        polls[poll_index].revents = 0;                              \
     48        poll_index++;                                               \
     49    } while(0)
     50
     51
     52#  define DO_ENGAGE_EVENT2(so, fdset1, fdset2, label)           \
    3653    do {                                                        \
    37         AssertRelease(poll_index < (nfds));                     \
    3854        if(    so->so_poll_index != -1                          \
    3955            && so->s == polls[so->so_poll_index].fd) {          \
    40             polls[poll_index].events |= N_(fdset ## _poll);     \
     56            polls[so->so_poll_index].events |=                  \
     57                N_(fdset1 ## _poll) | N_(fdset1 ## _poll);      \
    4158            break; /* out of this loop */                       \
    4259        }                                                       \
    43         AssertRelease(poll_index >= 0 && poll_index < (nfds));  \
     60        AssertRelease(poll_index < (nfds));                     \
    4461        polls[poll_index].fd = (so)->s;                         \
    4562        (so)->so_poll_index = poll_index;                       \
    46         polls[poll_index].events = N_(fdset ## _poll);          \
    47         polls[poll_index].revents = 0;                          \
     63        polls[poll_index].events =                              \
     64            N_(fdset1 ## _poll) | N_(fdset1 ## _poll);          \
    4865        poll_index++;                                           \
    49     } while(0)
    50 
    51 
    52 #  define DO_ENGAGE_EVENT2(so, fdset1, fdset2, label)                           \
    53     do {                                                                        \
    54         AssertRelease(poll_index < (nfds));                     \
    55         if(    so->so_poll_index != -1                          \
    56             && so->s == polls[so->so_poll_index].fd) {          \
    57             polls[poll_index].events |= N_(fdset1 ## _poll) | N_(fdset1 ## _poll);  \
    58             break; /* out of this loop */                       \
    59         }                                                       \
    60         polls[poll_index].fd = (so)->s;                                         \
    61         (so)->so_poll_index = poll_index;                                       \
    62         polls[poll_index].events = N_(fdset1 ## _poll) | N_(fdset1 ## _poll);   \
    63         poll_index++;                                                           \
    6466    } while(0)
    6567
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