From 387d8aa0dc52e6d5467cd9995fbab44dd0a5356c Mon Sep 17 00:00:00 2001 From: miha_vitorovic Date: Fri, 7 Jan 2011 08:58:17 +0100 Subject: [PATCH] Some final fixes to addressUtils regarding byte-order. --- pvAccessApp/utils/inetAddressUtil.cpp | 12 ++++++------ pvAccessApp/utils/inetAddressUtil.h | 2 +- testApp/utils/inetAddressUtilsTest.cpp | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pvAccessApp/utils/inetAddressUtil.cpp b/pvAccessApp/utils/inetAddressUtil.cpp index 5fff2d2..217c740 100644 --- a/pvAccessApp/utils/inetAddressUtil.cpp +++ b/pvAccessApp/utils/inetAddressUtil.cpp @@ -115,7 +115,7 @@ namespace epics { // next 16-bits are 1 buffer->putShort(0xFFFF); // following IPv4 address in big-endian (network) byte order - in_addr_t ipv4Addr = address->ia.sin_addr.s_addr; + in_addr_t ipv4Addr = ntohl(address->ia.sin_addr.s_addr); buffer->putByte((int8)((ipv4Addr>>24)&0xFF)); buffer->putByte((int8)((ipv4Addr>>16)&0xFF)); buffer->putByte((int8)((ipv4Addr>>8)&0xFF)); @@ -166,7 +166,7 @@ namespace epics { retAddr <<= 8; retAddr |= byte; - return retAddr; + return htonl(retAddr); } InetAddrVector* getSocketAddressList(String list, int defaultPort, @@ -198,7 +198,7 @@ namespace epics { } const String inetAddressToString(const osiSockAddr *addr, - bool displayHex) { + bool displayPort, bool displayHex) { stringstream saddr; int ipa = ntohl(addr->ia.sin_addr.s_addr); @@ -207,9 +207,9 @@ namespace epics { saddr<<((int)(ipa>>16)&0xFF)<<'.'; saddr<<((int)(ipa>>8)&0xFF)<<'.'; saddr<<((int)ipa&0xFF); - if(addr->ia.sin_port>0) saddr<<":"<ia.sin_port); - if(displayHex) saddr<<" ("<ia.sin_addr.s_addr)<<")"; + if(displayPort) saddr<<":"<ia.sin_port); + if(displayHex) saddr<<" ("<ia.sin_addr.s_addr) + <<")"; return saddr.str(); } diff --git a/pvAccessApp/utils/inetAddressUtil.h b/pvAccessApp/utils/inetAddressUtil.h index 6910279..0450839 100644 --- a/pvAccessApp/utils/inetAddressUtil.h +++ b/pvAccessApp/utils/inetAddressUtil.h @@ -71,7 +71,7 @@ namespace epics { const InetAddrVector* appendList = NULL); const String inetAddressToString(const osiSockAddr *addr, - bool displayHex = false); + bool displayPort = true, bool displayHex = false); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ diff --git a/testApp/utils/inetAddressUtilsTest.cpp b/testApp/utils/inetAddressUtilsTest.cpp index d6a55d4..ce77ae4 100644 --- a/testApp/utils/inetAddressUtilsTest.cpp +++ b/testApp/utils/inetAddressUtilsTest.cpp @@ -63,7 +63,7 @@ int main(int argc, char *argv[]) { assert(addr->ia.sin_port==htons(6789)); assert(addr->ia.sin_addr.s_addr==htonl(0xAC1037A0)); assert(inetAddressToString(addr)=="172.16.55.160:6789"); -cout<<'\t'<at(1); assert(addr->ia.sin_family==AF_INET); @@ -100,13 +100,13 @@ cout<<'\t'<ia.sin_family==AF_INET); - assert(inetAddressToString(addr)=="127.0.0.1"); + assert(inetAddressToString(addr)=="127.0.0.1:0"); cout<<'\t'<ia.sin_family==AF_INET); - assert(inetAddressToString(addr)=="10.10.12.11"); + assert(inetAddressToString(addr)=="10.10.12.11:0"); cout<<'\t'<