1#ifndef NDNPH_CLI_UPLINK_HPP
2#define NDNPH_CLI_UPLINK_HPP
4#include "../face/face.hpp"
5#include "../port/transport/port.hpp"
13#ifdef NDNPH_PORT_TRANSPORT_MEMIF
15 uint16_t dataroom =
static_cast<uint16_t
>(std::max(0, *mtu));
16 if (!transport.
begin(socketName, 0, dataroom)) {
20 static Face face(transport);
32 const char* env = getenv(
"NDNPH_UPLINK_UDP_PORT");
35 if (port <= 0 || port > UINT16_MAX) {
41 env = getenv(
"NDNPH_UPLINK_UDP_LISTEN");
42 if (env !=
nullptr && env[0] ==
'1') {
46 raddr4.sin_family = AF_INET;
47 raddr4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
48 raddr4.sin_port = htons(port);
50 sockaddr_in6 raddr6{};
51 raddr6.sin6_family = AF_INET6;
52 raddr6.sin6_port = raddr4.sin_port;
56 env = getenv(
"NDNPH_UPLINK_UDP");
58 if (inet_pton(raddr6.sin6_family, env, &raddr6.sin6_addr)) {
60 }
else if (!inet_pton(raddr4.sin_family, env, &raddr4.sin_addr)) {
70 static Face face(transport);
88 static Face* face =
nullptr;
89 if (face ==
nullptr) {
91 const char* envMtu = getenv(
"NDNPH_UPLINK_MTU");
92 if (envMtu !=
nullptr) {
94 if (mtu < 64 || mtu > 9000) {
95 fprintf(stderr,
"ndnph::cli::openUplink invalid or out-of-range NDNPH_UPLINK_MTU\n");
100 const char* envMemif = getenv(
"NDNPH_UPLINK_MEMIF");
101 if (envMemif ==
nullptr) {
107 if (face ==
nullptr) {
108 fprintf(stderr,
"ndnph::cli::openUplink error\n");
Region with dynamically allocated memory.
Definition region.hpp:155
Network layer face.
Definition face.hpp:12
void setReassembler(lp::Reassembler &reass)
Enable NDNLPv2 reassembly.
Definition face.hpp:64
void setFragmenter(lp::Fragmenter &frag)
Enable NDNLPv2 fragmentation.
Definition face.hpp:53
NDNLPv2 fragmenter.
Definition lp.hpp:196
NDNLPv2 fragmenter.
Definition lp.hpp:471
A transport that communicates via libmemif.
Definition memif.hpp:35
uint16_t getDataroom() const
Return actual dataroom.
Definition memif.hpp:135
bool begin(const char *socketName, uint32_t id, uint16_t dataroom=0)
Start transport.
Definition memif.hpp:58
A transport that communicates over IPv4 unicast UDP tunnel.
Definition udp-unicast.hpp:19
bool beginListen(const sockaddr_in *laddr)
Start listening on given local IPv4 address.
Definition udp-unicast.hpp:33
bool beginTunnel(const sockaddr_in *raddr)
Connect to given remote IPv4 address.
Definition udp-unicast.hpp:68
void enableFragReass(Face &face, int mtu)
Definition uplink.hpp:75
Face * openMemif(const char *socketName, int *mtu)
Definition uplink.hpp:12
Face * openUdp()
Definition uplink.hpp:30
Face & openUplink()
Open uplink face.
Definition uplink.hpp:87