)]}'
{
  "commit": "8f4269ddff1becca94687252b9571b096cb45b43",
  "tree": "1fa611b63988898d448c14efa617ae8b63c6a20a",
  "parents": [
    "a6d400c9158b10207cde40a428ebf2c27f105c0a"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul@jakma.org",
    "time": "Fri Sep 18 11:50:33 2015 +0100"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul.jakma@hpe.com",
    "time": "Tue Sep 13 10:36:43 2016 +0100"
  },
  "message": "zebra: Add command to configure default for link-state, and make it sticky\n\n* Provide a way for the user to specify their own preference for the default\n  behaviour of link-detect, independent of the compiled in default.\n\n  Add a global \"default link-detect (on|off)\" command to zebra, to set\n  the default policy for link-detect accordingly.  The command is \"sticky\" -\n  when set it will stay set and always be written out, regardless of how it\n  compares to the baked-in, compile-time default.\n\n  The per-interface \"link-detect\" command is similarly made sticky.\n\n* zebra/interface.h: (zebra_if_linkdetect;) enum for link-detect configured\n  state.\n  (struct zebra_if_defaults) Global link-detect default\n  (struct zebra_if) Add field for per-iface link-detect default.\n* lib/if.c: (if_create_vrf) Remove the default flag setting on if-create\n  here, it\u0027s a zebra flag so do it in zebra\u0027s if_zebra_new_hook\n* zebra/interface.c: Add static storage for global defaults.\n  (if_zebra_new_hook) Set the link-detect flag on new ifaces according to the\n  baked in default or else the configured global default.\n  (config_write_zebra_if_defaults,default_linkdetect_cmd) global link-detect\n  command and config write out machinery.\n  (linkdetect_cmd) Set the configuration state rather than the flag.\n  The new hook will then set the interface flag when the if comes up.\n  (if_config_write) Write config according to configured state, not the\n  low-level flag.\n  (zebra_if_init) add new commands.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d8029fb39d77fbc677c9a66341f6b1b14ea92f39",
      "old_mode": 33188,
      "old_path": "lib/command.h",
      "new_id": "2c3b1a967813734fd0660c3d4165f7591557bcb7",
      "new_mode": 33188,
      "new_path": "lib/command.h"
    },
    {
      "type": "modify",
      "old_id": "5aa82500e9176fd3f88ed12a9839a2a6939be3c9",
      "old_mode": 33188,
      "old_path": "lib/if.c",
      "new_id": "0fc4b609c76e3011dcb6b81d6538d268e045884d",
      "new_mode": 33188,
      "new_path": "lib/if.c"
    },
    {
      "type": "modify",
      "old_id": "f259eeb2e053783b570d390a896a0198e2ba38e4",
      "old_mode": 33188,
      "old_path": "zebra/interface.c",
      "new_id": "75597951c3f325febd8ad0027dbbe3ec53318243",
      "new_mode": 33188,
      "new_path": "zebra/interface.c"
    },
    {
      "type": "modify",
      "old_id": "8baf186abffa7c3c42e401bb965b78757be38e3d",
      "old_mode": 33188,
      "old_path": "zebra/interface.h",
      "new_id": "223caf80fd4dfb4324e2afacd4ac6b81cc43cea2",
      "new_mode": 33188,
      "new_path": "zebra/interface.h"
    }
  ]
}
