From 7f85ba2efea3e6ce05e64a400d69b1e1e40ada94 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 23 Apr 2009 12:19:14 +0100 Subject: [PATCH] stubdom: drop lwip support Network support is still provided the same way: using the tap interface, created in qemu using netfront. The lwip stack is still available to avoid additional compilation issues. However the stubdom is not going to have its own vif anymore, this means that the only vnc server supported is the one in dom0. You can still enable the vnc server in a stubdom at compile time, if you want so. Probably the most important change caused by this patch to xen users is that you don't have to specify two vif in the stubdom config file anymore, but just one: -vif = [ '', 'ip=10.0.1.1,mac=aa:00:00:12:23:34'] +vif = ['ip=10.0.1.1,mac=aa:00:00:12:23:34'] Signed-off-by: Stefano Stabellini --- lib/sys.c | 16 +++++++++------- main.c | 2 +- netfront.c | 11 ++++++++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/sys.c b/lib/sys.c index 7c5f05c..12395bf 100644 --- a/lib/sys.c +++ b/lib/sys.c @@ -677,7 +677,7 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce { int i, n = 0; #ifdef HAVE_LWIP - int sock_n, sock_nfds = 0; + int sock_n = 0, sock_nfds = 0; fd_set sock_readfds, sock_writefds, sock_exceptfds; struct timeval timeout = { .tv_sec = 0, .tv_usec = 0}; #endif @@ -711,12 +711,14 @@ static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exce } } } - DEBUG("lwip_select("); - dump_set(nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); - DEBUG("); -> "); - sock_n = lwip_select(sock_nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); - dump_set(nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); - DEBUG("\n"); + if (sock_nfds > 0) { + DEBUG("lwip_select("); + dump_set(nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); + DEBUG("); -> "); + sock_n = lwip_select(sock_nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); + dump_set(nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout); + DEBUG("\n"); + } #endif /* Then see others as well. */ diff --git a/main.c b/main.c index 3289c63..204cf85 100644 --- a/main.c +++ b/main.c @@ -62,7 +62,7 @@ static void call_main(void *p) #ifndef CONFIG_GRUB sparse((unsigned long) &__app_bss_start, &__app_bss_end - &__app_bss_start); -#ifdef HAVE_LWIP +#if defined(HAVE_LWIP) && !defined(CONFIG_QEMU) start_networking(); #endif init_fs_frontend(); diff --git a/netfront.c b/netfront.c index 824c42a..a235769 100644 --- a/netfront.c +++ b/netfront.c @@ -306,11 +306,16 @@ struct netfront_dev *init_netfront(char *_nodename, void (*thenetif_rx)(unsigned int retry=0; int i; char* msg; - char* nodename = _nodename ? _nodename : "device/vif/0"; - + char nodename[256]; + char path[256]; struct netfront_dev *dev; + static int netfrontends = 0; - char path[strlen(nodename) + 1 + 10 + 1]; + if (!_nodename) + snprintf(nodename, sizeof(nodename), "device/vif/%d", netfrontends); + else + strncpy(nodename, _nodename, strlen(nodename)); + netfrontends++; if (!thenetif_rx) thenetif_rx = netif_rx; -- 2.39.5