diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2022-03-17 13:13:42 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2022-03-17 13:13:42 +0100 |
commit | e42e3117e767242f4682fe9e44f8e8750b167b33 (patch) | |
tree | 9633b1333acf772987d211b08a164c012f41912c | |
parent | 147b51e37d82460a67d159756cccacfb64ef1405 (diff) |
third commit
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r-- | configure.ac | 116 | ||||
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/pdesc.c | 5 | ||||
-rw-r--r-- | src/ppkt.c | 6 | ||||
-rw-r--r-- | src/ppkt.h | 4 | ||||
-rw-r--r-- | src/psock.c | 18 |
6 files changed, 23 insertions, 129 deletions
diff --git a/configure.ac b/configure.ac index 456b783..e0a2176 100644 --- a/configure.ac +++ b/configure.ac @@ -118,72 +118,6 @@ AC_CHECK_FUNCS([inet_ntoa],, [AC_MSG_ERROR([Missing essential std functions.])]) fi -dnl `--disable-pcap`: Enabled if found. -AC_ARG_ENABLE([pcap], - [AS_HELP_STRING([--disable-pcap], [Disable pcap support. (default: enabled if found)])],,[pcap_enabled=yes]) -pcap_enabled=$(echo ${pcap_enabled}) -case ${pcap_enabled} in - 1|y|yes) pcap_enabled=yes ;; - ''|0|n|no) pcap_enabled= ;; - *) AC_MSG_ERROR([Unknown option \`${pcap_enabled}\` for --disable-pcap]) ;; -esac - -dnl `--disable-ssl`: Enabled if found. -AC_ARG_ENABLE([ssl], - [AS_HELP_STRING([--disable-ssl], [Disable ssl support. (default: enabled if found)])],,[ssl_enabled=yes]) -ssl_enabled=$(echo ${ssl_enabled}) -case ${ssl_enabled} in - 1|y|yes) ssl_enabled=yes ;; - ''|0|n|no) ssl_enabled= ;; - *) AC_MSG_ERROR([Unknown option \`${ssl_enabled}\' for --disable-ssl]) ;; -esac - -dnl `--enable-npcap`: Enable npcap interface (Windows only!) -AC_ARG_ENABLE([npcap], - [AS_HELP_STRING([--enable-npcap], [Enable npcap support. (Windows only; default: disabled)])],[npcap_enabled=yes],) -npcap_enabled=$(echo ${npcap_enabled}) -case ${npcap_enabled} in - 1|y|yes) pcap_enabled=yes ;; - ''|0|n|no) pcap_enabled= ;; - *) AC_MSG_ERROR([Unknown option \`${npcap_enabled}\` for --enable-npcap]) ;; -esac - -dnl `--disable-selinux`: Enabled if found. -AC_ARG_ENABLE([selinux], - [AS_HELP_STRING([--disable-selinux], [Disable SELINUX support. (default: enabled if found)])],,[selinux_enabled=yes]) -selinux_enabled=$(echo ${selinux_enabled}) -case ${selinux_enabled} in - 1|y|yes) selinux_enabled=yes ;; - ''|0|n|no) selinux_enabled= ;; - *) AC_MSG_ERROR([Unknown option \`${selinux_enabled}\` for --disable-selinux]) ;; -esac - -dnl `--with-randomdev`: Default value /dev/random -use_customrng=no -AC_MSG_CHECKING([for random device]) -AC_ARG_WITH([rngdev], - [AS_HELP_STRING([--with-rngdev], [Set an alternative random device. (default: /dev/random)])], - [use_customrng=yes], [with_rngdev="/dev/random"]) -case ${with_rngdev} in - yes) with_rngdev="/dev/random" ;; - /dev/random) ;; - /dev/urandom) ;; - *) AC_MSG_ERROR([Unknown random device \`${with_rngdev}\` for --with-rngdev: Only \`/dev/random\` xor \`/dev/urandom\` allowed. This option is unused on Windows targets.]) ;; -esac -AC_MSG_RESULT([${with_rngdev}]) -AC_DEFINE_UNQUOTED([RNGDEV], ["${with_rngdev}"], - [set the path to the random device you want to use for pt_random]) - -dnl `--enable-asserts`: Disabled per default -AC_ARG_ENABLE([asserts], - [AS_HELP_STRING([--enable-asserts], [Enable asserts(). (default: disabled)])],[asserts_enabled=yes],) -asserts_enabled=$(echo ${asserts_enabled}) -case ${asserts_enabled} in - 1|y|yes) asserts_enabled=yes ;; - ''|0|n|no) asserts_enabled=no ;; - *) AC_MSG_ERROR([Unknown option \`${asserts_enabled}\` for --enable-asserts]) ;; -esac - dnl `--enable-sanitizer`: Disabled per default AC_ARG_ENABLE([sanitizer], [AS_HELP_STRING([--enable-sanitizer], [Enable ASAN, LSAN and UBSAN. (default: disabled)])],[sanitizer_enabled=yes],) @@ -194,56 +128,6 @@ case ${sanitizer_enabled} in *) AC_MSG_ERROR([Unknown option \`${sanitizer_enabled}\` for --enable-sanitizer]) ;; esac -dnl Check libpcap headers/functions. -if test x"${pcap_enabled}" != x -a \ - x"${use_msw}" != xyes; then - AC_CHECK_HEADERS([pcap.h],, - [pcap_enabled=]) - AC_SEARCH_LIBS([pcap_lookupnet], [pcap],, - [pcap_enabled=],) - AC_CHECK_FUNCS([pcap_compile pcap_close pcap_setfilter pcap_dispatch pcap_findalldevs pcap_freealldevs],, - [pcap_enabled=]) -fi - -dnl Check openssl headers/functions. -if test x"${ssl_enabled}" != x; then - AC_CHECK_HEADERS([openssl/sha.h],,[ssl_enabled=]) - AC_SEARCH_LIBS([CRYPTO_new_ex_data],[crypto],,[ssl_enabled=]) -fi - -dnl Check for more secure randomization functions -if test x"${use_customrng}" != xyes; then - AC_CHECK_HEADERS([bsd/stdlib.h],,) - AC_SEARCH_LIBS([arc4random], [bsd],,,) - AC_CHECK_FUNCS([arc4random], [arc4random_enabled=yes],) -fi - -dnl Check for SELINUX -if test x"${selinux_enabled}" != x; then - AC_CHECK_HEADERS([selinux/selinux.h],, - [selinux_enabled=]) - AC_SEARCH_LIBS([setcon], [selinux],,[selinux_enabled=],) -fi - -dnl Check for ICMP_FILTER -AC_MSG_CHECKING([for working ICMP_FILTER]) -AC_COMPILE_IFELSE( -[AC_LANG_PROGRAM([[ -#include <netinet/in.h> -#include <sys/socket.h> -#include <linux/icmp.h> -void foo() { - struct icmp_filter filt; - int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); - filt.data = ~((1<<ICMP_ECHO) | (1<<ICMP_ECHOREPLY)); - setsockopt(sockfd, SOL_RAW, ICMP_FILTER, &filt, sizeof filt); -} -]], [])] -,[AC_MSG_RESULT([yes]) - with_icmp_filter="yes"] -,[AC_MSG_RESULT([no]) - with_icmp_filter="no"]) - dnl Check for Android liblog.so AC_SEARCH_LIBS([__android_log_vprint], [log],,,) diff --git a/src/Makefile.am b/src/Makefile.am index 411c410..b9b1b5e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -41,7 +41,8 @@ endif ptunnel_ng_SOURCES = \ ptunnel.c \ psock.c \ - pdesc.c + pdesc.c \ + ppkt.c if IS_WINDOWS wpcap_DEF = $(srcdir)/win32/WPCAP.DEF diff --git a/src/pdesc.c b/src/pdesc.c index c876df4..82cc600 100644 --- a/src/pdesc.c +++ b/src/pdesc.c @@ -1,9 +1,12 @@ #include "pdesc.h" #include "psock.h" + enum pdesc_retval pdesc_find_remote(struct psock * psock) { - for (size_t + for (size_t i = 0; i < psock->remotes.used; ++i) + { + } return PDESC_REMOTE_FOUND; } diff --git a/src/ppkt.c b/src/ppkt.c new file mode 100644 index 0000000..cb01b79 --- /dev/null +++ b/src/ppkt.c @@ -0,0 +1,6 @@ +#include "ppkt.h" + + +void ppkt_process_icmp(struct psock * psock) +{ +} @@ -17,8 +17,8 @@ struct ppkt } __attribute__((__packed__)); -void ppkt_header_prepare(struct psock *); +void ppkt_process_icmp(struct psock *); -void ppkt_header_process(struct psock *); +void ppkt_process_body(struct psock *); #endif diff --git a/src/psock.c b/src/psock.c index 8e1cbc3..78ecbff 100644 --- a/src/psock.c +++ b/src/psock.c @@ -76,6 +76,14 @@ void psock_free(struct psock * psock) psock->epoll_fd = -1; } +static void psock_process_cmsg(struct msghdr * hdr) +{ + for (struct cmsghdr * cmsg = CMSG_FIRSTHDR(hdr); cmsg != NULL; cmsg = CMSG_NXTHDR(hdr, cmsg)) + { + printf("CMSG TYPE/LEVEL/LEN: %d / %d / %zu\n", cmsg->cmsg_type, cmsg->cmsg_level, cmsg->cmsg_len); + } +} + static int psock_recvmsg(struct psock * psock) { struct sockaddr_storage peer; @@ -98,15 +106,7 @@ static int psock_recvmsg(struct psock * psock) if (nread >= 0) { psock->packet.used = nread; - - struct cmsghdr *cmsg = CMSG_FIRSTHDR(&hdr); - while (cmsg != NULL) - { - printf("CMSG TYPE/LEVEL/LEN: %d / %d / %zu\n", cmsg->cmsg_type, cmsg->cmsg_level, cmsg->cmsg_len); - - cmsg = CMSG_NXTHDR(&hdr, cmsg); - } - + psock_process_cmsg(&hdr); return 0; } else { psock->packet.used = 0; |