summaryrefslogtreecommitdiff
path: root/src/ipcpd
diff options
context:
space:
mode:
authordimitri staessens <dimitri.staessens@ugent.be>2017-09-13 15:25:53 +0000
committerSander Vrijders <sander.vrijders@ugent.be>2017-09-13 15:25:53 +0000
commit184f6d40e70895fefff25c8b72f6230781a030bf (patch)
treebddca1ad5b5a08ad6fb0a9ec096984e42afe0d38 /src/ipcpd
parent888d3dbe7c3844d2efe9d6bc9823630db5d47a3b (diff)
parent0ed2ae85935be59b3fee5663a9906c4260cd64cc (diff)
downloadouroboros-184f6d40e70895fefff25c8b72f6230781a030bf.tar.gz
ouroboros-184f6d40e70895fefff25c8b72f6230781a030bf.zip
Merged in dstaesse/ouroboros/be-build (pull request #591)
build: Fix DDNS tool detection for shim-udp
Diffstat (limited to 'src/ipcpd')
-rw-r--r--src/ipcpd/config.h.in1
-rw-r--r--src/ipcpd/shim-udp/CMakeLists.txt24
-rw-r--r--src/ipcpd/shim-udp/main.c16
3 files changed, 25 insertions, 16 deletions
diff --git a/src/ipcpd/config.h.in b/src/ipcpd/config.h.in
index 0bef20be..6fb409b7 100644
--- a/src/ipcpd/config.h.in
+++ b/src/ipcpd/config.h.in
@@ -40,6 +40,7 @@
#define PFT_SIZE @PFT_SIZE@
/* shim-udp */
+#cmakedefine HAVE_DDNS
#define NSUPDATE_EXEC "@NSUPDATE_EXECUTABLE@"
#define NSLOOKUP_EXEC "@NSLOOKUP_EXECUTABLE@"
diff --git a/src/ipcpd/shim-udp/CMakeLists.txt b/src/ipcpd/shim-udp/CMakeLists.txt
index eff3f5d0..fb57778e 100644
--- a/src/ipcpd/shim-udp/CMakeLists.txt
+++ b/src/ipcpd/shim-udp/CMakeLists.txt
@@ -38,17 +38,25 @@ find_program(NSLOOKUP_EXECUTABLE
mark_as_advanced(NSLOOKUP_EXECUTABLE NSUPDATE_EXECUTABLE)
-include(AddCompileFlags)
-if (NOT NSUPDATE_EXECUTABLE)
- message(STATUS "Could not find nsupdate. Disabling DDNS functionality.")
-elseif (NOT NSLOOKUP_EXECUTABLE)
- message(STATUS "Could not find nslookup. Disabling DNS lookups.")
+if (NSLOOKUP_EXECUTABLE AND NSUPDATE_EXECUTABLE)
+ set(DISABLE_DDNS FALSE CACHE BOOL "Disable DDNS support")
+ if (NOT DISABLE_DNS)
+ message(STATUS "DDNS support enabled")
+ set(HAVE_DDNS TRUE CACHE INTERNAL "")
+ else ()
+ message(STATUS "DDNS support disabled by user")
+ endif ()
else ()
- message(STATUS "Found nsupdate: ${NSUPDATE_EXECUTABLE}")
- message(STATUS "Found nslookup: ${NSLOOKUP_EXECUTABLE}")
- add_compile_flags(ipcpd-shim-udp -DCONFIG_OUROBOROS_ENABLE_DNS)
+ if (NSLOOKUP_EXECUTABLE)
+ message(STATUS "Install nsupdate to enable DDNS support")
+ elseif (NSUPDATE_EXECUTABLE)
+ message(STATUS "Install nslookup to enable DDNS support")
+ else ()
+ message(STATUS "Install nslookup and nsupdate to enable DDNS support")
+ endif ()
endif ()
+include(AddCompileFlags)
if (CMAKE_BUILD_TYPE MATCHES Debug)
add_compile_flags(ipcpd-shim-udp -DCONFIG_OUROBOROS_DEBUG)
endif (CMAKE_BUILD_TYPE MATCHES Debug)
diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c
index a64c39c4..8f4bd80d 100644
--- a/src/ipcpd/shim-udp/main.c
+++ b/src/ipcpd/shim-udp/main.c
@@ -632,7 +632,7 @@ static int ipcp_udp_bootstrap(const struct ipcp_config * conf)
return 0;
}
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
/* FIXME: Dependency on nsupdate to be removed in the end */
/* NOTE: Disgusted with this crap */
static int ddns_send(char * cmd)
@@ -757,7 +757,7 @@ static uint32_t ddns_resolve(char * name,
static int ipcp_udp_reg(const uint8_t * hash)
{
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
char ipstr[INET_ADDRSTRLEN];
char dnsstr[INET_ADDRSTRLEN];
char cmd[1000];
@@ -776,7 +776,7 @@ static int ipcp_udp_reg(const uint8_t * hash)
return -1;
}
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
/* register application with DNS server */
dns_addr = udp_data.dns_addr;
@@ -810,7 +810,7 @@ static int ipcp_udp_reg(const uint8_t * hash)
static int ipcp_udp_unreg(const uint8_t * hash)
{
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
char dnsstr[INET_ADDRSTRLEN];
/* max DNS name length + max IP length + max command length */
char cmd[100];
@@ -822,7 +822,7 @@ static int ipcp_udp_unreg(const uint8_t * hash)
ipcp_hash_str(hashstr, hash);
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
/* unregister application with DNS server */
dns_addr = udp_data.dns_addr;
@@ -850,7 +850,7 @@ static int ipcp_udp_query(const uint8_t * hash)
{
uint32_t ip_addr = 0;
struct hostent * h;
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
uint32_t dns_addr = 0;
#endif
char hashstr[ipcp_dir_hash_strlen() + 1];
@@ -862,7 +862,7 @@ static int ipcp_udp_query(const uint8_t * hash)
if (shim_data_dir_has(udp_data.shim_data, hash))
return 0;
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
dns_addr = udp_data.dns_addr;
if (dns_addr != 0) {
@@ -880,7 +880,7 @@ static int ipcp_udp_query(const uint8_t * hash)
}
ip_addr = *((uint32_t *) (h->h_addr_list[0]));
-#ifdef CONFIG_OUROBOROS_ENABLE_DNS
+#ifdef HAVE_DDNS
}
#endif