ifup/ifdown: make location of ifstate configurable
authorDenis Vlasenko <vda.linux@googlemail.com>
Thu, 19 Jul 2007 21:49:30 +0000 (21:49 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Thu, 19 Jul 2007 21:49:30 +0000 (21:49 -0000)
networking/Config.in
networking/ifupdown.c
scripts/defconfig

index 77b5d2558c784443cfe236c00761fede8df58f1a..2ea0650a0ab98163747eafa23783e78700e1dd46 100644 (file)
@@ -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
index e9f0a646c903cb3b5110113109f2fd779b46be6f..5aa3fa5f16d250f87d5f17eac7ba8e968727c901 100644 (file)
@@ -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) {
index 4d12f8ec54a7fa68d1cb1de6efb74627936834c7..088ff791a018e31c233dca99ad69da98726c1aa7 100644 (file)
@@ -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