Skip to content
Snippets Groups Projects

First unit tests

Merged Leon Dietrich requested to merge first_unit_tests into master
Compare and Show latest version
3 files
+ 49
3
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -4,7 +4,6 @@
@@ -4,7 +4,6 @@
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <unistd.h>
#include <unistd.h>
#include <list>
#include <arpa/inet.h>
#include <arpa/inet.h>
@@ -66,16 +65,17 @@ namespace rmrf::net {
@@ -66,16 +65,17 @@ namespace rmrf::net {
} else {
} else {
throw std::invalid_argument("The resulting address family should exist. Instead it is " + std::to_string(looked_up_addrs->ai_family));
throw std::invalid_argument("The resulting address family should exist. Instead it is " + std::to_string(looked_up_addrs->ai_family));
}
}
return false;
return true;
}
}
socketaddr get_first_general_socketaddr(const std::string& interface_description, const uint16_t port, const socket_t socket_type) {
std::list<socketaddr> get_socketaddr_list(const std::string& interface_description, const uint16_t port, const socket_t socket_type) {
// TODO handle lookup of multiple addresses
// TODO handle lookup of multiple addresses
struct addrinfo hints = {};
struct addrinfo hints = {};
struct addrinfo* addrs;
struct addrinfo* addrs;
hints.ai_family = AF_INET6;
hints.ai_family = AF_INET6;
hints.ai_socktype = socket_type == TCP ? SOCK_STREAM : SOCK_DGRAM;
hints.ai_socktype = socket_type == TCP ? SOCK_STREAM : SOCK_DGRAM;
hints.ai_protocol = socket_type == TCP ? IPPROTO_TCP : IPPROTO_UDP;
hints.ai_protocol = socket_type == TCP ? IPPROTO_TCP : IPPROTO_UDP;
 
auto dns_error = getaddrinfo(interface_description.c_str(), NULL, &hints, &addrs);
auto dns_error = getaddrinfo(interface_description.c_str(), NULL, &hints, &addrs);
if (dns_error != 0) {
if (dns_error != 0) {
hints.ai_family = AF_UNSPEC;
hints.ai_family = AF_UNSPEC;
@@ -90,6 +90,11 @@ namespace rmrf::net {
@@ -90,6 +90,11 @@ namespace rmrf::net {
decode_address(l, result_ptr, port);
decode_address(l, result_ptr, port);
}
}
freeaddrinfo(addrs);
freeaddrinfo(addrs);
 
return l;
 
}
 
 
socketaddr get_first_general_socketaddr(const std::string& interface_description, const uint16_t port, const socket_t socket_type) {
 
const auto l = get_socketaddr_list(interface_description, port, socket_type);
if (l.size() > 0) {
if (l.size() > 0) {
return l.front();
return l.front();
} else {
} else {
Loading