diff options
author | Martin Willi <martin@revosec.ch> | 2014-07-15 15:11:14 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-11-21 10:55:45 +0100 |
commit | 553be051b73755d3171dc38552e2beb2669793b0 (patch) | |
tree | 73fe1ba1f6e7aa4ce881674a88d88ede8a238c92 /src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c | |
parent | 15dc61757c2f4650469adcbec2626d01a671a69a (diff) | |
download | strongswan-553be051b73755d3171dc38552e2beb2669793b0.tar.bz2 strongswan-553be051b73755d3171dc38552e2beb2669793b0.tar.xz |
kernel-netlink: Add a compile-time hook to simulate request message loss
Diffstat (limited to 'src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c')
-rw-r--r-- | src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c index 8f49e03d1..2875436c6 100644 --- a/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c +++ b/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c @@ -78,6 +78,16 @@ struct private_netlink_socket_t { }; /** + * #definable hook to simulate request message loss + */ +#ifdef NETLINK_MSG_LOSS_HOOK +bool NETLINK_MSG_LOSS_HOOK(struct nlmsghdr *msg); +#define msg_loss_hook(msg) NETLINK_MSG_LOSS_HOOK(msg) +#else +#define msg_loss_hook(msg) FALSE +#endif + +/** * Request entry the answer for a waiting thread is collected in */ typedef struct { @@ -109,6 +119,11 @@ static bool write_msg(private_netlink_socket_t *this, struct nlmsghdr *msg) }; int len; + if (msg_loss_hook(msg)) + { + return TRUE; + } + while (TRUE) { len = sendto(this->socket, msg, msg->nlmsg_len, 0, |