summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-05-15 14:31:17 +0200
committerMauro Sardara <msardara@cisco.com>2019-05-15 15:26:20 +0200
commit31f349f4c4457344efcff20ccadfed53042891b1 (patch)
tree3158a7216fc3ede9beb603ef6267255238014de9
parent8a4273ffe83b46bc018da58135427d40012282b8 (diff)
[HICN-196] Add mtu to command line parameters.
Change-Id: Ib6932c23408630be1ca98146d22ac494ad5e5077 Signed-off-by: Mauro Sardara <msardara@cisco.com>
-rw-r--r--apps/http-proxy/main.cc17
-rw-r--r--apps/http-proxy/src/ATSConnector.cc3
-rw-r--r--apps/http-proxy/src/IcnReceiver.cc11
-rw-r--r--apps/http-proxy/src/IcnReceiver.h3
4 files changed, 25 insertions, 9 deletions
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_;