mirror of
https://github.com/ChronosX88/netsukuku.git
synced 2024-11-26 04:02:19 +00:00
I fixed the compilation errors, And netsukuku now works correctly! Probably
This commit is contained in:
parent
5531cad3b8
commit
eb91be8f93
@ -665,7 +665,7 @@ static int iptcc_compile_chain(TC_HANDLE_T h, STRUCT_REPLACE *repl, struct chain
|
|||||||
strcpy(head->name.target.u.user.name, ERROR_TARGET);
|
strcpy(head->name.target.u.user.name, ERROR_TARGET);
|
||||||
head->name.target.u.target_size =
|
head->name.target.u.target_size =
|
||||||
ALIGN(sizeof(struct ipt_error_target));
|
ALIGN(sizeof(struct ipt_error_target));
|
||||||
strcpy(head->name.error, c->name);
|
strcpy(head->name.errorname, c->name);
|
||||||
} else {
|
} else {
|
||||||
repl->hook_entry[c->hooknum-1] = c->head_offset;
|
repl->hook_entry[c->hooknum-1] = c->head_offset;
|
||||||
repl->underflow[c->hooknum-1] = c->foot_offset;
|
repl->underflow[c->hooknum-1] = c->foot_offset;
|
||||||
|
144
src/netsukuku.c
144
src/netsukuku.c
@ -2,7 +2,7 @@
|
|||||||
* (c) Copyright 2005 Andrea Lo Pumo aka AlpT <alpt@freaknet.org>
|
* (c) Copyright 2005 Andrea Lo Pumo aka AlpT <alpt@freaknet.org>
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it and/or
|
* This source code is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License as published
|
* modify it under the terms of the GNU General Public License as published
|
||||||
* by the Free Software Foundation; either version 2 of the License,
|
* by the Free Software Foundation; either version 2 of the License,
|
||||||
* or (at your option) any later version.
|
* or (at your option) any later version.
|
||||||
*
|
*
|
||||||
@ -76,14 +76,14 @@ int is_ntkd_already_running(void)
|
|||||||
|
|
||||||
if(!(fd=fopen(server_opt.pid_file, "r"))) {
|
if(!(fd=fopen(server_opt.pid_file, "r"))) {
|
||||||
if(errno != ENOENT)
|
if(errno != ENOENT)
|
||||||
error("Cannot read pid file \"%s\": %s",
|
error("Cannot read pid file \"%s\": %s",
|
||||||
server_opt.pid_file, strerror(errno));
|
server_opt.pid_file, strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
fscanf(fd, "ntkd %d\n", &oldpid);
|
fscanf(fd, "ntkd %d\n", &oldpid);
|
||||||
if(ferror(fd)) {
|
if(ferror(fd)) {
|
||||||
error("error reading pid file \"%s\": %s\n",
|
error("error reading pid file \"%s\": %s\n",
|
||||||
server_opt.pid_file, strerror(errno));
|
server_opt.pid_file, strerror(errno));
|
||||||
fclose(fd);
|
fclose(fd);
|
||||||
return 0;
|
return 0;
|
||||||
@ -95,14 +95,14 @@ int is_ntkd_already_running(void)
|
|||||||
|
|
||||||
int ntk_load_maps(void)
|
int ntk_load_maps(void)
|
||||||
{
|
{
|
||||||
if(file_exist(server_opt.int_map_file) &&
|
if(file_exist(server_opt.int_map_file) &&
|
||||||
(me.int_map=load_map(server_opt.int_map_file,
|
(me.int_map=load_map(server_opt.int_map_file,
|
||||||
&me.cur_node)))
|
&me.cur_node)))
|
||||||
debug(DBG_NORMAL, "Internal map loaded");
|
debug(DBG_NORMAL, "Internal map loaded");
|
||||||
else
|
else
|
||||||
me.int_map=init_map(0);
|
me.int_map=init_map(0);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/* Don't load the bnode map, it's useless */
|
/* Don't load the bnode map, it's useless */
|
||||||
if((me.bnode_map=load_bmap(server_opt.bnode_map_file, me.ext_map,
|
if((me.bnode_map=load_bmap(server_opt.bnode_map_file, me.ext_map,
|
||||||
FAMILY_LVLS, &me.bmap_nodes))) {
|
FAMILY_LVLS, &me.bmap_nodes))) {
|
||||||
@ -111,16 +111,16 @@ int ntk_load_maps(void)
|
|||||||
#endif
|
#endif
|
||||||
bmap_levels_init(BMAP_LEVELS(FAMILY_LVLS), &me.bnode_map,
|
bmap_levels_init(BMAP_LEVELS(FAMILY_LVLS), &me.bnode_map,
|
||||||
&me.bmap_nodes);
|
&me.bmap_nodes);
|
||||||
bmap_counter_init(BMAP_LEVELS(FAMILY_LVLS), &me.bmap_nodes_closed,
|
bmap_counter_init(BMAP_LEVELS(FAMILY_LVLS), &me.bmap_nodes_closed,
|
||||||
&me.bmap_nodes_opened);
|
&me.bmap_nodes_opened);
|
||||||
|
|
||||||
if(file_exist(server_opt.ext_map_file) &&
|
if(file_exist(server_opt.ext_map_file) &&
|
||||||
(me.ext_map=load_extmap(server_opt.ext_map_file,
|
(me.ext_map=load_extmap(server_opt.ext_map_file,
|
||||||
&me.cur_quadg)))
|
&me.cur_quadg)))
|
||||||
debug(DBG_NORMAL, "External map loaded");
|
debug(DBG_NORMAL, "External map loaded");
|
||||||
else
|
else
|
||||||
me.ext_map=init_extmap(FAMILY_LVLS, 0);
|
me.ext_map=init_extmap(FAMILY_LVLS, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,12 +131,12 @@ int ntk_save_maps(void)
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
debug(DBG_NORMAL, "Saving the border nodes map");
|
debug(DBG_NORMAL, "Saving the border nodes map");
|
||||||
save_bmap(me.bnode_map, me.bmap_nodes, me.ext_map, me.cur_quadg,
|
save_bmap(me.bnode_map, me.bmap_nodes, me.ext_map, me.cur_quadg,
|
||||||
server_opt.bnode_map_file);
|
server_opt.bnode_map_file);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
debug(DBG_NORMAL, "Saving the external map");
|
debug(DBG_NORMAL, "Saving the external map");
|
||||||
save_extmap(me.ext_map, MAXGROUPNODE, &me.cur_quadg,
|
save_extmap(me.ext_map, MAXGROUPNODE, &me.cur_quadg,
|
||||||
server_opt.ext_map_file);
|
server_opt.ext_map_file);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -164,7 +164,7 @@ void usage(void)
|
|||||||
" -D Prevents running as daemon (Does not fork to the background)\n"
|
" -D Prevents running as daemon (Does not fork to the background)\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -r Runs in restricted mode\n"
|
" -r Runs in restricted mode\n"
|
||||||
" -m Share your internet connection with other nodes\n"
|
" -I Share your internet connection with other nodes\n"
|
||||||
"\n"
|
"\n"
|
||||||
" -c configuration file\n"
|
" -c configuration file\n"
|
||||||
" -l Enables logging to file\n"
|
" -l Enables logging to file\n"
|
||||||
@ -180,9 +180,9 @@ void usage(void)
|
|||||||
void fill_default_options(void)
|
void fill_default_options(void)
|
||||||
{
|
{
|
||||||
setzero(&server_opt, sizeof(server_opt));
|
setzero(&server_opt, sizeof(server_opt));
|
||||||
|
|
||||||
server_opt.family=AF_INET;
|
server_opt.family=AF_INET;
|
||||||
|
|
||||||
server_opt.config_file=NTK_CONFIG_FILE;
|
server_opt.config_file=NTK_CONFIG_FILE;
|
||||||
server_opt.pid_file=NTK_PID_FILE;
|
server_opt.pid_file=NTK_PID_FILE;
|
||||||
|
|
||||||
@ -250,7 +250,7 @@ void fill_loaded_cfg_options(void)
|
|||||||
|
|
||||||
CONF_GET_INT_VALUE ( CONF_NTK_INTERNET_CONNECTION, server_opt.inet_connection);
|
CONF_GET_INT_VALUE ( CONF_NTK_INTERNET_CONNECTION, server_opt.inet_connection);
|
||||||
if((value=CONF_GET_VALUE(CONF_NTK_INTERNET_GW))) {
|
if((value=CONF_GET_VALUE(CONF_NTK_INTERNET_GW))) {
|
||||||
if(str_to_inet_gw(value, &server_opt.inet_gw,
|
if(str_to_inet_gw(value, &server_opt.inet_gw,
|
||||||
&server_opt.inet_gw_dev))
|
&server_opt.inet_gw_dev))
|
||||||
fatal("Malformed `%s' option: \"%s\". Its syntax is \"IP:dev\"",
|
fatal("Malformed `%s' option: \"%s\". Its syntax is \"IP:dev\"",
|
||||||
config_str[CONF_NTK_INTERNET_GW], value);
|
config_str[CONF_NTK_INTERNET_GW], value);
|
||||||
@ -262,7 +262,7 @@ void fill_loaded_cfg_options(void)
|
|||||||
bandwidth_in_8bit((server_opt.my_upload_bw+server_opt.my_dnload_bw)/2);
|
bandwidth_in_8bit((server_opt.my_upload_bw+server_opt.my_dnload_bw)/2);
|
||||||
|
|
||||||
if((value=CONF_GET_VALUE(CONF_NTK_INTERNET_PING_HOSTS))) {
|
if((value=CONF_GET_VALUE(CONF_NTK_INTERNET_PING_HOSTS))) {
|
||||||
server_opt.inet_hosts=parse_internet_hosts(value,
|
server_opt.inet_hosts=parse_internet_hosts(value,
|
||||||
&server_opt.inet_hosts_counter);
|
&server_opt.inet_hosts_counter);
|
||||||
if(!server_opt.inet_hosts)
|
if(!server_opt.inet_hosts)
|
||||||
fatal("Malformed `%s' option: \"%s\". "
|
fatal("Malformed `%s' option: \"%s\". "
|
||||||
@ -282,7 +282,7 @@ void fill_loaded_cfg_options(void)
|
|||||||
void free_server_opt(void)
|
void free_server_opt(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if(server_opt.config_file != NTK_CONFIG_FILE)
|
if(server_opt.config_file != NTK_CONFIG_FILE)
|
||||||
xfree(server_opt.config_file);
|
xfree(server_opt.config_file);
|
||||||
if(server_opt.pid_file != NTK_PID_FILE)
|
if(server_opt.pid_file != NTK_PID_FILE)
|
||||||
@ -341,16 +341,16 @@ void parse_options(int argc, char **argv)
|
|||||||
{"no_andna", 0, 0, 'a'},
|
{"no_andna", 0, 0, 'a'},
|
||||||
{"no_daemon", 0, 0, 'D'},
|
{"no_daemon", 0, 0, 'D'},
|
||||||
{"no_resolv", 0, 0, 'R'},
|
{"no_resolv", 0, 0, 'R'},
|
||||||
|
|
||||||
{"restricted", 0, 0, 'r'},
|
{"restricted", 0, 0, 'r'},
|
||||||
{"share-inet", 0, 0, 'I'},
|
{"share-inet", 0, 0, 'I'},
|
||||||
|
|
||||||
{"debug", 0, 0, 'd'},
|
{"debug", 0, 0, 'd'},
|
||||||
{"version", 0, 0, 'v'},
|
{"version", 0, 0, 'v'},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
c = getopt_long (argc, argv,"i:c:l:hvd64DRrIa", long_options,
|
c = getopt_long (argc, argv,"i:c:l:hvd64DRrIa", long_options,
|
||||||
&option_index);
|
&option_index);
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
@ -359,7 +359,7 @@ void parse_options(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
case 'v':
|
case 'v':
|
||||||
printf("%s\n",VERSION_STR);
|
printf("%s\n",VERSION_STR);
|
||||||
exit(0);
|
exit(0);
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
usage();
|
usage();
|
||||||
@ -376,14 +376,14 @@ void parse_options(int argc, char **argv)
|
|||||||
"development, nothing is assured to work.");
|
"development, nothing is assured to work.");
|
||||||
server_opt.family=AF_INET6;
|
server_opt.family=AF_INET6;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
server_opt.config_file=xstrndup(optarg, NAME_MAX-1);
|
server_opt.config_file=xstrndup(optarg, NAME_MAX-1);
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
if(log_to_file(optarg) < 0)
|
if(log_to_file(optarg) < 0)
|
||||||
fatal(0);
|
fatal(0);
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
if(server_opt.ifs_n+1 >= MAX_INTERFACES)
|
if(server_opt.ifs_n+1 >= MAX_INTERFACES)
|
||||||
fatal("The maximum number of interfaces is %d",
|
fatal("The maximum number of interfaces is %d",
|
||||||
MAX_INTERFACES);
|
MAX_INTERFACES);
|
||||||
@ -407,7 +407,7 @@ void parse_options(int argc, char **argv)
|
|||||||
*
|
*
|
||||||
* This is the problem:
|
* This is the problem:
|
||||||
* ntkd -abcrdefg
|
* ntkd -abcrdefg
|
||||||
* If 'r' is an element that specifies an
|
* If 'r' is an element that specifies an
|
||||||
* optional argument, then the "defg" string
|
* optional argument, then the "defg" string
|
||||||
* is taken as its arg, but this is not what
|
* is taken as its arg, but this is not what
|
||||||
* we want because in this case '-r' is
|
* we want because in this case '-r' is
|
||||||
@ -463,7 +463,7 @@ void check_conflicting_options(void)
|
|||||||
#define FATAL_NOT_SPECIFIED(str) fatal("You didn't specified the `%s' " \
|
#define FATAL_NOT_SPECIFIED(str) fatal("You didn't specified the `%s' " \
|
||||||
"option in netsukuku.conf", \
|
"option in netsukuku.conf", \
|
||||||
(str)); \
|
(str)); \
|
||||||
|
|
||||||
if(!server_opt.pid_file)
|
if(!server_opt.pid_file)
|
||||||
FATAL_NOT_SPECIFIED("pid_file");
|
FATAL_NOT_SPECIFIED("pid_file");
|
||||||
|
|
||||||
@ -471,12 +471,12 @@ void check_conflicting_options(void)
|
|||||||
FATAL_NOT_SPECIFIED("internet_ping_hosts");
|
FATAL_NOT_SPECIFIED("internet_ping_hosts");
|
||||||
|
|
||||||
|
|
||||||
if(server_opt.restricted && server_opt.share_internet &&
|
if(server_opt.restricted && server_opt.share_internet &&
|
||||||
!file_exist(server_opt.ip_masq_script))
|
!file_exist(server_opt.ip_masq_script))
|
||||||
fatal("ip_masquerade_script \"%s\" is inexistent",
|
fatal("ip_masquerade_script \"%s\" is inexistent",
|
||||||
server_opt.ip_masq_script);
|
server_opt.ip_masq_script);
|
||||||
|
|
||||||
if(server_opt.shape_internet &&
|
if(server_opt.shape_internet &&
|
||||||
!file_exist(server_opt.tc_shaper_script))
|
!file_exist(server_opt.tc_shaper_script))
|
||||||
fatal("tc_shaper_script \"%s\" is inexistent",
|
fatal("tc_shaper_script \"%s\" is inexistent",
|
||||||
server_opt.ip_masq_script);
|
server_opt.ip_masq_script);
|
||||||
@ -485,8 +485,8 @@ void check_conflicting_options(void)
|
|||||||
fatal("inet_connection=1 but ntk_restricted_mode=0. If you "
|
fatal("inet_connection=1 but ntk_restricted_mode=0. If you "
|
||||||
"want to be compatible with the Internet, "
|
"want to be compatible with the Internet, "
|
||||||
"set the restricted mode in the options");
|
"set the restricted mode in the options");
|
||||||
|
|
||||||
if(!server_opt.restricted &&
|
if(!server_opt.restricted &&
|
||||||
(server_opt.share_internet))
|
(server_opt.share_internet))
|
||||||
fatal("You want to share your Internet connection,"
|
fatal("You want to share your Internet connection,"
|
||||||
"but I am not running in restricted mode (-r), "
|
"but I am not running in restricted mode (-r), "
|
||||||
@ -498,7 +498,7 @@ void check_conflicting_options(void)
|
|||||||
"your bandwidth is just TOO small. Do not share "
|
"your bandwidth is just TOO small. Do not share "
|
||||||
"it, or your connection will be saturated");
|
"it, or your connection will be saturated");
|
||||||
|
|
||||||
if(!server_opt.inet_connection && server_opt.share_internet) {
|
if(!server_opt.inet_connection && server_opt.share_internet) {
|
||||||
loginfo("You want to share your Internet connection,"
|
loginfo("You want to share your Internet connection,"
|
||||||
"but `internet_connection' is set to 0."
|
"but `internet_connection' is set to 0."
|
||||||
"We are assuming it is 1");
|
"We are assuming it is 1");
|
||||||
@ -509,7 +509,7 @@ void check_conflicting_options(void)
|
|||||||
fatal("The Internet traffic shaping option is set, but "
|
fatal("The Internet traffic shaping option is set, but "
|
||||||
"the `internet_connection' is set to 0, please check "
|
"the `internet_connection' is set to 0, please check "
|
||||||
"your options.");
|
"your options.");
|
||||||
|
|
||||||
#ifdef IPV6_DISABLED
|
#ifdef IPV6_DISABLED
|
||||||
if(server_opt.inet_gw.family == AF_INET6)
|
if(server_opt.inet_gw.family == AF_INET6)
|
||||||
fatal("Ipv6 is not supported");
|
fatal("Ipv6 is not supported");
|
||||||
@ -519,10 +519,10 @@ void check_conflicting_options(void)
|
|||||||
void init_netsukuku(char **argv)
|
void init_netsukuku(char **argv)
|
||||||
{
|
{
|
||||||
xsrand();
|
xsrand();
|
||||||
|
|
||||||
if(geteuid())
|
if(geteuid())
|
||||||
fatal("Need root privileges");
|
fatal("Need root privileges");
|
||||||
|
|
||||||
destroy_netsukuku_mutex=pid_saved=0;
|
destroy_netsukuku_mutex=pid_saved=0;
|
||||||
sigterm_timestamp=sighup_timestamp=sigalrm_timestamp=0;
|
sigterm_timestamp=sighup_timestamp=sigalrm_timestamp=0;
|
||||||
setzero(&me, sizeof(struct current_globals));
|
setzero(&me, sizeof(struct current_globals));
|
||||||
@ -532,7 +532,7 @@ void init_netsukuku(char **argv)
|
|||||||
server_opt.pid_file);
|
server_opt.pid_file);
|
||||||
else
|
else
|
||||||
save_pid();
|
save_pid();
|
||||||
|
|
||||||
my_family=server_opt.family;
|
my_family=server_opt.family;
|
||||||
restricted_mode =server_opt.restricted;
|
restricted_mode =server_opt.restricted;
|
||||||
restricted_class=server_opt.restricted_class ? RESTRICTED_172 : RESTRICTED_10;
|
restricted_class=server_opt.restricted_class ? RESTRICTED_172 : RESTRICTED_10;
|
||||||
@ -540,15 +540,15 @@ void init_netsukuku(char **argv)
|
|||||||
/* Check if the DATA_DIR exists, if not create it */
|
/* Check if the DATA_DIR exists, if not create it */
|
||||||
if(check_and_create_dir(DATA_DIR))
|
if(check_and_create_dir(DATA_DIR))
|
||||||
fatal("Cannot access to the %s directory. Exiting.", DATA_DIR);
|
fatal("Cannot access to the %s directory. Exiting.", DATA_DIR);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Device initialization
|
* Device initialization
|
||||||
*/
|
*/
|
||||||
if(if_init_all(server_opt.ifs, server_opt.ifs_n,
|
if(if_init_all(server_opt.ifs, server_opt.ifs_n,
|
||||||
me.cur_ifs, &me.cur_ifs_n) < 0)
|
me.cur_ifs, &me.cur_ifs_n) < 0)
|
||||||
fatal("Cannot initialize any network interfaces");
|
fatal("Cannot initialize any network interfaces");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ANDNA init
|
* ANDNA init
|
||||||
*/
|
*/
|
||||||
if(!server_opt.disable_andna)
|
if(!server_opt.disable_andna)
|
||||||
@ -558,10 +558,10 @@ void init_netsukuku(char **argv)
|
|||||||
* Initialize the Internet gateway stuff
|
* Initialize the Internet gateway stuff
|
||||||
*/
|
*/
|
||||||
if(server_opt.my_upload_bw && server_opt.my_dnload_bw)
|
if(server_opt.my_upload_bw && server_opt.my_dnload_bw)
|
||||||
me.my_bandwidth = bandwidth_in_8bit((server_opt.my_upload_bw +
|
me.my_bandwidth = bandwidth_in_8bit((server_opt.my_upload_bw +
|
||||||
server_opt.my_dnload_bw)/2);
|
server_opt.my_dnload_bw)/2);
|
||||||
init_internet_gateway_search();
|
init_internet_gateway_search();
|
||||||
|
|
||||||
pkts_init(me.cur_ifs, me.cur_ifs_n, 0);
|
pkts_init(me.cur_ifs, me.cur_ifs_n, 0);
|
||||||
qspn_init(FAMILY_LVLS);
|
qspn_init(FAMILY_LVLS);
|
||||||
|
|
||||||
@ -579,20 +579,20 @@ void init_netsukuku(char **argv)
|
|||||||
debug(DBG_NORMAL, "ACPT: Initializing the accept_tbl: \n"
|
debug(DBG_NORMAL, "ACPT: Initializing the accept_tbl: \n"
|
||||||
" max_connections: %d,\n"
|
" max_connections: %d,\n"
|
||||||
" max_accepts_per_host: %d,\n"
|
" max_accepts_per_host: %d,\n"
|
||||||
" max_accept_per_host_time: %d",
|
" max_accept_per_host_time: %d",
|
||||||
server_opt.max_connections,
|
server_opt.max_connections,
|
||||||
server_opt.max_accepts_per_host,
|
server_opt.max_accepts_per_host,
|
||||||
server_opt.max_accepts_per_host_time);
|
server_opt.max_accepts_per_host_time);
|
||||||
init_accept_tbl(server_opt.max_connections,
|
init_accept_tbl(server_opt.max_connections,
|
||||||
server_opt.max_accepts_per_host,
|
server_opt.max_accepts_per_host,
|
||||||
server_opt.max_accepts_per_host_time);
|
server_opt.max_accepts_per_host_time);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(restricted_mode)
|
if(restricted_mode)
|
||||||
loginfo("NetsukukuD is in restricted mode. "
|
loginfo("NetsukukuD is in restricted mode. "
|
||||||
"Restricted class: %s",
|
"Restricted class: %s",
|
||||||
server_opt.restricted_class?RESTRICTED_172_STR:RESTRICTED_10_STR);
|
server_opt.restricted_class?RESTRICTED_172_STR:RESTRICTED_10_STR);
|
||||||
|
|
||||||
hook_init();
|
hook_init();
|
||||||
rehook_init();
|
rehook_init();
|
||||||
|
|
||||||
@ -606,7 +606,7 @@ int destroy_netsukuku(void)
|
|||||||
destroy_netsukuku_mutex=1;
|
destroy_netsukuku_mutex=1;
|
||||||
|
|
||||||
unlink(server_opt.pid_file);
|
unlink(server_opt.pid_file);
|
||||||
|
|
||||||
ntk_save_maps();
|
ntk_save_maps();
|
||||||
ntk_free_maps();
|
ntk_free_maps();
|
||||||
if(!server_opt.disable_andna)
|
if(!server_opt.disable_andna)
|
||||||
@ -630,14 +630,14 @@ void sigterm_handler(int sig)
|
|||||||
if(sigterm_timestamp == (cur_t=time(0)))
|
if(sigterm_timestamp == (cur_t=time(0)))
|
||||||
return;
|
return;
|
||||||
sigterm_timestamp=time(0);
|
sigterm_timestamp=time(0);
|
||||||
|
|
||||||
if(!destroy_netsukuku())
|
if(!destroy_netsukuku())
|
||||||
fatal("Termination signal caught. Dying, bye, bye");
|
fatal("Termination signal caught. Dying, bye, bye");
|
||||||
}
|
}
|
||||||
|
|
||||||
void *reload_hostname_thread(void *null)
|
void *reload_hostname_thread(void *null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Reload the file where the hostnames to be registered are and
|
* Reload the file where the hostnames to be registered are and
|
||||||
* register the new ones
|
* register the new ones
|
||||||
*/
|
*/
|
||||||
@ -653,13 +653,13 @@ void sighup_handler(int sig)
|
|||||||
{
|
{
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
pthread_attr_t t_attr;
|
pthread_attr_t t_attr;
|
||||||
|
|
||||||
time_t cur_t;
|
time_t cur_t;
|
||||||
|
|
||||||
if(sighup_timestamp == (cur_t=time(0)))
|
if(sighup_timestamp == (cur_t=time(0)))
|
||||||
return;
|
return;
|
||||||
sighup_timestamp=time(0);
|
sighup_timestamp=time(0);
|
||||||
|
|
||||||
pthread_attr_init(&t_attr);
|
pthread_attr_init(&t_attr);
|
||||||
pthread_attr_setdetachstate(&t_attr, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&t_attr, PTHREAD_CREATE_DETACHED);
|
||||||
pthread_create(&thread, &t_attr, reload_hostname_thread, 0);
|
pthread_create(&thread, &t_attr, reload_hostname_thread, 0);
|
||||||
@ -667,7 +667,7 @@ void sighup_handler(int sig)
|
|||||||
|
|
||||||
void *rh_cache_flush_thread(void *null)
|
void *rh_cache_flush_thread(void *null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Flush the resolved hostnames cache.
|
* Flush the resolved hostnames cache.
|
||||||
*/
|
*/
|
||||||
loginfo("Flush the resolved hostnames cache");
|
loginfo("Flush the resolved hostnames cache");
|
||||||
@ -680,7 +680,7 @@ void sigalrm_handler(int sig)
|
|||||||
{
|
{
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
pthread_attr_t t_attr;
|
pthread_attr_t t_attr;
|
||||||
|
|
||||||
time_t cur_t;
|
time_t cur_t;
|
||||||
|
|
||||||
if(sigalrm_timestamp == (cur_t=time(0)))
|
if(sigalrm_timestamp == (cur_t=time(0)))
|
||||||
@ -703,9 +703,9 @@ int main(int argc, char **argv)
|
|||||||
pthread_t daemon_tcp_thread, daemon_udp_thread, andna_thread;
|
pthread_t daemon_tcp_thread, daemon_udp_thread, andna_thread;
|
||||||
pthread_t ping_igw_thread;
|
pthread_t ping_igw_thread;
|
||||||
pthread_attr_t t_attr;
|
pthread_attr_t t_attr;
|
||||||
|
|
||||||
log_init(argv[0], 0, 1);
|
log_init(argv[0], 0, 1);
|
||||||
|
|
||||||
/* Options loading... */
|
/* Options loading... */
|
||||||
fill_default_options();
|
fill_default_options();
|
||||||
parse_options(argc, argv);
|
parse_options(argc, argv);
|
||||||
@ -717,13 +717,13 @@ int main(int argc, char **argv)
|
|||||||
/* Load the option from the config file */
|
/* Load the option from the config file */
|
||||||
load_config_file(server_opt.config_file);
|
load_config_file(server_opt.config_file);
|
||||||
fill_loaded_cfg_options();
|
fill_loaded_cfg_options();
|
||||||
|
|
||||||
/* If a same option was specified in the config file and in the
|
/* If a same option was specified in the config file and in the
|
||||||
* command line, give priority to the latter */
|
* command line, give priority to the latter */
|
||||||
parse_options(argc, argv);
|
parse_options(argc, argv);
|
||||||
|
|
||||||
check_conflicting_options();
|
check_conflicting_options();
|
||||||
|
|
||||||
/* Initialize the whole netsukuku source code */
|
/* Initialize the whole netsukuku source code */
|
||||||
init_netsukuku(argv);
|
init_netsukuku(argv);
|
||||||
|
|
||||||
@ -732,14 +732,14 @@ int main(int argc, char **argv)
|
|||||||
signal(SIGINT, sigterm_handler);
|
signal(SIGINT, sigterm_handler);
|
||||||
signal(SIGTERM, sigterm_handler);
|
signal(SIGTERM, sigterm_handler);
|
||||||
signal(SIGQUIT, sigterm_handler);
|
signal(SIGQUIT, sigterm_handler);
|
||||||
|
|
||||||
/* Angelic foreground or Daemonic background ? */
|
/* Angelic foreground or Daemonic background ? */
|
||||||
if(server_opt.daemon) {
|
if(server_opt.daemon) {
|
||||||
loginfo("Forking to background");
|
loginfo("Forking to background");
|
||||||
log_init(argv[0], server_opt.dbg_lvl, 0);
|
log_init(argv[0], server_opt.dbg_lvl, 0);
|
||||||
if(daemon(0, 0) == -1)
|
if(daemon(0, 0) == -1)
|
||||||
error("Impossible to daemonize: %s.", strerror(errno));
|
error("Impossible to daemonize: %s.", strerror(errno));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_attr_init(&t_attr);
|
pthread_attr_init(&t_attr);
|
||||||
@ -747,9 +747,9 @@ int main(int argc, char **argv)
|
|||||||
setzero(&ud_argv, sizeof(struct udp_daemon_argv));
|
setzero(&ud_argv, sizeof(struct udp_daemon_argv));
|
||||||
port=xmalloc(sizeof(u_short));
|
port=xmalloc(sizeof(u_short));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are the daemons, the main threads that keeps NetsukukuD
|
* These are the daemons, the main threads that keeps NetsukukuD
|
||||||
* up & running.
|
* up & running.
|
||||||
*/
|
*/
|
||||||
debug(DBG_NORMAL, "Activating all daemons");
|
debug(DBG_NORMAL, "Activating all daemons");
|
||||||
|
|
||||||
@ -762,7 +762,7 @@ int main(int argc, char **argv)
|
|||||||
pthread_create(&daemon_udp_thread, &t_attr, udp_daemon, (void *)&ud_argv);
|
pthread_create(&daemon_udp_thread, &t_attr, udp_daemon, (void *)&ud_argv);
|
||||||
pthread_mutex_lock(&udp_daemon_lock);
|
pthread_mutex_lock(&udp_daemon_lock);
|
||||||
pthread_mutex_unlock(&udp_daemon_lock);
|
pthread_mutex_unlock(&udp_daemon_lock);
|
||||||
|
|
||||||
debug(DBG_SOFT, "Evoking the netsukuku tcp daemon.");
|
debug(DBG_SOFT, "Evoking the netsukuku tcp daemon.");
|
||||||
*port=ntk_tcp_port;
|
*port=ntk_tcp_port;
|
||||||
pthread_mutex_lock(&tcp_daemon_lock);
|
pthread_mutex_lock(&tcp_daemon_lock);
|
||||||
@ -770,19 +770,19 @@ int main(int argc, char **argv)
|
|||||||
pthread_mutex_lock(&tcp_daemon_lock);
|
pthread_mutex_lock(&tcp_daemon_lock);
|
||||||
pthread_mutex_unlock(&tcp_daemon_lock);
|
pthread_mutex_unlock(&tcp_daemon_lock);
|
||||||
|
|
||||||
|
|
||||||
/* Now we hook in Netsukuku */
|
/* Now we hook in Netsukuku */
|
||||||
netsukuku_hook(0, 0);
|
netsukuku_hook(0, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If not disabled, start the ANDNA daemon
|
* If not disabled, start the ANDNA daemon
|
||||||
*/
|
*/
|
||||||
if(!server_opt.disable_andna)
|
if(!server_opt.disable_andna)
|
||||||
pthread_create(&andna_thread, &t_attr, andna_main, 0);
|
pthread_create(&andna_thread, &t_attr, andna_main, 0);
|
||||||
|
|
||||||
xfree(port);
|
xfree(port);
|
||||||
|
|
||||||
if(restricted_mode && (server_opt.share_internet ||
|
if(restricted_mode && (server_opt.share_internet ||
|
||||||
server_opt.use_shared_inet)) {
|
server_opt.use_shared_inet)) {
|
||||||
debug(DBG_SOFT, "Evoking the Internet Gateway Pinger daemon");
|
debug(DBG_SOFT, "Evoking the Internet Gateway Pinger daemon");
|
||||||
pthread_create(&ping_igw_thread, &t_attr,
|
pthread_create(&ping_igw_thread, &t_attr,
|
||||||
|
Loading…
Reference in New Issue
Block a user