aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/io/tcpListener.c
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/io/tcpListener.c')
-rw-r--r--hicn-light/src/hicn/io/tcpListener.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/hicn-light/src/hicn/io/tcpListener.c b/hicn-light/src/hicn/io/tcpListener.c
index 4464edf28..e2b80c215 100644
--- a/hicn-light/src/hicn/io/tcpListener.c
+++ b/hicn-light/src/hicn/io/tcpListener.c
@@ -31,7 +31,6 @@
typedef struct tcp_listener {
char *listenerName;
-
Forwarder *forwarder;
Logger *logger;
@@ -49,10 +48,15 @@ typedef struct tcp_listener {
static void _tcpListener_Destroy(_TcpListener **listenerPtr);
static void _tcpListener_OpsDestroy(ListenerOps **listenerOpsPtr);
+
static const char *_tcpListener_ListenerName(const ListenerOps *ops);
+
static unsigned _tcpListener_OpsGetInterfaceIndex(const ListenerOps *ops);
+
static const Address *_tcpListener_OpsGetListenAddress(const ListenerOps *ops);
+
static const char *_tcpListener_InterfaceName(const ListenerOps *ops);
+
static EncapType _tcpListener_OpsGetEncapType(const ListenerOps *ops);
static ListenerOps _tcpTemplate = {
@@ -71,6 +75,7 @@ static void _tcpListener_Listen(int, struct sockaddr *, int socklen,
ListenerOps *tcpListener_CreateInet6(Forwarder *forwarder, char *listenerName,
struct sockaddr_in6 sin6, char *interfaceName) {
+
_TcpListener *tcp = parcMemory_AllocateAndClear(sizeof(_TcpListener));
parcAssertNotNull(tcp, "parcMemory_AllocateAndClear(%zu) returned NULL",
sizeof(_TcpListener));
@@ -123,7 +128,10 @@ ListenerOps *tcpListener_CreateInet(Forwarder *forwarder, char *listenerName,
sizeof(_TcpListener));
tcp->forwarder = forwarder;
+ tcp->listenerName = parcMemory_StringDuplicate(listenerName, strlen(listenerName));
tcp->logger = logger_Acquire(forwarder_GetLogger(forwarder));
+ tcp->interfaceName = parcMemory_StringDuplicate(interfaceName, strlen(interfaceName));
+
tcp->listener = dispatcher_CreateListener(
forwarder_GetDispatcher(forwarder), _tcpListener_Listen, (void *)tcp, -1,
(struct sockaddr *)&sin, sizeof(sin));
@@ -175,7 +183,6 @@ static void _tcpListener_Destroy(_TcpListener **listenerPtr) {
parcMemory_Deallocate((void **)&tcp->listenerName);
parcMemory_Deallocate((void **)&tcp->interfaceName);
-
logger_Release(&tcp->logger);
dispatcher_DestroyListener(forwarder_GetDispatcher(tcp->forwarder),
&tcp->listener);