Date: Fri, 23 Jan 2009 11:11:29 +0000 (UTC) From: Doug Rabson <dfr@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r187626 - user/dfr/xenhvm/6/sys/dev/xen/netfront Message-ID: <200901231111.n0NBBTNl041361@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dfr Date: Fri Jan 23 11:11:29 2009 New Revision: 187626 URL: http://svn.freebsd.org/changeset/base/187626 Log: Send an ARP packet on resume. This helps switches to learn the new location of the VM after a live migration. Modified: user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Modified: user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c ============================================================================== --- user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Fri Jan 23 08:37:26 2009 (r187625) +++ user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c Fri Jan 23 11:11:29 2009 (r187626) @@ -591,6 +591,24 @@ setup_device(device_t dev, struct netfro } /** + * If this interface has an ipv4 address, send an arp for it. This + * helps to get the network going again after migrating hosts. + */ +static void +netfront_send_fake_arp(device_t dev, struct netfront_info *info) +{ + struct ifnet *ifp; + struct ifaddr *ifa; + + ifp = info->xn_ifp; + TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { + if (ifa->ifa_addr->sa_family == AF_INET) { + arp_ifinit(ifp, ifa); + } + } +} + +/** * Callback received when the backend's state changes. */ static void @@ -615,9 +633,7 @@ netfront_backend_changed(device_t dev, X if (network_connect(sc) != 0) break; xenbus_set_state(dev, XenbusStateConnected); -#ifdef notyet - (void)send_fake_arp(netdev); -#endif + netfront_send_fake_arp(dev, sc); break; case XenbusStateClosing: xenbus_set_state(dev, XenbusStateClosed);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901231111.n0NBBTNl041361>