)]}'
{
  "log": [
    {
      "commit": "5d7bdd0ed9595f515bdfaa8af76fcfd41be7a6a6",
      "tree": "c54c1c217a1742549ea1f1067419574aa1366d35",
      "parents": [
        "d6bb5aa52793979616f0bfc5f38a0eb2e5f1c7e4",
        "35f891404a6d2f0d034ca0fb724904db72baf552",
        "fb62a3cef5960885119f9e87c833520ddf2a9b49"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Mon Sep 01 20:19:14 2008 +0100"
      },
      "message": "Merge commit \u0027remotes/jocke/ospf_neighbour\u0027; commit \u0027remotes/jocke/snmp_crosscompile\u0027\n"
    },
    {
      "commit": "19a937224469055beb7dfce73ba452e3a33c89ed",
      "tree": "a16e32aa133ac796c051c0fdddb58d08022feeb2",
      "parents": [
        "6556d8a04079eb54d1805df3bef3e66ff1267d02"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 26 14:49:40 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Tue Aug 26 15:05:54 2008 +0100"
      },
      "message": "test\n"
    },
    {
      "commit": "fb62a3cef5960885119f9e87c833520ddf2a9b49",
      "tree": "cf6c5cde38c91ad555021f44793b92fd34de8198",
      "parents": [
        "b38309a4ee831a440ef78f8a27db584f2f8e8276"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Tue May 13 20:03:32 2008 +0200"
      },
      "committer": {
        "name": "Joakim Tjernlund",
        "email": "Joakim.Tjernlund@transmode.se",
        "time": "Mon Aug 25 09:48:30 2008 +0200"
      },
      "message": "Make --enable-snmp cross compile and make libcrypto optional with --without-crypto\n\nAutoconfig work by me, the rest was done by\n\"Kirill K. Smirnov\" \u003clich@math.spbu.ru\u003e\n"
    },
    {
      "commit": "5515de330cf6c5449c0a56862072750b07d23fd7",
      "tree": "4651f48d94ba97117d84fdaa2210563676adc8df",
      "parents": [
        "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Mar 21 12:41:22 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:02:08 2008 +0100"
      },
      "message": "[administrivia] Update gitignore files\n\n- Add more stuff, archive libraries, etc..\n"
    },
    {
      "commit": "d68cbf9261869e532dfdd14dbb4122b3f3feb0d4",
      "tree": "5cc873e6a38a3db9ad5fb4dfe579624ff7693c13",
      "parents": [
        "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Oct 21 18:35:27 2006 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 20:00:46 2008 +0100"
      },
      "message": "[administrivia] Git should ignore backup files and .loT files\n"
    },
    {
      "commit": "3998bfd76620a676fbd77f19c5c6ea80a4cc88d2",
      "tree": "66bf93340e55bb06b25544ef04afec3749269391",
      "parents": [
        "e5248434c0d287668be956a2bd52399d67b16c39"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Aug 19 14:13:43 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:57:22 2008 +0100"
      },
      "message": "[trivia] Remove ChangeLog files, as this data is now maintained in SCM\n"
    },
    {
      "commit": "e5248434c0d287668be956a2bd52399d67b16c39",
      "tree": "6942a3563d2f9014d85f0cee1502a4d4f614cdfa",
      "parents": [
        "f3019aff2421d9c3d16498f22cd245e3f8948d4c"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 18:08:24 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:26 2008 +0100"
      },
      "message": "[zebra] trivial: fix spelling mistake\n"
    },
    {
      "commit": "ef9b113e2d4c0d49bd7d61458fa9acc113658d2c",
      "tree": "f2f57b5c771e7709be26daefa2861cd657764aeb",
      "parents": [
        "d145bc008a03889fff8949890cb8c532ee6aff74"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:44:47 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:26 2008 +0100"
      },
      "message": "[zebra] trivia: static qualifiers for metaq\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: (process_subq) mark static\n\t  (rib_meta_queue_add) ditto\n\t  (meta_queue_new) ditt\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "d145bc008a03889fff8949890cb8c532ee6aff74",
      "tree": "f8bb5b09a4ca2c3f8fa0e93ae6d8a8acd46d3889",
      "parents": [
        "16814f9698a3ee14b1412286c53711a562c348fc"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:41:37 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] make some data local\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: static qualifier on local data\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "16814f9698a3ee14b1412286c53711a562c348fc",
      "tree": "9fb7ec8e786b648f0c74f0aeff5ff959dc663d18",
      "parents": [
        "4c699477d24e7104893130d072963df5cea17214"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:39:31 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra] ignore dead routes in RIB update\n\n2008-08-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra_rib.c: When doing a RIB update, routes in process of removal\n\t  should be ignored. This fixes bugs where a route is removed but a\n\t  recursive route is not changed.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "4c699477d24e7104893130d072963df5cea17214",
      "tree": "9e4336586dd07868f905c87a4a7479e2b8b0795f",
      "parents": [
        "898987e976e8f7a50a4549475ab4970a85895f31"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 17:01:44 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink: no need to change privs for receive\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_parse_info) Linux doesn\u0027t check privledges\n\t  on receive, so avoid the overhead of lowering and raising the\n\t  priviledges on each received message\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "898987e976e8f7a50a4549475ab4970a85895f31",
      "tree": "7e0b44b20459f8aa30a1c7e12e463b6088fcff74",
      "parents": [
        "30afea3b584515ba19b38fcde6f562a550c1fcab"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sun Aug 17 16:56:15 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink: quiet harmless errors\n\n2008-06-17 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_parse_info) There can be harmless races\n\t  such as adding an existing route, or deleting an already deleted\n\t  route. Don\u0027t bother logging these unless debugging is turned on.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "30afea3b584515ba19b38fcde6f562a550c1fcab",
      "tree": "f39773af1c2c29518fbbc222f2dd4948be2484ef",
      "parents": [
        "cadfb2cd81528fc6f85af24dbf0ff3fd0ff63e6b"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 18:25:47 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] netlink buffer size tweaking only needed on receive socket\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_recvbuf) consolidate recvbuf setting\n\t  (netlink_socket) no need to set receive buffer on netlink sockets\n\t  generally\n\t  (kernel_init) set recvbuffer on the listen socket\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "4cde931e2d5a83708cf55e63eae7b629e8e4296a",
      "tree": "09cdea4432cca881b390b9499914a9acb130d78b",
      "parents": [
        "3d265b4d9d748bf4c92aefebc2ca0c04fd607945"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 17:51:27 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] clean up blocking setting of netlink sockets\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: This change removes the overhead of twiddling\n          the socket twice on every route change. The netlink support has\n          two sockets, one is used for request/response and should always\n          block. The other is used for asynchronous notification and should\n          always be non-blocking.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3d265b4d9d748bf4c92aefebc2ca0c04fd607945",
      "tree": "45bdddf4ce6736d8f4dd9091ce20313eae894572",
      "parents": [
        "30a2231a4881f53deca61ef7a62b225a43dab4c5"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Sat Aug 16 17:30:39 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:56:25 2008 +0100"
      },
      "message": "[zebra:linux] Filter out unwanted netlink messages by PID\n\n2008-08-16 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: Update the netlink socket BPF to cancel out\n\t  unwanted ACKs on the listen socket by matching on the PID.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "30a2231a4881f53deca61ef7a62b225a43dab4c5",
      "tree": "f26dff922a4f85d302fa67bbd9a120108db41c44",
      "parents": [
        "f5612dd382d9c0f4089b08ec164c25a8082d9f89"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 15 14:05:22 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:59 2008 +0100"
      },
      "message": "[warnings] Fix various SOS warnings\n\n2008-08-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* */*: Fix various problems flagged by Sun Studio compiler.\n\t  - \u0027\u003cqualifier\u003e \u003cstorage\u003e\u0027 obsolescent in declarations\n\t  - empty statements (\u0027;\u0027 after ALIAS definitions)\n\t  - implicit declarations (e.g printstack in lib/log.c)\n\t  - \"\\%\" in printf string instead of \"%%\"\n\t  - loops that return on the first iteration (legitimately, but\n \t    compiler can\u0027t really know), e.g. bgp_routemap.c\n \t  - internal declarations which mask prototypes.\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": "6072b24eb776e6486f076b1762d3650e803954c2",
      "tree": "d6a305760bdd5b612be661ae53e32325990337aa",
      "parents": [
        "ffe11cfb0a808ae514193438616dfabc512b4cf6"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "stephen.hemminger@vyatta.com",
        "time": "Thu Aug 14 16:52:26 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:58 2008 +0100"
      },
      "message": "[zebra] mark some rt_netlink functions static\n\n2008-08-14 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* zebra/rt_netlink.c: local functions should be static.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "40da22166ff29753a65b7947ed5fa7261fee1d80",
      "tree": "97b71b8f4ad218b8d136ea93ec9dfd9537408e1b",
      "parents": [
        "7f794f2bb079c1a5bb0fdebb815921c168c00e90"
      ],
      "author": {
        "name": "Timo Teräs",
        "email": "timo.teras@iki.fi",
        "time": "Wed Aug 13 17:37:14 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:57 2008 +0100"
      },
      "message": "[zebra:netlink] Set proto/scope on all route update messages\n\n2008-08-13 Timo Teräs \u003ctimo.teras@iki.fi\u003e\n\n\t* zebra/rt_netlink.c: (netlink_route{,_multipath) Set protocol and\n\t  scope appropriately for both NEW and DELROUTE messages, to avoid\n\t  wiping out non-zebra routes on delete.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "46bc0e432e756fcb8fc4f703b47cd25b9fc7139c",
      "tree": "60100ca1e11c3c3600441d366b236f4a2de519ca",
      "parents": [
        "d664ae1182c29b74b409bc8594b7bd0575e91ce9"
      ],
      "author": {
        "name": "Paul P Komkoff Jr",
        "email": "i@stingr.net",
        "time": "Wed Aug 13 16:17:04 2008 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:52:12 2008 +0100"
      },
      "message": "[build] Test for GNU-style PIE support in toolchain and enable\n\n2008-08-13 Paul P Komkoff Jr \u003ci@stingr.net\u003e\n\n\t* configure.ac: add a configure flag and autoconf macro, which will\n\t  determine if your toolchain supports PIE.\n\t* */Makefile.am: add corresponding CFLAGS and LDFLAGS into\n\t  appropriate places.\n\nSigned-off-by: Paul Jakma \u003cpaul@quagga.net\u003e\n"
    },
    {
      "commit": "3c5a0a4f8fe3811affff6d5e123379eedb083571",
      "tree": "79e285e0bd04c6ef0dfcde9cf0ce8fda8abecbe1",
      "parents": [
        "750e814693050bc97391eec618aad9db798ee5e8"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Feb 19 17:30:10 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Fri Aug 22 19:49:33 2008 +0100"
      },
      "message": "[administrivia] Add .gitignore files, based on .cvsignores.\n"
    },
    {
      "commit": "0b3f3d47b21ddf175bfdd549ba33fbcd34801244",
      "tree": "ec788e51c7dadeb5469313b6d3819690b468bbab",
      "parents": [
        "ce9c3cc5d96ea417727347923a42f10d56e631fd"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 01 18:24:58 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Jul 01 18:24:58 2008 +0000"
      },
      "message": "[zebra] Make BSD link-state deal more gracefully with GIFMEDIA ioctl error\n\n2008-07-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ioctl.c: (if_get_flags) Deal more gracefully with failure\n\t  of the BSD link-state SIOCGIFMEDIA ioctl, as some interfaces\n\t  apparently don\u0027t implement it (e.g. tun).\n\t  Also, make BSD link-state checking be conditional on the\n\t  \u0027link-detect\u0027 interface configuration flag, as it should be.\n\t  Fixes bug #465.\n"
    },
    {
      "commit": "e96f92034dad1a70c92ad4ad863a5259c122cecb",
      "tree": "c3b9bebef0fe2059182b31b43243289b5c7248e3",
      "parents": [
        "a15cfd16fcdec39588ce2f780671ba7c6de0b919"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Jun 02 12:03:22 2008 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Jun 02 12:03:22 2008 +0000"
      },
      "message": "+ initial edition of meta-queue for RIB updates processing (bug #431)\n"
    },
    {
      "commit": "0d6b2ee249e9efba30da3236c413bf03c7b27ed9",
      "tree": "4d9320f2c34f0c127b58b92f59e2c2afd2d5818f",
      "parents": [
        "768a27ea7ba25257c79689af83ab37945dc1cc3c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:29:16 2008 +0000"
      },
      "message": "[daemons] Sanity check port number arguments before use\n\n2008-05-29 Martin Nagy \u003cmnagy@redhat.com\u003e\n\n\t* */*main.c: Sanity check port numbers before using.\n"
    },
    {
      "commit": "768a27ea7ba25257c79689af83ab37945dc1cc3c",
      "tree": "d3d9b822a29090a8cfee41b4ae3f74248e5950fa",
      "parents": [
        "311064ddc5c52f6859cf1e6e8636c19a2e705147"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:23:08 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 29 18:23:08 2008 +0000"
      },
      "message": "[zebra/linux] Use BPF to filter out responses, to try avoid netlink overruns\n\n2008-05-29 Stephen Hemminger \u003cstephen.hemminger@vyatta.com\u003e\n\n\t* rt_netlink.c: (netlink_install_filter) BPF filter to catch and\n\t  drop responses to zebra\u0027s own route messages.\n\t  (kernel_init) add BPF filter on the netlink socket.\n"
    },
    {
      "commit": "20e5ff0a8893ffad6d31739d68d224931c4a7992",
      "tree": "8ecd9184d2d7268e0fc51bcd612790301780efda",
      "parents": [
        "dea04441fb51f74dc25f6ab4bd756b4159d961b6"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Feb 26 14:02:24 2008 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Feb 26 14:02:24 2008 +0000"
      },
      "message": "+ fix bug#326 by rib_lookup_and_pushup()\n"
    },
    {
      "commit": "55edb0d446a272907715b0825ff008557174d34a",
      "tree": "17d46ab705b0b229b8795d0d809fddd18e1d9078",
      "parents": [
        "c543a1737173fb438f1d8c06f650b2d0d479f45c"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jan 11 15:57:13 2008 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri Jan 11 15:57:13 2008 +0000"
      },
      "message": "[link-detect] Improve BSD support.\n2008-01-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* lib/zebra.h: Revert previous change, no need to include\n\t  \u003cnet/if_media.h\u003e here.\n\t* zebra/ioctl.c: If HAVE_BSD_LINK_DETECT is defined, include\n\t  \u003cnet/if_media.h\u003e\n\t  (if_get_flags) Remove debug messages about BSD link state.\n\t* zebra/kernel_socket.c: (bsd_linkdetect_translate) If link state\n\t  is unknown, we should set the IFF_RUNNING flag.\n"
    },
    {
      "commit": "c543a1737173fb438f1d8c06f650b2d0d479f45c",
      "tree": "ba940242e22f7e6798e6fd24b19864b5702474db",
      "parents": [
        "3f087670efa606021cde2f6a9615ac7e07aec2a5"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jan 10 15:24:32 2008 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu Jan 10 15:24:32 2008 +0000"
      },
      "message": "[link-detect] Try to get BSD link-detect to work properly.\n\n2008-01-10 Ingo Flaschberger \u003cif@xip.at\u003e\n\n\t* configure.ac: Define HAVE_BSD_LINK_DETECT if \u003cnet/if_media.h\u003e is\n\t  present.\n\t* lib/zebra.h: If HAVE_BSD_LINK_DETECT is defined,\n\t  include \u003cnet/if_media.h\u003e.\n\t* zebra/ioctl.c: (if_get_flags) If HAVE_BSD_LINK_DETECT, use the\n\t  SIOCGIFMEDIA ioctl to ascertain link state.\n\t* zebra/kernel_socket.c: (bsd_linkdetect_translate) New function to\n\t  map the ifm_data.ifi_link_state value into the IFF_RUNNING flag.\n\t  (ifm_read) Call bsd_linkdetect_translate to fix the IFF_RUNNING\n\t  flag before calling if_flags_update.\n"
    },
    {
      "commit": "3f087670efa606021cde2f6a9615ac7e07aec2a5",
      "tree": "c2d884aa51da1a95614380c813900e6f18a85c60",
      "parents": [
        "912df1e8ab61962c29eb4faff17a7d75c4905b84"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jan 08 20:12:46 2008 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Tue Jan 08 20:12:46 2008 +0000"
      },
      "message": "[link-detect] Static interface routes should behave properly with link-detect.\n\n2008-01-08 Michael Larson \u003cmike@vyatta.com\u003e\n\n\t* zebra_rib.c: (nexthop_active_check) Replace if_is_up with\n\t  if_is_operative to solve problems with static interface\n\t  routes not behaving properly with link-detect.\n"
    },
    {
      "commit": "6ce80bdb2523ad82cef813f6d8a7e0d4daa8cfae",
      "tree": "d0b0fc8725c9f120cdcc16fa7f711d8104051815",
      "parents": [
        "3a02d1f7fb778a1ea4f45d037f13dfcd126e2337"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Nov 12 14:55:01 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Nov 12 14:55:01 2007 +0000"
      },
      "message": "+ fixed bug #418 (changing address on an existing interface doesn\u0027t cause existing static routes to be revalidated)\n"
    },
    {
      "commit": "5619f56ba38b255f699f76b327cf82388c4a90cf",
      "tree": "f6402a98cb0f2fc507ec97fdbc1e0a515ff3ce1a",
      "parents": [
        "fbdbf1281660de877ef687a82145e82934f35744"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 24 13:13:21 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 24 13:13:21 2007 +0000"
      },
      "message": "+ fix the bug reported by Milan Kocian (IPv6 route handling was broken by the RIB debug changeset).\nafter\n"
    },
    {
      "commit": "a3aaf5b0ceb8c5b3821793333b4057df872fbedd",
      "tree": "c4c95460aff0f7332f84546e9dd0d651abc8868a",
      "parents": [
        "f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Oct 04 10:49:21 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Oct 04 10:49:21 2007 +0000"
      },
      "message": "+ rib_process() speedup for multi-nexthop route nodes\n"
    },
    {
      "commit": "f304cb48f0d7d0ff8f36e7aca8293141a9fa9e60",
      "tree": "85b0f508c0175bc9078640207c2f31a3e2b96b9c",
      "parents": [
        "6b148faa291f68dd43bba37fbc0e6b75a2e1e078"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 03 12:27:16 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Oct 03 12:27:16 2007 +0000"
      },
      "message": "+ Minor bugfix: IPv6 prefixes were logged incorrectly in RIB debugging calls. Fixed.\n"
    },
    {
      "commit": "96934e6ac6ec9ff6e67131cc8324741b771d5e0d",
      "tree": "7cb90f6a03e1b33e2e0045cc50185b16dfe00df8",
      "parents": [
        "91b7351d4e150bbc60786f0facb911fa2c598553"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 14:56:28 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 14:56:28 2007 +0000"
      },
      "message": "+ sayonara old_pid!\n"
    },
    {
      "commit": "91b7351d4e150bbc60786f0facb911fa2c598553",
      "tree": "fe5885f6a514a000cac903a105e1c7386b2c4df1",
      "parents": [
        "2d844524ad9431ea1e53336dfcfebd3ee6520cb7"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 13:31:52 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 13:31:52 2007 +0000"
      },
      "message": "+ fixed bug #402: now the second zebra process doesn\u0027t destroy routes\n  of the first one before dying\n+ we are not going to receive routing messages originated by old_pid,\n  because rib_sweep_route() is called after damon() now. This will allow\n  to drop old_pid completely soon.\n"
    },
    {
      "commit": "2d844524ad9431ea1e53336dfcfebd3ee6520cb7",
      "tree": "1c688c317f879922991c6d6c548b7f8fcd8e0490",
      "parents": [
        "bd6c86d3a30d27ed4960863a653376c54e5e5e34"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 11:31:55 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Sep 14 11:31:55 2007 +0000"
      },
      "message": "Switch from LOOKUP() to lookup() for rtm_type (see bug #401 for details).\n"
    },
    {
      "commit": "bd6c86d3a30d27ed4960863a653376c54e5e5e34",
      "tree": "29c6ad4e9539282028c9452870416c61d731ab7b",
      "parents": [
        "af400e26aec5828ac63fd1e2273172f3ac9da44e"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Sep 12 15:24:27 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Wed Sep 12 15:24:27 2007 +0000"
      },
      "message": "* rt_socket.c: (kernel_rtm_ipv4) prefix_buf could be passed\n  to zlog_err() uninitialized with debug disabled. Fixed.\n"
    },
    {
      "commit": "882968e0a2fe65db5aff29149c87f6d292a1cd2d",
      "tree": "6d95bdf399083c5fa585fc4f848052cff05e09e8",
      "parents": [
        "9eda90ce8094683a5315007fbd0f9249a284f36f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Sep 06 14:34:41 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Thu Sep 06 14:34:41 2007 +0000"
      },
      "message": "+ fixed bug #400: adjusted rtread_sysctl.c:route_read()\n"
    },
    {
      "commit": "1ba27564f3852083839bfa1f91889cb46c780f2f",
      "tree": "52dba3326d078a18f74db335b567bab13f394eff",
      "parents": [
        "a13663ae74e806c3cd3d01b28b39193e550a907f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:15:39 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:15:39 2007 +0000"
      },
      "message": "Looks like bug #320 is finally fixed now.\n"
    },
    {
      "commit": "a13663ae74e806c3cd3d01b28b39193e550a907f",
      "tree": "15a9bde3e75ec593baa7a18dab93815463a2c465",
      "parents": [
        "6da598018c6f866694ecb80a391815a40daaa951"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:12:40 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 21 16:12:40 2007 +0000"
      },
      "message": "Fixed ioctl_solaris.c:if_get_mtu() for IPv6\u0027less operation\n"
    },
    {
      "commit": "6da598018c6f866694ecb80a391815a40daaa951",
      "tree": "dbfe3daef285536d13e748584a6358dee0100c6b",
      "parents": [
        "03e232a4588187992f3538985d541289dc272464"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Aug 17 14:16:30 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Fri Aug 17 14:16:30 2007 +0000"
      },
      "message": "Fixed bug #394 \"RTF_DONE is ignored in rtm_read()\"\n"
    },
    {
      "commit": "03e232a4588187992f3538985d541289dc272464",
      "tree": "6bb2c36ccb39c678b49d29fd3d379e0de313a17d",
      "parents": [
        "dc95824ae13d65156dd873a6e784d9a0eed2f39f"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 14 09:46:48 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Tue Aug 14 09:46:48 2007 +0000"
      },
      "message": "Merged own patch for bug #390 (rewrite zebra/zebra_rib.c:nexthop_active_update())\n"
    },
    {
      "commit": "dc95824ae13d65156dd873a6e784d9a0eed2f39f",
      "tree": "fa53aa99e517d9cfe5c56474051afdaa1bc9a666",
      "parents": [
        "068fd77cff0ce09b6390641abd84fc09a89c49db"
      ],
      "author": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "committer": {
        "name": "Denis Ovsienko",
        "email": "linux@pilot.org.ua",
        "time": "Mon Aug 13 16:03:06 2007 +0000"
      },
      "message": "Merged own patch for the bug #391 (debugging and comments mostly).\n"
    },
    {
      "commit": "068fd77cff0ce09b6390641abd84fc09a89c49db",
      "tree": "0a71721ce90997f1fe0c45d677f3625dbd890369",
      "parents": [
        "ed6ef902df72cc8267e274ed515a47af52c9fed7"
      ],
      "author": {
        "name": "vize",
        "email": "vize",
        "time": "Fri Aug 10 06:25:20 2007 +0000"
      },
      "committer": {
        "name": "vize",
        "email": "vize",
        "time": "Fri Aug 10 06:25:20 2007 +0000"
      },
      "message": "Use the proper field length for the peer\u0027s address (netlink_interface_addr)\n"
    },
    {
      "commit": "93bdadae74a9b391152f5511dbced6f08fad6d94",
      "tree": "95e5f9b12164dfc4b7ffe8d2221641f416c7f369",
      "parents": [
        "7591d8b862439dfae8b4b16d148ce567b6ff8cb7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 19:25:11 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Aug 06 19:25:11 2007 +0000"
      },
      "message": "[zebra] Add extra debug logging for RIB and RIB queueing\n\n2007-08-06  Denis Ovsienko\n\n\t* zebra_rib.c: (general) Add extra debug logging for RIB and\n\t  RIB queue.\n"
    },
    {
      "commit": "dfdb8f18c008e7ad306588c86b12fbef337427ca",
      "tree": "260a657aa0326cd895d51118d00a088e2884277d",
      "parents": [
        "f76594a2e32f7e7be3de09b1af92c1d8426a059b"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:13:56 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:13:56 2007 +0000"
      },
      "message": "Add comment questioning part of previous change (Denis?).\nFix indentation to match accumulated changes.\n"
    },
    {
      "commit": "f76594a2e32f7e7be3de09b1af92c1d8426a059b",
      "tree": "a4760bc1e9ebc565875d909c17a0505d4b095ab4",
      "parents": [
        "14838194d6b56209c914eb9e5782d9331dcbe818"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:07:07 2007 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Thu Aug 02 14:07:07 2007 +0000"
      },
      "message": "Bugzilla #384.\n\n2007-08-02  Denis Ovsienko\n\n\t* rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes\n\tare intended.  Don\u0027t set FIB flag on failed additions (such as\n\toccur with multiple paths.\n\n\nhttp://bugzilla.quagga.net/attachment.cgi?id\u003d235\u0026action\u003dview\n"
    },
    {
      "commit": "0b8c4f1d811170224e467b305137ac94861daee6",
      "tree": "1f334740ab6492fd10b882b59f459ad470e9c6e3",
      "parents": [
        "fbf24544a2e2ac97192502d34729f57933d1eb4c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jun 27 11:12:38 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed Jun 27 11:12:38 2007 +0000"
      },
      "message": "[zebra] rib loop check for RIB_ENTRY_REMOVED checks wrong var\n\n2007-06-25 Denis Ovsienko\n\n\t* zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB\n\t  is using \u0027same\u0027 variable, but RIB_ENTRY_REMOVED check\n\t  is testing the constant \u0027rib\u0027 variable, fix. Impact\n\t  unknown at this point.\n"
    },
    {
      "commit": "093033144658c5d914429fad5b0a6cf952f20943",
      "tree": "02e4c24a9ca95a37bb3995bdc6e0f7e3222f2b87",
      "parents": [
        "7ab62c5319bd86a3cfda32351bc4103cf9517f26"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 30 20:10:34 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 30 20:10:34 2007 +0000"
      },
      "message": "[zebra] Trivial patches so we can compile when IPv6 is not enabled\n\n2007-05-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra_routemap.c: (route_set_src_compile) Use \u0027#ifdef HAVE_IPV6\u0027\n\t  as needed.\n\t* zebra_vty.c: (vty_show_ip_route_detail, vty_show_ip_route) Use\n\t  \u0027#ifdef HAVE_IPV6\u0027 as needed.\n\t  (show_ip_protocol) Move function definition outside of\n\t  \u0027#ifdef HAVE_IPV6\u0027 section.\n"
    },
    {
      "commit": "7ab62c5319bd86a3cfda32351bc4103cf9517f26",
      "tree": "695c3a64d3b144c0d9cf81bbedc2ed20bef4f117",
      "parents": [
        "2b5cb411cef38c28c0bfba2502f97770d55306b7"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu May 17 15:00:41 2007 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Thu May 17 15:00:41 2007 +0000"
      },
      "message": "[PtP] Fix BSD problems with PtP interfaces: must treat RTA_BRD as peer address\n\n2007-05-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* kernel_socket.c: (ifam_read_mesg) Grab RTA_DST and RTA_GATEWAY\n\t  addresses from the message (if present, which seems unlikely on\n\t  current BSD platforms), and show them in the debug messages.\n\t  Also, add ifam_flags to the debug messages.\n\t  (ifam_read) If the interface is point-to-point, then the RTA_BRD\n\t  address should be treated as a peer address.\n"
    },
    {
      "commit": "6f0e3f6e17687eb25b7b77c4fdc8324837d4700f",
      "tree": "8a94d9212060f0f2ee7cbd0079c2687eed7348dc",
      "parents": [
        "08d3d5b398ae81de7659509f159e814d1bbd4375"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 10 02:38:51 2007 +0000"
      },
      "message": "[autoconf] bugs 162,303,178: Fix \u0027present but can not be compiled\u0027 warnings\n\n2007-05-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: sys/conf.h depends on sys/param.h, at least on\n\t  FBSD 6.2.\n\t  (bug #363) Should check for in_pktinfo for IRDP\n\n2006-05-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: General cleanup of header and type checks, introducing\n\t  an internal define, QUAGGA_INCLUDES, to build up a list of\n\t  stuff to include so as to avoid \u0027present but cant be compiled\u0027\n\t  warnings.\n\t  Misc additional checks of things missing according to autoscan.\n\t  Add LIBM, for bgpd\u0027s use of libm, so as to avoid burdening\n\t  LIBS, and all the binaries, with libm linkage.\n\t  Remove the bad practice of using m4 changequote(), just\n\t  quote the []\u0027s in the case statements properly.\n\t  This should fix bugs 162, 303 and 178.\n\t* */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced\n\t  HAVE_* defines. I.e. HAVE_SA_LEN -\u003e HAVE_STRUCT_SOCKADDR_SA_LEN,\n\t* bgpd/Makefile.am: Add LIBM to bgpd\u0027s LDADD, for pow().\n"
    },
    {
      "commit": "5921ef9aae3b5d6ff8663298f649fb9d76594acd",
      "tree": "5164adafc18404f698563fb9044a11780927926c",
      "parents": [
        "7514fb7739f74311830e9ddd1381d0d228224f61"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 04 20:13:20 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri May 04 20:13:20 2007 +0000"
      },
      "message": "[zebra] Add zebra_routemap.c\n\n\t* zebra_routemap.c should have been in the commit of Steven\u0027s\n\t  routemap patch.\n"
    },
    {
      "commit": "7514fb7739f74311830e9ddd1381d0d228224f61",
      "tree": "4d4b9a4fdfcea4cb6fa496085327f1aae9a9a380",
      "parents": [
        "5fa05099567bbe42aae87a9bef8fd630b3666a4d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Wed May 02 16:05:35 2007 +0000"
      },
      "message": "[zebra] Routemap support on received routes, with \u0027set src\u0027 command (linux)\n\n2007-05-01 David L Stevens \u003cdlstevens@us.ibm.com\u003e\n\n\t* (general) These changes collectively add route-map and\n\t  prefix-list support to zebra and fix a bug in \"show\n\t  route-map\" (with no argument).\n\t* doc/main.texi: added route-map, prefix-list, ip protocol\n\t  and set src documentation\n\t* lib/command.h: added PROTOCOL_NODE type\n\t* lib/log.c: (proto_name2num) new function, protocol name to\n\t  number translation.\n\t* lib/routemap.c: (vty_show_route_map) fixed \"show route-map\"\n\t  without route-map name\n\t* lib/routemap.h: added RMAP_ZEBRA type\n\t* lib/zebra.h: added proto_name2num() prototype\n\t* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and\n\t  plist\n\t* vtysh/Makefile.am: added zebra_routemap.c\n\t* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP\n\t* zebra/connected.c: (connected_up_ipv4) added src preference argument\n\t  to rib_add_ipv4()\n\t* zebra/kernel_socket.c: (rtm_read) ditto\n\t* zebra/main.c: added prefix list initialization\n\t* zebra/Makefile.am: added zebra_routemap.c source file\n\t* zebra/rib.h: added generic address union \"g_addr\" and use in\n\t  existing places that had an explicit union.\n\t  Added \"src\" to struct nexthop.\n\t  Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.\n\t* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on\n\t  netlink messages.\n\t  (netlink_route_change) ditto\n\t  (netlink_route_multipath) ditto.\n\t* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to\n\t  rib_add_ipv4() call.\n\t* zebra/rtread_proc.c: (proc_route_read) ditto\n\t* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.\n\t  (nexthop_ipv4_ifindex_add) ditto\n\t  (rib_add_ipv4) ditto\n\t  (nexthop_active_check) Add route-map processing.\n\t* zebra/zebra_routemap.c: new file for zebra route-map commands.\n\t* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol\n\t  (vty_show_ip_route_detail) added \"src\" printing\n\t  (vty_show_ip_route) ditto\n\t  (show_ip_protocol_cmd) new command, list routemaps.\n\t  (config_write_protocol) write out routemap protocl config.\n\t  (zebra_vty_init) Install the new routemap protocol commands.\n\t* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg\n\t  (zebra_init) init zebra route-maps.\n\t* zebra/zserv.h: add zebra_route_map_init\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": "bd9da7fe8cdbc915f3b43a0632326401f28fe310",
      "tree": "d7c7c0993c123f2d28ba2ba4cf891faef428b115",
      "parents": [
        "bcdda30bae1fef67d998211c54c06270ba42864c"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 16:50:46 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Apr 29 16:50:46 2007 +0000"
      },
      "message": "[zebra] Fix merge error in previous solaris changeset\n\n2007-04-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ioctl{_solaris,}.c: (if_get_mtu) Fix missing ; in last commit.\n"
    },
    {
      "commit": "33b931eef55a752b997f4122a715b470a4b48911",
      "tree": "541b975944ad407d87a2000f4008cfc7c0c06f75",
      "parents": [
        "93c1749c828cf750fbcc850730b9f2a872e38325"
      ],
      "author": {
        "name": "David Young",
        "email": "dyoung@pobox.com",
        "time": "Mon Apr 16 05:54:02 2007 +0000"
      },
      "committer": {
        "name": "David Young",
        "email": "dyoung@pobox.com",
        "time": "Mon Apr 16 05:54:02 2007 +0000"
      },
      "message": "Only suppress adding a connected route to the kernel if it is\nalready marked \"real\" (ZEBRA_IFC_REAL), i.e., \"in kernel.\" According\nto Paul Jakma, this probably fixes Quagga bug #202.\n"
    },
    {
      "commit": "f5e004f74fecaf84b50f8c1823432077ad7e15b7",
      "tree": "bffb42983f6b993c861ac67192646ed82db9fc1f",
      "parents": [
        "6e4ab12f1504caa95edc7702a82f118d0de15a0a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:43:43 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:43:43 2007 +0000"
      },
      "message": "[zebra] MTU change should propogate to zserv client on BSD/Solaris\n\n2007-04-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ioctl{_solaris,}.c: (if_get_mtu) Ping clients via\n          zebra_interface_up_update if MTU is changed.\n"
    },
    {
      "commit": "d9a18f1113b915dd0d2a4883a9149f06dd61352e",
      "tree": "0d81d8b3d83b9023ccf396bb1e80085c1dbcdf55",
      "parents": [
        "d9d00a689ea636af58f89cb62291245bb2a1bc7d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:30:20 2007 +0000"
      },
      "message": "[zebra] Retain configured IPv4 address upon removal by kernel\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) Address removal triggered\n\t  by kernel shouldn\u0027t remove configured IPv4 address from connected\n\t  list.\n"
    },
    {
      "commit": "d9d00a689ea636af58f89cb62291245bb2a1bc7d",
      "tree": "dd380561afde4c956d0c3de1051fd76057269918",
      "parents": [
        "6dc686a29ecdfa8f8011eee17e4e6276ab175a0d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:28:04 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:28:04 2007 +0000"
      },
      "message": "[testzebra] stubs should call kernel_address_add on IP address install\n\n2007-04-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ioctl,kernel}_null.c: Install of IP address should\n\t  reflect back to zebra via kernel_address_add..., makes\n\t  testzebra more useful.\n"
    },
    {
      "commit": "6dc686a29ecdfa8f8011eee17e4e6276ab175a0d",
      "tree": "bd4a1f7b1c32318584bec6b4f420089aadc81b07",
      "parents": [
        "37a217a59bfd32381034a0ce0adbac1c34cbec37"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:24:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Apr 10 19:24:45 2007 +0000"
      },
      "message": "[zebra] Bug #351: Don\u0027t redistribute routes to ipv4 link-local prefixes\n\n2007-04-07 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/prefix.h: Add define to match IPv4 Link-Local addresses\n\t* zebra/redistribute.c: (zebra_check_addr) Don\u0027t redistribute routes\n\t  to IPv4 link-local prefixes, fixes bug #351.\n\t* zebra/redistribute.h: Export zebra_check_addr.\n\t* zebra/router-id.c: (router_id_bad_address) re-use zebra_check_addr\n\t  rather than implementing similar logic.\n"
    },
    {
      "commit": "6502208c3217e52e693146e6b72e76fd76982a51",
      "tree": "36a14ca536e7ce4b2d89267ab223fe9ed570ec82",
      "parents": [
        "c32d28b765e936acb8695f73a119d73cacff2610"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Mar 06 13:43:05 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Tue Mar 06 13:43:05 2007 +0000"
      },
      "message": "[zebra] Fix interface metric bug on BSD\n\n2007-03-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: (ifam_read) Do not update interface metric on\n\t  receipt of NEW/DEL ADDR messages, bogus as: a) some systems\n\t  dont include iface metric for address events b) we didn\u0027t\n\t  update clients either. Initial diagnosis by Eugene Grosbein.\n"
    },
    {
      "commit": "ff1dd550b01fd6bb4aa137cfee282e6175f89c50",
      "tree": "05900140de1813f62a124ee98ce4c3329546d6e7",
      "parents": [
        "def09df7d1df2f4583c68b5b7f02375f5a2e9dc7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:11:45 2007 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon Feb 26 17:11:45 2007 +0000"
      },
      "message": "[zebra] IRDP should ignore non-IPv4 addresses\n\n2007-02-26 Robert Olsson \u003cRobert.Olsson@data.slu.se\u003e\n\n\t* irdp_main.c: (irdp_send_thread) Skip non-AF_INET addresses,\n\t   i.e. do not try interpret IPv6 addresses as IPv4 addresses\n\t   to broadcast in IRDP announcements..\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": "3c0755dc9772deccff2ba6e9dc0511a9af2b9d1b",
      "tree": "320e64867af564f2f943742f2a895132606f2e16",
      "parents": [
        "95fdcd8a793d6c271996da221c4030d8ee277891"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Dec 08 00:53:14 2006 +0000"
      },
      "message": "[zebra] Changes of nexthops of static routes didnt take effect\n\n2006-12-08 Piotr Chytla \u003cpch@packetconsulting.pl\u003e\n\n\t* zebra_rib.c: (static_install_ipv{4,6}) Case where existing\n\t  RIB is updated must explicitely rib_addqueue the route_node,\n\t  to ensure the update actually takes effect.\n"
    },
    {
      "commit": "876b8be0ab24721e8f94d47dde022563f76db992",
      "tree": "60afcf14974d39a081b64c71191038701e73a3f5",
      "parents": [
        "98954844ae56d142e96341d5dff959ec5518111e"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:35:57 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Oct 15 23:35:57 2006 +0000"
      },
      "message": "[daemon startup] Add --dry-run/-C argument to daemons, to check config file syntax\n\n2006-10-04 Oliver Hookins \u003cohookins@gmail.com\u003e\n\n\t* bgpd/bgp_main.c: Add configuration check option, with\n\t\u0027-C\u0027 rather than \u0027-c\u0027 for consistency between daemons.\n\t* isisd/isis_main.c: ditto\n\t* ospf6d/ospf6_main.c: ditto\n\t* ospfd/ospf_main.c: ditto\n\t* ripngd/ripng_main.c: ditto\n\t* vtysh/vtysh_main.c: ditto\n\t* ripd/rip_main.c: Change the config check option to\n\t\u0027-C\u0027 and tidy up the code.\n\t* zebra/main.c: ditto\n\n2006-10-04 Stergiakis Alexandros \u003castergiakis@antcor.com\u003e\n\n\t* ripd/rip_main.c: This trivial patch introduces a new\n\t  command-line option \u0027-c\u0027, which instructs zebra/ripd\n\t  to check its configuration file for validity,\tprint\n\t  any error message, and then exit. This is useful when\n\t  the configuration file is edited by hand or otherwise,\n\t  and you simply want to validate it without any other\n\t  effect.\n\t* zebra/main.c: ditto\n"
    },
    {
      "commit": "9458b8191563eb5569f341172484a234ef2f743e",
      "tree": "3ff0f70665cef0504f09269dbb2edc92eb6b33e7",
      "parents": [
        "b25ea4d085c858137ec28b1be9d6ab6c30a97303"
      ],
      "author": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 13 12:13:08 2006 +0000"
      },
      "committer": {
        "name": "Greg Troxel",
        "email": "gdt@fnord.ir.bbn.com",
        "time": "Wed Sep 13 12:13:08 2006 +0000"
      },
      "message": "2006-09-13 Tom Everett \u003ctom@khubla.com\u003e\n\n        * kernel_socket.c (rtm_type_str): ifdef RTM_OLD{ADD,DEL} to\n        compile on systems that no longer define them.\n"
    },
    {
      "commit": "66c454f2a57a1a0053ea308edfc8c8024b3b7a48",
      "tree": "dcd45a319a30b54437acdd3ab2ab3044a7b27cf2",
      "parents": [
        "f28b0e57bd5173215132fed02aa4b284d7cbe26a"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 16:02:43 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 16:02:43 2006 +0000"
      },
      "message": "[zebra] trivial: rtadv.h depends on interface.h\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rtadv.h: depends on interface.h, so should include it.\n"
    },
    {
      "commit": "f28b0e57bd5173215132fed02aa4b284d7cbe26a",
      "tree": "4e4d2f65d82afa18af4e47fe13bd6c3e83b4ba4a",
      "parents": [
        "1f742f21a98f756cea03856849fa2f82f467baf7"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Aug 06 15:57:59 2006 +0000"
      },
      "message": "[zebra] fix inconsistencies in ifstat_update_* declarations and definitions\n\n2006-08-06 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.h: (ifstat_update_proc) declaration should match\n\t  ifstat_update_sysctl really, which is to not return status, as\n\t  such status is not used anywhere.\n\t* if_{proc,sysctl}.c: Make ifstat_update_* definitions and return values\n\t  consistent with each other and their declarations, ie:\n\t  (void) (*) (void).\n"
    },
    {
      "commit": "36943749147bef10df8ffc0e2ad79f4dd06cd9ac",
      "tree": "17f031ea7faf31f94e7e7adfaace741ca4d17e39",
      "parents": [
        "7e4bcdc1d6d0e0338fe5cac6103dd485332e7b51"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:18:04 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:18:04 2006 +0000"
      },
      "message": "[zebra] IRDP: Move stream_free to where its created, probably fixing a leak\n\n2006-08-01 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* irdp_main.c: (irdp_advertisement) free the stream here, when done,\n\t  right under where it was allocated so it\u0027s blindingly obvious\n\t  it\u0027s correct. This possibly fixes a very slow leak of streams in\n\t  zebra.\n\t* irdp_packet.c: (send_packet) don\u0027t free the stream here as\n\t  it\u0027s hard to tell if right, plus an error case seemed to\n\t  returning before free anyway.\n"
    },
    {
      "commit": "7e4bcdc1d6d0e0338fe5cac6103dd485332e7b51",
      "tree": "14e0a08849b424d73a41020ee15207d8e6591c8d",
      "parents": [
        "a6974fef057a6673be3bb11042a92c9490ece894"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:14:13 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Fri Aug 04 06:14:13 2006 +0000"
      },
      "message": "[zebra] add more stuff to misc_null to avoid compile breakages\n\n2006-08-04 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* misc_null.c: Add ifstat_update_sysctl, add another required\n\t  header.\n"
    },
    {
      "commit": "a6974fef057a6673be3bb11042a92c9490ece894",
      "tree": "d1e127eb06400f4be1166a6a3ce763dc2041ca5b",
      "parents": [
        "c3eab60e7753ed34d30c978f9d4034562bf1df55"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Aug 02 16:47:03 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed Aug 02 16:47:03 2006 +0000"
      },
      "message": "[testzebra] Patch to misc_null.c to get older gcc to recognize #pragma tricks\n\n2006-08-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* misc_null.c: Must include header files to get older versions of gcc\n\t  to process the #pragma statements properly.\n"
    },
    {
      "commit": "6d691129594f87958ecaf4169b2e1f62f90d3616",
      "tree": "4c1fb7ec763de18938af31f1f261f47db8da3391",
      "parents": [
        "b0498dc6ff0510efe9467fbaed41945f3f056af4"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:49:00 2006 +0000"
      },
      "message": "[zebra] Bug #268, Fix race between add/delete of routes, sanitise rib queueing\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct rib) Add a route_node rn_status flag field,\n\t  this has to be copied every time head RIB of a route_node\n\t  changes.\n\t  Remove the rib lock field, not needed - see below.\n\t  Add a status field for RIB-private flags.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n\t  (general) Fix for bug #268. Problem originally\n\t  detailed by Simon Bryden in [quagga-dev 4001].\n\t  Essentially, add/delete of a RIB must happen /before/ the\n\t  queue. Best-path selection (ie rib_process) and reaping of\n\t  freed RIBs can then be done after queueing. Only the route_node\n\t  is queued - no important RIB state (i.e. whether a RIB is to be\n\t  deleted) is queued.\n\t  (struct zebra_queue_node_t) Disappears, no longer need to\n\t  track multiple things on the queue, only the route_node.\n\t  (rib_{lock,unlock}) removed, RIBs no longer need to be\n\t  refcounted, no longer queued.\n\t  (rib_queue_qnode_del) Removed, deleted RIBs no longer deleted\n\t  via the queue.\n\t  (rib_queue_add_qnode) deleted\n\t  (rib_queue_add) Only the route_node is queued for best-path\n\t  selection, we can check whether it is already queued or\n\t  not and avoid queueing same node twice - struct rib * argument\n\t  is not needed.\n\t  (rib_link/unlink) (un)link RIB from route_node.\n\t  (rib_{add,del}node) Front-end to updates of a RIB.\n\t  (rib_process) Reap any deleted RIBs via rib_unlink.\n\t  Unset the route_node \u0027QUEUED\u0027 flag.\n\t  (General) Remove calls to rib_queue_add where add/del node was\n\t  called - not needed, update calls where not.\n\t  Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes\n"
    },
    {
      "commit": "b0498dc6ff0510efe9467fbaed41945f3f056af4",
      "tree": "6595c1298dd560195c126e31f2977024d651d999",
      "parents": [
        "457eb9af72e6e7aa85c26b65ba4d053f9ecbffac"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:35:33 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 21:35:33 2006 +0000"
      },
      "message": "[zebra] Add \u0027debug zebra rib\u0027 commands\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* debug.{c,h}: Add \u0027debug zebra rib\u0027 and \u0027debug zebra rib queue\u0027.\n"
    },
    {
      "commit": "457eb9af72e6e7aa85c26b65ba4d053f9ecbffac",
      "tree": "ca93002285032e0c845749cfd770a446a9fc702b",
      "parents": [
        "1893740016d35d75de567a5f6b74db2314ffdc52"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 19:59:58 2006 +0000"
      },
      "message": "[zebra] Add test rig code, for testing the zebra RIB\n\n2006-07-27 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,\n\t  useful for testing zebra code that calls such methods.\n\t* {redistribute,misc}_null.c: Dummy/Null methods, as above. But\n\t  for zclient, and for various misc functions.\n\t* test_main.c: Test harness for zebra, currently just to test the\n\t  RIB.\n\t* Makefile.am: Build testzebra using above.\n\t* zebra_rib.c: Add a global for the workqueue hold time, useful\n\t  for testing.\n"
    },
    {
      "commit": "171eee31edbddbd8906447dc8725e0513227d013",
      "tree": "edf6f16fe912232d92dac1eeb6d9adadb93082c6",
      "parents": [
        "1fe6ed38cd0136c514aabae01389653beab27fb9"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jul 27 16:11:02 2006 +0000"
      },
      "message": "[zebra] Connected routes must always be added to main table\n\n2006-07-27 Rumen Svobodnikov \u003crumen@telecoms.bg\u003e\n\n\t* connected.c: (connected_up_ipv4) interface connected routes always\n\t  go to table main (or otherwise they cannot be used by linux as\n          nexthops)\n\t* zserv.c: (zread_ipv4_add) send route to the correct routing table\n\t* zebra_rib.c (static_install_ipv4) set routing table\n"
    },
    {
      "commit": "27b472533bc8bb0fdb37dcda7596c385d3b9f414",
      "tree": "60e09c43d4d016b32eb47ec0ba4a0263f0b40bbc",
      "parents": [
        "33d5ab9ef197ce281859f12251df4e412c469c65"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sun Jul 02 16:38:54 2006 +0000"
      },
      "message": "[zebra] Fix CID #104, check addr for null, and #18, check nexthop type args\n\n2006-07-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not\n\t  proceed if addr is NULL.\n\t* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check\n\t  required arguments are supplied for the given nexthop type.\n"
    },
    {
      "commit": "74ecdc9e74eb96829e342a03531ba6647ce6bb3c",
      "tree": "f40b1ba761f9ad9271c1951510bbd63eeaa57961",
      "parents": [
        "630c97ce0f87a719f678a24bd84945d4f145fdc5"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 18:10:47 2006 +0000"
      },
      "message": "[zebra] Fix forgetfulness wrt configured address on FreeBSD\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) The key fixes are actually Andrew Schorr\u0027s.\n\t* interface.c: (ip_address_uninstall) Unset the configured flag.\n\t* connected.c: (connected_same) new helper, check whether\n\t  two connected are same.\n\t  (connected_implicit_withdraw) new helper, consolidation of\n\t  existing code in connected_add_ipv{4,6}.\n\t  Try filter out unneeded Zserv address delete/adds when\n\t  address is exact same.\n\t  Where old address is implicitely removed, be sure to preserve\n\t  the IFC_CONFIGURED flag if set, fixes bug where configured\n\t  addresses were being lost on FreeBSD.\n"
    },
    {
      "commit": "630c97ce0f87a719f678a24bd84945d4f145fdc5",
      "tree": "1b87b2247617af51556f24a45b6735674d7f948d",
      "parents": [
        "c024fd0c76bc305cd6b6bab0989226bd9ec5e763"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Jun 15 12:48:17 2006 +0000"
      },
      "message": "[zebra] remove internal if_flag_dump, use libzebras version.\n\n2006-06-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/if.c: (if_flag_dump) remove the whitespace indentation, callers\n\t  should provide.\n\t* zebra/interface.c: (if_flag_dump_vty) redundant code, remove.\n\t  (if_dump_vty) use libzebra if_flag_dump.\n"
    },
    {
      "commit": "9c37851eac4e75cda515761cae7c63309add30ea",
      "tree": "3fcf98573c83f117f1e0219fcab8e160af70e56a",
      "parents": [
        "0f38dc4d4729b562551f8f53e7343f5a53b2dbf5"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun May 21 04:04:49 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Sun May 21 04:04:49 2006 +0000"
      },
      "message": "[interface configuration] Try to avoid losing address info after shutdown.\n2006-05-21 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* if.h: (struct connected) Document the meaning of the\n\t  ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.\n\t* connected.c: (connected_withdraw) Do not delete the connected\n\t  address if the ZEBRA_IFC_CONFIGURED flag is set.\n\t  (connected_add_ipv4,connected_add_ipv6) Before calling\n\t  connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag\n\t  on the superseded connected structure.\n"
    },
    {
      "commit": "0f38dc4d4729b562551f8f53e7343f5a53b2dbf5",
      "tree": "e6d4f73e30c3d6e0859f3bc4e4867fb2323284bf",
      "parents": [
        "55196042ac8def6f0057039017eb6a400d7f73fb"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri May 19 13:53:23 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Fri May 19 13:53:23 2006 +0000"
      },
      "message": "[interface configuration] Preserve flag indicating address was set by quagga.\n2006-05-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* connected.c: (connected_add_ipv4,connected_add_ipv6) If the\n\t  new struct connected matches an already existing one\n\t  (that will consequently be removed by connected_withdraw),\n\t  then be sure to preserve the ZEBRA_IFC_CONFIGURED flag.\n"
    },
    {
      "commit": "55196042ac8def6f0057039017eb6a400d7f73fb",
      "tree": "1953ee9c087c73040591d4e7b5290abdf08fcabf",
      "parents": [
        "6685978081f24f154f058bff48d54396c91271e1"
      ],
      "author": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 17 15:04:59 2006 +0000"
      },
      "committer": {
        "name": "Andrew J. Schorr",
        "email": "ajschorr@alumni.princeton.edu",
        "time": "Wed May 17 15:04:59 2006 +0000"
      },
      "message": "[debug] Improve zebra kernel socket debug message to include IP addresses.\n2006-05-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* kernel_socket.c: (ifam_read_mesg) Improve debug message\n\t  to show the IP address.\n"
    },
    {
      "commit": "6685978081f24f154f058bff48d54396c91271e1",
      "tree": "7dcb1c84984902c941a72274a6bfb758a96db4de",
      "parents": [
        "d6d672aaf930661f502a623d18d7a4abb4f184f2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 17:00:37 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Mon May 15 17:00:37 2006 +0000"
      },
      "message": "[zebra] Remove private command string table\n\n2006-05-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zserv.c: (general) Remove the private zebra_command_str\n\t  in favour of newly added libzebra zserv_command_string.\n"
    },
    {
      "commit": "beb5633607919d10ba8852ad51fe0b1dc7ecc812",
      "tree": "cf63d68186ec7e2b594e6fa6f95ad6f8aa7b7338",
      "parents": [
        "995b96515b7075fec77ab51dfe8be7788abd838d"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:28:05 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu May 11 13:28:05 2006 +0000"
      },
      "message": "[zebra] CID #31, guard against potential NULL return of route_node_lookup\n\n2006-05-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_delete_update) route_node_lookup may return\n\t  NULL, should fix Coverity CID #31.\n"
    },
    {
      "commit": "e6d7d054d9b787c597319ec528ea8f64a7f949f6",
      "tree": "b03a71897e0baa854dd8db04841ba70143bd6f01",
      "parents": [
        "924f9d32d9c42d6861f19bae795c48b48c83af23"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 13:32:09 2006 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Thu Mar 30 13:32:09 2006 +0000"
      },
      "message": "[zebra] arrange structs in padding-efficient manner and remove unused field\n\n2006-02-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* rib.h: (struct {rib,nexthop}) Rearrange fields to avoid\n\t  needless padding.\n\t  (struct rib) Remove the indirect pointer, not used anywhere!\n"
    },
    {
      "commit": "3a570c8b7b56b5a3042fbc035a01c753440b927c",
      "tree": "89ee2d6845bf23c83e659f5aac43a6496e77ddf1",
      "parents": [
        "b1fc9acbbea5ed5846d46aa60f9cf49b6105763a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Feb 02 17:27:13 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Feb 02 17:27:13 2006 +0000"
      },
      "message": "[zebra] Display flags on their line in \u0027show interface\u0027.\n\n2006-02-02 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* interface.c: (if_dump_vty) move flags to their line, neater.\n"
    },
    {
      "commit": "a1038a15658d2fd4ab3314a9036bbd63f8f471c1",
      "tree": "5cef40b1e66fd105d0d0d6e4ecf52089ed15e803",
      "parents": [
        "a8d9c1f9caae29410b74f138f81d9b07645c47ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 30 14:08:51 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 30 14:08:51 2006 +0000"
      },
      "message": "[zebra] Fix pauls zebra_rib/rib_process commit mistakes, again.\n\n2006-01-30 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (rib_process) Fourth time lucky on this jinxed\n\t  commit, last commit had a hole that could allow connected\n\t  route selection to escape beyond the connected route logic.\n\t  This time I cross-checked with Gunnar first. ;)\n"
    },
    {
      "commit": "a8d9c1f9caae29410b74f138f81d9b07645c47ce",
      "tree": "ee5285e9e8932ebf89b16bb051c1af78755ade08",
      "parents": [
        "5c78b3d006e6926f938796cffa08e8e14fb8e7af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 06:31:04 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 25 06:31:04 2006 +0000"
      },
      "message": "[zebra] Fix incorrect changes made in RIB metric selection patch\n\n2006-01-25 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* zebra_rib.c: (rib_process) Application of Gunnar\u0027s earlier\n\t  metric selection RIB change included incorrect tidy-ups made\n\t  by commiter. Fix. (NB: any errors here are again due to paul).\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": "e8e1946edf6ba87ef53832cdceccc39d7f0c3f26",
      "tree": "fcdaf92bf4129a8a58825bd21ae841a6b3b2bda8",
      "parents": [
        "779adb0147cfff1a831b08853976342ad2110fcd"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:16:55 2006 +0000"
      },
      "message": "[compiler] miscellaneous trivial compiler warning fixes\n\n2006-01-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n        * (general) various miscellaneous compiler warning fixes.\n          Remove redundant break statements from switch clauses\n          which return.\n          return from main, not exit, cause it annoys SOS.\n          Remove stray semi-colons which cause empty-statement\n          warnings.\n\t* zebra/main.c: (sighup) remove private declaration of external\n\t  function.\n"
    },
    {
      "commit": "af887b5111ada0e8cd961e9479aa9d39796a80c8",
      "tree": "0bc5674824e5cebe0c0bd17ef34eac99f7b68a48",
      "parents": [
        "eac314c7c49f6c0ec502be08e244f91bfc778739"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 14:52:52 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 18 14:52:52 2006 +0000"
      },
      "message": "2006-01-18 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* zebra_rib.c: Take interface metric into account.\n"
    },
    {
      "commit": "d34b8991b4c156ff3281558dd8252d3787ae8d8b",
      "tree": "f198a545a4363d91c40b6303a03d2c7e323cc5be",
      "parents": [
        "61f42aed5e1cee1a853f92110d794a286995d203"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 18:03:04 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 18:03:04 2006 +0000"
      },
      "message": "[zebra] Record NEWADDR metric on PF_ROUTE, print CACHEINFO debug on netlink\n\n2006-01-17 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.\n\t  If interface is an alias, pass the alias as a label for\n\t  connected_add_ipv{4,6}.\n\t* rt_netlink.c: (netlink_interface_addr) print out\n\t  IFA_CACHEINFO info, if present, when debugging kernel\n\t  messages.\n"
    },
    {
      "commit": "61f42aed5e1cee1a853f92110d794a286995d203",
      "tree": "e9eededc78bd39443ebf03565ad113c16f3ab49d",
      "parents": [
        "c713300ab429c8779be98ec3c8dc888821405d55"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:59:11 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:59:11 2006 +0000"
      },
      "message": "[zebra] Defensive if_getaddrs bug fix.\n\n2006-01-17 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* if_ioctl.c: (if_getaddrs) Be defensive about assuming\n\t  that struct ifaddrs will have ifa_addr filled in.\n"
    },
    {
      "commit": "c713300ab429c8779be98ec3c8dc888821405d55",
      "tree": "f1b6562d5583d2cb155a6076c9f52400bd993885",
      "parents": [
        "c6371718f39dedd2a03010a9dc26a18d96abbe7f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:56:18 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 17 17:56:18 2006 +0000"
      },
      "message": "[zebra] Include metric on connected routes.\n\n2006-01-17 Gunnar Stigen \u003cgunnar.stigen@axxessit.no\u003e\n\n\t* connected.c: (connected_up_ipv{4,6}) Include interface metric on\n\t  connected routes.\n"
    },
    {
      "commit": "c1b9800a60f073c7d57f6232f9af7ae39bc3353a",
      "tree": "94fc0006fcf73d4ab4733bef23689cb8f36772ee",
      "parents": [
        "c77d4546619f9d3e0ccfac5acbc0ebb42658a61f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 16 01:54:02 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Jan 16 01:54:02 2006 +0000"
      },
      "message": "[zserv] Extend Zserv header with version information and marker field\n\n2006-01-16 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* lib/zclient.h: Update the Zserv protocol header with a version\n\t  field.  Define the old command field to be a \u0027marker\u0027, to\n\t  allow old Zserv and updated Zserv to be differentiated.\n\t  Future updates will bump the version field obviously. New\n\t  command field is made wider.  Try to stop using the\n\t  \u0027zebra_size_t\u0027 typedef in the callbacks.\n\t* lib/zclient.c: Update to read/write new format header.\n\t* zebra/zserv.c: Ditto\n"
    },
    {
      "commit": "c77d4546619f9d3e0ccfac5acbc0ebb42658a61f",
      "tree": "007f6c4e2c85e4df115c39011aa7ad3fb379f434",
      "parents": [
        "44316fef4d93b3d94cf45663ce35797d32acce71"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:59:04 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Jan 11 01:59:04 2006 +0000"
      },
      "message": "[zserv] Update interface flags to 8 bytes wide.\n\n2006-01-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if.h: (struct interface) expand flags to 8 bytes.\n\t* zclient.c: (zebra_interface_{add,state}_read) stream read of\n\t  interface flags now need to use stream_getq.\n\t  (zebra_interface_if_set_value) ditto\n\n2006-01-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zserv.c: (zsend_interface_{add,delete,update}) if flags are\n\t  8 bytes now, update to write out with stream_putq.\n"
    },
    {
      "commit": "e14b7fca6279fe9dc41c8aa9816b5685952c4b19",
      "tree": "07a64009dee808041bb4ffb5605f085ae412064a",
      "parents": [
        "f80a016fbd5ba51dc08412d7fd0794b51223c978"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 16:04:53 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 16:04:53 2005 +0000"
      },
      "message": "remove dead code (from David Young)\n"
    },
    {
      "commit": "6083e1f82ce3a33d9929dea8c64cbc5ffe486000",
      "tree": "48872266c1f9f0741ea27513560248420a1632f7",
      "parents": [
        "a3214b79aceed58ae638afe62d9db149f3bc81c7"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 15:59:57 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Dec 29 15:59:57 2005 +0000"
      },
      "message": "2005-12-29  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n        * rt_socket.c (kernel_rtm_ipv4): Use AF_INET rather than AF_UNSPEC\n        for mask.  From David Young.\n"
    },
    {
      "commit": "89368d9f8b70fef5c196db9055bd6a7e7aaa4f36",
      "tree": "e3756712745f8e6556fa35105bea3023647b9233",
      "parents": [
        "6a4b883229eb5590ee59cbe24ea0005df03be675"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:14:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Nov 26 09:14:07 2005 +0000"
      },
      "message": "[zebra] fix connected_add_ipv6 declarations, label should be const.\n\n2005-11-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: (connected_add_ipv6) label should have\n\t  const qualifier, fix declarations.\n"
    },
    {
      "commit": "ec1a428343cad343969d569c56acbe6b02ab8f4f",
      "tree": "ed693dcea011eccbef34113da3e340ec1290e7b3",
      "parents": [
        "b6026073584b855d47a8e2033d2aa3413a3394e9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 15:15:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 24 15:15:17 2005 +0000"
      },
      "message": "[zebra] Fix mistake in previous commit and further compile warnings/errors.\n\n2005-11-24 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* kernel_socket.h: New header for functions exported to sysctl\n\t  methods.\n\t* kernel_socket.c: include previous.\n\t  Remove static qualifier from couple of functions which are\n\t  used by sysctl methods, incorrectly added in previous commit.\n\t  Add a workaround for a bogus gcc warning to the RTA_ macros.\n\t* Makefile.am: Add kernel_socket.h to noinst_HEADERS\n\t* if_sysctl.c: include rt.h and kernel_socket.h and remove\n\t  redundant prototypes.\n\t* rtread_sysctl.c: ditto.\n\t  (route_read) fix mismatch of return values.\n\t* {rt,zserv,rib}.h: Include lib headers depended on.\n"
    }
  ],
  "next": "6621ca868c935a82468e07ea2e5a165f40750658"
}
