From fc037f0a395f735d796e36e9ce91126051393844 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 2 Jul 2018 14:34:34 -0700 Subject: [PATCH] drop getBroadcastAddresses() in favor of discoverInterfaces(). if we have to do NIC discovery ourselves, then at least avoid mixing our results with the similar, but not identical results of osiSockDiscoverBroadcastAddresses() from Base. --- src/utils/inetAddressUtil.cpp | 32 -------------------------- src/utils/pv/inetAddressUtil.h | 8 ------- testApp/utils/testInetAddressUtils.cpp | 24 +------------------ 3 files changed, 1 insertion(+), 63 deletions(-) diff --git a/src/utils/inetAddressUtil.cpp b/src/utils/inetAddressUtil.cpp index b5d1c18..a50741f 100644 --- a/src/utils/inetAddressUtil.cpp +++ b/src/utils/inetAddressUtil.cpp @@ -26,38 +26,6 @@ using namespace epics::pvData; namespace epics { namespace pvAccess { -void addDefaultBroadcastAddress(InetAddrVector* v, unsigned short p) { - osiSockAddr pNewNode; - memset(&pNewNode, 0, sizeof(pNewNode)); - pNewNode.ia.sin_family = AF_INET; - // TODO this does not work in case of no active interfaces, should return 127.0.0.1 then - pNewNode.ia.sin_addr.s_addr = htonl(INADDR_BROADCAST); - pNewNode.ia.sin_port = htons(p); - v->push_back(pNewNode); -} - -void getBroadcastAddresses(InetAddrVector& ret, - SOCKET sock, - unsigned short defaultPort) { - ret.clear(); - ELLLIST as; - ellInit(&as); - osiSockAddr serverAddr; - memset(&serverAddr, 0, sizeof(osiSockAddr)); - osiSockDiscoverBroadcastAddresses(&as, sock, &serverAddr); - for(ELLNODE * n = ellFirst(&as); n != NULL; n = ellNext(n)) - { - osiSockAddrNode * sn = (osiSockAddrNode *)n; - sn->addr.ia.sin_port = htons(defaultPort); - // TODO discover possible duplicates - ret.push_back(sn->addr); - } - ellFree(&as); - // add fallback address - if (!ret.size()) - addDefaultBroadcastAddress(&ret, defaultPort); -} - void encodeAsIPv6Address(ByteBuffer* buffer, const osiSockAddr* address) { // IPv4 compatible IPv6 address // first 80-bit are 0 diff --git a/src/utils/pv/inetAddressUtil.h b/src/utils/pv/inetAddressUtil.h index 3097a34..ce68923 100644 --- a/src/utils/pv/inetAddressUtil.h +++ b/src/utils/pv/inetAddressUtil.h @@ -23,14 +23,6 @@ namespace pvAccess { typedef std::vector InetAddrVector; -/** - * Populate a vector containing all the IPv4 broadcast addresses on this machine. - * IPv6 doesn't have a local broadcast address. - * Conversion of the defaultPort to network byte order performed by - * the function. - */ -epicsShareFunc void getBroadcastAddresses(InetAddrVector& ret, SOCKET sock, unsigned short defaultPort); - struct ifaceNode { osiSockAddr addr, //!< Our address peer, //!< point to point peer diff --git a/testApp/utils/testInetAddressUtils.cpp b/testApp/utils/testInetAddressUtils.cpp index 024ebd3..4893320 100644 --- a/testApp/utils/testInetAddressUtils.cpp +++ b/testApp/utils/testInetAddressUtils.cpp @@ -178,27 +178,6 @@ void test_isMulticastAddress() testOk1(isMulticastAddress(&vec.at(5))); } -void test_getBroadcastAddresses() -{ - testDiag("Test getBroadcastAddresses()"); - - osiSockAttach(); - - SOCKET socket = epicsSocketCreate(AF_INET, SOCK_STREAM, IPPROTO_TCP); - InetAddrVector broadcasts; - getBroadcastAddresses(broadcasts, socket, 6678); - // at least one is expected, in case of no network connection a fallback address is returned - testOk1(static_cast(0) < broadcasts.size()); - //testDiag("getBroadcastAddresses() returned %zu entry/-ies.", broadcasts->size()); - epicsSocketDestroy(socket); - - // debug - for(size_t i = 0; i