diff options
author | Mauro Sardara <msardara@cisco.com> | 2019-05-24 18:09:43 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2019-05-24 18:09:43 +0000 |
commit | cb549cad953a0578f6908382a90e4eb01b2b26a6 (patch) | |
tree | a4754b49f1a7020f65be645f86b917fcd0811db3 /apps | |
parent | 052cc4a393236f0433c61cc1d10c6d90f0194321 (diff) | |
parent | 2f57713f83d686cca0419f294e0bc421dda693e1 (diff) |
Merge "[HICN-206] Customize first part of the name for HTTP."
Diffstat (limited to 'apps')
-rw-r--r-- | apps/higet/higet.cc | 21 | ||||
-rw-r--r-- | apps/http-proxy/main.cc | 19 | ||||
-rw-r--r-- | apps/http-proxy/src/IcnReceiver.cc | 15 | ||||
-rw-r--r-- | apps/http-proxy/src/IcnReceiver.h | 3 |
4 files changed, 35 insertions, 23 deletions
diff --git a/apps/higet/higet.cc b/apps/higet/higet.cc index 7662c1a2b..fa19528f8 100644 --- a/apps/higet/higet.cc +++ b/apps/higet/higet.cc @@ -31,6 +31,7 @@ typedef struct { std::string file_name; bool print_headers; std::string producer_certificate; + std::string ipv6_first_word; } Configuration; void processResponse(Configuration &conf, @@ -90,6 +91,9 @@ void usage(char *program_name) { << std::endl; std::cerr << "-S = print server response" << std::endl; + std::cerr << "-P = first word of the ipv6 name of " + "the response" + << std::endl; std::cerr << "example:" << std::endl; std::cerr << "\t" << program_name << " -O - http://origin/index.html" << std::endl; @@ -106,11 +110,12 @@ int main(int argc, char **argv) { conf.file_name = ""; conf.print_headers = false; conf.producer_certificate = ""; + conf.ipv6_first_word = "b001"; std::string name("http://webserver/sintel/mpd"); int opt; - while ((opt = getopt(argc, argv, "O:Sc:")) != -1) { + while ((opt = getopt(argc, argv, "O:Sc:P:")) != -1) { switch (opt) { case 'O': conf.file_name = optarg; @@ -121,6 +126,9 @@ int main(int argc, char **argv) { case 'c': conf.producer_certificate = optarg; break; + case 'P': + conf.ipv6_first_word = optarg; + break; case 'h': default: usage(argv[0]); @@ -128,11 +136,10 @@ int main(int argc, char **argv) { } } - if (argv[optind] == 0) { - std::cerr << "Using default name " << name << std::endl; - } else { - name = argv[optind]; - } + name = argv[optind]; + + std::cerr << "Using name " << name << " and name first word " + << conf.ipv6_first_word << std::endl; if (conf.file_name.empty()) { conf.file_name = name.substr(1 + name.find_last_of("/")); @@ -149,7 +156,7 @@ int main(int argc, char **argv) { t1 = std::chrono::system_clock::now(); - connection.get(name, headers); + connection.get(name, headers, {}, nullptr, nullptr, conf.ipv6_first_word); processResponse(conf, connection.response()); #ifdef _WIN32 diff --git a/apps/http-proxy/main.cc b/apps/http-proxy/main.cc index a7020298b..8dfaec77e 100644 --- a/apps/http-proxy/main.cc +++ b/apps/http-proxy/main.cc @@ -19,10 +19,11 @@ using namespace transport; int usage(char* program) { std::cerr << "ICN Plugin not loaded!" << std::endl; - std::cerr << "USAGE: " << program << "\n" - << "[HTTP_PREFIX] -a [SERVER_IP_ADDRESS] " - "-p [SERVER_PORT] -c [CACHE_SIZE] -m [MTU]" - << std::endl; + std::cerr + << "USAGE: " << program << "\n" + << "[HTTP_PREFIX] -a [SERVER_IP_ADDRESS] " + "-p [SERVER_PORT] -c [CACHE_SIZE] -m [MTU] -P [FIRST_IPv6_WORD_HEX]" + << std::endl; return -1; } @@ -32,9 +33,10 @@ int main(int argc, char** argv) { std::string port("80"); std::string cache_size("50000"); std::string mtu("1500"); + std::string first_ipv6_word("b001"); int opt; - while ((opt = getopt(argc, argv, "a:p:c:m:")) != -1) { + while ((opt = getopt(argc, argv, "a:p:c:m:P:")) != -1) { switch (opt) { case 'a': ip_address = optarg; @@ -48,6 +50,9 @@ int main(int argc, char** argv) { case 'm': mtu = optarg; break; + case 'P': + first_ipv6_word = optarg; + break; case 'h': default: return usage(argv[0]); @@ -63,9 +68,9 @@ int main(int argc, char** argv) { std::cout << "Connecting to " << ip_address << " port " << port << " Cache size " << cache_size << " Prefix " << prefix << " MTU " - << mtu << std::endl; + << mtu << " IPv6 first word " << first_ipv6_word << std::endl; transport::AsyncConsumerProducer proxy(prefix, ip_address, port, cache_size, - mtu); + mtu, first_ipv6_word); proxy.run(); diff --git a/apps/http-proxy/src/IcnReceiver.cc b/apps/http-proxy/src/IcnReceiver.cc index d4e922c11..18553d84b 100644 --- a/apps/http-proxy/src/IcnReceiver.cc +++ b/apps/http-proxy/src/IcnReceiver.cc @@ -24,7 +24,8 @@ namespace transport { -core::Prefix generatePrefix(const std::string& prefix_url) { +core::Prefix generatePrefix(const std::string& prefix_url, + std::string& first_ipv6_word) { const char* str = prefix_url.c_str(); uint16_t pos = 0; @@ -39,7 +40,7 @@ core::Prefix generatePrefix(const std::string& prefix_url) { uint32_t locator_hash = utils::hash::fnv32_buf(str, strlen(str)); std::stringstream stream; - stream << std::hex << http::default_values::ipv6_first_word << ":0"; + stream << first_ipv6_word << ":0"; for (uint16_t* word = (uint16_t*)&locator_hash; std::size_t(word) < (std::size_t(&locator_hash) + sizeof(locator_hash)); @@ -52,12 +53,10 @@ core::Prefix generatePrefix(const std::string& prefix_url) { return core::Prefix(stream.str(), 64); } -AsyncConsumerProducer::AsyncConsumerProducer(const std::string& prefix, - std::string& ip_address, - std::string& port, - std::string& cache_size, - std::string& mtu) - : prefix_(generatePrefix(prefix)), +AsyncConsumerProducer::AsyncConsumerProducer( + const std::string& prefix, std::string& ip_address, std::string& port, + std::string& cache_size, std::string& mtu, std::string& first_ipv6_word) + : prefix_(generatePrefix(prefix, first_ipv6_word)), producer_socket_(), ip_address_(ip_address), port_(port), diff --git a/apps/http-proxy/src/IcnReceiver.h b/apps/http-proxy/src/IcnReceiver.h index ea4eeb010..67f615ad7 100644 --- a/apps/http-proxy/src/IcnReceiver.h +++ b/apps/http-proxy/src/IcnReceiver.h @@ -35,7 +35,8 @@ class AsyncConsumerProducer { public: explicit AsyncConsumerProducer(const std::string& prefix, std::string& ip_address, std::string& port, - std::string& cache_size, std::string& mtu); + std::string& cache_size, std::string& mtu, + std::string& first_ipv6_word); void start(); |