)]}'
{
  "log": [
    {
      "commit": "d4f0960cb23abc7528d7282fa08c68131eae5f93",
      "tree": "8a1bc8eac474c49ca76f27971c65f74fd5a74c89",
      "parents": [
        "d5c925396629ef93cb38c2a63c3ac63911a341a6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:43:34 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon May 23 12:43:34 2005 +0000"
      },
      "message": "2005-05-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* routemap.c: (rmap_onmatch_goto) fix crash if \u0027continue\u0027 command\n\t  is used, which does not supply an argv[0].\n\t  this is a backport candidate /iff/ the trailing ; is removed\n\t  from VTY_GET_INTEGER_RANGE\n\t* vty.h: fix the VTY_GET macros, do {..} while(0) so they have\n\t  correct function like syntax in usage.\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": "5bb4c1981a518315bf7f4fc81a85baf2061e32fa",
      "tree": "21c20e1b3dbd312049f92147792421c16f96677c",
      "parents": [
        "a8a80d532f3248567b6926b5dbd12509eadd6b43"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:27:50 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 09 13:27:50 2005 +0000"
      },
      "message": "\t* routemap.c: Show description in \"show route-map\" output.\n"
    },
    {
      "commit": "4a8164e5b310094315e2c50d73aeea489766a48a",
      "tree": "683c5f04667486d29fc72a094957773ded6aea3b",
      "parents": [
        "3a2ce6a14e3e302c3fdca2ff99143cfd06b145e6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 14:20:18 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Apr 08 14:20:18 2005 +0000"
      },
      "message": "\t* routemap.[ch]: Added \"description ...\" command.\n\t  Closes Bugzilla #167.\n"
    },
    {
      "commit": "55468c86040081320f557b696e509b76ddfd6c83",
      "tree": "3ee726f155f8776d4a220997681d14c0b09addd0",
      "parents": [
        "909a215508fd42473fcbe4f5292a59404e5473af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) update all c files to match the lib/vector.h rename of\n\t  (struct vector).active to max, and vector_max macro to\n\t  vector_active.\n\t* lib/vector.h: Rename to (struct vector).max to slightly less\n\t  confusing active, for the number of active slots, distinct from\n\t  allocated or active-and-not-empty. Rename vector_max to\n\t  vector_active for same reason.\n"
    },
    {
      "commit": "c9eca01b298b83a849a608477f5f5b978a58167e",
      "tree": "afd25d986e49e57c73a4d555d4c083ab66d454fa",
      "parents": [
        "6c83567192ada1a66822c3f35580ce6a85f51ac9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:28:44 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Oct 11 11:28:44 2004 +0000"
      },
      "message": "2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* if.h: mtu\u0027s should be unsigned.\n\t* routemap.{c,h}: const char updates\n\t* smux.{c,h}: ditto\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": "27a43a81004b620e571f71aa1ea4db182c607862",
      "tree": "59b57a73d0cd7f14c2bd0fd6d1844ac3de9023c0",
      "parents": [
        "1b1214273edec92affb7260b62eefed233f54d37"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:29:12 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Oct 08 06:29:12 2004 +0000"
      },
      "message": "More const strings.\n"
    },
    {
      "commit": "8c328f1106cf0498333c2d8a96940e7b4581e316",
      "tree": "9bf24cca6a68a9dd5d4dda586484e497d0c19ca6",
      "parents": [
        "98c91ac6ac085713c00af00a6ac41779be6b50b3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "message": "Number of warnings is down to 3 again in lib directory. A lot of const\u0027s\nadded to strings and a lot of int -\u003e unsigned int changes.\n"
    },
    {
      "commit": "fee0f4c629412f422fc9a857e097ef335c2c576c",
      "tree": "14703e303ea2cecaee7728d9ee27075b0590a679",
      "parents": [
        "0e82d0e1204e45ecce773a7e19f7d64140f7a66a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 13 05:12:46 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 13 05:12:46 2004 +0000"
      },
      "message": "2004-09-13 Jose Luis Rubio \u003cjrubio@dit.upm.es\u003e\n           (at Technical University of Madrid as part of Euro6ix Project)\n\n        Enhanced Route Server functionality and Route-Maps:\n\n        * bgpd/bgpd.h: Modified \u0027struct peer\u0027 and \u0027struct bgp_filter\u0027 to\n        support rs-clients. A \u0027struct bgp_table *rib\u0027 has been added to the\n        first (to mantain a separated RIB for each rs-client) and two new\n        route-maps have been added to the last (for import/export policies).\n        Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX},\n        PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT.\n\n        * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in\n        order to consider the new fields included in \u0027struct peer\u0027 for\n        supporting rs-clients, i.e. the import/export route-maps and the\n        \u0027struct bgp_table\u0027.\n\n        * bgpd/bgp_route.{ch}: Modified several functions related with\n        receiving/sending announces in order to support the new Route Server\n        capabilities.\n        Function \u0027bgp_process\u0027 has been reorganized, creating an auxiliar\n        function for best path selection (\u0027bgp_best_selection\u0027).\n        Modified \u0027bgp_show\u0027 and \u0027bgp_show_route\u0027 for displaying information\n        about any RIB (and not only the main bgp RIB).\n        Added commands for displaying information about RS-clients RIBs:\n        \u0027show bgp rsclient (A.B.C.D|X:X::X:X)\u0027, \u0027show bgp rsclient\n        (A.B.C.D|X:X::X:X) X:X::X:X/M\u0027, etc\n\n        * bgpd/bgp_table.{ch}: The structure \u0027struct bgp_table\u0027 now has two\n        new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT})\n        and \u0027void *owner\u0027 which points to \u0027struct bgp\u0027 or \u0027struct peer\u0027 which\n        owns the table.\n        When creating a new bgp_table by default \u0027type\u003dBGP_TABLE_MAIN\u0027 is set.\n\n        * bgpd/bgp_vty.c: The commands \u0027neighbor ... route-server-client\u0027 and\n        \u0027no neighbor ... route-server-client\u0027 now not only set/unset the flag\n        PEER_FLAG_RSERVER_CLIENT, but they create/destroy the \u0027struct\n        bgp_table\u0027 of the peer. Special actions are taken for peer_groups.\n        Command \u0027neighbor ... route-map WORD (in|out)\u0027 now also supports two\n        new kinds of route-map: \u0027import\u0027 and \u0027export\u0027.\n        Added commands \u0027clear bgp * rsclient\u0027, etc. These commands allow a new\n        kind of soft_reconfig which affects only the RIB of the specified\n        RS-client.\n        Added commands \u0027show bgp rsclient summary\u0027, etc which display a\n        summary of the rs-clients configured for the corresponding address\n        family.\n\n        * bgpd/bgp_routemap.c: A new match statement is available,\n        \u0027match peer (A.B.C.D|X:X::X:X)\u0027. This statement can only be used in\n        import/export route-maps, and it matches when the peer who announces\n        (when used in an import route-map) or is going to receive (when used\n        in an export route-map) the route is the same than the one specified\n        in the statement.\n        For peer-groups the statement matches if the specified peer is member\n        of the peer-group.\n        A special version of the command, \u0027match peer local\u0027, matches with\n        routes originated by the Route Server (defined with \u0027network ...\u0027,\n        redistributed routes and default-originate).\n\n        * lib/routemap.{ch}: Added a new clause \u0027call NAME\u0027 for use in\n        route-maps. It jumps into the specified route-map and when it returns\n        the first route-map ends if the called RM returns DENY_MATCH, or\n        continues in other case.\n"
    },
    {
      "commit": "5510e83b395ccf19c07a89fee1baba958e3a580d",
      "tree": "477f5510eb6652cb53f6fa84629ddd6cf6dbaa29",
      "parents": [
        "a3f71c5896ce1b555d11c0870e8267f67cbff68d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 09 14:00:01 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jul 09 14:00:01 2004 +0000"
      },
      "message": "2004-07-09 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * Merge Kunihiro\u0027s \u0027show route-map\u0027 change and add\n          compatibility aliases for route-map continue\n"
    },
    {
      "commit": "3bf1c917d10b3429afc139ad47252c3aa0dcd3a8",
      "tree": "32b8b28cc0d37349bea4673ce8b2b64987d31e49",
      "parents": [
        "6baeb98892ee1c574af5cd3896a3a6d65cef0117"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 29 06:30:19 2003 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 29 06:30:19 2003 +0000"
      },
      "message": "2003-10-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * lib/routemap.c: (route_map_apply_index) renamed to\n          route_map_apply_match.\n          (route_map_apply_match) Take rule list as argument rather than\n          index. concentrate solely on match logic.\n          (route_map_apply) Properly implement the route map statement\n          logic, according to the table, especially the on-match exit\n          policy.\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"
    }
  ]
}
