mirror of
https://github.com/ntop/n2n.git
synced 2024-09-19 16:41:11 +02:00
473b89c963
Most environments have predefined macros that identify the environment to the source code. If we use these macros instead of defining our own then there is one less parameter difference to keep track of with different builds cf: http://web.archive.org/web/20191012035921/http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system https://sourceforge.net/p/predef/wiki/OperatingSystems/
83 lines
3.6 KiB
C
83 lines
3.6 KiB
C
/**
|
|
* (C) 2007-22 - ntop.org and contributors
|
|
*
|
|
* 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
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* 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/>
|
|
*
|
|
*/
|
|
|
|
|
|
#include <stdbool.h>
|
|
#include <stdio.h> // for snprintf, NULL
|
|
#include <stdlib.h> // for exit
|
|
#include "n2n.h" // for n2n_edge_conf_t, edge_conf_add_supernode, edge_init
|
|
|
|
|
|
static bool keep_running = true;
|
|
|
|
int main() {
|
|
|
|
n2n_edge_conf_t conf;
|
|
tuntap_dev tuntap;
|
|
n2n_edge_t *eee;
|
|
int rc;
|
|
|
|
edge_init_conf_defaults(&conf);
|
|
conf.allow_p2p = 1; // Whether to allow peer-to-peer communication
|
|
conf.allow_routing = 1; // Whether to allow the edge to route packets to other edges
|
|
snprintf((char *)conf.community_name, sizeof(conf.community_name), "%s", "mycommunity"); // Community to connect to
|
|
conf.disable_pmtu_discovery = 1; // Whether to disable the path MTU discovery
|
|
conf.drop_multicast = 0; // Whether to disable multicast
|
|
conf.tuntap_ip_mode = TUNTAP_IP_MODE_SN_ASSIGN; // How to set the IP address
|
|
conf.encrypt_key = "mysecret"; // Secret to decrypt & encrypt with
|
|
conf.local_port = 0; // What port to use (0 = any port)
|
|
conf.mgmt_port = N2N_EDGE_MGMT_PORT; // Edge management port (5644 by default)
|
|
conf.register_interval = 1; // Interval for both UDP NAT hole punching and supernode registration
|
|
conf.register_ttl = 1; // Interval for UDP NAT hole punching through supernode
|
|
edge_conf_add_supernode(&conf, "localhost:1234"); // Supernode to connect to
|
|
conf.tos = 16; // Type of service for sent packets
|
|
conf.transop_id = N2N_TRANSFORM_ID_TWOFISH; // Use the twofish encryption
|
|
|
|
if(edge_verify_conf(&conf) != 0) {
|
|
return -1;
|
|
}
|
|
|
|
if(tuntap_open(&tuntap,
|
|
"edge0", // Name of the device to create
|
|
"static", // IP mode; static|dhcp
|
|
"10.0.0.1", // Set ip address
|
|
"255.255.255.0", // Netmask to use
|
|
"DE:AD:BE:EF:01:10", // Set mac address
|
|
DEFAULT_MTU // MTU to use
|
|
#ifdef _WIN32
|
|
, 0
|
|
#endif
|
|
) < 0)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
eee = edge_init(&conf, &rc);
|
|
if(eee == NULL) {
|
|
exit(1);
|
|
}
|
|
|
|
eee->keep_running = &keep_running;
|
|
rc = run_edge_loop(eee);
|
|
|
|
edge_term(eee);
|
|
tuntap_close(&tuntap);
|
|
|
|
return rc;
|
|
}
|