- Timestamp:
- Sep 15, 2014 9:31:50 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 96113
- 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 85 85 } 86 86 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 98 87 /* 99 88 * Ip input routine. Checksum and byte swap header. If fragmented … … 119 108 { 120 109 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)); 122 111 STAM_PROFILE_STOP(&pData->StatALIAS_input, b); 123 112 Log2(("NAT: LibAlias return %d\n", rc)); -
trunk/src/VBox/Devices/Network/slirp/ip_output.c
r44528 r52755 176 176 struct m_tag *t; 177 177 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)); 185 179 if (rc == PKT_ALIAS_IGNORED) 186 180 { … … 310 304 struct m_tag *t; 311 305 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); 317 308 if (rcLa == PKT_ALIAS_IGNORED) 318 309 { -
trunk/src/VBox/Devices/Network/slirp/slirp.c
r52663 r52755 1528 1528 { 1529 1529 struct socket *so; 1530 struct alias_link *alias_link;1531 struct libalias *lib;1532 int flags;1533 1530 struct sockaddr sa; 1534 1531 struct sockaddr_in *psin; 1535 1532 socklen_t socketlen; 1536 struct in_addr alias;1537 1533 int rc; 1538 1534 uint32_t guest_addr; /* need to understand if we already give address to guest */ … … 1589 1585 goto remove_port_forwarding; 1590 1586 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;1608 1587 rule->activated = 1; 1609 1588 rule->so = so; … … 1688 1667 guest_addr.s_addr, rule->guest_port)); 1689 1668 1690 LibAliasUninit(rule->so->so_la);1691 1669 if (is_udp) 1692 1670 udp_detach(pData, rule->so); -
trunk/src/VBox/Devices/Network/slirp/socket.h
r52753 r52755 101 101 unsigned char so_ethaddr[6]; 102 102 #endif 103 /* required for port-forwarding */104 struct libalias *so_la;105 103 106 104 #ifdef VBOX_WITH_NAT_UDP_SOCKET_CLONE -
trunk/src/VBox/Devices/Network/slirp/tcp_subr.c
r51865 r52755 506 506 so->so_laddr = inso->so_laddr; 507 507 so->so_lport = inso->so_lport; 508 so->so_la = inso->so_la;509 508 } 510 509
Note:
See TracChangeset
for help on using the changeset viewer.