From 31f349f4c4457344efcff20ccadfed53042891b1 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Wed, 15 May 2019 14:31:17 +0200 Subject: [HICN-196] Add mtu to command line parameters. Change-Id: Ib6932c23408630be1ca98146d22ac494ad5e5077 Signed-off-by: Mauro Sardara --- apps/http-proxy/main.cc | 17 +++++++++++------ apps/http-proxy/src/ATSConnector.cc | 3 ++- apps/http-proxy/src/IcnReceiver.cc | 11 ++++++++++- apps/http-proxy/src/IcnReceiver.h | 3 ++- 4 files changed, 25 insertions(+), 9 deletions(-) (limited to 'apps') diff --git a/apps/http-proxy/main.cc b/apps/http-proxy/main.cc index 0dedbd8a7..fe1bda5de 100644 --- a/apps/http-proxy/main.cc +++ b/apps/http-proxy/main.cc @@ -19,9 +19,9 @@ using namespace transport; int usage(char* program) { std::cerr << "ICN Plugin not loaded!" << std::endl; - std::cerr << "USAGE: " << program + std::cerr << "USAGE: " << program << "\n" << "[HTTP_PREFIX] -a [SERVER_IP_ADDRESS] " - "-p [SERVER_PORT] -c [CACHE_SIZE]" + "-p [SERVER_PORT] -c [CACHE_SIZE] -m [MTU]" << std::endl; return -1; } @@ -31,9 +31,10 @@ int main(int argc, char** argv) { std::string ip_address("127.0.0.1"); std::string port("80"); std::string cache_size("50000"); + std::string mtu("1500"); int opt; - while ((opt = getopt(argc, argv, "a:p:c:")) != -1) { + while ((opt = getopt(argc, argv, "a:p:c:m:")) != -1) { switch (opt) { case 'a': prefix = optarg; @@ -44,6 +45,9 @@ int main(int argc, char** argv) { case 'c': cache_size = optarg; break; + case 'm': + mtu = optarg; + break; case 'h': default: return usage(argv[0]); @@ -58,9 +62,10 @@ int main(int argc, char** argv) { } std::cout << "Connecting to " << ip_address << " port " << port - << " Cache size " << cache_size << " Prefix " << prefix - << std::endl; - transport::AsyncConsumerProducer proxy(prefix, ip_address, port, cache_size); + << " Cache size " << cache_size << " Prefix " << prefix << " MTU " + << mtu << std::endl; + transport::AsyncConsumerProducer proxy(prefix, ip_address, port, cache_size, + mtu); proxy.run(); diff --git a/apps/http-proxy/src/ATSConnector.cc b/apps/http-proxy/src/ATSConnector.cc index 287907347..a1c8c9708 100644 --- a/apps/http-proxy/src/ATSConnector.cc +++ b/apps/http-proxy/src/ATSConnector.cc @@ -193,7 +193,8 @@ void ATSConnector::doConnect() { } } else { - TRANSPORT_LOGE("Impossible to reconnect."); + TRANSPORT_LOGE("Impossible to reconnect: %s", + ec.message().c_str()); close(); } }); diff --git a/apps/http-proxy/src/IcnReceiver.cc b/apps/http-proxy/src/IcnReceiver.cc index 4ad616168..fc6837a2c 100644 --- a/apps/http-proxy/src/IcnReceiver.cc +++ b/apps/http-proxy/src/IcnReceiver.cc @@ -55,12 +55,14 @@ core::Prefix generatePrefix(const std::string& prefix_url) { AsyncConsumerProducer::AsyncConsumerProducer(const std::string& prefix, std::string& ip_address, std::string& port, - std::string& cache_size) + std::string& cache_size, + std::string& mtu) : prefix_(generatePrefix(prefix)), producer_socket_(), ip_address_(ip_address), port_(port), cache_size_(std::stoul(cache_size)), + mtu_(std::stoul(mtu)), request_counter_(0), signals_(io_service_, SIGINT, SIGQUIT), connector_(io_service_, ip_address_, port_, @@ -78,6 +80,13 @@ AsyncConsumerProducer::AsyncConsumerProducer(const std::string& prefix, TRANSPORT_LOGD("Warning: output buffer size has not been set."); } + ret = producer_socket_.setSocketOption( + interface::GeneralTransportOptions::DATA_PACKET_SIZE, mtu_); + + if (ret != SOCKET_OPTION_SET) { + TRANSPORT_LOGD("Warning: mtu has not been set."); + } + producer_socket_.registerPrefix(prefix_); // Let the main thread to catch SIGINT and SIGQUIT diff --git a/apps/http-proxy/src/IcnReceiver.h b/apps/http-proxy/src/IcnReceiver.h index 7d5c5e4c8..61ca4333a 100644 --- a/apps/http-proxy/src/IcnReceiver.h +++ b/apps/http-proxy/src/IcnReceiver.h @@ -31,7 +31,7 @@ class AsyncConsumerProducer { public: explicit AsyncConsumerProducer(const std::string& prefix, std::string& ip_address, std::string& port, - std::string& cache_size); + std::string& cache_size, std::string& mtu); void start(); @@ -55,6 +55,7 @@ class AsyncConsumerProducer { std::string ip_address_; std::string port_; uint32_t cache_size_; + uint32_t mtu_; uint64_t request_counter_; asio::signal_set signals_; -- cgit 1.2.3-korg