)]}'
{
  "log": [
    {
      "commit": "581ecbfe91d23791c116a8e3790208a17c1a5983",
      "tree": "c6087fe822be69a1b424b2453aa87ac30014ec5e",
      "parents": [
        "00667cea1fbd088900f7909f2044da2a7e26270d"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "nobody@nowhere.ws",
        "time": "Tue May 03 19:59:43 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "zebra: count iface up/down events and keep last time of their occurrence\n\nIt is quite useful to be able to assert whether specific interfaces have\nflapped or also to verify that specific interfaces have not flapped.\n\nBy having counters for those events and storing the last time of their\noccurrence, this is made possible.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n"
    },
    {
      "commit": "954c7d6bcd04c2cf037965adda0f9d11afdcd165",
      "tree": "707ba870b0989d08a98e6b969fc1e2388f09e1c0",
      "parents": [
        "4d3ae716ce86c28e3979c9ae57c4e717ac5e27e4"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Fri Jan 15 17:36:33 2016 +0200"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Fri Feb 26 14:11:46 2016 +0000"
      },
      "message": "lib, zebra: unify link layer type and hardware address handling\n\nThis removes the BSD specific usage of struct sockaddr_dl\nhardware address. This unifies to use explict hw_addr member for\nthe address, and zebra specific enumeration for the link layer\ntype.\n\nAdditionally the zapi is updated to never send platform specific\nstructures over the wire, but the ll_type along with hw_addr_len\nand hw_addr are now sent for all platforms.\n\nBased on initial work by Paul Jakma.\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "642577340cfb7ad66d021ab2b86d72f7cdde03bc",
      "tree": "981104744f3fb913ec3e5a006199e6810101ab55",
      "parents": [
        "8253b73c3c71d4102c0010f63b59b2829f3b0f90"
      ],
      "author": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Fri Nov 20 08:33:30 2015 -0500"
      },
      "committer": {
        "name": "Donald Sharp",
        "email": "sharpd@cumulusnetworks.com",
        "time": "Tue Dec 08 14:16:12 2015 -0500"
      },
      "message": "zebra: Cleanup RTADV define\n\nThe RTADV define was not being set correctly or consistently.\nMake the code consistent with our HAVE_IPV6 define.\n\nIf the user wants to explicitly turn it off then they should\nrun --disable-rtadv from the configure cli\n\nSigned-off-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "49f76097fc191761db8482aa3bf6e6322c52c647",
      "tree": "c7aef97b17e3dd41b19fa53535ecf1a9ca8aafb9",
      "parents": [
        "267ceb2ce3adf4ce1357deb7ce48f151d6c58b92"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Fri May 22 11:40:10 2015 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 02 07:48:34 2015 +0200"
      },
      "message": "zebra: maintain RTADV per VRF\n\nThis moves the global variable \"rtadv\" into the \"struct zebra_vrf\",\nso that RTADV feature can work per VRF.\n\n* rtadv.c/rtadv.h:\n\n  Add a proper parameter to the functions so that the entity of the\n  \"struct zebra_vrf\" and interfaces can be obtained from the specified\n  VRF.\n\n  The old rtadv_init() is splitted into:\n  - rtadv_cmd_init(): it installs the RTADV commands; is called from\n                      main();\n  - new rtadv_init(): it creates the socket; is called from\n                      zebra_vrf_enable().\n\n  rtadv_terminate() is added to stop the threads, close the socket and\n  clear the counters. It is called from zebra_vrf_disable().\n\n  rtadv_make_socket() now calls vrf_socket() to create a socket in\n  the VRF.\n\n* interface.h and rib.h: define the macro RTADV.\n* main.c: according changes, refer to rtadv.c.\n\nSigned-off-by: Feng Lu \u003clu.feng@6wind.com\u003e\nReviewed-by: Alain Ritoux \u003calain.ritoux@6wind.com\u003e\nSigned-off-by: Nicolas Dichtel \u003cnicolas.dichtel@6wind.com\u003e\nAcked-by: Vincent JARDIN \u003cvincent.jardin@6wind.com\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "b40e178af12570467f0116d6b1684cb1b961e407",
      "tree": "652143a283cdfaa1f9d735b29798b2f09fb3633a",
      "parents": [
        "e38545bb2cd155306fd78223e0c579117fcfae90"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Apr 29 09:43:00 2015 +0300"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue May 05 09:38:03 2015 +0200"
      },
      "message": "zebra: fix rtadv check for non-glibc linux\n\nDefault RTADV enabled for non-glibc linux (fixes check for musl libc).\n\nSigned-off-by: Timo Teräs \u003ctimo.teras@iki.fi\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "0f048b90b5d6e4bd185913945b68dd254126eb9f",
      "tree": "69ffaaf5925bebb7cc1a8e79179bee99bfde0129",
      "parents": [
        "2e5ca49758543cde69d98f4a6a7b39486e88311d"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Jun 28 21:01:32 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Sat Feb 14 19:18:47 2015 +0100"
      },
      "message": "build: remove AIX, NEC EWS and IRIX\n\nValar morghulis.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\nAcked-by: Greg Troxel \u003cgdt@ir.bbn.com\u003e\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\nAcked-by: Paul Jakma \u003cpaul@jakma.org\u003e\n"
    },
    {
      "commit": "bfac8dcd2fe7ed099a679b5c8245599c6d0312ed",
      "tree": "7674e567b6824aac9dfe78f0e149871b4d49a44c",
      "parents": [
        "02b4805f3914ef6ba0242c6f4dd1b6759ef97bf2"
      ],
      "author": {
        "name": "Christian Franke",
        "email": "chris@opensourcerouting.org",
        "time": "Thu Jan 24 14:04:50 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Sep 19 17:51:16 2013 +0200"
      },
      "message": "zebra: improve interface shutdown behaviour\n\nLinux removes IPv6 addresses when the interface is set down. Those\naddresses need to be readded when the interface is set up again.\n\nAlso, an interface should not be reactivated from shutdown by configuring\nan ip address.\n\nFinally, remove the three-state logic for the shutdown setting as its\nsole current use may be mild confusion.\n\nSigned-off-by: Christian Franke \u003cchris@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "6eb0c5ab1d43bcf9edd4fefd19031f2b96ded728",
      "tree": "734d264279d8a44022aaa8661f9c94cca6cb8a74",
      "parents": [
        "aca43b656623f38dfa6ea835dacbdfec51d03a67"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Jan 24 11:02:03 2012 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:57 2012 +0400"
      },
      "message": "zebra: freshen RFC references in rtadv\n\nRFC2461 was replaced by RFC4861\nRFC3775 was replaced by RFC6275\ndraft-ietf-mip6-mipext-advapi-03 was replaced by RFC4584\n"
    },
    {
      "commit": "d660f698427277ce695a5b756f3143c8304274ea",
      "tree": "f26d5f72724cae8ee9844f30ba8e0aaf7b7c3006",
      "parents": [
        "6134b875f39986564aced5e2d7329fcd852f17f4"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Fri Dec 30 21:55:49 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Thu Jan 26 11:42:48 2012 +0400"
      },
      "message": "zebra: justify some IPv6 ND RA timers wrt RFC\n\nThere was a regression introduced with the previous commit:\n\"ipv6 nd home-agent-lifetime 1800000\" appeared by default in every\ninterface section of running-config, although this  command is\ninvalid in this context. Troubleshooting and bugfixing of the issue\ntracked out several bugs in router advertisement procedures, some of\nwhich are fixed in this commit.\n\n* zebra/interface.c\n  * if_zebra_new_hook(): update to treat -1 as \"uninitialized\"\n  * nd_dump_vty(): idem\n* zebra/rtadv.c\n  * rtadv_send_packet(): update processing of \"router lifetime\" field,\n    \"home agent\" option and \"home agent lifetime\" field to conform to\n    RFC6275 better\n  * ipv6_nd_ra_interval_msec(): update MaxRtrAdvInterval range check,\n    make sure it never exceeds (initialized) AdvDefaultLifetime\n  * ipv6_nd_ra_interval(): idem\n  * ipv6_nd_ra_lifetime(): update AdvDefaultLifetime range check, make\n    sure it never falls below MaxRtrAdvInterval\n  * ipv6_nd_homeagent_lifetime(): update HomeAgentLifetime range check\n  * no_ipv6_nd_ra_lifetime(): update to treat -1 as \"uninitialized\"\n  * no_ipv6_nd_homeagent_lifetime(): idem\n  * rtadv_config_write(): idem\n"
    },
    {
      "commit": "b60668d092f1778395b6c10b406059b8cbf235b8",
      "tree": "7869d81a4a8d440f8cb41ddb0e66c8279e2b9636",
      "parents": [
        "5bc52c76c2816a3be9a033c3e5bf4fea1908e3cd"
      ],
      "author": {
        "name": "Chris Caputo",
        "email": "ccaputo@alt.net",
        "time": "Sun May 03 04:40:57 2009 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Jun 23 14:15:57 2009 +0100"
      },
      "message": "RFC 4191 Default Router Preference support for router advertisements\n\nAdds \"ipv6 nd router-preference (high|medium|low)\" and\n\"no ipv6 nd router-preference\" interface commands.\n\nFiles modified:\n\n   doc/ipv6.texi\n   zebra/interface.c\n   zebra/interface.h\n   zebra/rtadv.c\n   zebra/rtadv.h\n\nSigned-off-by: Chris Caputo \u003cccaputo@alt.net\u003e\n"
    },
    {
      "commit": "9607d98cb04e5dff34cb2f6fb6434455c6841ab8",
      "tree": "4ff992b16ddb0902237cb3a189cd29808813a631",
      "parents": [
        "90d2ab0f9426d670552b929364f8fb7de122efe5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Wed Apr 29 21:55:48 2009 -0700"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Thu Jun 18 20:18:28 2009 +0100"
      },
      "message": "[zebra] Remove unused structure element\n"
    },
    {
      "commit": "f28b0e57bd5173215132fed02aa4b284d7cbe26a",
      "tree": "4e4d2f65d82afa18af4e47fe13bd6c3e83b4ba4a",
      "parents": [
        "1f742f21a98f756cea03856849fa2f82f467baf7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "message": "[zebra] fix inconsistencies in ifstat_update_* declarations and definitions\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.h: (ifstat_update_proc) declaration should match\n\t  ifstat_update_sysctl really, which is to not return status, as\n\t  such status is not used anywhere.\n\t* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values\n\t  consistent with each other and their declarations, ie:\n\t  (void) (*) (void).\n"
    },
    {
      "commit": "5c78b3d006e6926f938796cffa08e8e14fb8e7af",
      "tree": "19f8f80511cba84e0d70ac22667321a4a7df0d60",
      "parents": [
        "590188b67db4021b9d1552238ef49482dd5f0123"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 04:31:40 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 04:31:40 2006 +0000"
      },
      "message": "[zebra/solaris] Interface state fixups for Solaris.\n\n2006-01-25 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) More solaris PF_ROUTE hacks. The IFF_UP mangling\n\t  for solaris was incomplete on the PF_ROUTE side. fix it.\n\t  This changeset generally uglifies things. For some future\n\t  work I\u0027d like to see the state changes seperated out from\n\t  the details of the code. Differences between systems might\n\t  then be slightly easier to implement without convoluted\n\t  hacks.\n\t  Changes should be specific to Solaris mostly, however\n\t  also tested on FreeBSD 6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) ignore ~IFF_UP\n\t  interfaces, we\u0027ll hear about them when/if interface goes up\n\t  through NEWADDR.\n\t  Update flags explicitely at end of it to kick mangling.\n\t* ioctl_solaris.c: (if_mangle_up) removed to interface.c, in\n\t  kind.\n\t  (lifreq_set_name) more convenient to take the string, than\n\t  the ifp.\n\t  (if_get_flags_direct) new convenience function, returns\n\t  the actual flags. Used during bootstrap in if_ioctl_solaris.c\n\t  to peek at flags of logical interfaces to see whether or\n\t  not to ignore them.\n\t  (if_get_flags) ENXIO means it\u0027s gone, poke out IFF_UP and\n\t  kick flags update.\n\t  (if_{un,}set_flags) flags argument should be 64bit.\n\t* ioctl.{c,h}: flags argument should be 64bit.\n\t* interface.h: Add a \u0027primary_state\u0027 flag to struct zebra_if on\n\t  SUNOS_5.\n\t  Export if_flags_update.\n\t* interface.c: (if_flags_mangle) moved over in kind from\n\t  ioctl_solaris.c. Nasty kludge to try get IFF_UP right, as\n\t  much as is possible. Also keep track of the actual IFF_UP\n\t  value for the primary interface, so we can know when the ifp\n\t  must be deleted.\n\t  (if_flags_update) Take a new interface flags value, apply it\n\t  to the interface, and take whatever actions are required due\n\t  to flag transitions.\n\t  (if_refresh) flag state change logic is moved out to\n\t  previous. Just call if_get_flags, which will end up using\n\t  previous to effect the update of flags.\n\t  (if_flag_dump_vty) IFF_IPV{4,6} aren\u0027t interesting, VIRTUAL\n\t  and NOXMIT are though.\n\t* kernel_socket.c: (ifm_read) Down-\u003eDown transitions shouldn\u0027t\n\t  create ifp, for non-IFANNOUNCE systems.\n\t  Use if_flags_update to update flags.\n\t  flag transition logic is now handled automatically through\n\t  if_flags_update.\n\t  (ifam_read) Better to call if_refresh *after* adding\n \t  connected addresses, as connected count affects IFF_UP on\n \t  IFF_UP-mangled systems.\n \t  On Solaris, Up-\u003eDown due to DELADDR means we need to delete\n\t  the ifp - the IFINFO might already have been and gone.\n\t* rt.h: include other dependent headers.\n"
    },
    {
      "commit": "a1ac18c4d5b4f8f4f279efb2ae12b46258f22282",
      "tree": "e37732ef4b00ae98d1be693e721b01cc2566ba39",
      "parents": [
        "94f2b3923e9663d0355a829f22e4e31cf68ee7b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jun 28 17:17:12 2005 +0000"
      },
      "message": "2005-06-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Extern and static\u0027ification, with related fixups\n\t  of declarations, ensuring files include their own headers, etc.\n\t  if_ioctl.c: (interface_info_ioctl) fix obvious arg mis-order in\n\t  list loop\n"
    },
    {
      "commit": "7cee1bb15089e4e994958651bd45a6f81c4215aa",
      "tree": "2f7d9b8a24411d06c80dbeb023069c1e3a2f4c2e",
      "parents": [
        "29c4c9bd11aaf36a0b3ed2414c816cdb8d4178bd"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "message": "2005-03-25 Jean-Mickael Guerin \u003cjean-mickael.guerin@6wind.com\u003e\n\t* interface.c, interface.h, rtadv.c, rtadv.h: extensions to Neighbor\n\t  discovery for Mobile IPv6.\n"
    },
    {
      "commit": "eef1fe11b89c5ec3c035ff6e4a9acfbc5780b539",
      "tree": "82f80b9b898ede1b5293fc52adb2bee9b138e46c",
      "parents": [
        "18a6dce6f83dd20caf1f36c8e840868ff0bf6dbd"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 18:46:08 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Oct 03 18:46:08 2004 +0000"
      },
      "message": "New way to handle secondary addresses from Gilad Arnold.\n"
    },
    {
      "commit": "52dc7ee65f8d887b0730abc0a5d44d27fc6ecafd",
      "tree": "a557339540c56dd3953c29a50ca0e48c1911efc8",
      "parents": [
        "44983cf8a9c587dfbcad294b9dfe4dccbb68ba98"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 23 19:18:23 2004 +0000"
      },
      "message": "Remove usage of evil list and listnode typedefs.\n"
    },
    {
      "commit": "5b73a671aac22a75cc90657aa4a924d199f2284b",
      "tree": "8716d34430c239cb994ba286db18efb24eb09319",
      "parents": [
        "1470bafb7aa179dad7dc4bdc998d68c14752f824"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:26:14 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:26:14 2004 +0000"
      },
      "message": "2004-07-23 Sowmini Varadhan \u003cSowmini.Varadhan@Sun.COM\u003e\n\n        * if_ioctl_solaris.c: HAVE_IPV6 ifdef fixups\n        * zserv.c: ditto\n        * ioctl_solaris.c: ditto.\n        * interface.c: cast for LLADDR\n        * interface.h: Add guards, include redistribute.h and remove\n          extraneous definitions of zebra_interface_{up,down}_update\n        * ioctl.h: Add AF_IOCTL define for non SOLARIS_IPV6\n        * redistribute.h: include dependent header, zserv.h\n        * zserv.h: include dependent header, rib.h\n"
    },
    {
      "commit": "ca7769881ffb700c86b606ead5f4177df3c0b2a1",
      "tree": "b3a199ce94246b34b10d8d20030d27d2f4c5197f",
      "parents": [
        "02ff83c52592427623db0d8367ca9b3395fa321f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Jun 12 14:33:05 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Jun 12 14:33:05 2004 +0000"
      },
      "message": "OK, here it is - irdp support. But don\u0027t expect me to fix any bugs in it.\n"
    },
    {
      "commit": "726f9b2bbdd5a607f7b0a10a64547739b807e361",
      "tree": "9c46a6ce71cf4ea96553a85a231e38b462b3dee0",
      "parents": [
        "71c0fb50fe75928f8fbe1bbff1995d9d91b3702b"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 21:04:54 2003 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun May 25 21:04:54 2003 +0000"
      },
      "message": "Last fixes from 6Wind patch.\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
