Loading docs/changes.txt +1 −0 Original line number Diff line number Diff line Loading @@ -507,5 +507,6 @@ v71.1 nfqws,tpws: much faster ipset implementation. move from hash to avl tree nfqws,tpws: check list files accessibility with dropped privs in --dry-run mode nfqws,tpws: --debug=android for NDK builds install_easy: stop if running embedded release on traditional linux system (some files missing) install_bin: add "read elf" arch detection method nfq/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ CFLAGS += -std=gnu99 -Os -flto=auto CFLAGS_SYSTEMD = -DUSE_SYSTEMD CFLAGS_BSD = -Wno-address-of-packed-member CFLAGS_CYGWIN = -Wno-address-of-packed-member -static LDFLAGS_ANDROID = -llog LIBS_LINUX = -lnetfilter_queue -lnfnetlink -lz LIBS_SYSTEMD = -lsystemd LIBS_BSD = -lz Loading @@ -21,7 +22,8 @@ nfqws: $(SRC_FILES) systemd: $(SRC_FILES) $(CC) -s $(CFLAGS) $(CFLAGS_SYSTEMD) -o nfqws $(SRC_FILES) $(LIBS_LINUX) $(LIBS_SYSTEMD) $(LDFLAGS) android: nfqws android: $(SRC_FILES) $(CC) -s $(CFLAGS) -o nfqws $(SRC_FILES) $(LIBS_LINUX) $(LDFLAGS) $(LDFLAGS_ANDROID) bsd: $(SRC_FILES) $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -o dvtws $(SRC_FILES) $(LIBS_BSD) $(LDFLAGS) Loading nfq/nfqws.c +18 −2 Original line number Diff line number Diff line Loading @@ -1485,7 +1485,11 @@ static void exithelp(void) #if !defined( __OpenBSD__) && !defined(__ANDROID__) " @<config_file>|$<config_file>\t\t\t; read file for options. must be the only argument. other options are ignored.\n\n" #endif #ifdef __ANDROID__ " --debug=0|1|syslog|android|@<filename>\n" #else " --debug=0|1|syslog|@<filename>\n" #endif " --version\t\t\t\t\t; print version and exit\n" " --dry-run\t\t\t\t\t; verify parameters and exit with code 0 if successful\n" " --comment=any_text\n" Loading Loading @@ -2057,11 +2061,23 @@ int main(int argc, char **argv) params.debug_target = LOG_TARGET_SYSLOG; openlog(progname,LOG_PID,LOG_USER); } else #ifdef __ANDROID__ else if (!strcmp(optarg,"android")) { if (!params.debug) params.debug = 1; params.debug_target = LOG_TARGET_ANDROID; } #endif else if (optarg[0]>='0' && optarg[0]<='1') { params.debug = !!atoi(optarg); params.debug = atoi(optarg); params.debug_target = LOG_TARGET_CONSOLE; } else { fprintf(stderr, "invalid debug mode : %s\n", optarg); exit_clean(1); } } else { Loading nfq/params.c +47 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ #include <stdarg.h> #include <syslog.h> #include <errno.h> #ifdef __ANDROID__ #include <android/log.h> #endif #include "pools.h" #include "desync.h" Loading Loading @@ -39,19 +42,47 @@ int DLOG_FILENAME(const char *filename, const char *format, va_list args) r=-1; return r; } typedef void (*f_log_function)(int priority, const char *line); static char syslog_buf[1024]; static size_t syslog_buf_sz=0; static void syslog_buffered(int priority, const char *format, va_list args) static char log_buf[1024]; static size_t log_buf_sz=0; static void syslog_log_function(int priority, const char *line) { syslog(priority,"%s",log_buf); } #ifdef __ANDROID__ enum android_LogPriority syslog_priority_to_android(int priority) { enum android_LogPriority ap; switch(priority) { case LOG_INFO: case LOG_NOTICE: ap=ANDROID_LOG_INFO; break; case LOG_ERR: ap=ANDROID_LOG_ERROR; break; case LOG_WARNING: ap=ANDROID_LOG_WARN; break; case LOG_EMERG: case LOG_ALERT: case LOG_CRIT: ap=ANDROID_LOG_FATAL; break; case LOG_DEBUG: ap=ANDROID_LOG_DEBUG; break; default: ap=ANDROID_LOG_UNKNOWN; } return ap; } static void android_log_function(int priority, const char *line) { if (vsnprintf(syslog_buf+syslog_buf_sz,sizeof(syslog_buf)-syslog_buf_sz,format,args)>0) __android_log_print(syslog_priority_to_android(priority), progname, "%s", line); } #endif static void log_buffered(f_log_function log_function, int syslog_priority, const char *format, va_list args) { syslog_buf_sz=strlen(syslog_buf); if (vsnprintf(log_buf+log_buf_sz,sizeof(log_buf)-log_buf_sz,format,args)>0) { log_buf_sz=strlen(log_buf); // log when buffer is full or buffer ends with \n if (syslog_buf_sz>=(sizeof(syslog_buf)-1) || (syslog_buf_sz && syslog_buf[syslog_buf_sz-1]=='\n')) if (log_buf_sz>=(sizeof(log_buf)-1) || (log_buf_sz && log_buf[log_buf_sz-1]=='\n')) { syslog(priority,"%s",syslog_buf); syslog_buf_sz = 0; log_function(syslog_priority,log_buf); log_buf_sz = 0; } } } Loading Loading @@ -79,9 +110,16 @@ static int DLOG_VA(const char *format, int syslog_priority, bool condup, va_list break; case LOG_TARGET_SYSLOG: // skip newlines syslog_buffered(syslog_priority,format,args); log_buffered(syslog_log_function,syslog_priority,format,args); r = 1; break; #ifdef __ANDROID__ case LOG_TARGET_ANDROID: // skip newlines log_buffered(android_log_function,syslog_priority,format,args); r = 1; break; #endif default: break; } Loading nfq/params.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ #define MAX_GIDS 64 enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG }; enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG, LOG_TARGET_ANDROID }; struct fake_tls_mod_cache { Loading Loading
docs/changes.txt +1 −0 Original line number Diff line number Diff line Loading @@ -507,5 +507,6 @@ v71.1 nfqws,tpws: much faster ipset implementation. move from hash to avl tree nfqws,tpws: check list files accessibility with dropped privs in --dry-run mode nfqws,tpws: --debug=android for NDK builds install_easy: stop if running embedded release on traditional linux system (some files missing) install_bin: add "read elf" arch detection method
nfq/Makefile +3 −1 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ CFLAGS += -std=gnu99 -Os -flto=auto CFLAGS_SYSTEMD = -DUSE_SYSTEMD CFLAGS_BSD = -Wno-address-of-packed-member CFLAGS_CYGWIN = -Wno-address-of-packed-member -static LDFLAGS_ANDROID = -llog LIBS_LINUX = -lnetfilter_queue -lnfnetlink -lz LIBS_SYSTEMD = -lsystemd LIBS_BSD = -lz Loading @@ -21,7 +22,8 @@ nfqws: $(SRC_FILES) systemd: $(SRC_FILES) $(CC) -s $(CFLAGS) $(CFLAGS_SYSTEMD) -o nfqws $(SRC_FILES) $(LIBS_LINUX) $(LIBS_SYSTEMD) $(LDFLAGS) android: nfqws android: $(SRC_FILES) $(CC) -s $(CFLAGS) -o nfqws $(SRC_FILES) $(LIBS_LINUX) $(LDFLAGS) $(LDFLAGS_ANDROID) bsd: $(SRC_FILES) $(CC) -s $(CFLAGS) $(CFLAGS_BSD) -o dvtws $(SRC_FILES) $(LIBS_BSD) $(LDFLAGS) Loading
nfq/nfqws.c +18 −2 Original line number Diff line number Diff line Loading @@ -1485,7 +1485,11 @@ static void exithelp(void) #if !defined( __OpenBSD__) && !defined(__ANDROID__) " @<config_file>|$<config_file>\t\t\t; read file for options. must be the only argument. other options are ignored.\n\n" #endif #ifdef __ANDROID__ " --debug=0|1|syslog|android|@<filename>\n" #else " --debug=0|1|syslog|@<filename>\n" #endif " --version\t\t\t\t\t; print version and exit\n" " --dry-run\t\t\t\t\t; verify parameters and exit with code 0 if successful\n" " --comment=any_text\n" Loading Loading @@ -2057,11 +2061,23 @@ int main(int argc, char **argv) params.debug_target = LOG_TARGET_SYSLOG; openlog(progname,LOG_PID,LOG_USER); } else #ifdef __ANDROID__ else if (!strcmp(optarg,"android")) { if (!params.debug) params.debug = 1; params.debug_target = LOG_TARGET_ANDROID; } #endif else if (optarg[0]>='0' && optarg[0]<='1') { params.debug = !!atoi(optarg); params.debug = atoi(optarg); params.debug_target = LOG_TARGET_CONSOLE; } else { fprintf(stderr, "invalid debug mode : %s\n", optarg); exit_clean(1); } } else { Loading
nfq/params.c +47 −9 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ #include <stdarg.h> #include <syslog.h> #include <errno.h> #ifdef __ANDROID__ #include <android/log.h> #endif #include "pools.h" #include "desync.h" Loading Loading @@ -39,19 +42,47 @@ int DLOG_FILENAME(const char *filename, const char *format, va_list args) r=-1; return r; } typedef void (*f_log_function)(int priority, const char *line); static char syslog_buf[1024]; static size_t syslog_buf_sz=0; static void syslog_buffered(int priority, const char *format, va_list args) static char log_buf[1024]; static size_t log_buf_sz=0; static void syslog_log_function(int priority, const char *line) { syslog(priority,"%s",log_buf); } #ifdef __ANDROID__ enum android_LogPriority syslog_priority_to_android(int priority) { enum android_LogPriority ap; switch(priority) { case LOG_INFO: case LOG_NOTICE: ap=ANDROID_LOG_INFO; break; case LOG_ERR: ap=ANDROID_LOG_ERROR; break; case LOG_WARNING: ap=ANDROID_LOG_WARN; break; case LOG_EMERG: case LOG_ALERT: case LOG_CRIT: ap=ANDROID_LOG_FATAL; break; case LOG_DEBUG: ap=ANDROID_LOG_DEBUG; break; default: ap=ANDROID_LOG_UNKNOWN; } return ap; } static void android_log_function(int priority, const char *line) { if (vsnprintf(syslog_buf+syslog_buf_sz,sizeof(syslog_buf)-syslog_buf_sz,format,args)>0) __android_log_print(syslog_priority_to_android(priority), progname, "%s", line); } #endif static void log_buffered(f_log_function log_function, int syslog_priority, const char *format, va_list args) { syslog_buf_sz=strlen(syslog_buf); if (vsnprintf(log_buf+log_buf_sz,sizeof(log_buf)-log_buf_sz,format,args)>0) { log_buf_sz=strlen(log_buf); // log when buffer is full or buffer ends with \n if (syslog_buf_sz>=(sizeof(syslog_buf)-1) || (syslog_buf_sz && syslog_buf[syslog_buf_sz-1]=='\n')) if (log_buf_sz>=(sizeof(log_buf)-1) || (log_buf_sz && log_buf[log_buf_sz-1]=='\n')) { syslog(priority,"%s",syslog_buf); syslog_buf_sz = 0; log_function(syslog_priority,log_buf); log_buf_sz = 0; } } } Loading Loading @@ -79,9 +110,16 @@ static int DLOG_VA(const char *format, int syslog_priority, bool condup, va_list break; case LOG_TARGET_SYSLOG: // skip newlines syslog_buffered(syslog_priority,format,args); log_buffered(syslog_log_function,syslog_priority,format,args); r = 1; break; #ifdef __ANDROID__ case LOG_TARGET_ANDROID: // skip newlines log_buffered(android_log_function,syslog_priority,format,args); r = 1; break; #endif default: break; } Loading
nfq/params.h +1 −1 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ #define MAX_GIDS 64 enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG }; enum log_target { LOG_TARGET_CONSOLE=0, LOG_TARGET_FILE, LOG_TARGET_SYSLOG, LOG_TARGET_ANDROID }; struct fake_tls_mod_cache { Loading