patch-2.4.19 linux-2.4.19/net/ipv4/ipconfig.c
Next file: linux-2.4.19/net/ipv4/ipip.c
Previous file: linux-2.4.19/net/ipv4/ip_output.c
Back to the patch index
Back to the overall index
- Lines: 79
- Date:
Fri Aug 2 17:39:46 2002
- Orig file:
linux-2.4.18/net/ipv4/ipconfig.c
- Orig date:
Mon Feb 25 11:38:14 2002
diff -urN linux-2.4.18/net/ipv4/ipconfig.c linux-2.4.19/net/ipv4/ipconfig.c
@@ -1105,13 +1105,47 @@
#endif /* CONFIG_PROC_FS */
/*
+ * Extract IP address from the parameter string if needed. Note that we
+ * need to have root_server_addr set _before_ IPConfig gets called as it
+ * can override it.
+ */
+u32 __init root_nfs_parse_addr(char *name)
+{
+ u32 addr;
+ int octets = 0;
+ char *cp, *cq;
+
+ cp = cq = name;
+ while (octets < 4) {
+ while (*cp >= '0' && *cp <= '9')
+ cp++;
+ if (cp == cq || cp - cq > 3)
+ break;
+ if (*cp == '.' || octets == 3)
+ octets++;
+ if (octets < 4)
+ cp++;
+ cq = cp;
+ }
+ if (octets == 4 && (*cp == ':' || *cp == '\0')) {
+ if (*cp == ':')
+ *cp++ = '\0';
+ addr = in_aton(name);
+ strcpy(name, cp);
+ } else
+ addr = INADDR_NONE;
+
+ return addr;
+}
+
+/*
* IP Autoconfig dispatcher.
*/
static int __init ip_auto_config(void)
{
- int retries = CONF_OPEN_RETRIES;
unsigned long jiff;
+ u32 addr;
#ifdef CONFIG_PROC_FS
proc_net_create("pnp", 0, pnp_get_info);
@@ -1122,7 +1156,9 @@
DBG(("IP-Config: Entered.\n"));
+#ifdef IPCONFIG_DYNAMIC
try_try_again:
+#endif
/* Give hardware a chance to settle */
jiff = jiffies + CONF_PRE_OPEN;
while (time_before(jiffies, jiff))
@@ -1152,6 +1188,8 @@
ic_first_dev->next) {
#ifdef IPCONFIG_DYNAMIC
+ int retries = CONF_OPEN_RETRIES;
+
if (ic_dynamic() < 0) {
ic_close_devs();
@@ -1197,6 +1235,10 @@
ic_dev = ic_first_dev->dev;
}
+ addr = root_nfs_parse_addr(root_server_path);
+ if (root_server_addr == INADDR_NONE)
+ root_server_addr = addr;
+
/*
* Use defaults whereever applicable.
*/
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)