[quagga-dev 11670] link detect enable

Paul Jakma paul at jakma.org
Tue Oct 28 14:49:49 GMT 2014


I have been wrapped on the knuckles for cherry-picking a commit from the 
Cumulus tree and committing it, as it hadn't been posted to the list. My 
bad, I'm still getting used to the new regime and patchwork, etc. Sorry on 
that, won't do it again, honest!

The patch is at the end, below.

I committed based on the fact that I had originally wanted to set 
link-detect /ages/ ago, but was blocked waiting on the BSD link-state 
support. When that came (effectively also ages ago), link-detect default 
was not revisited (I guess).

It's been pointed out to me that changing to default link-detect on could 
break things for users who have service IP addresses that are on physical 
interfaces. Such IPs today will still be advertised in OSPF even if the 
iface has a problem, but with link-detect on wouldn't be.

So, there's a bit of a dilemma: I think we really should act on interface 
state by default. I think it's probably what most people expect and want 
in a sensible setup, and they're probably surprised when it doesn't.

On the other hand, setting it on is a change in behaviour. There are 
setups that might break. Even if those setups are somewhat flawed.

E.g., having a service IP on a physical interface is not the best practice 
and that IP is not generally reroutable. For non-trivial routed networks, 
there may be parts of the networks that can not reach the IP when its 
iface is down, even if it still reachable from others. In my experience 
(learned the hard way ;) ), the administrator will eventually learn they 
need to put service IPs on loopback (or some other virtual interface).

Changing behaviour is generally something that should not be done lightly. 
Breaking working setups is bad. However, not having link-detect on by 
default punishes each new user anew.

Those who would be affected by link-detect being set by default may have 
broken setups that they will end up reconfiguring soon anyway.

So the question is, should this patch be reverted, or should it be kept 
and the change in behaviour better documented for the next release?

commit 773224404cb33b2dbd3d8d8d2572013603995ce4
Author: Dinesh G Dutt <ddutt at cumulusnetworks.com>
Date:   Tue Sep 30 12:39:24 2014 -0700

     zebra: Set link-detect on by default

     Signed-off-by: Roopa Prabhu <roopa at cumulusnetworks.com>
     Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com>
     Reviewed-by: Scott Feldman <sfeldma at cumulusnetworks.com>

diff --git a/lib/if.c b/lib/if.c
index 3a1f9b4..2b46a1b 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -132,6 +132,9 @@ if_create (const char *name, int namelen)
    ifp->connected = list_new ();
    ifp->connected->del = (void (*) (void *)) connected_free;

+  /* Enable Link-detection by default */
    if (if_master.if_new_hook)
      (*if_master.if_new_hook) (ifp);

Paul Jakma	paul at jakma.org	@pjakma	Key ID: 64A2FF6A
Profanity is the one language all programmers know best.

More information about the Quagga-dev mailing list