netfront: wait for backend to connect before sending ARP
Netfront has to wait for the backend to switch to state XenbusStateConnected before sending the ARP request, or else the backend might not be connected and thus the packet will be lost. Sponsored by: Citrix Systems R&D MFC after: 1 week
This commit is contained in:
parent
732b31de5d
commit
dbf82bde19
@ -682,7 +682,6 @@ netfront_backend_changed(device_t dev, XenbusState newstate)
|
|||||||
switch (newstate) {
|
switch (newstate) {
|
||||||
case XenbusStateInitialising:
|
case XenbusStateInitialising:
|
||||||
case XenbusStateInitialised:
|
case XenbusStateInitialised:
|
||||||
case XenbusStateConnected:
|
|
||||||
case XenbusStateUnknown:
|
case XenbusStateUnknown:
|
||||||
case XenbusStateClosed:
|
case XenbusStateClosed:
|
||||||
case XenbusStateReconfigured:
|
case XenbusStateReconfigured:
|
||||||
@ -694,13 +693,15 @@ netfront_backend_changed(device_t dev, XenbusState newstate)
|
|||||||
if (network_connect(sc) != 0)
|
if (network_connect(sc) != 0)
|
||||||
break;
|
break;
|
||||||
xenbus_set_state(dev, XenbusStateConnected);
|
xenbus_set_state(dev, XenbusStateConnected);
|
||||||
#ifdef INET
|
|
||||||
netfront_send_fake_arp(dev, sc);
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case XenbusStateClosing:
|
case XenbusStateClosing:
|
||||||
xenbus_set_state(dev, XenbusStateClosed);
|
xenbus_set_state(dev, XenbusStateClosed);
|
||||||
break;
|
break;
|
||||||
|
case XenbusStateConnected:
|
||||||
|
#ifdef INET
|
||||||
|
netfront_send_fake_arp(dev, sc);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user