summaryrefslogtreecommitdiff
path: root/networking/ifupdown.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/ifupdown.c')
-rw-r--r--networking/ifupdown.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 6aa929a..586c3db 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -483,9 +483,9 @@ static const struct dhcp_client_t ext_dhcp_clients[] = {
};
#endif /* ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCPC */
+#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
{
-#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
int i;
#if ENABLE_FEATURE_IFUPDOWN_IP
/* ip doesn't up iface when it configures it (unlike ifconfig) */
@@ -498,7 +498,10 @@ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
}
bb_error_msg("no dhcp clients found");
return 0;
+}
#elif ENABLE_APP_UDHCPC
+static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
+{
#if ENABLE_FEATURE_IFUPDOWN_IP
/* ip doesn't up iface when it configures it (unlike ifconfig) */
if (!execute("ip link set %iface% up", ifd, exec))
@@ -507,14 +510,18 @@ static int dhcp_up(struct interface_defn_t *ifd, execfn *exec)
return execute("udhcpc -R -n -p /var/run/udhcpc.%iface%.pid "
"-i %iface%[[ -H %hostname%]][[ -c %clientid%]][[ -s %script%]]",
ifd, exec);
+}
#else
+static int dhcp_up(struct interface_defn_t *ifd ATTRIBUTE_UNUSED,
+ execfn *exec ATTRIBUTE_UNUSED)
+{
return 0; /* no dhcp support */
-#endif
}
+#endif
+#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
{
-#if ENABLE_FEATURE_IFUPDOWN_EXTERNAL_DHCP
int i;
for (i = 0; i < ARRAY_SIZE(ext_dhcp_clients); i++) {
if (exists_execable(ext_dhcp_clients[i].name))
@@ -522,13 +529,20 @@ static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
}
bb_error_msg("no dhcp clients found, using static interface shutdown");
return static_down(ifd, exec);
+}
#elif ENABLE_APP_UDHCPC
+static int dhcp_down(struct interface_defn_t *ifd, execfn *exec)
+{
return execute("kill "
"`cat /var/run/udhcpc.%iface%.pid` 2>/dev/null", ifd, exec);
+}
#else
+static int dhcp_down(struct interface_defn_t *ifd ATTRIBUTE_UNUSED,
+ execfn *exec ATTRIBUTE_UNUSED)
+{
return 0; /* no dhcp support */
-#endif
}
+#endif
static int manual_up_down(struct interface_defn_t *ifd ATTRIBUTE_UNUSED, execfn *exec ATTRIBUTE_UNUSED)
{