00001 #include "otsdaq-core/NetworkUtilities/NetworkConverters.h"
00002 #include "otsdaq-core/MessageFacility/MessageFacility.h"
00003 #include "otsdaq-core/Macros/CoutMacros.h"
00004 #include <arpa/inet.h>
00005 #include <iostream>
00006
00007 using namespace ots;
00008
00009
00010
00011 NetworkConverters::NetworkConverters()
00012 {}
00013
00014
00015 NetworkConverters::~NetworkConverters()
00016 {}
00017
00018
00019 std::string NetworkConverters::nameToStringIP(const std::string& value)
00020 {
00021 struct sockaddr_in socketAddress;
00022 if(inet_aton(value.c_str(), &socketAddress.sin_addr) == 0)
00023 std::cout << __COUT_HDR_FL__ << "ERROR: Invalid IP address " << value << std::endl;
00024 return networkToStringIP(socketAddress.sin_addr.s_addr);
00025 }
00026
00027
00028 std::string NetworkConverters::stringToNameIP(const std::string& value)
00029 {
00030 struct sockaddr_in socketAddress;
00031 socketAddress.sin_addr.s_addr = stringToNetworkIP(value);
00032 return std::string(inet_ntoa(socketAddress.sin_addr));
00033 }
00034
00035 uint32_t NetworkConverters::stringToNetworkIP(const std::string& value)
00036 {
00037 return unsignedToNetworkIP(stringToUnsignedIP(value));
00038 }
00039
00040
00041 std::string NetworkConverters::networkToStringIP(uint32_t value)
00042 {
00043 return unsignedToStringIP(networkToUnsignedIP(value));
00044 }
00045
00046
00047 std::string NetworkConverters::unsignedToStringIP(uint32_t value)
00048 {
00049 std::string returnValue;
00050 returnValue += (value>>24)&0xff;
00051 returnValue += (value>>16)&0xff;
00052 returnValue += (value>>8 )&0xff;
00053 returnValue += (value )&0xff;
00054 return returnValue;
00055 }
00056
00057
00058 uint32_t NetworkConverters::stringToUnsignedIP(const std::string& value)
00059 {
00060 return ((((uint32_t)value[0])&0xff)<<24) + ((((uint32_t)value[1])&0xff)<<16) + ((((uint32_t)value[2])&0xff)<<8) + (((uint32_t)value[3])&0xff);
00061 }
00062
00063
00064 uint32_t NetworkConverters::unsignedToNetworkIP(uint32_t value)
00065 {
00066 return htonl(value);
00067 }
00068
00069
00070 uint32_t NetworkConverters::networkToUnsignedIP(uint32_t value)
00071 {
00072 return ntohl(value);
00073 }
00074
00075
00076 uint16_t NetworkConverters::stringToNetworkPort(const std::string& value)
00077 {
00078 return unsignedToNetworkPort(stringToUnsignedPort(value));
00079 }
00080
00081
00082 std::string NetworkConverters::networkToStringPort(uint16_t value)
00083 {
00084 return unsignedToStringPort(networkToUnsignedPort(value));
00085 }
00086
00087
00088 std::string NetworkConverters::unsignedToStringPort(uint16_t value)
00089 {
00090 std::string returnValue;
00091 returnValue += (value>>8 )&0xff;
00092 returnValue += (value )&0xff;
00093 return returnValue;
00094 }
00095
00096
00097 uint16_t NetworkConverters::stringToUnsignedPort(const std::string& value)
00098 {
00099 return ((((uint32_t)value[0])&0xff)<<8) + (((uint32_t)value[1])&0xff);
00100 }
00101
00102
00103 uint16_t NetworkConverters::unsignedToNetworkPort(uint16_t value)
00104 {
00105 return htons(value);
00106 }
00107
00108
00109 uint16_t NetworkConverters::networkToUnsignedPort(uint16_t value)
00110 {
00111 return ntohs(value);
00112 }