summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2020-12-01 13:31:07 +0100
committerToni Uhlig <matzeton@googlemail.com>2020-12-01 13:31:07 +0100
commit32b192df3b898b4199325309a6113ae7efa3556e (patch)
tree612330e745d3ebcce7c6660ca0917b5aefd1eed1 /examples
parent6f734f9eff342b91e694caf935b848eef5e1ced9 (diff)
Removed all LUA leftover as preparation for UTHASH.
* Added UNIX socket support for nDPIsrvd.h (and c-captured) Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/c-captured/c-captured.c55
1 files changed, 46 insertions, 9 deletions
diff --git a/examples/c-captured/c-captured.c b/examples/c-captured/c-captured.c
index 4ddb9e1e7..5c7715eff 100644
--- a/examples/c-captured/c-captured.c
+++ b/examples/c-captured/c-captured.c
@@ -1,5 +1,6 @@
#include <arpa/inet.h>
#include <errno.h>
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -12,10 +13,13 @@
//#define VERBOSE 1
-static char serv_listen_addr[INET_ADDRSTRLEN] = DISTRIBUTOR_HOST;
-static uint16_t serv_listen_port = DISTRIBUTOR_PORT;
+struct nDPIsrvd_socket * sock = NULL;
+static int main_thread_shutdown = 0;
+static char const serv_listen_path[] = DISTRIBUTOR_UNIX_SOCKET;
+static char const serv_listen_addr[INET_ADDRSTRLEN] = DISTRIBUTOR_HOST;
+static uint16_t const serv_listen_port = DISTRIBUTOR_PORT;
-static enum nDPIsrvd_callback_return nDPIsrvd_json_callback(struct nDPIsrvd_socket * const sock, void * user_data)
+enum nDPIsrvd_callback_return nDPIsrvd_json_callback(struct nDPIsrvd_socket * const sock, void * user_data)
{
(void)user_data;
@@ -45,6 +49,10 @@ static enum nDPIsrvd_callback_return nDPIsrvd_json_callback(struct nDPIsrvd_sock
{
printf("Not detected flow.\n");
}
+ else if (value_equals(sock, "detected") == 1)
+ {
+ printf("Detected flow.\n");
+ }
}
#ifdef VERBOSE
printf("[%.*s : %.*s] ",
@@ -63,27 +71,54 @@ static enum nDPIsrvd_callback_return nDPIsrvd_json_callback(struct nDPIsrvd_sock
return CALLBACK_OK;
}
-int main(int argc, char ** argv)
+static void sighandler(int signum)
{
- struct nDPIsrvd_socket * sock = nDPIsrvd_init();
+ (void)signum;
- (void)argc;
+ if (main_thread_shutdown == 0)
+ {
+ main_thread_shutdown = 1;
+ }
+}
+int main(int argc, char ** argv)
+{
+ sock = nDPIsrvd_init();
if (sock == NULL)
{
fprintf(stderr, "%s: nDPIsrvd socket memory allocation failed!\n", argv[0]);
return 1;
}
- printf("Connecting to %s:%u\n", serv_listen_addr, serv_listen_port);
- enum nDPIsrvd_connect_return connect_ret = nDPIsrvd_connect_ip(sock, serv_listen_addr, serv_listen_port);
+ signal(SIGINT, sighandler);
+ signal(SIGTERM, sighandler);
+ signal(SIGPIPE, sighandler);
+
+ enum nDPIsrvd_connect_return connect_ret;
+
+ if (argc == 2)
+ {
+ printf("Connecting to UNIX socket: %s\n", argv[1]);
+ connect_ret = nDPIsrvd_connect_unix(sock, argv[1]);
+ } else if (argc == 1) {
+ if (access(serv_listen_path, R_OK) == 0)
+ {
+ printf("Connecting to %s\n", serv_listen_path);
+ connect_ret = nDPIsrvd_connect_unix(sock, serv_listen_path);
+ } else {
+ printf("Connecting to %s:%u\n", serv_listen_addr, serv_listen_port);
+ connect_ret = nDPIsrvd_connect_ip(sock, serv_listen_addr, serv_listen_port);
+ }
+ }
+
if (connect_ret != CONNECT_OK)
{
fprintf(stderr, "%s: nDPIsrvd socket connect failed!\n", argv[0]);
+ nDPIsrvd_free(&sock);
return 1;
}
- while (1)
+ while (main_thread_shutdown == 0)
{
errno = 0;
enum nDPIsrvd_read_return read_ret = nDPIsrvd_read(sock);
@@ -100,5 +135,7 @@ int main(int argc, char ** argv)
}
}
+ nDPIsrvd_free(&sock);
+
return 0;
}