VirtualBox

Ignore:
Timestamp:
Dec 15, 2009 1:16:26 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56028
Message:

NAT: re-establish port-forwarding after savestate / restore state

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/libslirp.h

    r23462 r25402  
    5353void slirp_input(PNATState pData, void *pvData);
    5454#endif
    55 void slirp_set_ethaddr(PNATState pData, const uint8_t *ethaddr);
     55void slirp_set_ethaddr_and_activate_port_forwarding(PNATState pData, const uint8_t *ethaddr, uint32_t GuestIP);
    5656
    5757/* you must provide the following functions: */
  • trunk/src/VBox/Devices/Network/slirp/slirp.c

    r25362 r25402  
    194194#define LOG_NAT_SOCK(so, proto, winevent, r_fdset, w_fdset, x_fdset) DO_LOG_NAT_SOCK((so), proto, (winevent), r_fdset, w_fdset, x_fdset)
    195195
    196 static void activate_port_forwarding(PNATState, uint8_t *pEther);
     196static void activate_port_forwarding(PNATState, const uint8_t *pEther);
    197197
    198198static const uint8_t special_ethaddr[6] =
     
    653653void slirp_link_up(PNATState pData)
    654654{
    655     struct arp_cache_entry *ac = NULL;
     655    struct arp_cache_entry *ac;
    656656    link_up = 1;
    657657
     
    671671{
    672672    struct socket *so;
    673     struct port_forward_rule *rule = NULL;
     673    struct port_forward_rule *rule;
    674674
    675675    while ((so = tcb.so_next) != &tcb)
     
    17691769 * @todo finish this for service case
    17701770 */
    1771 static void activate_port_forwarding(PNATState pData, uint8_t *h_source)
    1772 {
    1773     struct port_forward_rule *rule = NULL;
     1771static void activate_port_forwarding(PNATState pData, const uint8_t *h_source)
     1772{
     1773    struct port_forward_rule *rule;
    17741774
    17751775    /* check mac here */
     
    19091909}
    19101910
    1911 void slirp_set_ethaddr(PNATState pData, const uint8_t *ethaddr)
     1911void slirp_set_ethaddr_and_activate_port_forwarding(PNATState pData, const uint8_t *ethaddr, uint32_t GuestIP)
    19121912{
    19131913#ifndef VBOX_WITH_NAT_SERVICE
    19141914    memcpy(client_ethaddr, ethaddr, ETH_ALEN);
    19151915#endif
     1916    if (GuestIP != INADDR_ANY)
     1917    {
     1918        slirp_arp_cache_update_or_add(pData, GuestIP, ethaddr);
     1919        activate_port_forwarding(pData, ethaddr);
     1920    }
    19161921}
    19171922
     
    20512056int slirp_arp_lookup_ether_by_ip(PNATState pData, uint32_t ip, uint8_t *ether)
    20522057{
    2053     struct arp_cache_entry *ac = NULL;
     2058    struct arp_cache_entry *ac;
    20542059
    20552060    if (ether == NULL)
     
    20772082int slirp_arp_lookup_ip_by_ether(PNATState pData, const uint8_t *ether, uint32_t *ip)
    20782083{
    2079     struct arp_cache_entry *ac = NULL;
     2084    struct arp_cache_entry *ac;
    20802085    *ip = INADDR_ANY;
    20812086
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