)]}'
{
  "log": [
    {
      "commit": "6d0732c8abad7ace509d033a41814ea03a3a1b16",
      "tree": "d20c537d0e16cb5245047d8ecd9990201a4fb3b6",
      "parents": [
        "a5b228b3792937c93b589938a2545b9311b7938e"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Sep 28 14:23:35 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Mon Oct 17 18:59:19 2011 +0400"
      },
      "message": "IPv6 transport class suppport\n\nIPv6 supports the same concept of differentiated service for routing\nprotocols as IPv4, but like too many things, the standards committee\ndecided that having two names for the same thing wasn\u0027t good enough and\nintroduced a third more generic term transport class.\n\nThe socket option to set transport class works the same as IPv4, but the\narguments are different.\n\n* lib/sockopt.[ch]\n  * setsockopt_ipv6_tclass(): new function\n* bgpd/bgp_network.c\n  * bgp_connect(): set socket option\n  * bgp_listener(): set socket option\n* ospf6d/ospf6_network.c\n  * ospf6_set_transport_class(): new function\n  * ospf6_serv_sock(): set socket option\n* ripngd/ripngd.c\n  * ripng_make_socket(): set socket option\n"
    },
    {
      "commit": "69bf3a39931ce61a92fb04d8888b4655fd5620a2",
      "tree": "e49dae20b1dbc0d1ee37121cd45c75d94290bdd1",
      "parents": [
        "ea4021984f9eec3f2a85551ae0822e1dff0ed2bc"
      ],
      "author": {
        "name": "Dmitrij Tejblum",
        "email": "tejblum@yandex-team.ru",
        "time": "Thu Aug 18 20:22:17 2011 +0400"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "infrastation@yandex.ru",
        "time": "Tue Sep 27 21:37:35 2011 +0400"
      },
      "message": "lib: simplify interface of setsockopt_multicast_ipv4().\n\n* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all\n  non-ancient OSes can use it anyway), and if_addr parameter (the address\n  of the interface) is now gone. (setsockopt_ipv4_multicast_if):\n  IP_MULTICAST_IF processing moved to this new function\n\n* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,\n  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),\n  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,\n  rip_interface_new): adapt to the new interface\n"
    },
    {
      "commit": "1423c809cc4ddc2e013ba6264c49a11e5719c6f2",
      "tree": "db0389e7de020bbcb9fd78d45417b0842a6adb0b",
      "parents": [
        "89d9fa301e146193093ff876f96b3612dc390bbb"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 17:59:25 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[lib] mes_lookup string lookup table argument should be marked const\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* lib/log.{c,h}: struct message argument should point to const\n\t* */*.c: adjust to suit,\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "0df7c91f048f2116610d6bdfce3ab6cad1981802",
      "tree": "18390aa845054b757fae86dde49b907ee7f14908",
      "parents": [
        "f04b0e6bb8c1339243717b156880d7e24c84c951"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 21 21:02:49 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Jul 21 21:02:49 2008 +0000"
      },
      "message": "[bgpd] TCP-MD5: password vty configuration and initial Linux support\n\n2008-07-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_packet.c: (bgp_open_receive) fix warning in a zlog call\n\t* bgp_vty.c: (bgp_vty_return) add return code\n\t* bgpd.c: (bgp_master_init) setup the socket list.\n\t* bgp_network.c: Remove the dual IPv4/6 socket thing for now, which\n\t  was implemented by Michael, until such time as its clear its\n\t  required for Linux (see sockopt comments). IPv6 support, including\n\t  IPv4 sessions on AF_INET6 sockets, therefore is broken, and the\n\t  \u0027-l 0.0.0.0\u0027 arguments would need to be given to bgpd to make\n\t  things work here.\n\n2008-07-21 Michael H. Warfield \u003cmhw@wittsend.com\u003e\n           YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n\t   Tomohiko Kusuda \u003ckusuda@inetcore.com\u003e\n           Leigh Brown \u003cleigh@solinno.co.uk\u003e\n\n\t* bgp_network.c: (bgp_md5_set_one) shim between libzebra tcp-md5\n\t  sockopt and bgpd.\n\t  (bgp_md5_set_socket) Helper for bgp_connect\n\t  (bgp_md5_set) setup TCP-MD5SIG for the given peer.\n\t  (bgp_connect) call out to bgp_md5_set_socket for the outgoing\n\t  connect socket.\n\t  (bgp_socket) save references to the listen sockets, needed if\n\t  TCP-MD5SIG is applied later or changed.\n\t* bgp_vty.c: (*neighbor_password_cmd) New \u0027neighbor ... password\u0027\n\t  commands.\n\t* bgpd.c: (peer_{new,delete) manage TCP-MD5 password\n\t  (peer_group2peer_config_copy) inherit TCP-MD5 password\n\t  (peer_password_{un,}set) orchestrate the whole add/remove of TCP-MD5\n\t  passwords: applying checks, stopping peers, and trying to return\n\t  errors to UI, etc.\n\t  (bgp_config_write_peer) save password.\n\t  Fix missing newline in writeout of neighbor ... port.\n\n2008-07-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* sockunion.c: ifdef out various places that converted\n\t  v4mapped sockets to pure v4. Doesn\u0027t seem necessary at all,\n\t  presumably a workaround for now historical inet_ntop bugs (?)\n\n2008-07-21 Michael H. Warfield \u003cmhw@wittsend.com\u003e\n           YOSHIFUJI Hideaki \u003cyoshfuji@linux-ipv6.org\u003e\n\n\t* sockopt.{c,h}: (sockopt_tcp_signature) Add TCP-MD5SIG support.\n"
    },
    {
      "commit": "b7fe4141123c6fc26fffec68d0db62ecf474c074",
      "tree": "78f2cde951e92198b00dea6ed048d41a499f71fb",
      "parents": [
        "1ba27564f3852083839bfa1f91889cb46c780f2f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:32:56 2007 +0000"
      },
      "message": "Bug #362 is fixed now.\n"
    },
    {
      "commit": "97cabcf760b8343512b5646e60cc228b8dc1350a",
      "tree": "4aab9c935540e5eafb6f8fba8c4163e305cb809c",
      "parents": [
        "0b8c4f1d811170224e467b305137ac94861daee6"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jul 06 17:00:24 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jul 06 17:00:24 2007 +0000"
      },
      "message": "[lib] Add comments regarding setsockopt_multicast_ipv4 arguments.\n\n2007-07-06 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.{c,h}: (setsockopt_multicast_ipv4) Add some comments about\n\t  the arguments.\n"
    },
    {
      "commit": "8cc4198f9fabe5f10f5a773de1503d82f33a01fb",
      "tree": "77045da709ff66629bd12029b9ee17700360909b",
      "parents": [
        "e7fe8c88c3d552400e1ae3ae9243319ab95d6f2d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri May 06 21:25:49 2005 +0000"
      },
      "message": "2005-05-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* (general) extern and static\u0027ification of functions in code and\n\t  header.\n\t  Cleanup any definitions with unspecified arguments.\n\t  Add casts for callback assignments where the callback is defined,\n\t  typically, as passing void *, but the function being assigned has\n\t  some other pointer type defined as its argument, as gcc complains\n\t  about casts from void * to X* via function arguments.\n\t  Fix some old K\u0026R style function argument definitions.\n\t  Add noreturn gcc attribute to some functions, as appropriate.\n\t  Add unused gcc attribute to some functions (eg ones meant to help\n\t  while debugging)\n\t  Add guard defines to headers which were missing them.\n\t* command.c: (install_node) add const qualifier, still doesnt shut\n\t  up the warning though, because of the double pointer.\n\t  (cmp_node) ditto\n\t* keychain.c: (key_str2time) Add GET_LONG_RANGE() macro, derived\n\t  fromn vty.h ones to fix some of the (long) \u003c 0 warnings.\n\t* thread.c: (various) use thread_empty\n\t  (cpu_record_hash_key) should cast to uintptr_t, a stdint.h type\n\t* vty.h: Add VTY_GET_IPV4_ADDRESS and VTY_GET_IPV4_PREFIX so they\n\t  removed from ospfd/ospf_vty.h\n\t* zebra.h: Move definition of ZEBRA_PORT to here, to remove\n\t  dependence of lib on zebra/zserv.h\n"
    },
    {
      "commit": "69e1325faf47762fd08917b8f20a20abb59d41e6",
      "tree": "60d6df8c1d754c84fa3108a5f19bbf91cb084ab1",
      "parents": [
        "fbb6709986ee29b57a8a6103c592de80647ead00"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Mon Nov 15 18:51:15 2004 +0000"
      },
      "message": "Rationalize CMSG_SPACE usage:\n\n  in lib/zebra.h, ensure that RFC3542-required CMSG_SPACE and CMSG_LEN\n  are defined.  Warn if alignment assumptions are made, since they are\n  i386-centric.\n\n  in lib/sockopt.h, declare that sockopt sizes are without\n  CMSG_SPACE-required padding - just simple sizeof.\n\n  in ospfd/ospf_packet.c, simply use CMSG_SPACE\n\nThis should remove all instances of CMSG_ALIGN from the source code.\nThis is a nonstandard, though rational, construct; quagga should use\nonly those defines in RFC3542.\n"
    },
    {
      "commit": "4927cf0bf0828f2c4a9bda30f3c890d1835c7370",
      "tree": "09ec812c627aeeb00a5aba1c58b0fe675d7a4fb8",
      "parents": [
        "406d67165262a3f9443f395c7c85d8c3519309ef"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 16:55:10 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 16:55:10 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.h: Fix elif that should be an else.\n"
    },
    {
      "commit": "23b9c61e5bb60d557b07dc1d7c4d7614f63dc009",
      "tree": "5780bf6f095f8eb65b8e698fa6193df88cdc66fd",
      "parents": [
        "7d9c6e511597ee76d42bede782c9ddb9e1f83389"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 11:51:57 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 11:51:57 2004 +0000"
      },
      "message": "2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sockopt.c: (setsockopt_pktinfo) unexported\n\t* sockopt.h: Cleanup SOCKOPT_CMSG defines a bit. Add a throwaway\n          define for SOPT_SIZE_CMSG_IFINDEX_IPV4 for systems which have\n          neither IP_RECVIF nor IP_PKTINFO (eg openbsd).\n"
    },
    {
      "commit": "96e27c9928b5078526f2a7564700dbdafe2c8d42",
      "tree": "5697279fc355244f385da4fbf6e313feb215f06a",
      "parents": [
        "7347a2ad7c05a86fcd9b7593a9d58b93ad50ef6a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:33:43 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 05 14:33:43 2004 +0000"
      },
      "message": "2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.{c,h}: add sockopt_iphdrincl_swab_{htosys,systoh},\n          functions to change byte order between system IP_HDRINCL order\n          and host order.\n"
    },
    {
      "commit": "0b3acf4f94241905ff36df5c1d9f9f389e45d191",
      "tree": "48b312ab2de446208d966d234fc37539bed98861",
      "parents": [
        "bf731011ef7038f5766432fec862301c123d4736"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 17 08:39:08 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 17 08:39:08 2004 +0000"
      },
      "message": "2004-09-17 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ripngd/ripngd.c: move setsockopt_so_recvbuf to lib.\n        * lib/sockopt.{c,h}: Add setsockopt_so_recvbuf, for ripd and ripngd.\n        * ripd/ripd.c: set receive buffer to a decent size, some systems\n          have low defaults. Problem noted and fix suggested by Stephan\n          Schweizer in [zebra 20967].\n"
    },
    {
      "commit": "fd73aa9e484f5c54c190b0c25b07294ce4ff168a",
      "tree": "be5ad086bdabe98492ac37cf8ee9d62e9b045195",
      "parents": [
        "a5ea687e0128b64d7c2b795d7fcb533ed5fd68e6"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 14:14:43 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 14:14:43 2004 +0000"
      },
      "message": "add () on SOPT_SIZE_CMSG_PKTINFO_IPV4() use, to match def.\nThanks to Hasso for code review.\n"
    },
    {
      "commit": "afa43b23925175ff750d91bbd1c639b47bcb597e",
      "tree": "2efb6115252045f85fa4f2425cc82d15251347f2",
      "parents": [
        "95e735b54408177a8a6659da342f17d487dfeb2c"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:12:41 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Aug 26 13:12:41 2004 +0000"
      },
      "message": "2004-08-26  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* sockopt.h: Define method-independent macro for callers of\n\tget_ifindex to use for cmsg length.\n"
    },
    {
      "commit": "e6822768a281a5d46d497c0bbfe5ffd2a10c78c8",
      "tree": "c42184d3e7312a6e635a583d3beab4069a637b27",
      "parents": [
        "1a51786a70c45003813ffc60874653555a9b486a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 19 04:13:29 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 19 04:13:29 2004 +0000"
      },
      "message": "2004-08-19 Paul Jakma \u003cpaul@dishone.st\u003e\n2004-08-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sockopt.c: include sockopt.h\n          rename some of the _pktinfo_ functions to _ifindex, where that is\n          their purpose.\n          (getsockopt_ipv6_pktinfo_ifindex) renamed to\n          getsockopt_ipv6_ifindex.\n          (setsockopt_ipv4_pktinfo) renamed to setsockopt_ipv4_ifindex\n          (setsockopt_pktinfo) update with previous and add comment re\n          AF_INET portability.\n          (setsockopt_ifindex) generic ifindex function ala\n          setsockopt_pktinfo.\n          (getsockopt_ipv4_pktinfo_ifindex) renamed to\n          getsockopt_ipv4_ifindex.\n          (getsockopt_ipv4_ifindex) rejiggling to reduce repeated\n          ifdef/elses. pktinfo case forgot to set ifindex.\n          (getsockopt_pktinfo_ifindex) renamed to\n          getsockopt_ifindex. update some calls to renamed functions.\n        * sockopt.h: Update renamed exported functions\n          Rename the CMSG_SIZE macros to IFINDEX.\n          Guard IPv4 PKTINFO in a conditional define.\n"
    },
    {
      "commit": "4f7baa0e434053c9f9a70f526be1514ea47cd274",
      "tree": "656c9850fa836fd99a2637bc126148536000ed87",
      "parents": [
        "05c447dd2e3aab0d045889845da0be5c8d974d4b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:11:07 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 23 15:11:07 2004 +0000"
      },
      "message": "2004-07-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for\n          sizeof pktinfo as appropriate, to be used when allocating msg\n          buffers. export setsockopt_pktinfo() and\n          getsockopt_pktinfo_ifindex()\n        * sockopt.c: (setsockopt_pktinfo_ifindex) new function to portably\n          set received ifindex sock option.\n          (getsockopt_pktinfo_ifindex) portably retrieve ifindex.\n          (getsockopt_cmsg_data) retrieve indicated control info from\n          message header.\n          (getsockopt_ipv6_pktinfo_ifindex) ipv6 version of above.\n          (setsockopt_ipv4_pktinfo) v4 version\n          (setsockopt_pktinfo) the exported version\n          (getsockopt_ipv4_pktinfo_ifindex) v4 specific version\n          (getsockopt_pktinfo_ifindex) the exported version\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"
    }
  ]
}
