)]}'
{
  "log": [
    {
      "commit": "b99760ab51abf8c4c9a1f89dab0c1630a6768ff7",
      "tree": "daaf8cabb567c5ff1a01368fa1382d8257b56854",
      "parents": [
        "73a7dea305b146febb8e57176295689d6a900f1d"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 04 16:24:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jan 04 16:24:43 2005 +0000"
      },
      "message": "2005-01-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Added test for broken CMSG_FIRSTHDR macro\n\t  (relevant for Solaris 8 and unpatched Solaris 9, don\u0027t know\n\t  whether other platforms are affected).\n\t* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether\n\t  config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined\n\t  by the configure test program).\n\t* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead\n\t  of CMSG_FIRSTHDR.\n\t* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR\n\t  instead of CMSG_FIRSTHDR.\n\t* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.\n\t* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of\n\t  CMSG_FIRSTHDR.\n"
    },
    {
      "commit": "cc49eb5a5f970b7405762d3f8a2def179e0022b4",
      "tree": "dbd4d9278b3c2dad27f1908662fab533568a2504",
      "parents": [
        "17eaa728aae282e373b98a8d193c5c48c24e1a0f"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 30 13:50:32 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 30 13:50:32 2004 +0000"
      },
      "message": "Add comment explaining about limit of 20 joined groups on a socket.\n"
    },
    {
      "commit": "d44debedf53b85c989b72fe7c6924ffc1e7e625b",
      "tree": "4c527145158b49674cffb714fb571fd7d9a92b24",
      "parents": [
        "4660687a38034d60296fbc9e82aae772011c407f"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:06:23 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 20:06:23 2004 +0000"
      },
      "message": "2004-12-29  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sockopt.c (getsockopt_ipv4_ifindex): Document calling\n\tconvention.  Beef up comments.  Handle the case where the cmsghdr\n\thas a zero controllen, or more specifically when the wanted option\n\tis not present.  This is needed for Solaris 8, and in general for\n\tany platform for which configure finds a method and it can fail.\n\tMark some changes with XXX to be cleaned up post 0.98.\n"
    },
    {
      "commit": "1d69fdf645d8434e8e1488f8bf0c73613df09da9",
      "tree": "c3612df88e349556c1570d7d2ce0b37ce590ea5d",
      "parents": [
        "3cade26fea2febf99780288d31d0bfe7e1b16ef1"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 18:53:30 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Dec 29 18:53:30 2004 +0000"
      },
      "message": "2004-12-29  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sockopt.c (getsockopt_ipv4_ifindex): Return 0 when passed a NULL\n\t  cmsghdr pointer.\n\nI believe this will avoid ospfd crashing on Solaris 8, which seems to\ndefine IP_RECVIF but not actually implement it.\n"
    },
    {
      "commit": "1d75c8c3b28db50bc53771d5fac37b809d37b614",
      "tree": "530ea967460e0f9978572b85e15666617a4b3f45",
      "parents": [
        "af04bd7c102c3fc1a9c2e98337b0ab1fa824d080"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 21:43:17 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Dec 28 21:43:17 2004 +0000"
      },
      "message": "2004-12-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_ipv4_ifindex) Improve error message.\n\t  When neither IP_PKTINFO nor IP_RECVIF is defined, make return value\n\t  deterministic (-1).\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": "ae5e24d8678f1e3a60dde58d3382c5ba73d6bb27",
      "tree": "fdc23e828988dd7a0c53941fe22a8fd9daa5f4cc",
      "parents": [
        "ca35976927190883368ef3bd32bbf9f174575bd6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 23:43:10 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 23:43:10 2004 +0000"
      },
      "message": "Fix previous change to use new function safe_strerror instead of strerror.\n"
    },
    {
      "commit": "ff29bb31505b485e8ffa561e21d075d28ac7d5e7",
      "tree": "20fa0d8bea625c82f5e347b3fadecc93a1112ef0",
      "parents": [
        "48577196af0cd83272cb885ac018d19e30058653"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 18:29:22 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Nov 19 18:29:22 2004 +0000"
      },
      "message": "2004-11-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_so_recvbuf) Stop error message from being\n\t  printed every time.\n"
    },
    {
      "commit": "e064d6d9c3c3319c62fe4fac3e4e5f7a1941a98c",
      "tree": "838df17a38028d8f4afe496f0a2335a0f6945c21",
      "parents": [
        "a2b1ecd29f8bd4b01d5287ff862e156b2ffc30b3"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 01 08:59:21 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 01 08:59:21 2004 +0000"
      },
      "message": "2004-11-01 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.c: (setsockopt_pktinfo) remove, its unused.\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": "7d9c6e511597ee76d42bede782c9ddb9e1f83389",
      "tree": "2c23062b129595c15e48153a2508500e93b2829e",
      "parents": [
        "c49ad8f1b0775c1b35ea9bf75f44f3eca105d786"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 10:54:39 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 22 10:54:39 2004 +0000"
      },
      "message": "2004-10-13 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.c: (getsockopt_ipv4_ifindex) no ifindex should be 0, not\n          -1.\n"
    },
    {
      "commit": "9035efaa924c69f4f4fcb1049c7dc4f43b9da980",
      "tree": "f81d25b0e069ad8fb5f2843172a4e60fa0d6cbdf",
      "parents": [
        "ddd119fd3d94e95dd44aa9fb3bc3fca4f26078a0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "message": "2004-10-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* version.h.in: (pid_output*) add const qualifier.\n\t* command.h: Change DEFUN func to take const char *[] rather\n          than char **, to begin process of fixing compile warnings in lib/.\n          Nearly all other changes in this commit follow from this change.\n        * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take\n          const void * and cast an automatic const char *p to it.\n          (buffer_putstr) add const\n        * command.c: (zencrypt) const qualifier\n          (cmd_execute_command_real) ditto\n          (cmd_execute_command_strict) ditto\n          (config_log_file) ditto.\n          Fix leak of getcwd() returned string.\n        * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.\n        * distribute.{c,h}: Update with const qualifier.\n          (distribute_free) use MTYPE_DISTRIBUTE_IFNAME\n          (distribute_lookup) Cast to char *, note that it\u0027s ok.\n          (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.\n          (distribute_get)  Cast to char *, note that it\u0027s ok.\n        * filter.c: Update with const qualifier.\n        * if.{c,h}: ditto.\n        * if_rmap.{c,h}: ditto.\n          (if_rmap_lookup) Cast to char *, note that it\u0027s ok.\n          (if_rmap_get) ditto.\n        * log.{c,h}: Update with const qualifier.\n        * plist.{c,h}: ditto.\n        * routemap.{c,h}: ditto.\n        * smux.{c,h}: ditto. Fix some signed/unsigned comparisons.\n        * sockopt.c: (getsockopt_cmsg_data) add return for error case.\n        * vty.c: Update with const qualifier.\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": "e473b032b860444b9656cee1654b0120f77b52b1",
      "tree": "8885e2b15c70fb231e775dead3cc30bea18311ce",
      "parents": [
        "c83dcd3f81ed21c72ad50e56a6c515c7eacac44c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:08:11 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 26 16:08:11 2004 +0000"
      },
      "message": "Compiler warnings fixes.\n"
    },
    {
      "commit": "b89e60c7abd457f97df8351db5610fc9c15178b2",
      "tree": "0dc4ab86a52a617f1acae71f707a172d560d1d1b",
      "parents": [
        "d9c427b21a5509a940178dedebec625bd7a9640a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Sep 21 15:43:13 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Sep 21 15:43:13 2004 +0000"
      },
      "message": "2004-09-17 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* sockopt.c: Add missing bracket\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": "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": "33f92320e8a6b078a5972d05c8f49487d8edf19c",
      "tree": "dda4c2355c69089593fac18314f050daa6661e31",
      "parents": [
        "5b73a671aac22a75cc90657aa4a924d199f2284b"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Fri Jul 23 16:14:32 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Fri Jul 23 16:14:32 2004 +0000"
      },
      "message": "2004-07-23  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile\n\ton NetBSD, and add comments to make it less confusing.  Change the\n\tsense of the SUNOS_5 test to make parallel structure between the\n\tvariables and the code.\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"
    }
  ]
}
