mirror of
https://github.com/ntop/n2n.git
synced 2024-09-19 16:41:11 +02:00
Skip localhost received sockets
This commit is contained in:
parent
e2861e5f71
commit
bc904cfbcc
36
edge_utils.c
36
edge_utils.c
|
@ -228,6 +228,22 @@ static void remove_peer_from_list(struct peer_info **head, struct peer_info *pre
|
|||
free(scan);
|
||||
}
|
||||
|
||||
/* ************************************** */
|
||||
|
||||
static uint32_t localhost_v4 = 0x7f000001;
|
||||
static uint8_t localhost_v6[IPV6_SIZE] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};
|
||||
|
||||
/* Exclude localhost as it may be received when an edge node runs
|
||||
* in the same supernode host.
|
||||
*/
|
||||
static int is_valid_peer_sock(const n2n_sock_t *sock) {
|
||||
if(((sock->family == AF_INET) && (*((uint32_t*)sock->addr.v4) != htonl(localhost_v4)))
|
||||
|| ((sock->family == AF_INET6) && memcmp(sock->addr.v6, localhost_v6, IPV6_SIZE)))
|
||||
return(1);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* ***************************************************** */
|
||||
|
||||
/** Resolve the supernode IP address.
|
||||
|
@ -447,10 +463,6 @@ static void peer_set_p2p_confirmed(n2n_edge_t * eee,
|
|||
|
||||
/* ************************************** */
|
||||
|
||||
n2n_mac_t broadcast_mac = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
/* ************************************** */
|
||||
|
||||
int is_empty_ip_address(const n2n_sock_t * sock) {
|
||||
const uint8_t * ptr=NULL;
|
||||
size_t len=0;
|
||||
|
@ -481,6 +493,8 @@ int is_empty_ip_address(const n2n_sock_t * sock) {
|
|||
|
||||
/* ************************************** */
|
||||
|
||||
static n2n_mac_t broadcast_mac = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
/** Check if a known peer socket has changed and possibly register again.
|
||||
*/
|
||||
static void check_known_peer_sock_change(n2n_edge_t * eee,
|
||||
|
@ -1317,10 +1331,8 @@ static void readFromIPSocket(n2n_edge_t * eee, int in_sock) {
|
|||
|
||||
decode_PACKET(&pkt, &cmn, udp_buf, &rem, &idx);
|
||||
|
||||
if(pkt.sock.family)
|
||||
{
|
||||
orig_sender = &(pkt.sock);
|
||||
}
|
||||
if(is_valid_peer_sock(&pkt.sock))
|
||||
orig_sender = &(pkt.sock);
|
||||
|
||||
traceEvent(TRACE_INFO, "Rx PACKET from %s (%s)",
|
||||
sock_to_cstr(sockbuf1, &sender),
|
||||
|
@ -1338,7 +1350,7 @@ static void readFromIPSocket(n2n_edge_t * eee, int in_sock) {
|
|||
|
||||
decode_REGISTER(®, &cmn, udp_buf, &rem, &idx);
|
||||
|
||||
if(reg.sock.family)
|
||||
if(is_valid_peer_sock(®.sock))
|
||||
orig_sender = &(reg.sock);
|
||||
|
||||
traceEvent(TRACE_INFO, "Rx REGISTER src=%s dst=%s from peer %s (%s)",
|
||||
|
@ -1370,7 +1382,7 @@ static void readFromIPSocket(n2n_edge_t * eee, int in_sock) {
|
|||
|
||||
decode_REGISTER_ACK(&ra, &cmn, udp_buf, &rem, &idx);
|
||||
|
||||
if(ra.sock.family)
|
||||
if(is_valid_peer_sock(&ra.sock))
|
||||
orig_sender = &(ra.sock);
|
||||
|
||||
traceEvent(TRACE_INFO, "Rx REGISTER_ACK src=%s dst=%s from peer %s (%s)",
|
||||
|
@ -1390,10 +1402,8 @@ static void readFromIPSocket(n2n_edge_t * eee, int in_sock) {
|
|||
{
|
||||
decode_REGISTER_SUPER_ACK(&ra, &cmn, udp_buf, &rem, &idx);
|
||||
|
||||
if(ra.sock.family)
|
||||
{
|
||||
if(is_valid_peer_sock(&ra.sock))
|
||||
orig_sender = &(ra.sock);
|
||||
}
|
||||
|
||||
traceEvent(TRACE_INFO, "Rx REGISTER_SUPER_ACK myMAC=%s [%s] (external %s). Attempts %u",
|
||||
macaddr_str(mac_buf1, ra.edgeMac),
|
||||
|
|
Loading…
Reference in New Issue
Block a user