diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-03-19 16:20:14 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-03-19 16:20:14 +0000 |
commit | df4e524d8dd89f83a848e2641b3d2bcbb07807d9 (patch) | |
tree | 3afdc4cfaaa549f32778395f5edac611fa2f13cf /extras/mini-os/lwip-net.c | |
parent | 6fef410021e2f5384a46aca3b6f49a507d331420 (diff) | |
download | xen-df4e524d8dd89f83a848e2641b3d2bcbb07807d9.tar.gz |
minios: Automatically set IP from XenStore information
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
Diffstat (limited to 'extras/mini-os/lwip-net.c')
-rw-r--r-- | extras/mini-os/lwip-net.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/extras/mini-os/lwip-net.c b/extras/mini-os/lwip-net.c index 1983d23431..da4f1fd209 100644 --- a/extras/mini-os/lwip-net.c +++ b/extras/mini-os/lwip-net.c @@ -339,10 +339,25 @@ void start_networking(void) struct ip_addr ipaddr = { htonl(IF_IPADDR) }; struct ip_addr netmask = { htonl(IF_NETMASK) }; struct ip_addr gw = { 0 }; + char *ip; tprintk("Waiting for network.\n"); - dev = init_netfront(NULL, NULL, rawmac); + dev = init_netfront(NULL, NULL, rawmac, &ip); + + if (ip) { + ipaddr.addr = inet_addr(ip); + if (IN_CLASSA(ntohl(ipaddr.addr))) + netmask.addr = htonl(IN_CLASSA_NET); + else if (IN_CLASSB(ntohl(ipaddr.addr))) + netmask.addr = htonl(IN_CLASSB_NET); + else if (IN_CLASSC(ntohl(ipaddr.addr))) + netmask.addr = htonl(IN_CLASSC_NET); + else + tprintk("Strange IP %s, leaving netmask to 0.\n", ip); + } + tprintk("IP %x netmask %x gateway %x.\n", + ntohl(ipaddr.addr), ntohl(netmask.addr), ntohl(gw.addr)); tprintk("TCP/IP bringup begins.\n"); |