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