diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2020-12-01 13:31:07 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2020-12-01 13:31:07 +0100 |
commit | 32b192df3b898b4199325309a6113ae7efa3556e (patch) | |
tree | 612330e745d3ebcce7c6660ca0917b5aefd1eed1 /examples | |
parent | 6f734f9eff342b91e694caf935b848eef5e1ced9 (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.c | 55 |
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; } |