X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/7b6abafa4e46e77072dbd89f4ee4090268d6da51..4531c0a5aef9d8dc028d6f61390bc00c4a4adf86:/netlink.c diff --git a/netlink.c b/netlink.c index 54ad76f..794bffe 100644 --- a/netlink.c +++ b/netlink.c @@ -410,12 +410,23 @@ static bool_t netlink_check(struct netlink *st, struct buffer_if *buf, } /* Deliver a packet _to_ client; used after we have decided - * what to do with it. */ + * what to do with it (and just to check that the client has + * actually registered a delivery function with us). */ static void netlink_client_deliver(struct netlink *st, struct netlink_client *client, uint32_t source, uint32_t dest, struct buffer_if *buf) { + if (!client->deliver) { + string_t s,d; + s=ipaddr_to_string(source); + d=ipaddr_to_string(dest); + Message(M_ERR,"%s: dropping %s->%s, client not registered\n", + st->name,s,d); + free(s); free(d); + BUF_FREE(buf); + return; + } client->deliver(client->dst, buf); client->outcount++; } @@ -754,7 +765,7 @@ static void netlink_dump_routes(struct netlink *st, bool_t requested) if (requested) c=M_WARNING; if (st->ptp) { net=ipaddr_to_string(st->secnet_address); - Message(c,"%s: point-to-point (remote end is %s); routes:\n", + Message(c,"%s: point-to-point (remote end is %s); routes: ", st->name, net); free(net); netlink_output_subnets(st,c,st->clients->subnets);