From b33cdb4f6159cb53ab2f848cbe818c09f8bc3895 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Wed, 29 Apr 2020 15:31:49 +0100 Subject: [PATCH] Linux: Only set positive reachable timers --- src/if-linux.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/if-linux.c b/src/if-linux.c index c2e7b9a7..cc59e572 100644 --- a/src/if-linux.c +++ b/src/if-linux.c @@ -2007,18 +2007,25 @@ if_applyra(const struct ra *rap) struct dhcpcd_ctx *ctx = rap->iface->ctx; int error = 0; - snprintf(path, sizeof(path), "%s/%s/hop_limit", p_conf, ifname); - if (if_writepathuint(ctx, path, rap->hoplimit) == -1) - error = -1; - - snprintf(path, sizeof(path), "%s/%s/retrans_time_ms", p_neigh, ifname); - if (if_writepathuint(ctx, path, rap->retrans) == -1) - error = -1; - - snprintf(path, sizeof(path), "%s/%s/base_reachable_time_ms", - p_neigh, ifname); - if (if_writepathuint(ctx, path, rap->reachable) == -1) - error = -1; + if (rap->hoplimit != 0) { + snprintf(path, sizeof(path), "%s/%s/hop_limit", p_conf, ifname); + if (if_writepathuint(ctx, path, rap->hoplimit) == -1) + error = -1; + } + + if (rap->retrans != 0) { + snprintf(path, sizeof(path), "%s/%s/retrans_time_ms", + p_neigh, ifname); + if (if_writepathuint(ctx, path, rap->retrans) == -1) + error = -1; + } + + if (rap->reachable != 0) { + snprintf(path, sizeof(path), "%s/%s/base_reachable_time_ms", + p_neigh, ifname); + if (if_writepathuint(ctx, path, rap->reachable) == -1) + error = -1; + } return error; } -- 2.47.2