aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Horman <horms@verge.net.au>2007-12-25 23:54:42 -0500
committerDavid S. Miller <davem@davemloft.net>2007-12-26 22:36:36 -0500
commita6c05c3d064dbb83be88cba3189beb5db9d2dfc3 (patch)
tree3520d14af7692de0e66525f94f62948f1dc759cf
parentecef969e5b376f98b142e22deb1cec2f23e4f5d6 (diff)
[IPV4]: Fix ip command line processing.
Recently the documentation in Documentation/nfsroot.txt was update to note that in fact ip=off and ip=::::::off as the latter is ignored and the default (on) is used. This was certainly a step in the direction of reducing confusion. But it seems to me that the code ought to be fixed up so that ip=::::::off actually turns off ip autoconfiguration. This patch also notes more specifically that ip=on (aka ip=::::::on) is the default. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--Documentation/nfsroot.txt5
-rw-r--r--net/ipv4/ipconfig.c10
2 files changed, 5 insertions, 10 deletions
diff --git a/Documentation/nfsroot.txt b/Documentation/nfsroot.txt
index 9b956a969362..c86dd38e2281 100644
--- a/Documentation/nfsroot.txt
+++ b/Documentation/nfsroot.txt
@@ -97,10 +97,6 @@ ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
97 autoconfiguration will take place. The most common way to use this 97 autoconfiguration will take place. The most common way to use this
98 is "ip=dhcp". 98 is "ip=dhcp".
99 99
100 Note that "ip=off" is not the same thing as "ip=::::::off", because in
101 the latter autoconfiguration will take place if any of DHCP, BOOTP or RARP
102 are compiled in the kernel.
103
104 <client-ip> IP address of the client. 100 <client-ip> IP address of the client.
105 101
106 Default: Determined using autoconfiguration. 102 Default: Determined using autoconfiguration.
@@ -150,6 +146,7 @@ ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
150 146
151 off or none: don't use autoconfiguration 147 off or none: don't use autoconfiguration
152 on or any: use any protocol available in the kernel 148 on or any: use any protocol available in the kernel
149 (default)
153 dhcp: use DHCP 150 dhcp: use DHCP
154 bootp: use BOOTP 151 bootp: use BOOTP
155 rarp: use RARP 152 rarp: use RARP
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 96400b0bd08a..420f56ad59f8 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -1403,6 +1403,10 @@ static int __init ic_proto_name(char *name)
1403 if (!strcmp(name, "on") || !strcmp(name, "any")) { 1403 if (!strcmp(name, "on") || !strcmp(name, "any")) {
1404 return 1; 1404 return 1;
1405 } 1405 }
1406 if (!strcmp(name, "off") || !strcmp(name, "none")) {
1407 ic_enable = 0;
1408 return 1;
1409 }
1406#ifdef CONFIG_IP_PNP_DHCP 1410#ifdef CONFIG_IP_PNP_DHCP
1407 else if (!strcmp(name, "dhcp")) { 1411 else if (!strcmp(name, "dhcp")) {
1408 ic_proto_enabled &= ~IC_RARP; 1412 ic_proto_enabled &= ~IC_RARP;
@@ -1437,12 +1441,6 @@ static int __init ip_auto_config_setup(char *addrs)
1437 1441
1438 ic_set_manually = 1; 1442 ic_set_manually = 1;
1439 1443
1440 ic_enable = (*addrs &&
1441 (strcmp(addrs, "off") != 0) &&
1442 (strcmp(addrs, "none") != 0));
1443 if (!ic_enable)
1444 return 1;
1445
1446 if (ic_proto_name(addrs)) 1444 if (ic_proto_name(addrs))
1447 return 1; 1445 return 1;
1448 1446