aboutsummaryrefslogtreecommitdiffstats
path: root/src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2014-07-15 15:11:14 +0200
committerMartin Willi <martin@revosec.ch>2014-11-21 10:55:45 +0100
commit553be051b73755d3171dc38552e2beb2669793b0 (patch)
tree73fe1ba1f6e7aa4ce881674a88d88ede8a238c92 /src/libhydra/plugins/kernel_netlink/kernel_netlink_shared.c
parent15dc61757c2f4650469adcbec2626d01a671a69a (diff)
downloadstrongswan-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.c15
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,