)]}'
{
  "log": [
    {
      "commit": "285ed0c62af4f57902d5deacc621f290fdeec276",
      "tree": "ef1559318aef1e718f09d829c586c009e02920cf",
      "parents": [
        "12bbd62112724483f72c4040a4c4b585aff8eb54"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 02:46:53 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:46 2015 -0700"
      },
      "message": "build/solaris: create ioctl_solaris.h\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "758fb8f99a7bfac3d31c419fd1a5694fc5f33f6a",
      "tree": "4aa860a2b96ec03622376bf3753840155ab478fe",
      "parents": [
        "d6cf5134c05a7890738411852d9357ee5bb322f3"
      ],
      "author": {
        "name": "Feng Lu",
        "email": "lu.feng@6wind.com",
        "time": "Thu Jul 03 18:23:09 2014 +0800"
      },
      "committer": {
        "name": "Nicolas Dichtel",
        "email": "nicolas.dichtel@6wind.com",
        "time": "Wed Jun 03 10:23:32 2015 +0200"
      },
      "message": "zebra, lib/memtypes.c: the netlink sockets work per VRF\n\nThis patch lets the netlink sockets work per VRF.\n\n* The definition of \"struct nlsock\" is moved into zebra/rib.h.\n\n* The previous global variables \"netlink\" and \"netlink_cmd\" now\n  become the members of \"struct zebra_vrf\", and are initialized\n  in zebra_vrf_alloc().\n\n* All relative functions now work for a specific VRF, by adding\n  a new parameter which specifies the working VRF, except those\n  functions in which the VRF ID can be obtained from the interface.\n\n* kernel_init(), interface_list() and route_read() are now also\n  working per VRF, and moved from main() to zebra_vrf_enable().\n\n* A new function kernel_terminate() is added to release the\n  netlink sockets. It is called from zebra_vrf_disable().\n\n* Correct VRF ID, instead of the previous VRF_DEFAULT, are now\n  passed to the functions of processing interfaces or route\n  entries.\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: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "e8eb8340c14f53194786b766992f61cc0abf7a8e",
      "tree": "dc5c6aa366ec2393d0f5467b7c21f91ac264065d",
      "parents": [
        "bd9da7fe8cdbc915f3b43a0632326401f28fe310"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 17:32:08 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 17:32:08 2007 +0000"
      },
      "message": "[zebra/solaris] fix if_get_index passing wrong arg to lifreq_set_name\n\n2007-04-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if_ioctl_solaris.c: (if_get_index) Fix bogus argument passed\n\t  to lifreq_set_name().\n"
    },
    {
      "commit": "fb6724a6b987cb6fab00cc9326674bd14a0d09fa",
      "tree": "55a8ad856112d2bb9904375a236542046f950b7a",
      "parents": [
        "e4529636b77124285cca96a62799d0ff6a7addeb"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Dec 13 15:44:15 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Dec 13 15:44:15 2006 +0000"
      },
      "message": "[zebra] For solaris IPv6 PtP interfaces, try to support prefixlen !\u003d 128\n\n2006-12-13 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if_ioctl_solaris.c: (if_get_addr) For IPv6, stop assuming\n\t  that all IFF_POINTOPOINT have prefixlen of IPV6_MAX_BITLEN.\n\t  Instead, always try the SIOCGLIFSUBNET ioctl; if that fails,\n\t  then we fall back to IPV6_MAX_BITLEN for PtP interfaces.\n"
    },
    {
      "commit": "e4529636b77124285cca96a62799d0ff6a7addeb",
      "tree": "a8a50de7413833d5277ed7309248e03719e9efd3",
      "parents": [
        "43cd33a44e010f818633b7f144b5a0be352b41e7"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Dec 12 19:18:21 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Dec 12 19:18:21 2006 +0000"
      },
      "message": "[PtP over ethernet] New peer flag allows much more addressing flexibility\n\n2006-12-12 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (struct connected) Add new ZEBRA_IFA_PEER flag indicating\n\t  whether a peer address has been configured.  Comment now shows\n\t  the new interpretation of the destination addr: if ZEBRA_IFA_PEER\n\t  is set, then it must contain the destination address, otherwise\n\t  it may contain the broadcast address or be NULL.\n\t  (CONNECTED_DEST_HOST,CONNECTED_POINTOPOINT_HOST) Remove obsolete\n\t  macros that were specific to IPv4 and not fully general.\n\t  (CONNECTED_PEER) New macro to check ZEBRA_IFA_PEER flag.\n\t  (CONNECTED_PREFIX) New macro giving the prefix to insert into\n\t  the RIB: if CONNECTED_PEER, then use the destination (peer) address,\n\t  else use the address field.\n\t  (CONNECTED_ID) New macro to come up with an identifying address\n\t  for the struct connected.\n\t* if.c: (if_lookup_address, connected_lookup_address) Streamline\n\t  logic with new CONNECTED_PREFIX macro.\n\t* prefix.h: (PREFIX_COPY_IPV4, PREFIX_COPY_IPV6) New macros\n\t  for better performance than the general prefix_copy function.\n\t* zclient.c: (zebra_interface_address_read) For non-null destination\n\t  addresses, set prefixlen to equal the address prefixlen.  This\n\t  is needed to get the new CONNECTED_PREFIX macro to work properly.\n\t* connected.c: (connected_up_ipv4, connected_down_ipv4,\n\t  connected_up_ipv6, connected_down_ipv6) Simplify logic using the\n\t  new CONNECTED_PREFIX macro.\n\t  (connected_add_ipv4) Set prefixlen in destination addresses (required\n\t  by the CONNECTED_PREFIX macro).  Use CONNECTED_PEER macro instead\n\t  of testing for IFF_POINTOPOINT.  Delete invalid warning message.\n\t  Warn about cases where the ZEBRA_IFA_PEER is set but no\n\t  destination address has been supplied (and turn off the flag).\n\t  (connected_add_ipv6) Add new flags argument so callers may set\n\t  the ZEBRA_IFA_PEER flag.  If peer/broadcast address satisfies\n\t  IN6_IS_ADDR_UNSPECIFIED, then reject it with a warning.\n\t  Set prefixlen in destination address so CONNECTED_PREFIX will work.\n\t* connected.h: (connected_add_ipv6) Add new flags argument so\n\t  callers may set the ZEBRA_IFA_PEER flag.\n\t* interface.c: (connected_dump_vty) Use CONNECTED_PEER macro\n\t  to decide whether the destination address is a peer or broadcast\n\t  address (instead of checking IFF_BROADCAST and IFF_POINTOPOINT).\n\t* if_ioctl.c: (if_getaddrs) Instead of setting a peer address\n\t  only when the IFF_POINTOPOINT is set, we now accept a peer\n\t  address whenever it is available and not the same as the local\n\t  address.  Otherwise (no peer address assigned), we check\n\t  for a broadcast address (regardless of the IFF_BROADCAST flag).\n\t  And must now pass a flags value of ZEBRA_IFA_PEER to\n\t  connected_add_ipv4 when a peer address is assigned.\n\t  The same new logic is used with the IPv6 code as well (and we\n\t  pass the new flags argument to connected_add_ipv6).\n\t  (if_get_addr) Do not bother to check IFF_POINTOPOINT: just\n\t  issue the SIOCGIFDSTADDR ioctl and see if we get back\n\t  a peer address not matching the local address (and set\n\t  the ZEBRA_IFA_PEER in that case).  If there\u0027s no peer address,\n\t  try to grab SIOCGIFBRDADDR regardless of whether IFF_BROADCAST is set.\n\t* if_ioctl_solaris.c: (if_get_addr) Just try the SIOCGLIFDSTADDR ioctl\n\t  without bothering to check the IFF_POINTOPOINT flag.  And if\n\t  no peer address was found, just try the SIOCGLIFBRDADDR ioctl\n\t  without checking the IFF_BROADCAST flag.  Call connected_add_ipv4\n\t  and connected_add_ipv6 with appropriate flags.\n\t* if_proc.c: (ifaddr_proc_ipv6) Must pass new flags argument to\n\t  connected_add_ipv6.\n\t* kernel_socket.c: (ifam_read) Must pass new flags argument to\n\t  connected_add_ipv6.\n\t* rt_netlink.c: (netlink_interface_addr) Copy logic from iproute2\n\t  to determine local and possible peer address (so there\u0027s no longer\n\t  a test for IFF_POINTOPOINT).  Set ZEBRA_IFA_PEER flag appropriately.\n\t  Pass new flags argument to connected_add_ipv6.\n\t  (netlink_address) Test !CONNECTED_PEER instead of if_is_broadcast\n\t  to determine whether the connected destination address is a\n\t  broadcast address.\n\t* bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete)\n\t  Simplify logic by using new CONNECTED_PREFIX macro.\n\t* ospf_interface.c: (ospf_if_is_configured, ospf_if_lookup_by_prefix,\n\t  ospf_if_lookup_recv_if) Simplify logic using new CONNECTED_PREFIX\n\t  macro.\n\t* ospf_lsa.c: (lsa_link_ptop_set) Using the new CONNECTED_PREFIX\n\t  macro, both options collapse into the same code.\n\t* ospf_snmp.c: (ospf_snmp_if_update) Simplify logic using new\n\t  CONNECTED_ID macro.\n\t  (ospf_snmp_is_if_have_addr) Simplify logic using new CONNECTED_PREFIX\n\t  macro.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Use new CONNECTED_PEER macro\n\t  instead of testing the IFF_POINTOPOINT flag.\n\t* ospfd.c: (ospf_network_match_iface) Use new CONNECTED_PEER macro\n\t  instead of testing with if_is_pointopoint.  And add commented-out\n\t  code to implement alternative (in my opinion) more elegant behavior\n\t  that has no special-case treatment for PtP addresses.\n\t  (ospf_network_run) Use new CONNECTED_ID macro to simplify logic.\n\t* rip_interface.c: (rip_interface_multicast_set) Use new CONNECTED_ID\n\t  macro to simplify logic.\n\t  (rip_request_interface_send) Fix minor bug: ipv4_broadcast_addr does\n\t  not give a useful result if prefixlen is 32 (we require a peer\n\t  address in such cases).\n\t* ripd.c: (rip_update_interface) Fix same bug as above.\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": "11967e92542b782ccd8d800938a2845b816539ce",
      "tree": "df1a502387cc0fd519f4614608e635b89a5f9038",
      "parents": [
        "a49ad236da5cff707bdb54e14e7852d63ee3c9ea"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:09:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 13:09:10 2005 +0000"
      },
      "message": "- bah, fix likkle typo.\n"
    },
    {
      "commit": "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4",
      "tree": "d580aa8f809edf9a75968f7416e8415ffa72784c",
      "parents": [
        "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: Include memory.h\n\t  (connected_add_ipv4) Use MTYPE for ifc label.\n\t  (connected_add_ipv6) Also should accept label. Store it in ifp.\n\t  (connected_del_ipv4) Taking label as argument is pointless.\n\t* rt_netlink.c: (netlink_interface_addr) update label usage\n\t  for connected_{add,delete} functions.\n\t* if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT\n\t  so we also find out about NOXMIT interfaces like VNI.\n\t  Bit of hackery to turn interface names into the primary\n\t  interface name, later with routing socket messages we only\n\t  will about primary interfaces anyway, so we must normalise\n\t  the name.\n\t  (if_get_addr) take label as argument, so it can\n\t  be passed to connected_add.\n\t  If label is provided, then it is interface name to issue the\n\t  ioctl for address information on, not the ifp name.\n\t  (interface_list) List AF_UNSPEC too, just in case.\n\t* if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.\n\t* interface.c: (if_addr_wakeup) Some very bogus code - sets\n\t  IFF_RUNNING - add comment.\n\t  (if_refresh)\n\t  (ip_address_install) Use MTYPE for ifc label.\n\t* ioctl_solaris.c: (if_mangle_up) New function. Hackery to make\n\t  IFF_UP reflect whether any addresses are left on the\n\t  interface, as we get signalled for IFF_UP flags change on the\n\t  primary interface only. Logical interfaces dont generate\n\t  IFINFO, but we do get an RTM_DELADDR.\n\t  (if_get_flags) Call if_mangle_up before return.\n\t* kernel_socket.c: (ifam_read) Fixup calls to\n\t  connected_{add,delete} to match above changes. Rename gate\n\t  variable to brd, less confusing.\n\t  Pass the interface name as a label, if it is not same name\n\t  as ifp-\u003ename.\n"
    },
    {
      "commit": "cf460ef9478de57fae490ff1bd8cb58ccbe40b40",
      "tree": "42695453236602efbfcb2203b3d2241a38a1a42b",
      "parents": [
        "c7959916ffe11daf57490da854b069f4fe529153"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:54:26 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Apr 10 16:54:26 2005 +0000"
      },
      "message": "2005-04-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* if_ioctl_solaris.c: (if_lookup_linklocal) fix order of args\n\t  in ALL_LIST_ELEMENTS_RO macro.\n"
    },
    {
      "commit": "1eb8ef2584833f18fb674e127d59cb5a7f771482",
      "tree": "f5b09d4781de9a9b08839fefb6530e64d2d2ec31",
      "parents": [
        "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Apr 07 07:30:20 2005 +0000"
      },
      "message": "2005-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global): Fix up list loops to match changes in lib/linklist,\n\t  and some basic auditing of usage.\n\t* configure.ac: define QUAGGA_NO_DEPRECATED_INTERFACES\n\t* HACKING: Add notes about deprecating interfaces and commands.\n\t* lib/linklist.h: Add usage comments.\n\t  Rename getdata macro to listgetdata.\n\t  Rename nextnode to listnextnode and fix its odd behaviour to be\n\t  less dangerous.\n\t  Make listgetdata macro assert node is not null, NULL list entries\n          should be bug condition.\n          ALL_LIST_ELEMENTS, new macro, forward-referencing macro for use\n          with for loop, Suggested by Jim Carlson of Sun.\n          Add ALL_LIST_ELEMENTS_RO for cases which obviously do not need the\n          \"safety\" of previous macro.\n\t  LISTNODE_ADD and DELETE macros renamed to ATTACH, DETACH, to\n\t  distinguish from the similarly named functions, and reflect their\n\t  effect better.\n\t  Add a QUAGGA_NO_DEPRECATED_INTERFACES define guarded section\n\t  with the old defines which were modified above,\n\t  for backwards compatibility - guarded to prevent Quagga using it..\n\t* lib/linklist.c: fix up for linklist.h changes.\n\t* ospf6d/ospf6_abr.c: (ospf6_abr_examin_brouter) change to a single\n\t  scan of the area list, rather than scanning all areas first for\n\t  INTER_ROUTER and then again for INTER_NETWORK. According to\n\t  16.2, the scan should be area specific anyway, and further\n\t  ospf6d does not seem to implement 16.3 anyway.\n"
    },
    {
      "commit": "a349198fd3e4e5692cdc91223f8153cb53c086ce",
      "tree": "e5b366a8ab7ab9ed1c9670faf1f18eef26877ade",
      "parents": [
        "f695b01ff8e9aebc46bdf41f104ad4abbb0ef59e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 22:50:38 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t* if.c: (if_lookup_by_name_len, if_get_by_name_len) New functions.\n\t  (if_get_by_name) Tighten up code.\n\t  (interface) Use new function if_get_by_name_len.\n\t* zclient.c: (zebra_interface_add_read) Use new if_get_by_name_len\n\t  function.\n\t  (zebra_interface_state_read) Use new if_lookup_by_name_len function.\n\t* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function\n\t  to save a memcpy.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new\n\t  if_get_by_name_len function.\n\t* ospf_interface.c: (ospf_vl_new) Use strnlen to fix call to if_create.\n"
    },
    {
      "commit": "4460e7a4cf3dadcd9f06e4b519ba7be2cc936c0a",
      "tree": "5755c13aeffb151d56a886868e623d186ca9a0a0",
      "parents": [
        "4be019d5530e21c9e54e41e46a57ab071b9b11ae"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 17:07:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Jan 29 17:07:40 2005 +0000"
      },
      "message": "2005-01-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Save errno before calling\n\t  zserv_privs.change.\n\t* ioctl{,_solaris}.c: (if_ioctl,if_ioctl_ipv6) Save errno before calling\n\t  zserv_privs.change.\n\t* ipforward_solaris.c: (solaris_nd) Save errno before calling\n\t  zserv_privs.change.\n\t* irdp_main.c: (irdp_sock_init) Save errno before calling\n\t  zserv_privs.change.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "6099b3b56956322567323c11fd698b2328c6826b",
      "tree": "fa537bd0eaa9f7d824f39445eabc928db59050ca",
      "parents": [
        "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Nov 20 02:06:59 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* global: Replace strerror with safe_strerror.  And vtysh/vtysh.c\n\t  needs to include \"log.h\" to pick up the declaration.\n"
    },
    {
      "commit": "0c0f9112e1530e8e7497cbb75853b9e4da93ea95",
      "tree": "3cbc10ed3495b7813a6921fa417f4987514d3d90",
      "parents": [
        "1603c06ba3ad07b8f9380209a137569abe3700e1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:24:42 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 24 08:24:42 2004 +0000"
      },
      "message": "2004-09-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * irdp_{interface,main}.c: lists typedef removal cleanup.\n          update some list loops to LIST_LOOP. some miscellaneous style\n          and indent fixups.\n          (no_ip_irdp_address_preference_cmd) Fix delete of referenced node\n          in loop.\n        * irdp_packet.c: (irdp_recvmsg) Fix buggy assignment of integer\n          to pointer.\n        * if_ioctl{,_solaris}.c: lists typedef removal cleanup.\n          update some list loops to LIST_LOOP.\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": "48a46fa0c35f8f46e482ed1fef8b4bf63e413e0a",
      "tree": "bbc9032e718f6de580b87752e6cbb0a6a34a4359",
      "parents": [
        "19877dd2dcc9f2a9ce7ca557441ac1fc4f80faa1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 11 10:55:22 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 11 10:55:22 2004 +0000"
      },
      "message": "2004-05-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * Makefile.am: support for IOCTL_METHOD, as per Sowmini\u0027s patch.\n        * if_ioctl_solaris.c: Fixup some erroneous privilege changes and\n          add privs.h header.\n        * ioctl_solaris.c: ditto\n"
    },
    {
      "commit": "8842468c7a1c13c9dde1e26714eb2b2c56ec053b",
      "tree": "565aba9dd8a4caf29ea72494c7fdeb3e63be6fe3",
      "parents": [
        "66e9488cae034947e9e22e78cfee3e587573b3f3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 09 18:21:35 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun May 09 18:21:35 2004 +0000"
      },
      "message": "2004-05-09 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* if_ioctl_solaris.c: Add zprivs support.\n\t* ioctl_solaris.c: ditto.\n\n2004-05-09 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* if_ioctl_solaris.c: New file, Solaris interface ioctl methods.\n\t* ioctl_solaris.c: New file, Common solaris ioctl methods.\n"
    }
  ]
}
