Changeset 39259 in vbox
- Timestamp:
- Nov 10, 2011 8:29:39 AM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 74794
- Location:
- trunk/src/VBox/Devices/Network/slirp
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/ip_input.c
r39101 r39259 116 116 { 117 117 int rc; 118 STAM_PROFILE_START(&pData->StatALIAS_input, b); 119 rc = LibAliasIn(select_alias(pData, m), mtod(m, char *), m_length(m, NULL)); 120 STAM_PROFILE_STOP(&pData->StatALIAS_input, b); 121 Log2(("NAT: LibAlias return %d\n", rc)); 118 if (!(m->m_flags & M_SKIP_FIREWALL)) 119 { 120 STAM_PROFILE_START(&pData->StatALIAS_input, b); 121 rc = LibAliasIn(select_alias(pData, m), mtod(m, char *), m_length(m, NULL)); 122 STAM_PROFILE_STOP(&pData->StatALIAS_input, b); 123 Log2(("NAT: LibAlias return %d\n", rc)); 124 } 125 else 126 m->m_flags &= ~M_SKIP_FIREWALL; 122 127 if (m->m_len != RT_N2H_U16(ip->ip_len)) 123 128 m->m_len = RT_N2H_U16(ip->ip_len); -
trunk/src/VBox/Devices/Network/slirp/ip_output.c
r39085 r39259 169 169 ip->ip_sum = cksum(m, hlen); 170 170 171 {171 if (!(m->m_flags & M_SKIP_FIREWALL)){ 172 172 struct m_tag *t; 173 173 STAM_PROFILE_START(&pData->StatALIAS_output, b); … … 186 186 STAM_PROFILE_STOP(&pData->StatALIAS_output, b); 187 187 } 188 else 189 m->m_flags &= ~M_SKIP_FIREWALL; 188 190 189 191 memcpy(eh->h_source, eth_dst, ETH_ALEN); … … 292 294 293 295 send_or_free: 294 {296 if (!(m->m_flags & M_SKIP_FIREWALL)){ 295 297 /* @todo: We can't alias all fragments because the way libalias processing 296 298 * the fragments brake the sequence. libalias put alias_address to the source … … 316 318 Log2(("NAT: LibAlias return %d\n", rcLa)); 317 319 } 320 else 321 m->m_flags &= ~M_SKIP_FIREWALL; 318 322 for (m = m0; m; m = m0) 319 323 { -
trunk/src/VBox/Devices/Network/slirp/udp.c
r39174 r39259 404 404 if ((so->so_faddr.s_addr & RT_H2N_U32(~pData->netmask)) == RT_H2N_U32(~pData->netmask)) 405 405 { 406 saddr.sin_addr.s_addr = addr->sin_addr.s_addr; 406 /** 407 * We haven't got real firewall but have got its submodule libalias. 408 */ 409 m->m_flags |= M_SKIP_FIREWALL; 410 /** 411 * udp/137 port is used for NetBIOS lookup. for some reasons Windows guest rejects 412 * accept data from non-aliased server. 413 */ 414 if ( (so->so_fport == so->so_lport) 415 && (so->so_fport == RT_H2N_U16(137))) 416 saddr.sin_addr.s_addr = alias_addr.s_addr; 417 else 418 saddr.sin_addr.s_addr = addr->sin_addr.s_addr; 407 419 so->so_faddr.s_addr = addr->sin_addr.s_addr; 408 420 }
Note:
See TracChangeset
for help on using the changeset viewer.