diff options
Diffstat (limited to 'apps/http-proxy')
-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 |
3 files changed, 21 insertions, 16 deletions
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(); |