Signed-off-by: Xiangfu Liu <[email protected]>
---
 src/sysconfig.c |   55 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 35 insertions(+), 20 deletions(-)

diff --git a/src/sysconfig.c b/src/sysconfig.c
index 96d1784..c73e411 100644
--- a/src/sysconfig.c
+++ b/src/sysconfig.c
@@ -361,16 +361,29 @@ void sysconfig_get_ipconfig(int *dhcp_enable, unsigned 
int *ip, unsigned int *ne
 {
        *dhcp_enable = sysconfig.dhcp_enable;
 
-       if(ip != NULL)
-               *ip = ifconfig_get_ip(SIOCGIFADDR);
-       if(netmask != NULL)
-               *netmask = ifconfig_get_ip(SIOCGIFNETMASK);
-       if(gateway != NULL)
-               *gateway = route_get_gateway();
-       if(dns1 != NULL)
-               *dns1 = rtems_bsdnet_nameserver_count > 0 ? 
rtems_bsdnet_nameserver[0].s_addr : 0;
-       if(dns2 != NULL)
-               *dns2 = rtems_bsdnet_nameserver_count > 1 ? 
rtems_bsdnet_nameserver[1].s_addr : 0;
+       if(*dhcp_enable) {
+               if(ip != NULL)
+                       *ip = ifconfig_get_ip(SIOCGIFADDR);
+               if(netmask != NULL)
+                       *netmask = ifconfig_get_ip(SIOCGIFNETMASK);
+               if(gateway != NULL)
+                       *gateway = route_get_gateway();
+               if(dns1 != NULL)
+                       *dns1 = rtems_bsdnet_nameserver_count > 0 ? 
rtems_bsdnet_nameserver[0].s_addr : 0;
+               if(dns2 != NULL)
+                       *dns2 = rtems_bsdnet_nameserver_count > 1 ? 
rtems_bsdnet_nameserver[1].s_addr : 0;
+       } else {
+               if(ip != NULL)
+                       *ip = sysconfig.ip;
+               if(netmask != NULL)
+                       *netmask = sysconfig.netmask;
+               if(gateway != NULL)
+                       *gateway = sysconfig.gateway;
+               if(dns1 != NULL)
+                       *dns1 = sysconfig.dns1;
+               if(dns2 != NULL)
+                       *dns2 = sysconfig.dns2;
+       }
 }
 
 void sysconfig_get_credentials(char *login, char *password)
@@ -526,16 +539,18 @@ void sysconfig_set_ipconfig(int dhcp_enable, unsigned int 
ip, unsigned int netma
        }
 
        sysconfig.dhcp_enable = dhcp_enable;
-       if(ip != 0)
-               sysconfig.ip = ip;
-       if(netmask != 0)
-               sysconfig.netmask = netmask;
-       if(gateway != 0)
-               sysconfig.gateway = gateway;
-       if(dns1 != 0)
-               sysconfig.dns1 = dns1;
-       if(dns2 != 0)
-               sysconfig.dns2 = dns2;
+       if(!dhcp_enable) {
+               if(ip != 0)
+                       sysconfig.ip = ip;
+               if(netmask != 0)
+                       sysconfig.netmask = netmask;
+               if(gateway != 0)
+                       sysconfig.gateway = gateway;
+               if(dns1 != 0)
+                       sysconfig.dns1 = dns1;
+               if(dns2 != 0)
+                       sysconfig.dns2 = dns2;
+       }
 }
 
 void sysconfig_set_credentials(char *login, char *password)
-- 
1.7.5.4

_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode

Reply via email to