Changeset 25205 in vbox
- Timestamp:
- Dec 5, 2009 10:40:15 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 55691
- Location:
- trunk/src/VBox/Devices/Network/slirp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/slirp.c
r24064 r25205 1503 1503 slirp_arp_cache_add(pData, *(uint32_t *)ah->ar_tip, &eh->h_dest[0]); 1504 1504 /* good opportunity to activate port-forwarding on address (self)asignment*/ 1505 activate_port_forwarding(pData, eh); 1505 if (pData->port_forwarding_activated != pData->port_forwarding_count) 1506 activate_port_forwarding(pData, eh); 1506 1507 } 1507 1508 break; … … 1515 1516 slirp_arp_cache_add(pData, *(uint32_t *)ah->ar_sip, ah->ar_sha); 1516 1517 /*after/save restore we need up port forwarding again*/ 1517 if (pData->port_forwarding_activated == 0)1518 if (pData->port_forwarding_activated != pData->port_forwarding_count) 1518 1519 activate_port_forwarding(pData, eh); 1519 1520 m_free(pData, m); … … 1603 1604 1604 1605 1605 if (pData->port_forwarding_activated == 0)1606 if (pData->port_forwarding_activated != pData->port_forwarding_count) 1606 1607 activate_port_forwarding(pData, mtod(m, struct ethhdr *)); 1607 1608 … … 1742 1743 struct port_forward_rule *rule = NULL; 1743 1744 1744 pData->port_forwarding_activated = 1;1745 1745 /* check mac here */ 1746 1746 LIST_FOREACH(rule, &pData->port_forward_rule_head, list) … … 1773 1773 { 1774 1774 /* the address wasn't granted */ 1775 pData->port_forwarding_activated = 0;1776 1775 return; 1777 1776 } 1778 #if defined(DEBUG_vvl) && !defined(VBOX_WITH_NAT_SERVICE) 1779 Assert(rule->guest_addr.s_addr == guest_addr); 1777 #if !defined(VBOX_WITH_NAT_SERVICE) 1778 if (rule->guest_addr.s_addr != guest_addr) 1779 { 1780 continue; 1781 } 1780 1782 #endif 1781 1783 … … 1786 1788 so = udp_listen(pData, rule->bind_ip.s_addr, htons(rule->host_port), guest_addr, 1787 1789 htons(rule->guest_port), 0); 1790 pData->port_forwarding_activated++; 1788 1791 } 1789 1792 else … … 1791 1794 so = solisten(pData, rule->bind_ip.s_addr, htons(rule->host_port), guest_addr, 1792 1795 htons(rule->guest_port), 0); 1796 pData->port_forwarding_activated++; 1793 1797 } 1794 1798 if (so == NULL) … … 1837 1841 remove_port_forwarding: 1838 1842 LIST_REMOVE(rule, list); 1843 pData->port_forwarding_count--; 1839 1844 RTMemFree(rule); 1840 1845 } … … 1871 1876 /* @todo add mac address */ 1872 1877 LIST_INSERT_HEAD(&pData->port_forward_rule_head, rule, list); 1878 pData->port_forwarding_count++; 1873 1879 return 0; 1874 1880 } … … 2061 2067 LIST_FOREACH(ac, &pData->arp_cache, list) 2062 2068 { 2063 if (memcmp(ether, ac->ether, ETH_ALEN) )2069 if (memcmp(ether, ac->ether, ETH_ALEN) == 0) 2064 2070 { 2065 2071 *ip = ac->ip; -
trunk/src/VBox/Devices/Network/slirp/slirp_state.h
r23462 r25205 319 319 struct port_forward_rule_list port_forward_rule_head; 320 320 int port_forwarding_activated; 321 int port_forwarding_count; 321 322 struct arp_cache_head arp_cache; 322 323 /*libalis modules' handlers*/
Note:
See TracChangeset
for help on using the changeset viewer.