From 82ed447498424443f9ea1585bfa5dcfb95f1ab3a Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 23 Apr 2009 12:19:14 +0100 Subject: 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 --- extras/mini-os/lib/sys.c | 16 +++++++++------- extras/mini-os/main.c | 2 +- extras/mini-os/netfront.c | 11 ++++++++--- stubdom/README | 17 ++--------------- 4 files changed, 20 insertions(+), 26 deletions(-) diff --git a/extras/mini-os/lib/sys.c b/extras/mini-os/lib/sys.c index 7c5f05cd41..12395bf730 100644 --- a/extras/mini-os/lib/sys.c +++ b/extras/mini-os/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/extras/mini-os/main.c b/extras/mini-os/main.c index 3289c638e4..204cf85f8a 100644 --- a/extras/mini-os/main.c +++ b/extras/mini-os/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/extras/mini-os/netfront.c b/extras/mini-os/netfront.c index 824c42a737..a235769377 100644 --- a/extras/mini-os/netfront.c +++ b/extras/mini-os/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; diff --git a/stubdom/README b/stubdom/README index 5bc2211d61..db10f56267 100644 --- a/stubdom/README +++ b/stubdom/README @@ -31,11 +31,10 @@ Create /etc/xen/hvmconfig-dm (where "hvmconfig" is the name of your HVM guest) with kernel = "/usr/lib/xen/boot/ioemu-stubdom.gz" -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'] disk = [ 'file:/tmp/install.iso,hdc:cdrom,r', 'phy:/dev/sda6,hda,w', 'file:/tmp/test,hdb,r' ] where -- the first vif ('') is reserved for VNC (see below) - 'ip=10.0.1.1,mac= etc...' is the same net configuration as in the hvmconfig script, - and disk = is the same block configuration as in the hvmconfig script. @@ -43,7 +42,7 @@ script, Display Configuration ===================== -There are three posibilities +There are two possibilities * Using SDL @@ -61,18 +60,6 @@ vfb = [ 'type=sdl' ] vfb = [ 'type=sdl, opengl=0' ] -* Using a VNC server in the stub domain - - - In hvmconfig, set vnclisten to "172.30.206.1" for instance. Do not use a -host name as Mini-OS does not have a name resolver. Do not use 127.0.0.1 since -then you will not be able to connect to it. - -vnc = 1 -vnclisten = "172.30.206.1" - - - In hvmconfig-dm, fill the reserved vif with the same IP, for instance: - -vif = [ 'ip=172.30.206.1', 'ip=10.0.1.1,mac=aa:00:00:12:23:34'] * Using a VNC server in dom0 -- cgit v1.2.3