VirtualBox

Changeset 52755 in vbox for trunk


Ignore:
Timestamp:
Sep 15, 2014 9:31:50 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96113
Message:

NAT: G/c socket:so_la - per-socket libalias instance used for
port-forwarding - and concomitant code. It is never actually used as
PACKET_TAG_ALIAS that is supposed to select it is never set. Its
LibAliasRedirectPort() arguments were wrong too.

Location:
trunk/src/VBox/Devices/Network/slirp
Files:
5 edited

Legend:

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

    r52245 r52755  
    8585}
    8686
    87 static struct libalias *select_alias(PNATState pData, struct mbuf* m)
    88 {
    89     struct libalias *la = pData->proxy_alias;
    90 
    91     struct m_tag *t;
    92     if ((t = m_tag_find(m, PACKET_TAG_ALIAS, NULL)) != 0)
    93         return (struct libalias *)&t[1];
    94 
    95     return la;
    96 }
    97 
    9887/*
    9988 * Ip input routine.  Checksum and byte swap header.  If fragmented
     
    119108        {
    120109            STAM_PROFILE_START(&pData->StatALIAS_input, b);
    121             rc = LibAliasIn(select_alias(pData, m), mtod(m, char *), m_length(m, NULL));
     110            rc = LibAliasIn(pData->proxy_alias, mtod(m, char *), m_length(m, NULL));
    122111            STAM_PROFILE_STOP(&pData->StatALIAS_input, b);
    123112            Log2(("NAT: LibAlias return %d\n", rc));
  • trunk/src/VBox/Devices/Network/slirp/ip_output.c

    r44528 r52755  
    176176            struct m_tag *t;
    177177            STAM_PROFILE_START(&pData->StatALIAS_output, b);
    178             if ((t = m_tag_find(m, PACKET_TAG_ALIAS, NULL)) != 0)
    179                 rc = LibAliasOut((struct libalias *)&t[1], mtod(m, char *),
    180                                  m_length(m, NULL));
    181             else
    182                 rc = LibAliasOut(pData->proxy_alias, mtod(m, char *),
    183                                  m_length(m, NULL));
    184 
     178            rc = LibAliasOut(pData->proxy_alias, mtod(m, char *), m_length(m, NULL));
    185179            if (rc == PKT_ALIAS_IGNORED)
    186180            {
     
    310304            struct m_tag *t;
    311305            int rcLa;
    312             if ((t = m_tag_find(m, PACKET_TAG_ALIAS, NULL)) != 0)
    313                 rcLa = LibAliasOut((struct libalias *)&t[1], mtod(m, char *), m->m_len);
    314             else
    315                 rcLa = LibAliasOut(pData->proxy_alias, mtod(m, char *), m->m_len);
    316 
     306
     307            rcLa = LibAliasOut(pData->proxy_alias, mtod(m, char *), m->m_len);
    317308            if (rcLa == PKT_ALIAS_IGNORED)
    318309            {
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r52663 r52755  
    15281528    {
    15291529        struct socket *so;
    1530         struct alias_link *alias_link;
    1531         struct libalias *lib;
    1532         int flags;
    15331530        struct sockaddr sa;
    15341531        struct sockaddr_in *psin;
    15351532        socklen_t socketlen;
    1536         struct in_addr alias;
    15371533        int rc;
    15381534        uint32_t guest_addr; /* need to understand if we already give address to guest */
     
    15891585            goto remove_port_forwarding;
    15901586
    1591         psin = (struct sockaddr_in *)&sa;
    1592 
    1593         lib = LibAliasInit(pData, NULL);
    1594         flags = LibAliasSetMode(lib, 0, 0);
    1595         flags |= pData->i32AliasMode;
    1596         flags |= PKT_ALIAS_REVERSE; /* set reverse  */
    1597         flags = LibAliasSetMode(lib, flags, ~0);
    1598 
    1599         alias.s_addr = RT_H2N_U32(RT_N2H_U32(guest_addr) | CTL_ALIAS);
    1600         alias_link = LibAliasRedirectPort(lib, psin->sin_addr, RT_H2N_U16(rule->host_port),
    1601                                           alias, RT_H2N_U16(rule->guest_port),
    1602                                           pData->special_addr,  -1, /* not very clear for now */
    1603                                           rule->proto);
    1604         if (!alias_link)
    1605             goto remove_port_forwarding;
    1606 
    1607         so->so_la = lib;
    16081587        rule->activated = 1;
    16091588        rule->so = so;
     
    16881667                    guest_addr.s_addr, rule->guest_port));
    16891668
    1690             LibAliasUninit(rule->so->so_la);
    16911669            if (is_udp)
    16921670                udp_detach(pData, rule->so);
  • trunk/src/VBox/Devices/Network/slirp/socket.h

    r52753 r52755  
    101101    unsigned char so_ethaddr[6];
    102102#endif
    103     /* required for port-forwarding */
    104     struct libalias *so_la;
    105103
    106104#ifdef VBOX_WITH_NAT_UDP_SOCKET_CLONE
  • trunk/src/VBox/Devices/Network/slirp/tcp_subr.c

    r51865 r52755  
    506506        so->so_laddr = inso->so_laddr;
    507507        so->so_lport = inso->so_lport;
    508         so->so_la = inso->so_la;
    509508    }
    510509
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