diff options
Diffstat (limited to 'extras/mini-os/netfront.c')
-rw-r--r-- | extras/mini-os/netfront.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/extras/mini-os/netfront.c b/extras/mini-os/netfront.c index a64fec6c9c..47f87d1eef 100644 --- a/extras/mini-os/netfront.c +++ b/extras/mini-os/netfront.c @@ -407,9 +407,9 @@ again: } snprintf(path, sizeof(path), "%s/state", nodename); - err = xenbus_switch_state(xbt, path, XenbusStateConnected); + err = xenbus_switch_state(xbt, path, XenbusStateInitialised); if (err) { - message = "switching state"; + printk("error writing net initialized: %s\n", err); goto abort_transaction; } @@ -445,6 +445,7 @@ done: { XenbusState state; char path[strlen(dev->backend) + 1 + 5 + 1]; + char frontpath[strlen(nodename) + 1 + 6 + 1]; snprintf(path, sizeof(path), "%s/state", dev->backend); xenbus_watch_path_token(XBT_NIL, path, path, &dev->events); @@ -463,6 +464,16 @@ done: snprintf(path, sizeof(path), "%s/ip", dev->backend); xenbus_read(XBT_NIL, path, ip); } + + printk("%s connected\n", dev->backend); + + snprintf(frontpath, sizeof(frontpath), "%s/state", nodename); + if((err = xenbus_switch_state(XBT_NIL, frontpath, XenbusStateConnected)) + != NULL) { + printk("error switching state: %s\n", err); + xenbus_unwatch_path_token(XBT_NIL, path, path); + goto error; + } } printk("**************************\n"); @@ -481,6 +492,7 @@ done: &rawmac[5]); return dev; + error: free(msg); free(err); |