n2n_define.h (n2n-2.8) | : | n2n_define.h (n2n-3.0) | ||
---|---|---|---|---|
/** | /** | |||
* (C) 2007-20 - ntop.org and contributors | * (C) 2007-21 - ntop.org and contributors | |||
* | * | |||
* This program is free software; you can redistribute it and/or modify | * This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 3 of the License, or | * the Free Software Foundation; either version 3 of the License, or | |||
* (at your option) any later version. | * (at your option) any later version. | |||
* | * | |||
* This program is distributed in the hope that it will be useful, | * This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | * GNU General Public License for more details. | |||
* | * | |||
* You should have received a copy of the GNU General Public License | * You should have received a copy of the GNU General Public License | |||
* along with this program; if not see see <http://www.gnu.org/licenses/> | * along with this program; if not see see <http://www.gnu.org/licenses/> | |||
* | * | |||
*/ | */ | |||
/* N2N packet header indicators. */ | /* N2N packet header indicators. */ | |||
#define MSG_TYPE_REGISTER 1 | #define MSG_TYPE_REGISTER 1 | |||
#define MSG_TYPE_DEREGISTER 2 | #define MSG_TYPE_DEREGISTER 2 | |||
#define MSG_TYPE_PACKET 3 | #define MSG_TYPE_PACKET 3 | |||
#define MSG_TYPE_REGISTER_ACK 4 | #define MSG_TYPE_REGISTER_ACK 4 | |||
#define MSG_TYPE_REGISTER_SUPER 5 | #define MSG_TYPE_REGISTER_SUPER 5 | |||
#define MSG_TYPE_REGISTER_SUPER_ACK 6 | #define MSG_TYPE_UNREGISTER_SUPER 6 | |||
#define MSG_TYPE_REGISTER_SUPER_NAK 7 | #define MSG_TYPE_REGISTER_SUPER_ACK 7 | |||
#define MSG_TYPE_FEDERATION 8 | #define MSG_TYPE_REGISTER_SUPER_NAK 8 | |||
#define MSG_TYPE_PEER_INFO 9 | #define MSG_TYPE_FEDERATION 9 | |||
#define MSG_TYPE_QUERY_PEER 10 | #define MSG_TYPE_PEER_INFO 10 | |||
#define MSG_TYPE_MAX_TYPE 10 | #define MSG_TYPE_QUERY_PEER 11 | |||
#define MSG_TYPE_MAX_TYPE 11 | ||||
#define SOCKET_TIMEOUT_INTERVAL_SECS 10 | #define MSG_TYPE_RE_REGISTER_SUPER 12 | |||
#define REGISTER_SUPER_INTERVAL_DFL 20 /* sec, usually UDP NAT entries in a | ||||
firewall expire after 30 seconds */ | ||||
#define IFACE_UPDATE_INTERVAL (30) /* sec. How long it usually takes t | /* Max available space to add supernodes' informations (sockets and MACs) in REG | |||
o get an IP lease. */ | ISTER_SUPER_ACK | |||
#define TRANSOP_TICK_INTERVAL (10) /* sec */ | * Field sizes of REGISTER_SUPER_ACK as used in encode/decode fucntions in src/w | |||
ire.c | ||||
*/ | ||||
#define REG_SUPER_ACK_PAYLOAD_SPACE (DEFAULT_MTU - (sizeof(n2n_common_t) + s | ||||
izeof(n2n_REGISTER_SUPER_ACK_t))) | ||||
#define PURGE_REGISTRATION_FREQUENCY 30 | /* Space needed to store socket and MAC address of a supernode */ | |||
#define REGISTRATION_TIMEOUT 60 | #define REG_SUPER_ACK_PAYLOAD_ENTRY_SIZE (sizeof(n2n_REGISTER_SUPER_ACK_payload_ | |||
t)) | ||||
#define SORT_COMMUNITIES_INTERVAL 90 /* sec. until supernode sorts communit | #define BOOTSTRAP_TIMEOUT 3 | |||
ies' hash list again */ | #define PURGE_REGISTRATION_FREQUENCY 30 | |||
#define RE_REG_AND_PURGE_FREQUENCY 10 | ||||
#define REGISTRATION_TIMEOUT 60 | ||||
#define SOCKET_TIMEOUT_INTERVAL_SECS 10 | ||||
#define REGISTER_SUPER_INTERVAL_DFL 20 /* sec, usually UDP NAT entries in a | ||||
firewall expire after 30 seconds */ | ||||
#define SWEEP_TIME 30 /* sec, indicates the value after wh | ||||
ich we have to sort the hash list of supernodes in edges | ||||
* and when we send out packets to q | ||||
uery selection-relevant informations from supernodes. */ | ||||
#define NUMBER_SN_PINGS_INITIAL 15 /* number of supernodes to concurren | ||||
tly ping during bootstrap and immediately afterwards */ | ||||
#define NUMBER_SN_PINGS_REGULAR 5 /* number of supernodes to concurren | ||||
tly ping during regular edge operation */ | ||||
/* Timeouts used in re_register_and_purge_supernodes. LAST_SEEN_SN_ACTIVE and LA | ||||
ST_SEEN_SN_INACTIVE | ||||
* values should be at least 3*SOCKET_TIMEOUT_INTERVAL_SECS apart. */ | ||||
#define LAST_SEEN_SN_ACTIVE 20 /* sec, indicates supernodes that ar | ||||
e proven to be active */ | ||||
#define LAST_SEEN_SN_INACTIVE 90 /* sec, indicates supernodes that ar | ||||
e proven to be inactive: they will be purged */ | ||||
#define LAST_SEEN_SN_NEW (LAST_SEEN_SN_INACTIVE - 3 * RE_REG_AND | ||||
_PURGE_FREQUENCY) /* sec, indicates supernodes with unsure status, must be teste | ||||
d to check if they are active */ | ||||
#define IFACE_UPDATE_INTERVAL (30) /* sec. How long it usually takes | ||||
to get an IP lease. */ | ||||
#define TRANSOP_TICK_INTERVAL (10) /* sec */ | ||||
#define SORT_COMMUNITIES_INTERVAL 90 /* sec. until supernode sorts commun | ||||
ities' hash list again */ | ||||
#define AF_INVALID -1 /* to mark a socket invalid by an in | ||||
valid address family (do not use AF_UNSPEC, it could turn into auto-detect) */ | ||||
#define N2N_RESOLVE_INTERVAL 300 /* seconds until edge and supernode | ||||
try to resolve supernode names again */ | ||||
#define N2N_RESOLVE_CHECK_INTERVAL 30 /* seconds until main loop checking | ||||
in on changes from resolver thread */ | ||||
#define ETH_FRAMESIZE 14 | #define ETH_FRAMESIZE 14 | |||
#define IP4_SRCOFFSET 12 | #define IP4_SRCOFFSET 12 | |||
#define IP4_DSTOFFSET 16 | #define IP4_DSTOFFSET 16 | |||
#define IP4_MIN_SIZE 20 | #define IP4_MIN_SIZE 20 | |||
#define UDP_SIZE 8 | #define UDP_SIZE 8 | |||
/* parameters for replay protection */ | /* parameters for replay protection */ | |||
#define TIME_STAMP_FRAME 0x0000001000000000LL /* clocks of different compu | #define TIME_STAMP_FRAME 0x0000001000000000LL /* clocks of differen | |||
ters are allowed +/- 16 seconds to be off */ | t computers are allowed +/- 16 seconds to be off */ | |||
#define TIME_STAMP_JITTER 0x0000000027100000LL /* we allow a packet to arri | #define TIME_STAMP_JITTER 0x0000000027100000LL /* we allow a packet | |||
ve 160 ms (== 0x27100 us) before another | to arrive 160 ms (== 0x27100 us) before another | |||
* set to 0x000000000000000 | * set to 0x000000000 | |||
0LL if increasing (or equal) time stamps allowed only */ | 0000000LL if increasing (or equal) time stamps allowed only */ | |||
#define TIME_STAMP_ALLOW_JITTER 1 /* constant for allow | ||||
/* parameter for random number generation */ | ing or... */ | |||
#define RND_RETRIES 1000 /* syscall and inquiring random number from hardwar | #define TIME_STAMP_NO_JITTER 0 /* not allowing jitte | |||
e generators might fail, so we will retry */ | r to be considered */ | |||
/* N2N compression indicators. */ | /* N2N compression indicators. */ | |||
/* Compression is disabled by default for outgoing packets if no cli | /* Compression is disabled by default for outgoing packets if no cli | |||
* option is given. All edges are built with decompression support so | * option is given. All edges are built with decompression support so | |||
* they are able to understand each other (this applies to lzo only). */ | * they are able to understand each other (this applies to lzo only). */ | |||
#define N2N_COMPRESSION_ID_NONE 0 /* default, see edge_init | #define N2N_COMPRESSION_ID_INVALID 0 | |||
_conf_defaults(...) in edge_utils.c */ | #define N2N_COMPRESSION_ID_NONE 1 /* default, see edge | |||
#define N2N_COMPRESSION_ID_LZO 1 /* set if '-z1' or '-z' cli optio | _init_conf_defaults(...) in edge_utils.c */ | |||
n is present, see setOption(...) in edge.c */ | #define N2N_COMPRESSION_ID_LZO 2 /* set if '-z1' or ' | |||
#ifdef N2N_HAVE_ZSTD | -z' cli option is present, see setOption(...) in edge.c */ | |||
#define N2N_COMPRESSION_ID_ZSTD 2 /* set if '-z2' cli optio | #define N2N_COMPRESSION_ID_ZSTD 3 /* set if '-z2' cli | |||
n is present, available only if compiled with zstd lib */ | option is present, available only if compiled with zstd lib */ | |||
#define ZSTD_COMPRESSION_LEVEL 7 /* 1 (faster) ... 22 (more compre | #define ZSTD_COMPRESSION_LEVEL 7 /* 1 (faster) ... 22 | |||
ssion) */ | (more compression) */ | |||
#endif | ||||
// with the next major packet structure update, make '0' = invalid, and '1' = no | /* Federation name and indicators */ | |||
compression | #define FEDERATION_NAME "*Federation" | |||
// '2' = LZO, '3' = ZSTD, ... REVISIT then (also: change all occurences in sourc | enum federation {IS_NO_FEDERATION = 0,IS_FEDERATION = 1}; | |||
e). | ||||
/* (un)purgeable community indicator (supernode) */ | ||||
#define COMMUNITY_UNPURGEABLE 0 | ||||
#define COMMUNITY_PURGEABLE 1 | ||||
#define N2N_COMPRESSION_ID_BITLEN 3 /* number of bits used for encodi | /* (un)purgeable supernode indicator */ | |||
ng compression id in the uppermost | enum sn_purge {SN_PURGEABLE = 0, SN_UNPURGEABLE = 1}; | |||
bits of transform_id; will be | ||||
obsolete as soon as compression gets | ||||
its own field in the packet. R | ||||
EVISIT then. */ | ||||
/* Header encryption indicators */ | /* Header encryption indicators */ | |||
#define HEADER_ENCRYPTION_UNKNOWN 0 | #define HEADER_ENCRYPTION_UNKNOWN 0 | |||
#define HEADER_ENCRYPTION_NONE 1 | #define HEADER_ENCRYPTION_NONE 1 | |||
#define HEADER_ENCRYPTION_ENABLED 2 | #define HEADER_ENCRYPTION_ENABLED 2 | |||
#define DEFAULT_MTU 1290 | /* REGISTER_SUPER_ACK packet hash length with user/pw auth, up to 16 bytes */ | |||
#define N2N_REG_SUP_HASH_CHECK_LEN 16 | ||||
#define HASH_ADD_PEER(head,add) \ | ||||
HASH_ADD(hh,head,mac_addr,sizeof(n2n_mac_t),add) | #define DEFAULT_MTU 1290 | |||
#define HASH_FIND_PEER(head,mac,out) \ | ||||
HASH_FIND(hh,head,mac,sizeof(n2n_mac_t),out) | #define HASH_ADD_PEER(head,add) \ | |||
#define N2N_EDGE_SN_HOST_SIZE 48 | HASH_ADD(hh,head,mac_addr,sizeof(n2n_mac_t),add) | |||
#define N2N_EDGE_NUM_SUPERNODES 2 | #define HASH_FIND_PEER(head,mac,out) \ | |||
#define N2N_EDGE_SUP_ATTEMPTS 3 /* Number of failed attmpts before movin | HASH_FIND(hh,head,mac,sizeof(n2n_mac_t),out) | |||
g on to next supernode. */ | #define N2N_EDGE_SN_HOST_SIZE 48 | |||
#define N2N_PATHNAME_MAXLEN 256 | #define N2N_EDGE_SUP_ATTEMPTS 3 /* Number of failed attmpts befo | |||
#define N2N_EDGE_MGMT_PORT 5644 | re moving on to next supernode. */ | |||
#define N2N_SN_MGMT_PORT 5645 | #define N2N_PATHNAME_MAXLEN 256 | |||
#define N2N_EDGE_MGMT_PORT 5644 | ||||
#define N2N_NETMASK_STR_SIZE 16 /* dotted decimal 12 numbers + 3 dots */ | #define N2N_SN_MGMT_PORT 5645 | |||
#define N2N_MACNAMSIZ 18 /* AA:BB:CC:DD:EE:FF + NULL*/ | ||||
#define N2N_IF_MODE_SIZE 16 /* static | dhcp */ | enum n2n_mgmt_type { | |||
N2N_MGMT_READ = 0, | ||||
N2N_MGMT_WRITE = 1, | ||||
}; | ||||
#define N2N_MGMT_PASSWORD "n2n" /* default password for managemen | ||||
t port access (so far, json only) */ | ||||
#define N2N_TCP_BACKLOG_QUEUE_SIZE 3 /* number of concurrently pending | ||||
connections to be accepted */ | ||||
/* NOT the number of max. TCP con | ||||
nections */ | ||||
#define N2N_CLOSE_SOCKET_COUNTER_MAX 15 /* number of times of edge's reco | ||||
nnects to supernode after */ | ||||
/* which the socket explicitly is | ||||
closed before reopening */ | ||||
/* flag used in add_sn_to_list_by_mac_or_sock */ | ||||
enum skip_add {SN_ADD = 0, SN_ADD_SKIP = 1, SN_ADD_ADDED = 2}; | ||||
#define N2N_NETMASK_STR_SIZE 16 /* dotted decimal 12 numbers + 3 dots */ | ||||
#define N2N_MACNAMSIZ 18 /* AA:BB:CC:DD:EE:FF + NULL*/ | ||||
#define N2N_IF_MODE_SIZE 16 /* static | dhcp */ | ||||
#define N2N_EDGE_DEFAULT_DEV_NAME "edge0" | ||||
#define N2N_EDGE_DEFAULT_NETMASK "255.255.255.0" /* default netmask for edg | ||||
e ip address... */ | ||||
#define N2N_EDGE_DEFAULT_CIDR_NM 24 /* ... also in cidr format | ||||
*/ | ||||
#define N2N_SN_LPORT_DEFAULT 7654 | #define N2N_SN_LPORT_DEFAULT 7654 | |||
#define N2N_SN_PKTBUF_SIZE 2048 | #define N2N_SN_PKTBUF_SIZE 2048 | |||
/* The way TUNTAP allocated IP. */ | ||||
#define TUNTAP_IP_MODE_SN_ASSIGN 0 | ||||
#define TUNTAP_IP_MODE_STATIC 1 | ||||
#define TUNTAP_IP_MODE_DHCP 2 | ||||
/* Default network segment of the auto ip address service provided by sn. */ | ||||
#define N2N_SN_MIN_AUTO_IP_NET_DEFAULT "10.128.0.0" | ||||
#define N2N_SN_MAX_AUTO_IP_NET_DEFAULT "10.255.255.0" | ||||
#define N2N_SN_AUTO_IP_NET_BIT_DEFAULT 24 | ||||
/* ************************************** */ | /* ************************************** */ | |||
#define SUPERNODE_IP "127.0.0.1" | #define SUPERNODE_IP "127.0.0.1" | |||
#define SUPERNODE_PORT 1234 | #define SUPERNODE_PORT 1234 | |||
/* ************************************** */ | /* ************************************** */ | |||
#define N2N_PKT_VERSION 3 | ||||
#define N2N_DEFAULT_TTL 2 /* can be forwarded twice at most */ | ||||
#define N2N_COMMUNITY_SIZE 20 | ||||
#define N2N_PRIVATE_PUBLIC_KEY_SIZE 32 | ||||
#define N2N_USER_KEY_LINE_STARTER '*' | ||||
#define N2N_MAC_SIZE 6 | ||||
#define N2N_NO_REG_COOKIE 0x00000000 | ||||
#define N2N_FORWARDED_REG_COOKIE 0x00001000 | ||||
#define N2N_PORT_REG_COOKIE 0x00004000 | ||||
#define N2N_REGULAR_REG_COOKIE 0x00010000 | ||||
#define N2N_MCAST_REG_COOKIE 0x00400000 | ||||
#define N2N_LOCAL_REG_COOKIE 0x01000000 | ||||
#define N2N_DESC_SIZE 16 | ||||
#define N2N_PKT_BUF_SIZE 2048 | ||||
#define N2N_SOCKBUF_SIZE 64 /* string representation of INET or INET6 | ||||
sockets */ | ||||
#define N2N_MULTICAST_PORT 1968 | ||||
#define N2N_MULTICAST_GROUP "224.0.0.68" | ||||
#ifdef WIN32 | ||||
#define N2N_IFNAMSIZ 64 | ||||
#else | ||||
#define N2N_IFNAMSIZ 16 /* 15 chars * NULL */ | ||||
#endif | ||||
#ifdef _MSC_VER | ||||
#define N2N_THREAD_RETURN_DATATYPE DWORD WINAPI | ||||
#define N2N_THREAD_PARAMETER_DATATYPE LPVOID | ||||
#else | ||||
#define N2N_THREAD_RETURN_DATATYPE void* | ||||
#define N2N_THREAD_PARAMETER_DATATYPE void* | ||||
#endif | ||||
#define SN_SELECTION_CRITERION_DATA_TYPE uint64_t | ||||
#define SN_SELECTION_CRITERION_BUF_SIZE 16 | ||||
#define N2N_TRANSFORM_ID_USER_START 64 | ||||
#define N2N_TRANSFORM_ID_MAX 65535 | ||||
#ifndef max | #ifndef max | |||
#define max(a, b) ((a < b) ? b : a) | #define max(a, b) (((a) < (b)) ? (b) : (a)) | |||
#endif | #endif | |||
#ifndef min | #ifndef min | |||
#define min(a, b) ((a > b) ? b : a) | #define min(a, b) (((a) >(b)) ? (b) : (a)) | |||
#endif | #endif | |||
End of changes. 15 change blocks. | ||||
79 lines changed or deleted | 200 lines changed or added |