)]}'
{
  "log": [
    {
      "commit": "7907c6c9d34a4f19dd7d4d8d81c3c8ae5000ee07",
      "tree": "c57450ba246a26d4c37f1c2339b977d8293ee04d",
      "parents": [
        "330009f7b3742462ebd90f9c16f1ab734344b68c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jul 26 19:55:31 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jul 26 19:55:31 2005 +0000"
      },
      "message": "2005-07-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\t* prefix.c: (prefix_ipv4_new, prefix_ipv6_new): Call prefix_new\n\t  to allocate the memory to make sure that all struct prefix pointers\n\t  point to objects of the same length (avoids memory overruns\n\t  on struct prefix assignments).\n\t  (prefix_ipv4_free, prefix_ipv6_free): Simply call prefix_free.\n\t  It is interesting to note that these functions are never actually\n\t  called anywhere in the code.  Instead prefix_free was already\n\t  being called directly, despite the previous MTYPE incompatibility.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "330009f7b3742462ebd90f9c16f1ab734344b68c",
      "tree": "9d3ddbf26da3205989e136cd2b3858c65584ef94",
      "parents": [
        "c898775c95a2aad505911eccb6a70a12d4e49f1d"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jul 26 14:35:37 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Jul 26 14:35:37 2005 +0000"
      },
      "message": "2005-07-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* prefix.c: (ip_masklen) While loop should test that \u0027pnt\u0027 pointer is\n\t  in range before dereferencing it.\n\n\t[backport candidate]\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": "3a2ce6a14e3e302c3fdca2ff99143cfd06b145e6",
      "tree": "f27ec1418be4c3e9a123e67ef22ca090bca28906",
      "parents": [
        "528bed4a9a997216ba95e3ae445efa79436cc551"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 01:30:51 2005 +0000"
      },
      "message": "\t* prefix.[hc]: Pass argument to the inet6_ntoa by value making it more\n\t  inet_ntoa alike.\n\t* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes\n\t  argument now by value.\n"
    },
    {
      "commit": "5920990fecba7e2430af3cfaa8bcbaed40d0ba1a",
      "tree": "d91dd49e4ed2c03cd0c007660232716f11172a56",
      "parents": [
        "6a52470660000bb6ddba971dc5c40b3422ab49bc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Apr 05 14:36:49 2005 +0000"
      },
      "message": "\t* lib/prefix.[hc]: inet6_ntoa utility function copied from\n\t  ripngd/ripngd.c (inet6_ntop).\n\t* ripngd.[hc]: Remove inet6_ntop() and any usage of it. inet6_ntoa()\n\t  from lib is used now.\n\t* ripng_interface.c: inet6_ntop() -\u003e inet6_ntoa().\n\t* ripng_peer.c: inet6_ntop() -\u003e inet6_ntoa().\n"
    },
    {
      "commit": "b9e7028fb2f626e1d345c6d52ace0567a410647f",
      "tree": "5a17a8485604b8f860ccabb43f1f6bbab82069d1",
      "parents": [
        "b6178002270192fe3ab2403dafac12e5babe11e6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 17:14:45 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Dec 08 17:14:45 2004 +0000"
      },
      "message": "2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* prefix.c: (prefix_copy) Error message before abort should\n\t  have severity LOG_ERR, not LOG_INFO.\n\t* memory.c: (mtype_log) Log level should be LOG_DEBUG, not LOG_INFO.\n"
    },
    {
      "commit": "3fb9cd6ef456959b6eff939d5c316f6785c2dda4",
      "tree": "e350cb3ef7b20b8bbccfb1aa9309152311e845bd",
      "parents": [
        "5ae35f45f1292dce3a01f241accafeb2e59b10cc"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 19 19:44:43 2004 +0000"
      },
      "message": "OK. Here it is - PtP patch from Andrew J. Schorr. No problems with ospfd,\nripd might need some more testing though.\n"
    },
    {
      "commit": "b04c699ecfb4704a67f4583e4ea929a6a3e49856",
      "tree": "9149adb41b7bc1acca6c882ab413f68b19b2a64d",
      "parents": [
        "97c52f4e397848fb18c689dfe161d0b8f7803722"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 04 19:10:31 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Oct 04 19:10:31 2004 +0000"
      },
      "message": "First small part of lib cleanup. Mainly \"constification\" of arguments and\nadding FIXME\u0027s.\n"
    },
    {
      "commit": "9d24baaa3d4a6688403b34708a1f4696c7d12c5b",
      "tree": "8b4cb6873b4c64c31a1bce6defd032a5201d9f2b",
      "parents": [
        "a27abaa5c2cc8309ecf15b977b8a8876802cab31"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Jan 13 14:55:40 2004 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Jan 13 14:55:40 2004 +0000"
      },
      "message": "Explain the dual use of struct prefix for CIDR prefixes and\naddress/netmask pairs, and clarify the two comparison functions.\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"
    }
  ]
}
