tdaq-develop-2025-02-12
NetworkConverters.cc
1 #include "otsdaq/NetworkUtilities/NetworkConverters.h"
2 #include <arpa/inet.h>
3 #include <iostream>
4 #include "otsdaq/Macros/CoutMacros.h"
5 #include "otsdaq/MessageFacility/MessageFacility.h"
6 
7 using namespace ots;
8 
9 //==============================================================================
10 NetworkConverters::NetworkConverters() {}
11 
12 //==============================================================================
13 NetworkConverters::~NetworkConverters() {}
14 
15 //==============================================================================
16 std::string NetworkConverters::nameToStringIP(const std::string& value)
17 {
18  struct sockaddr_in socketAddress;
19  if(inet_aton(value.c_str(), &socketAddress.sin_addr) == 0)
20  std::cout << __COUT_HDR_FL__ << "ERROR: Invalid IP address " << value
21  << std::endl;
22  return networkToStringIP(socketAddress.sin_addr.s_addr);
23 }
24 
25 //==============================================================================
26 std::string NetworkConverters::stringToNameIP(const std::string& value)
27 {
28  struct sockaddr_in socketAddress;
29  socketAddress.sin_addr.s_addr = stringToNetworkIP(value);
30  return std::string(inet_ntoa(socketAddress.sin_addr));
31 }
32 //==============================================================================
33 uint32_t NetworkConverters::stringToNetworkIP(const std::string& value)
34 {
35  return unsignedToNetworkIP(stringToUnsignedIP(value));
36 }
37 
38 //==============================================================================
39 std::string NetworkConverters::networkToStringIP(uint32_t value)
40 {
41  return unsignedToStringIP(networkToUnsignedIP(value));
42 }
43 
44 //==============================================================================
45 std::string NetworkConverters::unsignedToStringIP(uint32_t value)
46 {
47  std::string returnValue;
48  returnValue += (value >> 24) & 0xff;
49  returnValue += (value >> 16) & 0xff;
50  returnValue += (value >> 8) & 0xff;
51  returnValue += (value) & 0xff;
52  return returnValue;
53 }
54 
55 //==============================================================================
56 uint32_t NetworkConverters::stringToUnsignedIP(const std::string& value)
57 {
58  return ((((uint32_t)value[0]) & 0xff) << 24) + ((((uint32_t)value[1]) & 0xff) << 16) +
59  ((((uint32_t)value[2]) & 0xff) << 8) + (((uint32_t)value[3]) & 0xff);
60 }
61 
62 //==============================================================================
63 uint32_t NetworkConverters::unsignedToNetworkIP(uint32_t value) { return htonl(value); }
64 
65 //==============================================================================
66 uint32_t NetworkConverters::networkToUnsignedIP(uint32_t value) { return ntohl(value); }
67 
68 //==============================================================================
69 uint16_t NetworkConverters::stringToNetworkPort(const std::string& value)
70 {
71  return unsignedToNetworkPort(stringToUnsignedPort(value));
72 }
73 
74 //==============================================================================
75 std::string NetworkConverters::networkToStringPort(uint16_t value)
76 {
77  return unsignedToStringPort(networkToUnsignedPort(value));
78 }
79 
80 //==============================================================================
81 std::string NetworkConverters::unsignedToStringPort(uint16_t value)
82 {
83  std::string returnValue;
84  returnValue += (value >> 8) & 0xff;
85  returnValue += (value) & 0xff;
86  return returnValue;
87 }
88 
89 //==============================================================================
90 uint16_t NetworkConverters::stringToUnsignedPort(const std::string& value)
91 {
92  return ((((uint32_t)value[0]) & 0xff) << 8) + (((uint32_t)value[1]) & 0xff);
93 }
94 
95 //==============================================================================
96 uint16_t NetworkConverters::unsignedToNetworkPort(uint16_t value) { return htons(value); }
97 
98 //==============================================================================
99 uint16_t NetworkConverters::networkToUnsignedPort(uint16_t value) { return ntohs(value); }