summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac7
-rw-r--r--src/dhcp.c11
2 files changed, 18 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index ebc8170a..57b06947 100644
--- a/configure.ac
+++ b/configure.ac
@@ -377,6 +377,13 @@ if (test "${enable_wifi}" != "no"); then
$PATH:/sbin:/usr/sbin)
fi
+AC_ARG_ENABLE(linklocaladdr, AC_HELP_STRING([--disable-linklocaladdr],
+ [disable link local address when dhcp failed]), [
+ if (test "${enableval}" = "no"); then
+ CFLAGS="$CFLAGS -DDISABLE_LINK_LOCAL_ADDR"
+ fi
+])
+
AC_ARG_ENABLE(datafiles, AC_HELP_STRING([--disable-datafiles],
[don't install configuration and data files]),
[enable_datafiles=${enableval}])
diff --git a/src/dhcp.c b/src/dhcp.c
index f32bfaef..c5c14a8a 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -368,6 +368,17 @@ static void ipv4ll_available_cb(GDHCPClient *dhcp_client, gpointer user_data)
if (service == NULL)
return;
+#if defined DISABLE_LINK_LOCAL_ADDR
+ dhcp_invalidate(dhcp, TRUE);
+
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_IDLE,
+ CONNMAN_IPCONFIG_TYPE_IPV4);
+ __connman_service_ipconfig_indicate_state(service,
+ CONNMAN_SERVICE_STATE_IDLE,
+ CONNMAN_IPCONFIG_TYPE_IPV6);
+ return;
+#endif
ipconfig = __connman_service_get_ip4config(service);
if (ipconfig == NULL)
return;