🌴 Sync 2026-03-05 23:51:42

This commit is contained in:
github-actions[bot] committed 2026-03-05 23:51:42 +08:00
1 parent 97c049ed0a
commit 0acff03804
14253 files changed
+3893239

No files matched your search

+82
View File
@@ -0,0 +1,82 @@
# SPDX-License-Identifer: GPL-3.0-only
#
# Copyright (C) 2020 - ntop.org and contributors
# Copyright (C) 2021-2022 ImmortalWrt.org
include $(TOPDIR)/rules.mk
PKG_NAME:=n2n
PKG_VERSION:=3.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://codeload.github.com/ntop/n2n/tar.gz/$(PKG_VERSION)?
PKG_HASH:=skip
PKG_LICENSE:=GPL-3.0
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Emanuele Faranda <faranda@ntop.org>
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/n2n/template
SECTION:=net
CATEGORY:=Network
SUBMENU:=VPN
TITLE:=N2N Peer-to-peer VPN
URL:=http://www.ntop.org/n2n
DEPENDS:=+libopenssl +libpthread +libzstd
endef
define Package/n2n
$(call Package/n2n/template)
DEPENDS+=+libcap +kmod-tun +resolveip
endef
define Package/n2n/description
This package contains client node and supernode for the N2N infrastructure.
endef
define Package/n2n/conffiles
/etc/config/n2n
endef
define Package/n2n-utils
$(call Package/n2n/template)
DEPENDS+=+n2n +libpcap
endef
define Package/n2n-utils/description
This package contains extend utilities for the N2N infrastructure.
endef
CMAKE_OPTIONS+= \
-DCMAKE_BUILD_TYPE=Release \
-DN2N_OPTION_USE_PTHREAD=ON \
-DN2N_OPTION_USE_OPENSSL=ON \
-DN2N_OPTION_USE_PCAPLIB=ON \
-DN2N_OPTION_USE_ZSTD=ON
define Package/n2n/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/edge $(1)/usr/bin/n2n-edge
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/supernode $(1)/usr/bin/n2n-supernode
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) ./files/n2n.config $(1)/etc/config/n2n
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/n2n.init $(1)/etc/init.d/n2n
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/n2n-migrate-conf.sh $(1)/etc/uci-defaults/50-n2n-migrate-conf
endef
define Package/n2n-utils/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/n2n-benchmark $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/n2n-decode $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/n2n-keygen $(1)/usr/bin/
endef
$(eval $(call BuildPackage,n2n))
$(eval $(call BuildPackage,n2n-utils))
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
[ ! -e "/etc/config/n2n_v2" ] || mv "/etc/config/n2n_v2" "/etc/config/n2n"
exit 0
+24
View File
@@ -0,0 +1,24 @@
config edge
option enabled '0'
option tunname 'n2n0'
option mode 'static'
option ipaddr '10.0.0.100'
option prefix '24'
option mtu '1290'
option supernode '1.2.3.4'
option port '1234'
option community 'example'
option key 'password'
option route '1'
option masquerade '0'
config supernode
option enabled '0'
option port '1235'
option subnet '10.0.0.0-10.0.0.0/24'
config route
option enabled '0'
option ip '192.168.2.0'
option mask '24'
option gw '10.0.0.200'
+146
View File
@@ -0,0 +1,146 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2020 OpenWrt.org
# Copyright (C) 2022 ImmortalWrt.org
START=99
USE_PROCD=1
start_instance() {
local cfg="$1"
local type
config_get type "$cfg" TYPE
case "$type" in
edge)
local enabled
config_get_bool enabled "$cfg" 'enabled' '0'
[ "$enabled" = "1" ] || return 1
local masquerade tunname mode ipaddr prefix mtu
local supernode port second_supernode second_port
local community key route
config_get_bool masquerade "$cfg" 'masquerade' '0'
config_get tunname "$cfg" 'tunname'
config_get mode "$cfg" 'mode'
config_get ipaddr "$cfg" 'ipaddr'
config_get prefix "$cfg" 'prefix'
config_get mtu "$cfg" 'mtu'
config_get supernode "$cfg" 'supernode'
config_get port "$cfg" 'port'
config_get second_supernode "$cfg" 'second_supernode'
config_get second_port "$cfg" 'second_port'
config_get community "$cfg" 'community'
config_get key "$cfg" 'key'
config_get_bool route "$cfg" 'route' '0'
local address
address="$ipaddr/$prefix"
[ "$mode" != 'dhcp' ] || address='0.0.0.0'
procd_open_instance "edge_$cfg"
procd_set_param command /usr/bin/n2n-edge -f
procd_append_param command -u 0 -g 0
procd_append_param command -d "$tunname"
procd_append_param command -a "$mode:$address"
procd_append_param command -c "$community"
procd_append_param command -l "$supernode:$port"
[ -z "$key" ] || procd_append_param command -k "$key"
[ -z "$mtu" ] || procd_append_param command -M "$mtu"
[ -z "$second_supernode" -o -z "$second_port" ] || procd_append_param command -l "$second_supernode:$second_port"
[ "$route" = "0" ] || procd_append_param command -r
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
iptables -I FORWARD -i "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth'
iptables -I FORWARD -o "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth'
[ "$masquerade" = "0" ] || iptables -t nat -I POSTROUTING -o "$tunname" -j MASQUERADE -m comment --comment 'n2n edge net'
;;
supernode)
local enabled
config_get_bool enabled "$cfg" 'enabled' '0'
[ "$enabled" = "1" ] || return 1
local port subnet
config_get port "$cfg" 'port'
config_get subnet "$cfg" 'subnet'
procd_open_instance "supernode_$cfg"
procd_set_param command /usr/bin/n2n-supernode -f
procd_append_param command -p "$port"
procd_append_param command -a "$subnet"
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
iptables -I INPUT -p udp --dport $port -j ACCEPT -m comment --comment 'n2n supernode port'
;;
route)
local enabled
config_get_bool enabled "$cfg" 'enabled' '0'
[ "$enabled" = "1" ] || return 1
local ip mask gw
config_get ip "$cfg" 'ip'
config_get mask "$cfg" 'mask'
config_get gw "$cfg" 'gw'
route add -net "$ip/$mask" gw "$gw"
;;
esac
}
stop_instance() {
local cfg="$1"
local type
config_get type "$cfg" TYPE
case "$type" in
edge)
local tunname masquerade
config_get tunname "$cfg" 'tunname'
config_get_bool masquerade "$cfg" 'masquerade' '0'
iptables -D FORWARD -i "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' 2>/dev/null
iptables -D FORWARD -o "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' 2>/dev/null
iptables -t nat -D POSTROUTING -o "$tunname" -j MASQUERADE -m comment --comment 'n2n edge net' 2>"/dev/null"
;;
supernode)
local port
config_get port "$cfg" 'port'
iptables -D INPUT -p udp --dport "$port" -j ACCEPT -m comment --comment 'n2n supernode port' 2>"/dev/null"
;;
esac
}
start_service() {
config_load 'n2n'
config_foreach start_instance 'edge'
config_foreach start_instance 'supernode'
( sleep 2; config_foreach start_instance 'route'; ) &
}
stop_service() {
config_load 'n2n'
config_foreach stop_instance 'edge'
config_foreach stop_instance 'supernode'
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "n2n"
}
+11
View File
@@ -0,0 +1,11 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -185,7 +185,7 @@ if(N2N_OPTION_USE_PCAPLIB AND (NOT DEFIN
# Linux Capabilities
find_library(CAP_LIB cap)
if(CAP_LIB)
- target_link_libraries(edge cap.a)
+ target_link_libraries(edge cap)
set(CMAKE_REQUIRED_LIBRARIES ${CAP_LIB})
ADD_DEFINITIONS("-DHAVE_LIBCAP")
endif()
@@ -0,0 +1,30 @@
--- a/src/edge_utils.c
+++ b/src/edge_utils.c
@@ -19,6 +19,7 @@
#include "n2n.h"
#include "network_traffic_filter.h"
#include "edge_utils_win32.h"
+#include <zstd.h>
/* heap allocation for compression as per lzo example doc */
#define HEAP_ALLOC(var,size) lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ]
--- a/tools/n2n-benchmark.c
+++ b/tools/n2n-benchmark.c
@@ -23,6 +23,7 @@
#endif
#include "n2n.h"
+#include <zstd.h>
#define DURATION 2.5 // test duration per algorithm
#define PACKETS_BEFORE_GETTIME 2047 // do not check time after every packet but after (2 ^ n - 1)
--- a/tools/tests-compress.c
+++ b/tools/tests-compress.c
@@ -22,6 +22,7 @@
#include "n2n.h"
#include "hexdump.h"
+#include <zstd.h>
/* heap allocation for compression as per lzo example doc */
#define HEAP_ALLOC(var,size) lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ]
+9
View File
@@ -0,0 +1,9 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
project(n2n)
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 3.10)
include(CheckFunctionExists)
SET(CMAKE_VERBOSE_MAKEFILE ON)