diff --git a/slsDetectorSoftware/src/CmdProxy.cpp b/slsDetectorSoftware/src/CmdProxy.cpp index ef34253b0..2f66ad821 100644 --- a/slsDetectorSoftware/src/CmdProxy.cpp +++ b/slsDetectorSoftware/src/CmdProxy.cpp @@ -1388,34 +1388,34 @@ UdpDestination CmdProxy::getUdpEntry() { std::string key = it.substr(0, pos); std::string value = it.substr(pos + 1); if (key == "entry") { - udpDestination.setEntry(StringTo(value)); + udpDestination.entry = StringTo(value); hasEntry = true; } else if (key == "ip") { if (value == "auto") { auto val = getIpFromAuto(); LOG(logINFO) << "Setting udp_dstip of detector " << det_id << " to " << val; - udpDestination.setIp(val); + udpDestination.ip = val; } else { - udpDestination.setIp(IpAddr(value)); + udpDestination.ip = IpAddr(value); } } else if (key == "ip2") { if (value == "auto") { auto val = getIpFromAuto(); LOG(logINFO) << "Setting udp_dstip2 of detector " << det_id << " to " << val; - udpDestination.setIp2(val); + udpDestination.ip2 = val; } else { - udpDestination.setIp2(IpAddr(value)); + udpDestination.ip2 = IpAddr(value); } } else if (key == "mac") { - udpDestination.setMac(MacAddr(value)); + udpDestination.mac = MacAddr(value); } else if (key == "mac2") { - udpDestination.setMac2(MacAddr(value)); + udpDestination.mac2 = MacAddr(value); } else if (key == "port") { - udpDestination.setPort(StringTo(value)); + udpDestination.port = StringTo(value); } else if (key == "port2") { - udpDestination.setPort2(StringTo(value)); + udpDestination.port2 = StringTo(value); } } if (!hasEntry) { diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index 334e74866..54e5b927d 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -945,24 +945,24 @@ sls::UdpDestination Module::getDestinationUDPList(const uint32_t entry) const { void Module::setDestinationUDPList(const sls::UdpDestination dest) { // set them in the default way so the receivers are also set up - if (dest.getEntry() == 0) { - if (dest.getPort() != 0) { - setDestinationUDPPort(dest.getPort()); + if (dest.entry == 0) { + if (dest.port != 0) { + setDestinationUDPPort(dest.port); } - if (dest.getIp() != 0) { - setDestinationUDPIP(IpAddr(dest.getIp())); + if (dest.ip != 0) { + setDestinationUDPIP(dest.ip); } - if (dest.getMac() != 0) { - setDestinationUDPMAC(MacAddr(dest.getMac())); + if (dest.mac != 0) { + setDestinationUDPMAC(dest.mac); } - if (dest.getPort2() != 0) { - setDestinationUDPPort2(dest.getPort2()); + if (dest.port2 != 0) { + setDestinationUDPPort2(dest.port2); } - if (dest.getIp2() != 0) { - setDestinationUDPIP2(IpAddr(dest.getIp2())); + if (dest.ip2 != 0) { + setDestinationUDPIP2(dest.ip2); } - if (dest.getMac2() != 0) { - setDestinationUDPMAC2(MacAddr(dest.getMac2())); + if (dest.mac2 != 0) { + setDestinationUDPMAC2(dest.mac2); } } else { sendToDetector(F_SET_DEST_UDP_LIST, dest, nullptr); diff --git a/slsSupportLib/include/sls/network_utils.h b/slsSupportLib/include/sls/network_utils.h index ac4b3333e..68b090651 100644 --- a/slsSupportLib/include/sls/network_utils.h +++ b/slsSupportLib/include/sls/network_utils.h @@ -30,7 +30,7 @@ class IpAddr { return addr_ != other; } constexpr uint32_t uint32() const noexcept { return addr_; } -}; +} __attribute__((packed)); class MacAddr { private: @@ -57,62 +57,23 @@ class MacAddr { return addr_ != other; } constexpr uint64_t uint64() const noexcept { return addr_; } -}; - -class UdpDestination { - private: - uint32_t entry_{}; - uint32_t port_{}; - uint32_t port2_{}; - uint32_t ip_{}; - uint32_t ip2_{}; - uint64_t mac_{}; - uint64_t mac2_{}; - - public: - constexpr UdpDestination() noexcept = default; - explicit constexpr UdpDestination(uint32_t entry, uint32_t port = 0, - IpAddr ip = {}, MacAddr mac = {}, - uint32_t port2 = 0, IpAddr ip2 = {}, - MacAddr mac2 = {}) - : entry_(entry), port_(port), port2_(port2), ip_(ip.uint32()), - ip2_(ip2.uint32()), mac_(mac.uint64()), mac2_(mac2.uint64()) {} - - uint32_t getEntry() const noexcept { return entry_; } - - void setEntry(const uint32_t value) { entry_ = value; } - - uint32_t getPort() const noexcept { return port_; } - - void setPort(const uint32_t value) { port_ = value; } - - uint32_t getPort2() const noexcept { return port2_; } - - void setPort2(const uint32_t value) { port2_ = value; } - - IpAddr getIp() const noexcept { return IpAddr(ip_); } - - void setIp(const IpAddr value) { ip_ = value.uint32(); } - - IpAddr getIp2() const noexcept { return IpAddr(ip2_); } - - void setIp2(const IpAddr value) { ip2_ = value.uint32(); } - - MacAddr getMac() const noexcept { return MacAddr(mac_); } - - void setMac(const MacAddr value) { mac_ = value.uint64(); } - - MacAddr getMac2() const noexcept { return MacAddr(mac2_); } - - void setMac2(const MacAddr value) { mac2_ = value.uint64(); } +} __attribute__((packed)); +struct UdpDestination { + uint32_t entry{}; + uint32_t port{}; + uint32_t port2{}; + IpAddr ip; + IpAddr ip2; + MacAddr mac; + MacAddr mac2; std::string str() const; constexpr bool operator==(const UdpDestination &other) const { - return ((entry_ == other.entry_) && (port_ == other.port_) && - (port2_ == other.port2_) && (ip_ == other.ip_) && - (ip2_ == other.ip2_) && (mac_ == other.mac_) && - (mac2_ == other.mac2_)); + return ((entry == other.entry) && (port == other.port) && + (port2 == other.port2) && (ip== other.ip) && + (ip2 == other.ip2) && (mac == other.mac) && + (mac2 == other.mac2)); } } __attribute__((packed)); diff --git a/slsSupportLib/src/network_utils.cpp b/slsSupportLib/src/network_utils.cpp index 8d13684cd..56507e8f1 100644 --- a/slsSupportLib/src/network_utils.cpp +++ b/slsSupportLib/src/network_utils.cpp @@ -72,18 +72,18 @@ std::string MacAddr::hex() const { return to_hex(); } std::string UdpDestination::str() const { std::ostringstream oss; oss << '[' << std::endl - << "entry " << entry_ << std::endl - << "ip " << ip_ << std::endl - << "mac " << mac_ << std::endl - << "port " << port_ << std::endl; - if (port2_ != 0) { - oss << "port2 " << port2_ << std::endl; + << "entry " << entry << std::endl + << "ip " << ip << std::endl + << "mac " << mac << std::endl + << "port " << port << std::endl; + if (port2 != 0) { + oss << "port2 " << port2 << std::endl; } - if (ip2_ != 0) { - oss << "ip2 " << ip2_ << std::endl; + if (ip2 != 0) { + oss << "ip2 " << ip2 << std::endl; } - if (mac2_ != 0) { - oss << "mac2 " << mac2_ << std::endl; + if (mac2 != 0) { + oss << "mac2 " << mac2 << std::endl; } oss << ']'; return oss.str(); diff --git a/slsSupportLib/tests/test-file_utils.cpp b/slsSupportLib/tests/test-file_utils.cpp index 254c52055..b4f71cfb9 100644 --- a/slsSupportLib/tests/test-file_utils.cpp +++ b/slsSupportLib/tests/test-file_utils.cpp @@ -9,7 +9,7 @@ TEST_CASE("Get size of empty file") { char fname[] = "temfile_XXXXXX"; std::ifstream ifs(fname); auto size = sls::getFileSize(ifs); - REQUIRE(size == 0); + REQUIRE(size <= 0); // -1 or zero } TEST_CASE("Get size of file with data") { diff --git a/slsSupportLib/tests/test-network_utils.cpp b/slsSupportLib/tests/test-network_utils.cpp index 295da4c10..8bb1fe474 100644 --- a/slsSupportLib/tests/test-network_utils.cpp +++ b/slsSupportLib/tests/test-network_utils.cpp @@ -112,4 +112,12 @@ TEST_CASE("Copy construct a MacAddr") { CHECK(addr == addr2); } + +TEST_CASE("udp dst struct"){ + static_assert(sizeof(UdpDestination) == 36); + UdpDestination dst{}; + REQUIRE(dst.ip == 0); +} + + // TODO!(Erik) Look up a real hostname and verify the IP