summaryrefslogtreecommitdiffstats
path: root/apps/hiperf
diff options
context:
space:
mode:
Diffstat (limited to 'apps/hiperf')
-rw-r--r--apps/hiperf/src/common.h14
-rw-r--r--apps/hiperf/src/main.cc22
-rw-r--r--apps/hiperf/src/server.cc5
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,