aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToni Uhlig <matzeton@googlemail.com>2022-03-17 13:13:42 +0100
committerToni Uhlig <matzeton@googlemail.com>2022-03-17 13:13:42 +0100
commite42e3117e767242f4682fe9e44f8e8750b167b33 (patch)
tree9633b1333acf772987d211b08a164c012f41912c
parent147b51e37d82460a67d159756cccacfb64ef1405 (diff)
third commit
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
-rw-r--r--configure.ac116
-rw-r--r--src/Makefile.am3
-rw-r--r--src/pdesc.c5
-rw-r--r--src/ppkt.c6
-rw-r--r--src/ppkt.h4
-rw-r--r--src/psock.c18
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)
+{
+}
diff --git a/src/ppkt.h b/src/ppkt.h
index fc3c271..34c3075 100644
--- a/src/ppkt.h
+++ b/src/ppkt.h
@@ -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;