VirtualBox

Changeset 23007 in vbox


Ignore:
Timestamp:
Sep 14, 2009 2:09:25 PM (15 years ago)
Author:
vboxsync
Message:

NAT: don't alias fragments, do alias the big packet.

File:
1 edited

Legend:

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

    r22941 r23007  
    227227        uint8_t buf[len]; /* intermediate buffer we'll use for copy from orriginal packet*/
    228228#endif
     229            {
     230                int rc;
     231#ifndef VBOX_WITH_SLIRP_BSD_MBUF
     232                rc = LibAliasOut((m->m_la ? m->m_la : pData->proxy_alias),
     233                    mtod(m, char *), m->m_len);
     234#else
     235                struct m_tag *t;
     236                if (t = m_tag_find(m, PACKET_TAG_ALIAS, NULL) != 0)
     237                {
     238                    rc = LibAliasOut((struct libalias *)&t[1], mtod(m, char *), m_length(m, NULL));
     239                }
     240                else
     241                {
     242                    rc = LibAliasOut(pData->proxy_alias, mtod(m, char *),
     243                                     m_length(m, NULL));
     244                }
     245                if (rc == PKT_ALIAS_IGNORED)
     246                {
     247                    Log(("NAT: packet was droppped\n"));
     248                    goto bad;
     249                }
     250#endif
     251                Log2(("NAT: LibAlias return %d\n", rc));
     252        }
    229253
    230254        /*
     
    314338            if (error == 0)
    315339            {
    316                 int rc;
    317 #ifndef VBOX_WITH_SLIRP_BSD_MBUF
    318                 rc = LibAliasOut((m->m_la ? m->m_la : pData->proxy_alias),
    319                     mtod(m, char *), m->m_len);
    320 #else
    321                 struct m_tag *t;
    322                 if (t = m_tag_find(m, PACKET_TAG_ALIAS, NULL) != 0)
    323                 {
    324                     rc = LibAliasOut((struct libalias *)&t[1], mtod(m, char *), m_length(m, NULL));
    325                 }
    326                 else
    327                 {
    328                     rc = LibAliasOut(pData->proxy_alias, mtod(m, char *),
    329                                      m_length(m, NULL));
    330                 }
    331                 if (rc == PKT_ALIAS_IGNORED)
    332                 {
    333                     Log(("NAT: packet was droppped\n"));
    334                     goto bad;
    335                 }
    336 #endif
    337                 Log2(("NAT: LibAlias return %d\n", rc));
    338340#ifndef VBOX_WITH_SLIRP_BSD_MBUF
    339341                eh = (struct ethhdr *)MBUF_HEAD(m);
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