summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/6to4.c20
-rw-r--r--src/connman.h1
2 files changed, 21 insertions, 0 deletions
diff --git a/src/6to4.c b/src/6to4.c
index e6815a0e..3877bfbd 100644
--- a/src/6to4.c
+++ b/src/6to4.c
@@ -540,3 +540,23 @@ void __connman_6to4_remove(struct connman_ipconfig *ip4config)
if (tunnel_created)
tunnel_destroy();
}
+
+int __connman_6to4_check(struct connman_ipconfig *ip4config)
+{
+ const char *address;
+
+ if (ip4config == NULL || tunnel_created == 0 ||
+ tunnel_pending == 1)
+ return -1;
+
+ DBG("tunnel ip address %s", tunnel_ip_address);
+
+ address = __connman_ipconfig_get_local(ip4config);
+ if (address == NULL)
+ return -1;
+
+ if (g_strcmp0(address, tunnel_ip_address) == 0)
+ return 1;
+
+ return 0;
+}
diff --git a/src/connman.h b/src/connman.h
index 1ca73ed0..d466b216 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -648,3 +648,4 @@ void __connman_dnsproxy_flush(void);
int __connman_6to4_probe(struct connman_service *service);
void __connman_6to4_remove(struct connman_ipconfig *ipconfig);
+int __connman_6to4_check(struct connman_ipconfig *ipconfig);