[quagga-dev 11685] Re: link detect enable

David Lamparter equinox at diac24.net
Wed Oct 29 11:13:57 GMT 2014


On Wed, Oct 29, 2014 at 06:43:04AM -0400, Alexis Rosen wrote:
> On Oct 29, 2014, at 5:56 AM, David Lamparter <equinox at diac24.net> wrote:
> > No comment on:
> >>>        quagga defaults 0.99.23
> > ?
> 
> From a user/admin's perspective, this seems reasonable. But it's already hard enough to understand what quagga is doing sometimes, because of lack of documentation. This would be a truly opaque command, completely un-self-documenting. For that reason, it might be much better over the long haul to not gather unrelated settings into a defaults command, and instead give each one its own syntax. 

Well, that's a design question.  The command can be made
self-explanatory (see step 2 below).  Imagine it working like this:

Note step 2 is a bit of an intermediate step, but it's nice to have here
as explanatory step.

(1) install old version of quagga.  It automatically outputs the config
version it knows into the config, so newer versions know what defaults
were assumed:

  ## show running-config
  !
  config version 2014-01
  !! configuration matches new-installation defaults
  !
  service advanced-vty
  !
  interface eth0
  !
  interface eth1
    link-detect

(2) update quagga, run/load old config
 => key is that quagga can apply the old defaults here

  ## show running-config
  !
  config version 2014-01
  !! new installations use 2014-03.  2014-01 implies:
  ! no default link-detect
  ! no default frobnicate
  !! use "config version 2014-03" to make these explicit and changeable
  !
  service advanced-vty
  !
  interface eth0
  !
  interface eth1
    link-detect

(3) forward-migrate (the reason to make this an explicit user action
would be to keep the capability to load the config in an older version
of Quagga, but arguably forward-migrating on startup is also an option.)

  ## config version 2014-03
  configuration text now reflects defaults as in 2014-03.

  ## show running-config
  !
  config version 2014-03
  !! configuration matches new-installation defaults
  !
  no default link-detect
  no default frobnicate
  !
  service advanced-vty
  !
  interface eth0
  !
  interface eth1
    link-detect

(4) user enables new features in full awareness

  ## default link-detect
  ## default frobnicate
  ## show running-config
  !
  config version 2014-03
  !! configuration matches new-installation defaults
  !
  service advanced-vty
  !
  interface eth0
    no link-detect
  !
  interface eth1

> FWIW, I really hate the idea of using environment vars - using them increases cognitive load for admins and introduces additional burdens- for example, if you do that, now anyone using RANCID or similar to track/push configs will have to write more code to keep track of env vars. For the same reason, I don't like commandline args or build flags, though I can imagine reasonable justifications for both (especially the latter).

+1, the .conf is the most visible configuration, we shouldn't have other
stuff in random other places (be it env, cmdline or build switches).

> And lastly, here's one more vote to changing the default.

Fun thing is, I agree with changing the default, I just don't want to
break compatibility on it. :)

-David




More information about the Quagga-dev mailing list