Browse Source

Merge pull request #289 from fengdaolong/dev

Fix cmake compilation errors.
pull/296/head
Luca Deri 4 years ago
committed by GitHub
parent
commit
efa8c8a036
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 143
      CMakeLists.txt
  2. 1
      include/edge_utils_win32.h
  3. 6
      include/n2n.h
  4. 9
      src/edge_utils.c
  5. 2
      src/edge_utils_win32.c
  6. 9
      src/n2n.c
  7. 3
      src/sn.c
  8. 2
      win32/wintap.c

143
CMakeLists.txt

@ -1,31 +1,60 @@
project(n2n) project(n2n)
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.6)
include(CheckFunctionExists) include(CheckFunctionExists)
SET(CMAKE_VERBOSE_MAKEFILE ON)
# N2n information # N2n release information
set(N2N_VERSION 2.5.1) set(N2N_VERSION "2.7.0")
set(N2N_OSNAME ${CMAKE_SYSTEM}) set(N2N_OSNAME ${CMAKE_SYSTEM})
execute_process(
COMMAND git --version
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_EXIST
)
if (GIT_EXIST)
execute_process(
COMMAND git rev-list --count HEAD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_REV
)
execute_process(
COMMAND git rev-parse --short HEAD
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_ID
)
string(REGEX REPLACE "\n$" "" GIT_REV "${GIT_REV}")
string(REGEX REPLACE "\n$" "" GIT_ID "${GIT_ID}")
set(N2N_VERSION "${N2N_VERSION}.r${GIT_REV}.${GIT_ID}")
MESSAGE(STATUS "Build from git rev: ${N2N_VERSION}")
endif (GIT_EXIST)
add_definitions(-DCMAKE_BUILD)
add_definitions(-DGIT_RELEASE="" -DPACKAGE_VERSION="${N2N_VERSION}" -DPACKAGE_OSNAME="${N2N_OSNAME}")
add_definitions(-DN2N_VERSION="${N2N_VERSION}" -DN2N_OSNAME="${N2N_OSNAME}")
# N2n specific params
OPTION(N2N_OPTION_AES "USE AES" ON)
# Build information # Build information
OPTION(BUILD_SHARED_LIBS "BUILD Shared Library" OFF) OPTION(BUILD_SHARED_LIBS "BUILD Shared Library" OFF)
# N2n specific params
OPTION(N2N_OPTION_AES "USE AES" ON)
if(NOT DEFINED N2N_OPTION_AES) if(NOT DEFINED N2N_OPTION_AES)
set(N2N_OPTION_AES ON) set(N2N_OPTION_AES ON)
endif(NOT DEFINED N2N_OPTION_AES) endif(NOT DEFINED N2N_OPTION_AES)
add_definitions(-DCMAKE_BUILD)
add_definitions(-DGIT_RELEASE="" -DPACKAGE_VERSION="${N2N_VERSION}" -DPACKAGE_OSNAME="${CMAKE_SYSTEM}")
add_definitions(-DN2N_VERSION="${N2N_VERSION}" -DN2N_OSNAME="${N2N_OSNAME}")
if(N2N_OPTION_AES) if(N2N_OPTION_AES)
find_package(OpenSSL REQUIRED) find_package(OpenSSL QUIET)
add_definitions(-DN2N_HAVE_AES) if(NOT OPENSSL_FOUND)
MESSAGE(WARNING "OpenSSL not found, AES disabled.")
set(N2N_OPTION_AES OFF)
else()
include_directories(${OPENSSL_INCLUDE_DIR})
add_definitions(-DN2N_HAVE_AES)
endif(NOT OPENSSL_FOUND)
endif(N2N_OPTION_AES) endif(N2N_OPTION_AES)
if(NOT DEFINED CMAKE_BUILD_TYPE) if(NOT DEFINED CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE None) set(CMAKE_BUILD_TYPE None)
endif(NOT DEFINED CMAKE_BUILD_TYPE) endif(NOT DEFINED CMAKE_BUILD_TYPE)
@ -42,60 +71,69 @@ set(CMAKE_CXX_FLAGS_DEBUG "-g")
# Release # Release
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
endif() endif(DEFINED UNIX)
## DEBUG FOR CMAKE #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static")
#message(${N2N_VERSION})
#message(${N2N_OSNAME})
##message(${CMAKE_BUILD_TYPE})
#message(${N2N_OPTION_AES})
## DEBUG FOR CMAKE
# Add SHARED to build DLL
add_library(n2n n2n.c
edge_utils.c
sn_utils.c
wire.c
minilzo.c
twofish.c
transform_null.c
transform_tf.c
transform_aes.c
transform_cc20.c
transform_speck.c
speck.c
random_numbers.c
pearson.c
header_encryption.c
tuntap_freebsd.c
tuntap_netbsd.c
tuntap_linux.c
tuntap_osx.c
)
INCLUDE_DIRECTORIES(.)
INCLUDE_DIRECTORIES(include)
if(DEFINED WIN32) if(DEFINED WIN32)
add_subdirectory(win32) INCLUDE_DIRECTORIES(win32)
target_link_libraries(n2n n2n_win32) # INCLUDE_DIRECTORIES("D:/Program Files/MinGW/opt/include/" "D:/Program Files/MinGW/x86_64-w64-mingw32/include/")
# LINK_DIRECTORIES("D:/Program Files/MinGW/opt/lib/" "D:/Program Files/MinGW/x86_64-w64-mingw32/lib/")
endif(DEFINED WIN32)
#aux_source_directory(./src N2N_DIR_SRCS)
#add_library(n2n STATIC ${N2N_DIR_SRCS})
add_library(n2n STATIC
src/n2n.c
src/edge_utils.c
src/sn_utils.c
src/wire.c
src/minilzo.c
src/twofish.c
src/transform_null.c
src/transform_tf.c
src/transform_aes.c
src/transform_cc20.c
src/transform_speck.c
src/speck.c
src/random_numbers.c
src/pearson.c
src/header_encryption.c
src/tuntap_freebsd.c
src/tuntap_netbsd.c
src/tuntap_linux.c
src/tuntap_osx.c
)
if(DEFINED WIN32)
add_library(edge_utils_win32 src/edge_utils_win32.c)
add_subdirectory(win32)
target_link_libraries(n2n edge_utils_win32 n2n_win32 )
endif(DEFINED WIN32) endif(DEFINED WIN32)
if(N2N_OPTION_AES) if(N2N_OPTION_AES)
target_link_libraries(n2n ${OPENSSL_LIBRARIES}) # target_link_libraries(n2n crypto)
include_directories(${OPENSSL_INCLUDE_DIR}) target_link_libraries(n2n ${OPENSSL_LIBRARIES})
endif(N2N_OPTION_AES) endif(N2N_OPTION_AES)
add_executable(edge edge.c)
add_executable(edge src/edge.c)
target_link_libraries(edge n2n) target_link_libraries(edge n2n)
add_executable(supernode sn.c) add_executable(supernode src/sn.c)
target_link_libraries(supernode n2n) target_link_libraries(supernode n2n)
add_executable(example_edge_embed_quick_edge_init example_edge_embed_quick_edge_init.c) add_executable(example_edge_embed_quick_edge_init src/example_edge_embed_quick_edge_init.c)
target_link_libraries(example_edge_embed_quick_edge_init n2n) target_link_libraries(example_edge_embed_quick_edge_init n2n)
add_executable(example_edge_embed example_edge_embed.c) add_executable(example_edge_embed src/example_edge_embed.c)
target_link_libraries(example_edge_embed n2n) target_link_libraries(example_edge_embed n2n)
add_executable(example_sn_embed example_sn_embed.c) add_executable(example_sn_embed src/example_sn_embed.c)
target_link_libraries(example_sn_embed n2n) target_link_libraries(example_sn_embed n2n)
if(NOT DEFINED WIN32) if(NOT DEFINED WIN32)
@ -114,9 +152,8 @@ install(TARGETS edge supernode
ARCHIVE DESTINATION lib ARCHIVE DESTINATION lib
) )
# Tools
include_directories(.)
# Tools
add_executable(n2n-benchmark tools/benchmark.c) add_executable(n2n-benchmark tools/benchmark.c)
target_link_libraries(n2n-benchmark n2n ${OPENSSL_LIBRARIES}) target_link_libraries(n2n-benchmark n2n ${OPENSSL_LIBRARIES})
@ -130,8 +167,8 @@ if(PCAP_LIB)
check_function_exists(pcap_set_immediate_mode HAVE_PCAP_IMMEDIATE_MODE) check_function_exists(pcap_set_immediate_mode HAVE_PCAP_IMMEDIATE_MODE)
IF(HAVE_PCAP_IMMEDIATE_MODE) IF(HAVE_PCAP_IMMEDIATE_MODE)
ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE") ADD_DEFINITIONS("-DHAVE_PCAP_IMMEDIATE_MODE")
ENDIF() ENDIF(HAVE_PCAP_IMMEDIATE_MODE)
endif() endif(PCAP_LIB)
install(TARGETS n2n-benchmark RUNTIME DESTINATION bin) install(TARGETS n2n-benchmark RUNTIME DESTINATION bin)

1
include/edge_utils_win32.h

@ -19,6 +19,7 @@
#ifdef WIN32 #ifdef WIN32
#include <process.h> #include <process.h>
#include <n2n.h>
/* Multicast peers discovery disabled due to https://github.com/ntop/n2n/issues/65 */ /* Multicast peers discovery disabled due to https://github.com/ntop/n2n/issues/65 */
#define SKIP_MULTICAST_PEERS_DISCOVERY #define SKIP_MULTICAST_PEERS_DISCOVERY

6
include/n2n.h

@ -126,7 +126,6 @@ typedef struct ether_hdr ether_hdr_t;
#include <netinet/in.h> #include <netinet/in.h>
#include <netinet/ip.h> #include <netinet/ip.h>
#include <netinet/udp.h> #include <netinet/udp.h>
#include <signal.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/time.h> #include <sys/time.h>
@ -140,12 +139,13 @@ typedef struct ether_hdr ether_hdr_t;
#include <openssl/crypto.h> #include <openssl/crypto.h>
#endif #endif
#include "minilzo.h"
#include "n2n_define.h"
#define closesocket(a) close(a) #define closesocket(a) close(a)
#endif /* #ifndef WIN32 */ #endif /* #ifndef WIN32 */
#include "minilzo.h"
#include "n2n_define.h"
#include <signal.h>
#include <string.h> #include <string.h>
#include <stdarg.h> #include <stdarg.h>
#include "uthash.h" #include "uthash.h"

9
src/edge_utils.c

@ -797,10 +797,10 @@ static void send_query_peer( n2n_edge_t * eee,
traceEvent( TRACE_DEBUG, "send QUERY_PEER to supernode" ); traceEvent( TRACE_DEBUG, "send QUERY_PEER to supernode" );
if(eee->conf.header_encryption == HEADER_ENCRYPTION_ENABLED) if(eee->conf.header_encryption == HEADER_ENCRYPTION_ENABLED){
packet_header_encrypt (pktbuf, idx, eee->conf.header_encryption_ctx, packet_header_encrypt (pktbuf, idx, eee->conf.header_encryption_ctx,
eee->conf.header_iv_ctx, pearson_hash_16 (pktbuf, idx)); eee->conf.header_iv_ctx, pearson_hash_16 (pktbuf, idx));
}
sendto_sock( eee->udp_sock, pktbuf, idx, &(eee->supernode) ); sendto_sock( eee->udp_sock, pktbuf, idx, &(eee->supernode) );
} }
@ -1082,7 +1082,7 @@ static int handle_PACKET(n2n_edge_t * eee,
/* Check if it is a routed packet */ /* Check if it is a routed packet */
if((ntohs(eh->type) == 0x0800) && (eth_size >= ETH_FRAMESIZE + IP4_MIN_SIZE)) { if((ntohs(eh->type) == 0x0800) && (eth_size >= ETH_FRAMESIZE + IP4_MIN_SIZE)) {
uint32_t *dst = (uint32_t*)&eth_payload[ETH_FRAMESIZE + IP4_DSTOFFSET]; uint32_t *dst = (uint32_t*)&eth_payload[ETH_FRAMESIZE + IP4_DSTOFFSET];
u_int8_t *dst_mac = (u_int8_t*)eth_payload; uint8_t *dst_mac = (uint8_t*)eth_payload;
/* Note: all elements of the_ip are in network order */ /* Note: all elements of the_ip are in network order */
if(!memcmp(dst_mac, broadcast_mac, 6)) if(!memcmp(dst_mac, broadcast_mac, 6))
@ -1868,6 +1868,7 @@ int run_edge_loop(n2n_edge_t * eee, int *keep_running) {
#endif #endif
#ifdef WIN32 #ifdef WIN32
#include "edge_utils_win32.h"
struct tunread_arg arg; struct tunread_arg arg;
arg.eee = eee; arg.eee = eee;
arg.keep_running = keep_running; arg.keep_running = keep_running;
@ -2048,7 +2049,7 @@ static int edge_init_sockets(n2n_edge_t *eee, int udp_local_port, int mgmt_port,
/* https://www.tucny.com/Home/dscp-tos */ /* https://www.tucny.com/Home/dscp-tos */
sockopt = tos; sockopt = tos;
if(setsockopt(eee->udp_sock, IPPROTO_IP, IP_TOS, &sockopt, sizeof(sockopt)) == 0) if(setsockopt(eee->udp_sock, IPPROTO_IP, IP_TOS, (char *)&sockopt, sizeof(sockopt)) == 0)
traceEvent(TRACE_NORMAL, "TOS set to 0x%x", tos); traceEvent(TRACE_NORMAL, "TOS set to 0x%x", tos);
else else
traceEvent(TRACE_ERROR, "Could not set TOS 0x%x[%d]: %s", tos, errno, strerror(errno)); traceEvent(TRACE_ERROR, "Could not set TOS 0x%x[%d]: %s", tos, errno, strerror(errno));

2
src/edge_utils_win32.c

@ -26,7 +26,7 @@ static DWORD* tunReadThread(LPVOID lpArg) {
struct tunread_arg *arg = (struct tunread_arg*)lpArg; struct tunread_arg *arg = (struct tunread_arg*)lpArg;
while(*arg->keep_running) while(*arg->keep_running)
readFromTAPSocket(arg->eee); edge_read_from_tap(arg->eee);
return((DWORD*)NULL); return((DWORD*)NULL);
} }

9
src/n2n.c

@ -92,7 +92,7 @@ SOCKET open_socket(int local_port, int bind_any) {
#endif #endif
sockopt = 1; sockopt = 1;
setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &sockopt, sizeof(sockopt)); setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, (char *)&sockopt, sizeof(sockopt));
memset(&local_address, 0, sizeof(local_address)); memset(&local_address, 0, sizeof(local_address));
local_address.sin_family = AF_INET; local_address.sin_family = AF_INET;
@ -145,9 +145,7 @@ void traceEvent(int eventTraceLevel, char* file, int line, char * format, ...) {
char theDate[N2N_TRACE_DATESIZE]; char theDate[N2N_TRACE_DATESIZE];
char *extra_msg = ""; char *extra_msg = "";
time_t theTime = time(NULL); time_t theTime = time(NULL);
#ifdef WIN32
int i; int i;
#endif
/* We have two paths - one if we're logging, one if we aren't /* We have two paths - one if we're logging, one if we aren't
* Note that the no-log case is those systems which don't support it(WIN32), * Note that the no-log case is those systems which don't support it(WIN32),
@ -179,7 +177,8 @@ void traceEvent(int eventTraceLevel, char* file, int line, char * format, ...) {
snprintf(out_buf, sizeof(out_buf), "%s%s", extra_msg, buf); snprintf(out_buf, sizeof(out_buf), "%s%s", extra_msg, buf);
syslog(LOG_INFO, "%s", out_buf); syslog(LOG_INFO, "%s", out_buf);
} else { } else {
snprintf(out_buf, sizeof(out_buf), "%s [%s:%d] %s%s", theDate, file, line, extra_msg, buf); for(i=strlen(file)-1; i>0; i--) if(file[i] == '/') { i++; break; };
snprintf(out_buf, sizeof(out_buf), "%s [%s:%d] %s%s", theDate, &file[i], line, extra_msg, buf);
#ifdef __ANDROID_NDK__ #ifdef __ANDROID_NDK__
switch (eventTraceLevel) { switch (eventTraceLevel) {
case 0: // ERROR case 0: // ERROR
@ -316,7 +315,7 @@ void hexdump(const uint8_t * buf, size_t len)
void print_n2n_version() { void print_n2n_version() {
printf("Welcome to n2n v.%s for %s\n" printf("Welcome to n2n v.%s for %s\n"
"Built on %s\n" "Built on %s\n"
"Copyright 2007-19 - ntop.org and contributors\n\n", "Copyright 2007-2020 - ntop.org and contributors\n\n",
GIT_RELEASE, PACKAGE_OSNAME, PACKAGE_BUILDDATE); GIT_RELEASE, PACKAGE_OSNAME, PACKAGE_BUILDDATE);
} }

3
src/sn.c

@ -21,9 +21,6 @@
#include "n2n.h" #include "n2n.h"
#include "header_encryption.h" #include "header_encryption.h"
#ifdef WIN32
#include <signal.h>
#endif
#define N2N_SN_LPORT_DEFAULT 7654 #define N2N_SN_LPORT_DEFAULT 7654
#define N2N_SN_PKTBUF_SIZE 2048 #define N2N_SN_PKTBUF_SIZE 2048

2
win32/wintap.c

@ -2,7 +2,7 @@
(C) 2007-09 - Luca Deri <deri@ntop.org> (C) 2007-09 - Luca Deri <deri@ntop.org>
*/ */
#include "../n2n.h" #include "n2n.h"
#include "n2n_win32.h" #include "n2n_win32.h"
/* ***************************************************** */ /* ***************************************************** */

Loading…
Cancel
Save