diff options
Diffstat (limited to 'apps/hiperf')
-rw-r--r-- | apps/hiperf/src/common.h | 14 | ||||
-rw-r--r-- | apps/hiperf/src/main.cc | 22 | ||||
-rw-r--r-- | apps/hiperf/src/server.cc | 5 |
3 files changed, 22 insertions, 19 deletions
diff --git a/apps/hiperf/src/common.h b/apps/hiperf/src/common.h index 3a17e0c40..1565e63f7 100644 --- a/apps/hiperf/src/common.h +++ b/apps/hiperf/src/common.h @@ -174,20 +174,6 @@ class PayloadSize { transport_size - fec_size; } - static Packet::Format getFormatFromPrefix(const Prefix &prefix, - bool ah = false) { - switch (prefix.getAddressFamily()) { - case AF_INET: - return ah ? HICN_PACKET_FORMAT_IPV4_TCP_AH - : HICN_PACKET_FORMAT_IPV4_TCP; - case AF_INET6: - return ah ? HICN_PACKET_FORMAT_IPV6_TCP_AH - : HICN_PACKET_FORMAT_IPV6_TCP; - default: - return HICN_PACKET_FORMAT_NONE; - } - } - private: std::size_t mtu_; Packet::Format format_; diff --git a/apps/hiperf/src/main.cc b/apps/hiperf/src/main.cc index ac0f64d1d..d655b1fe3 100644 --- a/apps/hiperf/src/main.cc +++ b/apps/hiperf/src/main.cc @@ -19,6 +19,15 @@ namespace hiperf { +static std::unordered_map<std::string, hicn_packet_format_t> const + packet_format_map = {{"ipv4_tcp", HICN_PACKET_FORMAT_IPV4_TCP}, + {"ipv6_tcp", HICN_PACKET_FORMAT_IPV6_TCP}, + {"new", HICN_PACKET_FORMAT_NEW}}; + +#define TO_LOWER(s) \ + std::transform(s.begin(), s.end(), s.begin(), \ + [](unsigned char c) { return std::tolower(c); }); + void usage() { LoggerInfo() << "HIPERF - Instrumentation tool for performing active network" "measurements with hICN"; @@ -174,6 +183,8 @@ void usage() { << "Print the stats report <nb_iterations> times and exit.\n" << "\t\t\t\t\tThis option limits the duration of the run to " "<nb_iterations> * <stats_interval> milliseconds."; + LoggerInfo() << "-w <packet_format> Packet format (without signature, " + "defaults to IPV6_TCP)"; } int main(int argc, char *argv[]) { @@ -208,7 +219,7 @@ int main(int argc, char *argv[]) { while ( (opt = getopt(argc, argv, "A:B:CDE:F:G:HIJ:K:L:M:NP:RST:U:W:X:ab:c:d:e:f:g:hi:j:k:lm:" - "n:op:qrs:tu:vwxy:z:")) != -1) { + "n:op:qrs:tu:vw:xy:z:")) != -1) { switch (opt) { // Common case 'D': { @@ -270,8 +281,13 @@ int main(int argc, char *argv[]) { break; } case 'w': { - client_configuration.packet_format_ = HICN_PACKET_FORMAT_IPV6_UDP; - server_configuration.packet_format_ = HICN_PACKET_FORMAT_IPV6_UDP; + std::string packet_format_s = std::string(optarg); + TO_LOWER(packet_format_s); + auto it = packet_format_map.find(std::string(optarg)); + if (it == packet_format_map.end()) + throw std::runtime_error("Bad packet format"); + client_configuration.packet_format_ = it->second; + server_configuration.packet_format_ = it->second; break; } case 'k': { diff --git a/apps/hiperf/src/server.cc b/apps/hiperf/src/server.cc index ee236f358..b338c69df 100644 --- a/apps/hiperf/src/server.cc +++ b/apps/hiperf/src/server.cc @@ -143,8 +143,9 @@ class HIperfServer::Impl { signer); // Compute maximum payload size - Packet::Format format = PayloadSize::getFormatFromPrefix( - configuration_.name_, !configuration_.manifest_max_capacity_); + Packet::Format format = configuration_.packet_format_; + if (!configuration_.manifest_max_capacity_) + format = Packet::toAHFormat(format); payload_size_max_ = PayloadSize(format).getPayloadSizeMax( configuration_.rtc_ ? RTC_HEADER_SIZE : 0, configuration_.fec_type_.empty() ? 0 : FEC_HEADER_MAX_SIZE, |