summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-05-24 18:09:43 +0000
committerGerrit Code Review <gerrit@fd.io>2019-05-24 18:09:43 +0000
commitcb549cad953a0578f6908382a90e4eb01b2b26a6 (patch)
treea4754b49f1a7020f65be645f86b917fcd0811db3 /apps
parent052cc4a393236f0433c61cc1d10c6d90f0194321 (diff)
parent2f57713f83d686cca0419f294e0bc421dda693e1 (diff)
Merge "[HICN-206] Customize first part of the name for HTTP."
Diffstat (limited to 'apps')
-rw-r--r--apps/higet/higet.cc21
-rw-r--r--apps/http-proxy/main.cc19
-rw-r--r--apps/http-proxy/src/IcnReceiver.cc15
-rw-r--r--apps/http-proxy/src/IcnReceiver.h3
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();