mirror of
https://github.com/ChronosX88/netsukuku.git
synced 2024-11-26 04:02:19 +00:00
I changed a lot in implementing and setting up testing stuff for netsplit, Including a new netsplit struct in netsukuku.h which may or may not be permanent. It was the only way I could find to preserve a variable from netsukuku.c to andns.c. Also, The netsukuku.c interface argument has, apparently, been just a break statement for a long time, I have reverted it. I still don't totally understand how it works, though. There is more to come!
This commit is contained in:
parent
8c39cf1d98
commit
704b7ebd76
@ -31,6 +31,8 @@
|
|||||||
#include "andns_net.h"
|
#include "andns_net.h"
|
||||||
#include "andns_snsd.h"
|
#include "andns_snsd.h"
|
||||||
#include "dnslib.h"
|
#include "dnslib.h"
|
||||||
|
#include "netsplit.h"
|
||||||
|
#include "netsukuku.h"
|
||||||
|
|
||||||
|
|
||||||
static uint8_t _dns_forwarding_;
|
static uint8_t _dns_forwarding_;
|
||||||
@ -950,6 +952,11 @@ andns_rslv(char *msg, int msglen, char *answer, int *answ_len)
|
|||||||
dns_pkt *dp;
|
dns_pkt *dp;
|
||||||
andns_pkt *ap;
|
andns_pkt *ap;
|
||||||
|
|
||||||
|
printf("andns_rslv msg %s answer %s", msg, answer);
|
||||||
|
|
||||||
|
if(netsplit.netsplit_inet_mode == 1)
|
||||||
|
inet_mode (msg);
|
||||||
|
|
||||||
proto = GET_NK_BIT(msg);
|
proto = GET_NK_BIT(msg);
|
||||||
if (proto == NK_DNS)
|
if (proto == NK_DNS)
|
||||||
res = d_u(msg, msglen, &dp);
|
res = d_u(msg, msglen, &dp);
|
||||||
|
@ -71,6 +71,8 @@ dns_exec_pkt(void *passed_argv)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("dns_exec_pkt buf: %s rpkt %s", buf, argv.rpkt);
|
||||||
|
|
||||||
/* Unpack the DNS query and resolve the hostname */
|
/* Unpack the DNS query and resolve the hostname */
|
||||||
if (!andns_rslv(buf, argv.rpkt_sz, answer_buffer, &answer_length))
|
if (!andns_rslv(buf, argv.rpkt_sz, answer_buffer, &answer_length))
|
||||||
return 0;
|
return 0;
|
||||||
@ -166,6 +168,8 @@ dns_wrapper_daemon(u_short port)
|
|||||||
exec_pkt_argv.rpkt_sz = err;
|
exec_pkt_argv.rpkt_sz = err;
|
||||||
exec_pkt_argv.rpkt = buf;
|
exec_pkt_argv.rpkt = buf;
|
||||||
|
|
||||||
|
printf("dns_wrapper_daemon buf: %s rpkt %s", buf, exec_pkt_argv.rpkt);
|
||||||
|
|
||||||
pthread_mutex_lock(&dns_exec_lock);
|
pthread_mutex_lock(&dns_exec_lock);
|
||||||
pthread_create(&thread, &t_attr, dns_exec_pkt,
|
pthread_create(&thread, &t_attr, dns_exec_pkt,
|
||||||
(void *) &exec_pkt_argv);
|
(void *) &exec_pkt_argv);
|
||||||
|
@ -22,7 +22,7 @@ getaddrinfodnsresolution(char *domain)
|
|||||||
hints.ai_socktype = SOCK_DGRAM; /* Dummy socket type */
|
hints.ai_socktype = SOCK_DGRAM; /* Dummy socket type */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use getaddrinfo() to resolve "www.kame.net" and allocate
|
* Use getaddrinfo() to resolve domain and allocate
|
||||||
* a linked list of addresses.
|
* a linked list of addresses.
|
||||||
*/
|
*/
|
||||||
error = getaddrinfo(domain, NULL, &hints, &res0);
|
error = getaddrinfo(domain, NULL, &hints, &res0);
|
||||||
|
@ -95,7 +95,7 @@ inet_mode (char *domain)
|
|||||||
|
|
||||||
if (ret1 != NULL)
|
if (ret1 != NULL)
|
||||||
{
|
{
|
||||||
new_domain[strlen (new_domain) - 6] = '\0';
|
new_domain[strlen (new_domain) - 5] = '\0';
|
||||||
printf ("inet_mode abbrevate: %s\n", new_domain);
|
printf ("inet_mode abbrevate: %s\n", new_domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +109,7 @@ inet_mode (char *domain)
|
|||||||
if (rt_value == 0)
|
if (rt_value == 0)
|
||||||
inetDNSResolution (new_domain);
|
inetDNSResolution (new_domain);
|
||||||
printf ("inet_mode normal\n");
|
printf ("inet_mode normal\n");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = strstr (new_domain, ".ntk");
|
ret = strstr (new_domain, ".ntk");
|
||||||
@ -116,7 +117,7 @@ inet_mode (char *domain)
|
|||||||
if (ret != NULL)
|
if (ret != NULL)
|
||||||
{
|
{
|
||||||
inet_mode_ntk_rslv:
|
inet_mode_ntk_rslv:
|
||||||
new_domain[strlen (new_domain) - 5] = '\0';
|
new_domain[strlen (new_domain) - 4] = '\0';
|
||||||
rt_value = isValidIpv4Address (new_domain);
|
rt_value = isValidIpv4Address (new_domain);
|
||||||
if (rt_value == AF_INET)
|
if (rt_value == AF_INET)
|
||||||
ntkipForwarding (new_domain, AF_INET);
|
ntkipForwarding (new_domain, AF_INET);
|
||||||
@ -125,8 +126,11 @@ inet_mode (char *domain)
|
|||||||
if (rt_value == 0)
|
if (rt_value == 0)
|
||||||
ntkDNSResolution (new_domain);
|
ntkDNSResolution (new_domain);
|
||||||
printf ("inet_mode abnormal\n");
|
printf ("inet_mode abnormal\n");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -155,7 +159,7 @@ ntk_mode (char *domain)
|
|||||||
|
|
||||||
if (ret1 != NULL)
|
if (ret1 != NULL)
|
||||||
{
|
{
|
||||||
new_domain[strlen (new_domain) - 5] = '\0';
|
new_domain[strlen (new_domain) - 4] = '\0';
|
||||||
printf ("ntk_mode abbrevate: %s\n", new_domain);
|
printf ("ntk_mode abbrevate: %s\n", new_domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,7 +180,7 @@ ntk_mode (char *domain)
|
|||||||
if (ret != NULL)
|
if (ret != NULL)
|
||||||
{
|
{
|
||||||
ntk_mode_inet_rslv:
|
ntk_mode_inet_rslv:
|
||||||
new_domain[strlen (new_domain) - 6] = '\0';
|
new_domain[strlen (new_domain) - 5] = '\0';
|
||||||
rt_value = isValidIpv4Address (new_domain);
|
rt_value = isValidIpv4Address (new_domain);
|
||||||
if (rt_value == AF_INET)
|
if (rt_value == AF_INET)
|
||||||
inetipForwarding (new_domain, AF_INET);
|
inetipForwarding (new_domain, AF_INET);
|
||||||
@ -189,7 +193,7 @@ ntk_mode (char *domain)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
/*void
|
||||||
domain_ip_processing (char *domain)
|
domain_ip_processing (char *domain)
|
||||||
{
|
{
|
||||||
char *ret;
|
char *ret;
|
||||||
@ -245,9 +249,10 @@ main (void)
|
|||||||
if (strcmp (request, "quit\n") == 0 || strcmp (request, "exit\n") == 0)
|
if (strcmp (request, "quit\n") == 0 || strcmp (request, "exit\n") == 0)
|
||||||
exit (0);
|
exit (0);
|
||||||
fflush (stdin);
|
fflush (stdin);
|
||||||
domain_ip_processing (request);
|
*strrchr(request, '\n') = '\0';
|
||||||
|
inet_mode (request);
|
||||||
free (request);
|
free (request);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}*/
|
||||||
|
58
src/netsplit.h
Normal file
58
src/netsplit.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/*
|
||||||
|
* File: netsplit.h
|
||||||
|
* Author: missvaleska
|
||||||
|
*
|
||||||
|
* Created on November 6, 2014, 6:44 PM
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NETSPLIT_H
|
||||||
|
#define NETSPLIT_H
|
||||||
|
|
||||||
|
#include "netsplit.c"
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
isValidIpv6Address (char *ipAddress);
|
||||||
|
|
||||||
|
int
|
||||||
|
isValidIpv4Address (char *ipAddress);
|
||||||
|
|
||||||
|
/* Forwards packets to this IP through the inet
|
||||||
|
* iptables forwarding rule. */
|
||||||
|
void
|
||||||
|
inetipForwarding (char *ipAddress, int family);
|
||||||
|
|
||||||
|
/* Forwards packets to this IP through the ntk
|
||||||
|
* iptables forwarding rule. */
|
||||||
|
void
|
||||||
|
ntkipForwarding (char *ipAddress, int family);
|
||||||
|
|
||||||
|
/* Resolves the ntk domain name in ANDNA,
|
||||||
|
* Forwarding the originally desired packets
|
||||||
|
* through the ntk iptables forwarding rule. */
|
||||||
|
void
|
||||||
|
ntkDNSResolution (char *domain);
|
||||||
|
|
||||||
|
/* Resolves the inet domain name via the commented out name servers
|
||||||
|
* in /etc/resolv.conf, Forwarding the dns query packets
|
||||||
|
* through the inet iptables forwarding rule.
|
||||||
|
* Then, Forwards the originally desired packets
|
||||||
|
* through the inet iptables forwarding rule. */
|
||||||
|
void
|
||||||
|
inetDNSResolution (char *domain);
|
||||||
|
|
||||||
|
void
|
||||||
|
inet_mode (char *domain);
|
||||||
|
|
||||||
|
void
|
||||||
|
ntk_mode (char *domain);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* NETSPLIT_H */
|
||||||
|
|
@ -181,7 +181,7 @@ usage(void)
|
|||||||
" -k Kills the running instance of ntkd\n"
|
" -k Kills the running instance of ntkd\n"
|
||||||
" -C Runs the console server for Ntk-Console to connect to\n"
|
" -C Runs the console server for Ntk-Console to connect to\n"
|
||||||
" -e Excludes an interface from usage I.E all interfaces except this one\n"
|
" -e Excludes an interface from usage I.E all interfaces except this one\n"
|
||||||
" -n Experimental, Currently meaningless argument to implement ntk netsplit\n http://netsukuku.freaknet.org/docs/main_doc/ntk_rfc/Ntk_net_split\n");
|
" -n Experimental argument to implement ntk netsplit\n http://netsukuku.freaknet.org/docs/main_doc/ntk_rfc/Ntk_net_split\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -430,14 +430,17 @@ parse_options(int argc, char **argv)
|
|||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
c = getopt_long(argc, argv, "i:c:l:e:hvd64DRrIakC", long_options,
|
c = getopt_long(argc, argv, "i:c:l:e:hvd64DRrIakCn", long_options,
|
||||||
&option_index);
|
&option_index);
|
||||||
if (c == -1)
|
if (c == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'n':
|
case 'n':
|
||||||
|
if(strcmp("inet", optarg) == 0 || strcmp("INET", optarg) == 0)
|
||||||
|
netsplit.netsplit_inet_mode = 1;
|
||||||
|
if(strcmp("ntk", optarg) == 0 || strcmp("NTK", optarg) == 0)
|
||||||
|
netsplit.netsplit_ntk_mode = 1;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
ntk_thread_creatation();
|
ntk_thread_creatation();
|
||||||
@ -492,6 +495,10 @@ parse_options(int argc, char **argv)
|
|||||||
fatal(0);
|
fatal(0);
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
|
if(server_opt.ifs_n+1 >= MAX_INTERFACES)
|
||||||
|
fatal("The maximum number of interfaces is %d",
|
||||||
|
MAX_INTERFACES);
|
||||||
|
server_opt.ifs[server_opt.ifs_n++]=xstrndup(optarg, IFNAMSIZ-1);
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
server_opt.daemon = 0;
|
server_opt.daemon = 0;
|
||||||
|
@ -29,6 +29,11 @@
|
|||||||
#define VERSION_STR "NetsukukuD "VERSION" (debug)"
|
#define VERSION_STR "NetsukukuD "VERSION" (debug)"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct {
|
||||||
|
int netsplit_inet_mode;
|
||||||
|
int netsplit_ntk_mode;
|
||||||
|
} netsplit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* current_globals
|
* current_globals
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user