aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-07-19 21:49:30 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-07-19 21:49:30 +0000
commit2a86a61c270a7d64bcc18a81b0d9004699b1be0f (patch)
tree6c97c107c7eaae830141f6feb9de8fccfa938ef1
parent2414a96faae906da8519229f12bebe5fe00078e7 (diff)
downloadbusybox-2a86a61c270a7d64bcc18a81b0d9004699b1be0f.tar.gz
ifup/ifdown: make location of ifstate configurable
-rw-r--r--networking/Config.in10
-rw-r--r--networking/ifupdown.c8
-rw-r--r--scripts/defconfig1
3 files changed, 16 insertions, 3 deletions
diff --git a/networking/Config.in b/networking/Config.in
index 77b5d2558..2ea0650a0 100644
--- a/networking/Config.in
+++ b/networking/Config.in
@@ -225,6 +225,16 @@ config IFUPDOWN
"ifconfig", "route" and "run-parts" or the "ip" command, either
via busybox or via standalone utilities.
+config IFUPDOWN_IFSTATE_PATH
+ string "Absolute path to ifstate file"
+ default "/var/run/ifstate"
+ help
+ ifupdown keeps state information in a file called ifstate.
+ Typically it is located in /var/run/ifstate, however
+ some distributions tend to put it in other places
+ (debian, for example, uses /etc/network/run/ifstate).
+ This config option defines location of ifstate.
+
config FEATURE_IFUPDOWN_IP
bool "Use ip applet"
default n
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index e9f0a646c..5aa3fa5f1 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -10,7 +10,9 @@
* Changes to upstream version
* Remove checks for kernel version, assume kernel version 2.2.0 or better.
* Lines in the interfaces file cannot wrap.
- * To adhere to the FHS, the default state file is /var/run/ifstate.
+ * To adhere to the FHS, the default state file is /var/run/ifstate
+ * (defined via CONFIG_IFUPDOWN_IFSTATE_PATH) and can be overridden by build
+ * configuration.
*
* Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*/
@@ -1105,7 +1107,7 @@ static llist_t *find_iface_state(llist_t *state_list, const char *iface)
static llist_t *read_iface_state(void)
{
llist_t *state_list = NULL;
- FILE *state_fp = fopen("/var/run/ifstate", "r");
+ FILE *state_fp = fopen(CONFIG_IFUPDOWN_IFSTATE_PATH, "r");
if (state_fp) {
char *start, *end_ptr;
@@ -1275,7 +1277,7 @@ int ifupdown_main(int argc, char **argv)
}
/* Actually write the new state */
- state_fp = xfopen("/var/run/ifstate", "w");
+ state_fp = xfopen(CONFIG_IFUPDOWN_IFSTATE_PATH, "w");
state = state_list;
while (state) {
if (state->data) {
diff --git a/scripts/defconfig b/scripts/defconfig
index 4d12f8ec5..088ff791a 100644
--- a/scripts/defconfig
+++ b/scripts/defconfig
@@ -554,6 +554,7 @@ CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
CONFIG_FEATURE_IFCONFIG_HW=y
CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
CONFIG_FEATURE_IFUPDOWN_IP=y
CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set