From 9cbf8ad3fb78d80fd629affd36100443d66cde77 Mon Sep 17 00:00:00 2001 From: "Fabio M. Di Nitto" Date: Sun, 14 Oct 2012 07:18:57 +0200 Subject: [PATCH] libknet: readd dst_cache_update function for internal use this is required to trigger a recalculation when we change switching policy at runtime from active/passive to active/active or round-robin Signed-off-by: Fabio M. Di Nitto --- libknet/handle.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libknet/handle.c b/libknet/handle.c index a3e68e8..f9759b5 100644 --- a/libknet/handle.c +++ b/libknet/handle.c @@ -230,14 +230,10 @@ int knet_handle_crypto(knet_handle_t knet_h, struct knet_handle_crypto_cfg *knet return crypto_init(knet_h, knet_handle_crypto_cfg); } -static int knet_link_updown(knet_handle_t knet_h, uint16_t node_id, - struct knet_link *lnk, int configured, int connected) +static int knet_dst_cache_update(knet_handle_t knet_h, uint16_t node_id) { int write_retry = 0; - if ((lnk->configured == configured) && (lnk->connected == connected)) - return 0; - try_again: if (write(knet_h->pipefd[1], &node_id, sizeof(node_id)) != sizeof(node_id)) { if ((write_retry < 10) && ((errno = EAGAIN) || (errno = EWOULDBLOCK))) { @@ -247,6 +243,17 @@ try_again: return -1; } } + return 0; +} + +static int knet_link_updown(knet_handle_t knet_h, uint16_t node_id, + struct knet_link *lnk, int configured, int connected) +{ + if ((lnk->configured == configured) && (lnk->connected == connected)) + return 0; + + if (knet_dst_cache_update(knet_h, node_id)) + return -1; lnk->configured = configured; lnk->connected = connected; -- 2.39.5