X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fsubnet.c;h=23160e52509f72977fe8e85c157edceeec1ac460;hb=46a5aa0d674914f4220d8583b1b2f87c7f05a804;hp=3b980303e88509f67b610da486d279c60fa3efa5;hpb=2eba7933053d7d21bf82e647978ee90abe98dc3a;p=tinc diff --git a/src/subnet.c b/src/subnet.c index 3b980303..23160e52 100644 --- a/src/subnet.c +++ b/src/subnet.c @@ -29,7 +29,7 @@ #include "net.h" #include "netutl.h" #include "node.h" -#include "process.h" +#include "script.h" #include "subnet.h" #include "utils.h" #include "xalloc.h" @@ -92,13 +92,15 @@ void subnet_add(node_t *n, subnet_t *subnet) { subnet->owner = n; splay_insert(subnet_tree, subnet); - splay_insert(n->subnet_tree, subnet); + if (n) + splay_insert(n->subnet_tree, subnet); subnet_cache_flush(); } void subnet_del(node_t *n, subnet_t *subnet) { - splay_delete(n->subnet_tree, subnet); + if (n) + splay_delete(n->subnet_tree, subnet); splay_delete(subnet_tree, subnet); subnet_cache_flush(); @@ -126,7 +128,7 @@ subnet_t *lookup_subnet_mac(const node_t *owner, const mac_t *address) { if(!memcmp(address, &p->net.mac.address, sizeof *address)) { r = p; - if(p->owner->status.reachable) + if(!p->owner || p->owner->status.reachable) break; } } @@ -155,7 +157,7 @@ subnet_t *lookup_subnet_ipv4(const ipv4_t *address) { if(!maskcmp(address, &p->net.ipv4.address, p->net.ipv4.prefixlength)) { r = p; - if(p->owner->status.reachable) + if(!p->owner || p->owner->status.reachable) break; } } @@ -184,7 +186,7 @@ subnet_t *lookup_subnet_ipv6(const ipv6_t *address) { if(!maskcmp(address, &p->net.ipv6.address, p->net.ipv6.prefixlength)) { r = p; - if(p->owner->status.reachable) + if(!p->owner || p->owner->status.reachable) break; } }