summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
authorKees Bos <k.bos@capitar.com>2015-06-25 18:35:13 +0200
committerKees Bos <k.bos@capitar.com>2015-06-26 07:22:30 +0200
commit3eca5d9c2933bc365de5b78e20976ccae360296e (patch)
treee1cc03dbe75a9fc9f1bf9bcdd955b40efe5b760b /controller
parent8a68624dae9e2bdb073e89f8e02e4bce85bfc7a8 (diff)
downloadinfinitytier-3eca5d9c2933bc365de5b78e20976ccae360296e.tar.gz
infinitytier-3eca5d9c2933bc365de5b78e20976ccae360296e.zip
Fix reporting of ipAssignments for ipv4
Diffstat (limited to 'controller')
-rw-r--r--controller/SqliteNetworkController.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp
index d77e06d8..eb8e399b 100644
--- a/controller/SqliteNetworkController.cpp
+++ b/controller/SqliteNetworkController.cpp
@@ -1158,7 +1158,14 @@ unsigned int SqliteNetworkController::_doCPGet(
sqlite3_bind_text(_sGetIpAssignmentsForNode2,2,addrs,10,SQLITE_STATIC);
bool firstIp = true;
while (sqlite3_step(_sGetIpAssignmentsForNode2) == SQLITE_ROW) {
- InetAddress ip((const void *)sqlite3_column_blob(_sGetIpAssignmentsForNode2,0),(sqlite3_column_int(_sGetIpAssignmentsForNode2,2) == 6) ? 16 : 4,(unsigned int)sqlite3_column_int(_sGetIpAssignmentPools2,1));
+ int ipversion = sqlite3_column_int(_sGetIpAssignmentsForNode2,2);
+ char ipBlob[16];
+ memcpy(ipBlob,(const void *)sqlite3_column_blob(_sGetIpAssignmentsForNode2,0),16);
+ InetAddress ip(
+ (const void *)(ipversion == 6 ? ipBlob : &ipBlob[12]),
+ (ipversion == 6 ? 16 : 4),
+ (unsigned int)sqlite3_column_int(_sGetIpAssignmentsForNode2,1)
+ );
responseBody.append(firstIp ? "\"" : ",\"");
firstIp = false;
responseBody.append(_jsonEscape(ip.toString()));