)]}'
{
  "log": [
    {
      "commit": "f695b01ff8e9aebc46bdf41f104ad4abbb0ef59e",
      "tree": "1a36e624a6577780a49f6ae2c8e0534140d33943",
      "parents": [
        "a47d98f4b7d6e3c1f5298912672f7b4d55a203f0"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 02 19:03:39 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Apr 02 19:03:39 2005 +0000"
      },
      "message": "\t* configure.ac: Add --enable-isis-topology to enable isisd topology\n\t  generator code.\n\t* isisd/Makefile.am: Variables to handle conditonal compiling of\n\t  topology generator code.\n\t* isisd/isis_lsp.c: lsppdu_realloc() is used by topology generator.\n\t* isisd/isisd.c: Rename show_isis_topology_cmd to not conflict the one\n\t  in the isis_spf.c.\n\t* isisd/isisd.h: Remove TOPOLOGY_GENERATE define, it will be defined in\n\t  toplevel config.h if topology generator is enabled.\n\t* isisd/topology/Makefile.am: Handle the libtoolized Quagga libraries.\n"
    },
    {
      "commit": "a47d98f4b7d6e3c1f5298912672f7b4d55a203f0",
      "tree": "51eaf44358a39c0e99e429ffaa85b8a41cc2f095",
      "parents": [
        "851adbd947692bab9985e08865330d75c56ff253"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 18:53:00 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 18:53:00 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: Urg, dont use automake _SOURCES, _BUILT_SOURCES\n\t  for figures, automake doesnt know anything about them.\n"
    },
    {
      "commit": "851adbd947692bab9985e08865330d75c56ff253",
      "tree": "3295c305da371df1c12398b7e68a9677ddc38b55",
      "parents": [
        "d2fc88962a9a494ecb34167871bb9e7273a25d33"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:48:39 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:48:39 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* str.c: Replace strlcpy and strlcat with actual working versions\n\t  copied from rsync-2.6.2/lib/compat.c.\n"
    },
    {
      "commit": "d2fc88962a9a494ecb34167871bb9e7273a25d33",
      "tree": "304a1c1a744972bc10b1f677a134907c404b361d",
      "parents": [
        "386e61502d391adb985ac1487825349ec85e6a8c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 18:38:43 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\tFix problems when netlink interfaces are renamed (same ifindex used\n\tfor a new interface).  Start cleaning up some problems with the way\n\tinterface names are handled.\n\t* interface.c: (if_new_intern_ifindex) Remove obsolete function.\n\t  (if_delete_update) After distributing the interface deletion message,\n\t  set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (if_dump_vty) Detect pseudo interface by checking if ifp-\u003eifindex is\n\t  IFINDEX_INTERNAL.\n\t  (zebra_interface) Check return code from interface_cmd.func.\n\t  Do not set internal ifindex values to if_new_intern_ifindex(),\n\t  since we now use IFINDEX_INTERNAL for all pseudo interfaces.\n\t* kernel_socket.c: (ifm_read) Fix code and comments to reflect that\n\t  all internal interfaces now have ifp-\u003eifindex set to IFINDEX_INTERNAL.\n        * rt_netlink.c: (set_ifindex) New function used to update ifp-\u003eifindex.\n\t  Detects interface rename events by checking if that ifindex is already\n\t  being used.  If it is, delete the old interface before assigning\n\t  the ifindex to the new interface.\n\t  (netlink_interface, netlink_link_change) Call set_ifindex to update\n\t  the ifindex.\n\t* if.h: Remove define for IFINDEX_INTERNBASE and add define\n\t  IFINDEX_INTERNAL 0, since all internal (i.e. non-kernel) pseudo-\n\t  interfaces should have ifindex set to 0.\n\t  (if_new) Remove function.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (ifname2ifindex) New function.\n\t* if.c: (if_new) Remove function (absorb into if_create).\n\t  (if_create) Replace function if_new with call to calloc.\n\t  Set ifp-\u003eifindex to IFINDEX_INTERNAL.  Fix off-by-one error\n\t  in assert to check length of interface name.  Add error message\n\t  if interface with this name already exists.\n\t  (if_delete_retain) New function to delete an interface without\n\t  removing from iflist and freeing the structure.\n\t  (if_delete) Implement with help of if_delete_retain.\n\t  (ifindex2ifname) Reimplement using if_lookup_by_index.\n\t  (ifname2ifindex) New function to complement ifindex2ifname.\n\t  (interface) The interface command should check the name length\n\t  and fail with a warning message if it is too long.\n\t  (no_interface) Fix spelling in warning message.\n\t  (if_nametoindex) Reimplement using if_lookup_by_name.\n\t  (if_indextoname, ifaddr_ipv4_lookup) Reimplement using\n\t  if_lookup_by_index.\n\t* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t* isis_zebra.c: (isis_zebra_if_del) Call if_delete_retain instead\n\t  of if_delete, since it is generally not safe to remove interface\n\t  structures.  After deleting, set ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Tighten up code.\n\t* ospf6_zebra.c: (ospf6_zebra_if_del) Previously, this whole function\n\t  was commented out.  But this is not safe: we should at least update\n\t  the ifindex when the interface is deleted.  So the new version\n\t  updates the interface status and sets ifp-\u003eifindex to\n\t  IFINDEX_INTERNAL.\n\t  (ospf6_zebra_route_update) Use if_indextoname properly.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Show ifindex and interface\n\t  flags to help with debugging.\n\t* ospf_zebra.c: (ospf_interface_delete) After deleting, set ifp-\u003eifindex\n\t  to IFINDEX_INTERNAL.\n\t  (zebra_interface_if_lookup) Make function static.  Tighten up code.\n\t* rip_interface.c: (rip_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n\t* ripng_interface.c: (ripng_interface_delete) After deleting, set\n\t  ifp-\u003eifindex to IFINDEX_INTERNAL.\n"
    },
    {
      "commit": "386e61502d391adb985ac1487825349ec85e6a8c",
      "tree": "b33f187e2408cc8ff5d70c12db1ef1af91aeb54a",
      "parents": [
        "3849db25b0bda7cd67b0ef7918737aba6b0b5b41"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:24:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:24:43 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* .cvsignore: ignore eps files, built from sources\n"
    },
    {
      "commit": "3849db25b0bda7cd67b0ef7918737aba6b0b5b41",
      "tree": "eb24136bcb9da901aebe69d4cfb804decea28dee",
      "parents": [
        "3b7b814c83f81d460ae8d413aea02aef1524242d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:13:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 17:13:33 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* INSTALL.quagga.txt: Add note about additional CVS build\n\t  requirements, if one wishes to build ps/pdf docs.\n"
    },
    {
      "commit": "3b7b814c83f81d460ae8d413aea02aef1524242d",
      "tree": "276669f9dc609ce04d7f70866050626bf56e7dfb",
      "parents": [
        "3cb98dee9067372756964f461eb2c931a1c75138"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:37:07 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:37:07 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf6_route.c: (ospf6_route_show, ospf6_route_show_detail) Protect\n\t  against the possibility that the string returned by if_indextoname\n\t  may not terminate with \u0027\\0\u0027.\n"
    },
    {
      "commit": "3cb98dee9067372756964f461eb2c931a1c75138",
      "tree": "726827878765c01c45e5be08b909974ae54ce79f",
      "parents": [
        "47004ec501bd70d558c11af05d8bacd66a8c7c25"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:01:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Apr 02 16:01:05 2005 +0000"
      },
      "message": "2005-04-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* configure.ac: Add strnlen to AC_CHECK_FUNCS.\n\t* zebra.h: Should include str.h to pick up missing functions.\n\t* str.h: Declare strnlen if needed.\n\t* str.c: Do not include str.h since zebra.h now includes it.\n\t  (strnlen) New function.\n"
    },
    {
      "commit": "47004ec501bd70d558c11af05d8bacd66a8c7c25",
      "tree": "88cf175ab910d555798a503f7eb5892f007c8d96",
      "parents": [
        "bbd938e2e64badb8f32b24e0b08df7ccd7696990"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 12:13:59 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 12:13:59 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Makefile.am: quagga_TEXINFOS should depend on figures_BUILT_SOURCES.\n"
    },
    {
      "commit": "bbd938e2e64badb8f32b24e0b08df7ccd7696990",
      "tree": "ef55a7765aeab7d68ac1e93aff114c529db1c4fa",
      "parents": [
        "b7ed1ec7d62f6db50de882d1be08e1e32acc7909"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 10:18:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Apr 02 10:18:42 2005 +0000"
      },
      "message": "2005-04-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.dia: new\n          files, dia diagramme XML versions of the original corresponding\n          EPS encapsulated bitmaps.\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.png: new\n\t  files, png exports by dia of the source dia diagrammes above.\n\t* fig{-{normal,rs}-processing,_topologies_{rs,full}}.eps: removed,\n\t  replaced by above dia source.\n\t* routeserver.texi: remove extension in image macros.\n\t* quagga.info: updated build\n\t* Makefile.am: Add rules to build eps (using \u0027convert\u0027), png (using\n\t  dia). Add figures_BUILT_SOURCES to extra_dist to avoid the\n\t  dependency on dia :) (amongst other things) for dist users.\n"
    },
    {
      "commit": "b7ed1ec7d62f6db50de882d1be08e1e32acc7909",
      "tree": "db4f4d21a5c2d1ad6065458ec8cc48a16c628dfa",
      "parents": [
        "aca72fda8f251c866f88becd5bec4c215104b102"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 31 20:13:49 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Mar 31 20:13:49 2005 +0000"
      },
      "message": "\t* rt_netlink.c (netlink_talk_filter): Show always warning message,\n\t  it\u0027s not for debug.\n\t* rt_netlink.c (netlink_talk): Don\u0027t assume we use netlink_cmd\n\t  although we do now actually.\n\t* rt_netlink.c (netlink_route, netlink_route_multipath): Always use\n\t  netlink_cmd to send messages to the kernel.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "aca72fda8f251c866f88becd5bec4c215104b102",
      "tree": "cbc00dabb129e1a85079e1446ce9c721ec00817c",
      "parents": [
        "2da40f4919f6268d4935c42a358739ffdf3a48dc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Mar 31 15:18:21 2005 +0000"
      },
      "message": "2005-03-31 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_dump.c: (show_debugging_ospf) Show if ospf event debugging\n\t  is turned on.\n\n\t  [backport candidate]\n"
    },
    {
      "commit": "2da40f4919f6268d4935c42a358739ffdf3a48dc",
      "tree": "aa40f9570647e8631ed5d74371f9c11bec25a98f",
      "parents": [
        "a608bbf27b48b7bd5e63f1c46380a1c5288ba48a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Mar 30 16:33:13 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Mar 30 16:33:13 2005 +0000"
      },
      "message": "2005-03-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* irdp.h: Add prototype for irdp_sock_init, and fix protos for\n\t  other irdp_* functions.\n\t* irdp_interface.c: (irdp_if_start) If irdp_sock is negative,\n\t  call irdp_sock_init to create the IRDP socket.\n\t  (irdp_if_init) Rename to irdp_init().\n\t  (get_iflist_ifp) Remove function that is a duplicate of\n\t  if_lookup_by_index.\n\t  (*) Make many functions static.  And remove superfluous \"\\n\" from\n\t  several zlog messages.\n\t* irdp_main.c: (irdp_init) Remove function that used to call\n\t  irdp_if_init() and irdp_sock_init(), since we will now create\n\t  the socket only upon first use.\n\t  (irdp_sock_init) Do not update global irdp_sock variable, just\n\t  return the fd and assume that the caller will do so.  If setsockopt\n\t  calls fail, close the socket before returning -1.\n\t  (*) Make many functions static.\n\t* irdp_packet.c: Initialize irdp_sock to -1.\n\t  (irdp_read_raw) Call standard library function if_lookup_by_index\n\t  instead of get_iflist_ifp.\n\t  (irdp_recvmsg) Should be static, not global.\n"
    },
    {
      "commit": "a608bbf27b48b7bd5e63f1c46380a1c5288ba48a",
      "tree": "5317bf773d9a90337fa9cef8ca24127f127dc2bc",
      "parents": [
        "5dcbdf82efdf65313a04ea45f2c8f7307c7ab671"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 17:03:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 17:03:49 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* rt_netlink.c: (netlink_link_change) If the status of an\n\t  operative interface changes (e.g. MTU changes), the client\n\t  daemons should be notified by calling zebra_interface_up_update.\n\t  Previously, the information was being updated in zebra\u0027s\n\t  interface structure, but the clients were not notified of\n\t  changes to an operative interface.\n\t* ospf_zebra.c: (ospf_interface_state_up) If the MTU of an operative\n\t  interface changes, print a debug message and call ospf_if_reset()\n\t  to simulate down/up on the interface.\n\t* ospf_interface.h: Declare new function ospf_if_reset().\n\t* ospf_interface.c: (ospf_if_reset) New function to call ospf_if_down\n\t  and ospf_if_up for all ospf interfaces attached to an interface.\n"
    },
    {
      "commit": "5dcbdf82efdf65313a04ea45f2c8f7307c7ab671",
      "tree": "d00d264009efcc9596b673b0e30574394c460a7a",
      "parents": [
        "fd651fa6d5139501af57471109ec15bb688e4bd4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:13:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:13:49 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) Enhance error message to\n\t  show MTU.  Also make function static.\n\t  (ospf_write) Enhance error message to show interface name and MTU.\n\t  Also make function static.\n"
    },
    {
      "commit": "fd651fa6d5139501af57471109ec15bb688e4bd4",
      "tree": "25667e4dbf86dd641e291c86e83a2d106482a3d6",
      "parents": [
        "7f22396bdc304c14f1c7ef0402ba9bd1450661b7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:08:16 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Mar 29 16:08:16 2005 +0000"
      },
      "message": "2005-03-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_vty.c (show_ip_ospf_interface_sub): Display interface MTU and\n\tbandwidth; this is useful for debugging problems.  Also, the function\n\tshould be static.\n"
    },
    {
      "commit": "7f22396bdc304c14f1c7ef0402ba9bd1450661b7",
      "tree": "45f231620cdec24c12b4b59be738dc144b4210d1",
      "parents": [
        "2d58228ecabb23b064e8a06e6241cf0d7e5ca785"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:38:16 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:38:16 2005 +0000"
      },
      "message": "\t* extract.pl.in: Use SNMP_INCLUDES to avoid warnings if compiling with\n\t  snmp support.\n"
    },
    {
      "commit": "2d58228ecabb23b064e8a06e6241cf0d7e5ca785",
      "tree": "443509e8113598c7dadaa5e9cdbb153c147d0ffe",
      "parents": [
        "17eff7cb9010c0ba386ab801c220811ded4242b3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:29:07 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 28 15:29:07 2005 +0000"
      },
      "message": "\t* configure.ac, */Makefile.am: Fix previous commit. SNMP includes\n\t  must be after lib/ includes in some systems. Introduce SNMP_INCLUDES\n\t  for that.\n"
    },
    {
      "commit": "17eff7cb9010c0ba386ab801c220811ded4242b3",
      "tree": "c3c0afb627384c4abe0066be933492e74cd272ff",
      "parents": [
        "1b63904721aa6ca1aabafe23bcf28c5a2ceb2cd8"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 21:00:35 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 21:00:35 2005 +0000"
      },
      "message": "\t* configure.ac: Fix most of \"Presents But Cannot Compiled\" warnings\n\t  about various headers. CFLAGS is not correct place to specify\n\t  includes, INCLUDES is for that.\n"
    },
    {
      "commit": "1b63904721aa6ca1aabafe23bcf28c5a2ceb2cd8",
      "tree": "9a13bfd8caeb9c92f79ec1ecc3666c66da24a2a8",
      "parents": [
        "1969e4b9631288979f5f7df6dcaddb86ab32950e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:32:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:32:25 2005 +0000"
      },
      "message": "\t* ospf_snmp.c: Don\u0027t crash in snmp query if ospf instance doesn\u0027t\n\t  exist at all.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "1969e4b9631288979f5f7df6dcaddb86ab32950e",
      "tree": "3d4b9e877a29895581612e8a02216edbe0ab2148",
      "parents": [
        "44f8a757904a58bbff8b6a976722e1e21f439af2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:07:23 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 27 13:07:23 2005 +0000"
      },
      "message": "\t* configure.ac: Add Intel compiler (icc) support. Although Intel\n\t  tries really hard to make icc look like gcc, there are some\n\t  differences. It\u0027s very verbose with -Wall and it doesn\u0027t support\n\t  the individual -W options. We are going to ignore some of these\n\t  warnings.\n"
    },
    {
      "commit": "44f8a757904a58bbff8b6a976722e1e21f439af2",
      "tree": "ce792140d5c9c4439d4e3d2e22a76506268690d5",
      "parents": [
        "a0fb71a5601bcaad4eba2ad16556b9cf36c57277"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Mar 26 14:13:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Mar 26 14:13:40 2005 +0000"
      },
      "message": "Trying to finish previous commit ...\n"
    },
    {
      "commit": "a0fb71a5601bcaad4eba2ad16556b9cf36c57277",
      "tree": "121db6b9043bb2a9bdd5637f236822552fb56227",
      "parents": [
        "343f5cc76922c8c741a47d1ae9646fcf263d32d7"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Mar 26 14:07:31 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Mar 26 14:07:31 2005 +0000"
      },
      "message": "\t* doc/defines.texi.in, lib/version.h.in: Update copyright string to\n\t  include year 2005.\n"
    },
    {
      "commit": "343f5cc76922c8c741a47d1ae9646fcf263d32d7",
      "tree": "dd82bdb7e7ab441fcbf66d27ea10bc4007857012",
      "parents": [
        "7cee1bb15089e4e994958651bd45a6f81c4215aa"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Mar 25 19:48:40 2005 +0000"
      },
      "message": "\t* ospfd.h: Include log.h, fixes compile with gcc-4.0.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "7cee1bb15089e4e994958651bd45a6f81c4215aa",
      "tree": "2f7d9b8a24411d06c80dbeb023069c1e3a2f4c2e",
      "parents": [
        "29c4c9bd11aaf36a0b3ed2414c816cdb8d4178bd"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:08:53 2005 +0000"
      },
      "message": "2005-03-25 Jean-Mickael Guerin \u003cjean-mickael.guerin@6wind.com\u003e\n\t* interface.c, interface.h, rtadv.c, rtadv.h: extensions to Neighbor\n\t  discovery for Mobile IPv6.\n"
    },
    {
      "commit": "29c4c9bd11aaf36a0b3ed2414c816cdb8d4178bd",
      "tree": "3c41e71cec1ed16fb02955bb96d35d6ab696a690",
      "parents": [
        "6cf159b97848503ee9da0273eb97a6712369fd24"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:05:47 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Fri Mar 25 13:05:47 2005 +0000"
      },
      "message": "2005-03-25 Jean-Mickael Guerin \u003cjean-mickael.guerin@6wind.com\u003e\n\t* Extensions to Neighbor Discovery for Mobile IPv6\n"
    },
    {
      "commit": "6cf159b97848503ee9da0273eb97a6712369fd24",
      "tree": "c2c19bab97b455fceea49a763430cc709a61682a",
      "parents": [
        "db8eaac6615dacf17eb3958b0f3b6ea58f8f1e1d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 21 10:28:14 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 21 10:28:14 2005 +0000"
      },
      "message": "        * bgp_route.c: Don\u0027t crash while clearing route tables if there is\n          no particular afi/safi configured.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "db8eaac6615dacf17eb3958b0f3b6ea58f8f1e1d",
      "tree": "24e261e3e5be531ed987d3e040ea731ca6a1016c",
      "parents": [
        "55468c86040081320f557b696e509b76ddfd6c83"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Mar 16 16:13:06 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Mar 16 16:13:06 2005 +0000"
      },
      "message": "2005-03-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Must check whether __attribute__ should be defined before\n\t  including zassert.h.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "55468c86040081320f557b696e509b76ddfd6c83",
      "tree": "3ee726f155f8776d4a220997681d14c0b09addd0",
      "parents": [
        "909a215508fd42473fcbe4f5292a59404e5473af"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 20:19:01 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) update all c files to match the lib/vector.h rename of\n\t  (struct vector).active to max, and vector_max macro to\n\t  vector_active.\n\t* lib/vector.h: Rename to (struct vector).max to slightly less\n\t  confusing active, for the number of active slots, distinct from\n\t  allocated or active-and-not-empty. Rename vector_max to\n\t  vector_active for same reason.\n"
    },
    {
      "commit": "909a215508fd42473fcbe4f5292a59404e5473af",
      "tree": "26b0977fb1b922565919a3e3b87c88d1ec9a8183",
      "parents": [
        "b89614766b083c83f6a84126a02c88311129e12d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 17:41:45 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 17:41:45 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (various) Fix indentation and other whitespace.\n"
    },
    {
      "commit": "b89614766b083c83f6a84126a02c88311129e12d",
      "tree": "51b3f37416bc394f70bb9b8b9e41690bbe1ac72e",
      "parents": [
        "9dbc797274ca5df614d61784658b8f809bbd8e2b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 17:35:52 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Mar 14 17:35:52 2005 +0000"
      },
      "message": "2005-03-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (sort_node) use vector_max instead of referencing\n\t  (struct vector *)-\u003emax directly. Test that vector_max is \u003e 0\n\t  before using it to calculate an index.\n\t  Fixup vector loop to make main body conditional on vector slot\n\t  not being empty.\n\t  (cmd_cmdsize) Fixup vector loop to make main body conditional on\n\t  vector slot not being empty.\n\t  (cmd_filter_by_completion) ditto\n\t  (cmd_filter_by_string) ditto\n\t  (is_cmd_ambiguous) ditto\n\t  (cmd_describe_command_real) Change index integers to unsigned.\n\t  Test that vector_max is \u003e 0 before using it to calculate an index.\n\t  Return immediately with CMD_ERR_NO_MATCH if vline has no\n\t  active slots.\n\t  Fixup vector loop to make main body conditional on vector slot\n\t  not being empty.\n\t  (cmd_complete_command_real) ditto.\n\t  (cmd_execute_command_strict) Fixup vector loop to be conditional\n\t  on non-null slot.\n"
    },
    {
      "commit": "9dbc797274ca5df614d61784658b8f809bbd8e2b",
      "tree": "97aa0b8f724e440a6bb12bc70b31c66b425b2a46",
      "parents": [
        "ed9bb6d524301cb7d1902ed94753ffa3c6dabf1e"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Mar 13 19:27:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Mar 13 19:27:22 2005 +0000"
      },
      "message": "2005-03-13 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_lsa.c: (ospf_lsa_refresh_walker) If the system clock jumps\n\t  backward, then current time may be less than\n\t  ospf-\u003elsa_refresher_started.  This was causing invalid values\n\t  for ospf-\u003elsa_refresh_queue.index resulting in infinite loops.\n\t  Problem fixed by casting the expression to unsigned before taking\n\t  the modulus.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "ed9bb6d524301cb7d1902ed94753ffa3c6dabf1e",
      "tree": "8ef411ef124f5bd6ae9689a5461474066821836a",
      "parents": [
        "afd8a129fe140efdb6f743df0ca43d8c150c25bb"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 13 19:17:21 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 13 19:17:21 2005 +0000"
      },
      "message": "\t* zebra/interaface.c: \"show interface description\" command\n\t  implemented.\n"
    },
    {
      "commit": "afd8a129fe140efdb6f743df0ca43d8c150c25bb",
      "tree": "b2125db300a01522e24991404b9ef88e2ebde5c6",
      "parents": [
        "c1f01f358d28f2375b1caf239581105c6f1e3537"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Mar 12 06:36:10 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Mar 12 06:36:10 2005 +0000"
      },
      "message": "2005-03-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Solaris 8 can use the newer lifreq based methods\n\t  too, allows IPv6.\n"
    },
    {
      "commit": "c1f01f358d28f2375b1caf239581105c6f1e3537",
      "tree": "b40136dc6bedb76199f40102d0977b4f1005bdef",
      "parents": [
        "4275b1de3a54650a81f82999c296b756ee5b5679"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Mar 12 06:33:14 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Mar 12 06:33:14 2005 +0000"
      },
      "message": "2005-03-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* rt_netlink.c: (netlink_route_multipath) dont set equalise flag.\n\t  No stock Linux kernel has ever supported it, and even if it had\n"
    },
    {
      "commit": "4275b1de3a54650a81f82999c296b756ee5b5679",
      "tree": "34770ac1723285391c43a623028fd1e8e6c986ed",
      "parents": [
        "9e92eeab6cc40bc65ed9b1b7950e161fd1434d48"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Mar 09 13:42:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Mar 09 13:42:23 2005 +0000"
      },
      "message": "2005-03-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (config_list_cmd) Don\u0027t list hidden or deprecated\n\t  commands, hiding these from tab completion is still to be done.\n"
    },
    {
      "commit": "9e92eeab6cc40bc65ed9b1b7950e161fd1434d48",
      "tree": "40a277021d7dee4910cc9aa982680ac137f6e0dd",
      "parents": [
        "060d438cb1be51d2f7fb7954a8b7b1cd491f555f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Mar 09 13:39:26 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Mar 09 13:39:26 2005 +0000"
      },
      "message": "2005-03-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: Undo commit of sign warning fix and hidden command\n\t  in list_cmd. Sign warning is more subtle. list_cmd on its own\n\t  will be committed after.\n"
    },
    {
      "commit": "060d438cb1be51d2f7fb7954a8b7b1cd491f555f",
      "tree": "275208fe82700e56a929d1a35a7f16256b155362",
      "parents": [
        "220851816a699d9977702ea2b2501d4ede76e898"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Mar 09 12:41:14 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Mar 09 12:41:14 2005 +0000"
      },
      "message": "\t* vtysh_config.c: Move password commands to the AAA_NODE. It\n\t  quarantees that they will appear after SERVICE_NODE to make sure\n\t  that encrypted passwords will work (\"service password-encryption\"\n\t  command).\n\n\t[backport candidate]\n"
    },
    {
      "commit": "220851816a699d9977702ea2b2501d4ede76e898",
      "tree": "7c7b2a35e838ea6969258ce83f1f56f770972500",
      "parents": [
        "9c5d8562f8d24574ba1f43881d47cbc8ffc62027"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 16:00:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 16:00:12 2005 +0000"
      },
      "message": "2005-03-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (no_banner_motd_cmd) use XFREE.\n\t* vty.c: (vty_hello) fix the indentation and comment.\n"
    },
    {
      "commit": "9c5d8562f8d24574ba1f43881d47cbc8ffc62027",
      "tree": "816690e607e208aa66b257fb9ef01ae8bd80acb6",
      "parents": [
        "b45da6f01612e8ec1938cacfe0ea0ef34ad1afca"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 15:56:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 15:56:42 2005 +0000"
      },
      "message": "2005-03-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (cmd_describe_command_real) sign compile warning fix\n\t  (cmd_complete_command_real) ditto.\n\t  (config_list_cmd) Don\u0027t list hidden or deprecated commands,\n\t  hiding these from tab completion is still to be done.\n\t* command.h: cmd attr enum should start at 1.\n"
    },
    {
      "commit": "b45da6f01612e8ec1938cacfe0ea0ef34ad1afca",
      "tree": "670671d335524f7b44bee3e32bdba1a75aecc7df",
      "parents": [
        "3b0c5d9a56560cfbfb1a8f5b9e6cc71025eb5490"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 15:16:57 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 15:16:57 2005 +0000"
      },
      "message": "2005-03-08 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (banner_motd_file_cmd) use XSTRDUP/XFREE\n\t* vty.c: (vty_hello) suggestions from Andrew, read by line and\n\t  stub out trailling non-printable characters on each line thus\n\t  allowing us to specify VTY_NEWLINE to vty_out.\n"
    },
    {
      "commit": "3b0c5d9a56560cfbfb1a8f5b9e6cc71025eb5490",
      "tree": "a4b9c7506cb74223635135902e0479fda0b46fe2",
      "parents": [
        "c3d26c72982bc95906afb58fb46f1268bc915a3b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 10:43:43 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Mar 08 10:43:43 2005 +0000"
      },
      "message": "2005-03-08 Jeroen Massar \u003cjeroen@unfix.org\u003e\n\n\t* vty.c: (vty_hello) display motd file, if set\n\t* command.h: add char *motdfile to struct host\n\t* command.c: (config_write_host) write out motdfile config\n\t  (banner_motd_file_cmd) new command, allow motd to be read from\n\t  file.\n\t  (no_banner_motd_cmd) free motdfile string, if needs be.\n\t  (cmd_init) init (struct host).motdfile. Add new motd file\n\t  commands.\n"
    },
    {
      "commit": "c3d26c72982bc95906afb58fb46f1268bc915a3b",
      "tree": "ddc01377553107b384acef1879201d6216780fac",
      "parents": [
        "12f6ea2300402c821595297ff0c2c75055e50031"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:54:41 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:54:41 2005 +0000"
      },
      "message": "\t* isis_spf.c: host.name might be NULL.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "12f6ea2300402c821595297ff0c2c75055e50031",
      "tree": "503bfaf41cd13b637d8ec21034d896347828a9d7",
      "parents": [
        "42a66d7c484f95615e0364c4aa109ce5d095776a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:35:39 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:35:39 2005 +0000"
      },
      "message": "\t* command.c: host.name might be NULL.\n\t* vty.c: Fix fd leak.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "42a66d7c484f95615e0364c4aa109ce5d095776a",
      "tree": "614d2db868d903907a7257a9a1493325eb68cba0",
      "parents": [
        "3452d4752490516c3228da3700c93e2089e30083"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:19:44 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Mar 07 08:19:44 2005 +0000"
      },
      "message": "\t * if_proc.c, ipforward_proc.c, rtread_proc.c: Fix fd leaks.\n\n\t [backport candidate]\n"
    },
    {
      "commit": "3452d4752490516c3228da3700c93e2089e30083",
      "tree": "46ba333a050deaef1cf933afab28b7eca9310fad",
      "parents": [
        "c1ba9e8a8ac0447e6f33d50b4b9e7a1e68307bf1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 06 13:42:05 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Mar 06 13:42:05 2005 +0000"
      },
      "message": "\t* interface.c: Fix CRC and frame errors statistics in Linux.\n"
    },
    {
      "commit": "c1ba9e8a8ac0447e6f33d50b4b9e7a1e68307bf1",
      "tree": "cff477f00b68f3fe7db18cfa384aac90825c96ab",
      "parents": [
        "719e97414a7ca1a4d49d72816b9e1bd2155d157d"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Mar 02 22:43:26 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Mar 02 22:43:26 2005 +0000"
      },
      "message": "Fix segfault when ospf6_create() is not called yet.\nThanks to Mohit Thakur.\n"
    },
    {
      "commit": "719e97414a7ca1a4d49d72816b9e1bd2155d157d",
      "tree": "6c3d4456e89d1a837322566eee065e492b325e6c",
      "parents": [
        "27da3988c30c333cd75cffc5565682366bb99513"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Feb 28 20:52:15 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Feb 28 20:52:15 2005 +0000"
      },
      "message": "2005-02-28 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zserv.c: Must include network.h and buffer.h for non-blocking I/O.\n\t  Remove global message_queue and t_write (need separate buffering for\n\t  each client).\n\t  (zebra_server_dequeue,zebra_server_enqueue) Remove functions\n\t  related to old buggy buffering code.\n\t  (zserv_delayed_close) New thread callback function to delete a client.\n\t  (zserv_flush_data) New thread callback function to flush buffered\n\t  data to client.\n\t  (zebra_server_send_message) Rewritten to use buffer_write (so\n\t  buffering of writes and non-blocking I/O work properly).\n\t  (zsend_interface_add,zsend_interface_delete,zsend_interface_address,\n\t  zsend_interface_update) Return 0 instead of -1 if !client-\u003eifinfo\n\t  (this is not really an error).  Return value from\n\t  zebra_server_send_message.\n\t  (zsend_route_multipath,zsend_ipv4_nexthop_lookup,\n\t  zsend_ipv4_import_lookup) Return value from zebra_server_send_message.\n\t  (zsend_ipv6_nexthop_lookup) Fix scope to static, and return value\n\t  from zebra_server_send_message.\n\t  (zsend_router_id_update) Must use zebra_server_send_message instead\n\t  of deprecated writen function.  Return 0 instead of -1 if this client\n\t  is not subscribed to router-id updates (since this is not really\n\t  an error).\n\t  (zread_interface_add) Change type to static int.  If\n\t  zsend_interface_add fails or zsend_interface_address fails, return -1\n\t  immediately (since the client has had an I/O error).\n\t  (zread_interface_delete,zread_ipv4_add,zread_ipv4_delete,\n\t  zread_ipv6_add,zread_ipv6_delete,zread_router_id_delete) Return 0\n\t  to indicate success.\n\t  (zread_ipv4_nexthop_lookup) Return value from\n\t  zsend_ipv4_nexthop_lookup.\n\t  (zread_ipv4_import_lookup) Return value from zsend_ipv4_import_lookup.\n\t  (zebra_read_ipv6) Remove unused function.\n\t  (zread_ipv6_nexthop_lookup) Return value from\n\t  zsend_ipv6_nexthop_lookup.\n\t  (zread_router_id_add) Return value from zsend_router_id_update.\n\t  (zebra_client_close) Call buffer_free(client-\u003ewb) and\n\t  thread_cancel(client-\u003et_suicide).\n\t  (zebra_client_create) Allocate client-\u003ewb using buffer_new.\n\t  (zebra_client_read) Support non-blocking I/O by using stream_read_try.\n\t  Use ZEBRA_HEADER_SIZE instead of 3.\n\t  (zebra_accept) Fix bug: reset accept thread at top.  Make client\n\t  socket non-blocking using the set_nonblocking function.\n\t  (config_write_forwarding) Fix scope to static.\n\t  (zebra_init) Remove initialization code for old buggy write buffering.\n\t* zserv.h: Add 2 new fields to struct zserv: struct buffer *wb\n\t  (to enable buffered writes with non-blocking I/), and\n\t  struct thread *t_suicide to support delayed close on I/O\n\t  errors.\n\t* router-id.h: Remove prototypes for zread_router_id_add and\n\t  zread_router_id_delete (their scope should be static to zserv.c).\n"
    },
    {
      "commit": "27da3988c30c333cd75cffc5565682366bb99513",
      "tree": "cbe0458dcab6e47a733c86c3fc8676c88236d136",
      "parents": [
        "81fb32404c942432d2bea1e50a4d53bf75fd0f70"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:06:33 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:06:33 2005 +0000"
      },
      "message": "2005-02-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* redistribute.c: (zebra_check_addr,is_default,\n\t  zebra_redistribute_default,zebra_redistribute) Fix scope to be static.\n"
    },
    {
      "commit": "81fb32404c942432d2bea1e50a4d53bf75fd0f70",
      "tree": "107d5d94061c110773c5b2985e383d2075bc6044",
      "parents": [
        "0d7e9134d828d5aee8c83960bb706a726cdc2ec4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:02:53 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:02:53 2005 +0000"
      },
      "message": "2005-02-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.c: (stream_read_try) Log a warning message if a fatal\n\t  I/O error occurs.\n\t  (stream_fifo_new) Fix prototype.\n\t* stream.h: Fix prototype for stream_fifo_new (need void arg).\n"
    },
    {
      "commit": "0d7e9134d828d5aee8c83960bb706a726cdc2ec4",
      "tree": "b6000f1d95daf0723a42339c046b69a78b738f2a",
      "parents": [
        "cdb6ee94bc2b9d1b66cfa1adcc5acaccbd648e0f"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Feb 23 16:20:07 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Feb 23 16:20:07 2005 +0000"
      },
      "message": "add release procedure, noting redhat spec oddness\n"
    },
    {
      "commit": "cdb6ee94bc2b9d1b66cfa1adcc5acaccbd648e0f",
      "tree": "e2ddd54488f20a3402ce94fcc4fb337fb883f61c",
      "parents": [
        "5c33349b3efff36a6acd36c6600b61e7cc2dbffc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:48:32 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:48:32 2005 +0000"
      },
      "message": "2005-02-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* {vty.h,vty.c}: Remove vty_finish (duplicate of vty_reset).\n\t* isis_main.c: (reload) Call vty_reset instead of vty_finish (both\n\t  functions were exactly the same).\n"
    },
    {
      "commit": "5c33349b3efff36a6acd36c6600b61e7cc2dbffc",
      "tree": "ec55763c7a1401489464bacde9115b06b3b0b467",
      "parents": [
        "9fc7ebf10b7bb638ddf6d1b4b2d562dd417866fc"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:43:01 2005 +0000"
      },
      "message": "2005-02-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospfd.h: Add new field struct stream *ibuf to struct ospf.\n\t* ospfd.c: (ospf_new) Check return code from ospf_sock_init.\n\t  Allocate ibuf using stream_new(OSPF_MAX_PACKET_SIZE+1).\n\t  (ospf_finish) Call stream_free(ospf-\u003eibuf.\n\t* ospf_packet.c: (ospf_read) Call stream_reset(ospf-\u003eibuf) and then\n\t  pass it to ospf_recv_packet for use in receiving the packet\n\t  (instead of allocating a new stream for each packet received).\n\t  Eliminate all calls to stream_free(ibuf).\n\t  (ospf_recv_packet) The struct stream *ibuf is now passed in as\n\t  an argument.  No need to use recvfrom to peek at the packet\n\t  header (to see how big it is), just use ospf-\u003eibuf which is\n\t  always large enough (this eliminates a system call to recvfrom).\n\t  Therefore, no need to allocate a stream just for this packet,\n\t  and no need to free it when done.\n"
    },
    {
      "commit": "9fc7ebf10b7bb638ddf6d1b4b2d562dd417866fc",
      "tree": "e2e49aa4ea2530be5b86df581ed1adcd37822f3a",
      "parents": [
        "338b3424154af85b0762713796397d3f2345d54f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:12:34 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 23 15:12:34 2005 +0000"
      },
      "message": "2005-02-23 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* buffer.h: Make the struct buffer and struct buffer_data structures\n\t  private by moving them inside buffer.c.  Add comments for all\n\t  functions.  Rename buffer_write as buffer_put (to be more consistent\n\t  with the buffer_putc and buffer_putstr functions).  Declare a new\n\t  buffer_write function that is used to write data to a file descriptor\n\t  and/or add it to the buffer queue.  Remove unused function\n\t  buffer_flush_vty_all.  Create a new enum typedef buffer_status_t\n\t  to be used as the return code for all buffer_flush* functions\n\t  and buffer_write.\n\t* buffer.c: The struct buffer and struct buffer_data declarations\n\t  are now private to this file.  In conjunction with that, remove\n\t  some unnecessary fields: struct buffer (alloc, unused_head,\n\t  unused_tail, length), struct buffer_data (prev).\n\t  (buffer_data_new) Removed: functionality incorporated into buffer_add.\n\t  (buffer_data_free) Removed: use a macro BUFFER_DATA_FREE instead.\n\t  (buffer_new) Use calloc instead of malloc + memset(zero).\n\t  Supply an appropriate default size if the specified size is 0.\n\t  (buffer_free) Eliminate code duplication by calling buffer_reset to\n\t  free the contents of the buffer (and remove unused code related\n\t  to unused_head).\n\t  (buffer_empty,buffer_putc,buffer_putstr) Aesthetic change (make more\n\t  compact).\n\t  (buffer_reset) Use macro BUFFER_DATA_FREE.  No need to set\n\t  alloc and length to 0 (these fields have been removed).\n\t  (buffer_add) Fix scope to be static.  Call XMALLOC directly instead\n\t  of calling removed buffer_data_new function.  Simplify the logic\n\t  (since it\u0027s now a singly-linked list instead of doubly-linked).\n\t  (buffer_write) Renamed to buffer_put.  Change to void, since return\n\t  code of 1 was meaningless.  No need to adjust length field, since\n\t  it has been removed.\n\t  (buffer_putw,buffer_flush,buffer_flush_vty_all,buffer_flush_vty)\n\t  Remove unused functions.\n\t  (buffer_flush_all) Rewrite using buffer_flush_available to eliminate\n\t  a possible failure mode if IOV_MAX is less than the number of buffers\n\t  on the queue.\n\t  (buffer_flush_window) Incorporate logic from buffer_flush_vty.\n\t  Log an error message if there is a writev error.\n\t  (buffer_flush_available) Be more paranoid: check for case where\n\t  buffer is already empty.  Use new ERRNO_IO_RETRY macro, and use\n\t  new enum for return codes.  Simplify deletion logic (since it\u0027s\n\t  now a singly-linked list).\n\t  (buffer_write) New function for use with non-blocking I/O.\n\t* vty.h: Replace the struct vty sb_buffer field with a fixed-size\n\t  (5-character) sb_buf field and an sb_len field, since using\n\t  a struct buffer was inappropriate for this task.  Add some useful\n\t  comments about telnet window size negotiation.\n\t* vty.c: Include \u003carpa/telnet.h\u003e (no longer included by zebra.h).\n\t  Remove VTY_OBUF_SIZE (instead use buffer_new default size).\n\t  Make telnet_backward_char and telnet_space_char static const.\n\t  (vty_out) Replace buffer_write with buffer_put.\n\t  (vty_log_out) Check for I/O errors.  If fatal, close the vty session.\n\t  Consolidate 3 separate writes into a single write call.\n\t  (vty_will_echo,vty_command,vty_next_line,vty_previous_line,\n\t  vty_end_config,vty_describe_fold,vty_clear_buf,vty_serv_sock_addrinfo,\n\t  vty_serv_sock_family,vty_serv_un,vty_use_backup_config,exec_timeout,\n\t  vty_config_write,vty_save_cwd) Fix scope to static.\n\t  (vty_new) Let buffer_new use its default buffer size.\n\t  (vty_write) Fix signature: 2nd arg should be const char *.\n\t  Replaced buffer_write with buffer_put.\n\t  (vty_telnet_option) Fix minor bug (window height or width greater than\n\t  255 was broken).  Use sb_buf and sb_len instead of removed sb_buffer\n\t  (which was being used improperly).\n\t  (vty_read) On error, use ERRNO_IO_RETRY to decide whether it\u0027s fatal.\n\t  If the error is fatal, call buffer_reset so vty_close does not attempt\n\t  to flush the data.  Use new sb_buf and sb_len instead of sb_buffer\n\t  to store the SB negotiation string.\n\t  (vty_flush) When vty-\u003elines is 0, call buffer_flush_available instead\n\t  of buffer_flush_window.  Look at the return code from buffer_flush\n\t  to detect I/O errors (and in that case, log an error message and\n\t  close the vty).\n\t  (vty_create) Fix scope to static.  Initialize sb_len to 0 instead\n\t  of creating sb_buffer.\n\t  (vty_accept) Set socket nonblocking.\n\t  (vtysh_accept) Use new set_nonblocking function instead of calling\n\t  fcntl directly.\n\t  (vtysh_flush) New function called from vtysh_read (after command\n\t  execution) and from vtysh_write.  This flushes the buffer\n\t  and reacts appropriately to the return code (by closing the vty\n\t  or scheduling further flushes).\n\t  (vtysh_read) Check whether error is fatal using ERRNO_IO_RETRY.\n\t  If not, just try again later.  Otherwise, call buffer_reset before\n\t  calling vty_close (to avoid trying to flush the buffer in vty_close).\n\t  Fix logic to allow case where a command does not arrive atomically\n\t  in a single read call by checking for the terminating NUL char.\n\t  (vtysh_write) Use new vtysh_flush helper function.\n\t  (vty_close) No need to call buffer_empty, just call buffer_flush_all\n\t  in any case (it will check whether the buffer is empty).\n\t  Do not free sb_buffer (since it has been removed).\n\t  (vty_log_fixed) Use writev instead of write.\n\t* zebra.h: Do not include \u003carpa/telnet.h\u003e, since this is used only\n\t  by lib/vty.c.\n"
    },
    {
      "commit": "338b3424154af85b0762713796397d3f2345d54f",
      "tree": "53e202ad7097edc2299179135265475bb48435ed",
      "parents": [
        "e69b9e40c74d9d910934c94c63c08e36e9799e00"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 14:27:24 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 14:27:24 2005 +0000"
      },
      "message": "\t* bgp_route.c: Make reannouncing prefixes with changed attributes\n\t  work again.\n"
    },
    {
      "commit": "e69b9e40c74d9d910934c94c63c08e36e9799e00",
      "tree": "2f310ac7f0d5ee0e067faaceebaec6995dcd8a0b",
      "parents": [
        "462f20d50c8f86c26904f1c7316d910c2b83ae41"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:54:12 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:54:12 2005 +0000"
      },
      "message": "Added -p to the recommended diff flags.\n"
    },
    {
      "commit": "462f20d50c8f86c26904f1c7316d910c2b83ae41",
      "tree": "3edbff28c76bdb8e1c66ea5153b1cb58d40f15aa",
      "parents": [
        "c3c07f28dcd226975b5ed0c1f8842f51968a3288"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 23 11:29:02 2005 +0000"
      },
      "message": "\t* ospf_lsa.h: New flag to the LSA structure for the SPF calculation.\n\t* ospf_lsdb.h: Export ospf_lsdb_clean_stat() function.\n\t* ospf_spf.h: Add link to the LSA stat structure into vertex.\n\t* ospf_spf.c: New functions cmp() and update_stat() to manage\n\t  candidates. Remove ospf_spf_has_vertex(), ospf_vertex_lookup(),\n\t  ospf_install_candidate() and ospf_spf_register() functions not needed\n\t  any more. Update ospf_vertex_new(), ospf_spf_next() and\n\t  ospf_spf_calculate() functions to use pqueue instead of linked list.\n"
    },
    {
      "commit": "c3c07f28dcd226975b5ed0c1f8842f51968a3288",
      "tree": "417176baf15d9f9528c7ef6fc65171fcfa68583d",
      "parents": [
        "e40dcce1f5966d4129b5ecadd905dc2952ac5b30"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 18:17:52 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 18:17:52 2005 +0000"
      },
      "message": "\t* pqueue.[ch]: Introduce \"update\" function to meet ospf spf needs. It\n\t  will allow to update node when:\n\t  i) a node is inserted into the priority queue;\n\t  ii) a node position is modified in the priority queue;\n\t* pqueue.h: Export trickle_down() function.\n"
    },
    {
      "commit": "e40dcce1f5966d4129b5ecadd905dc2952ac5b30",
      "tree": "e47b30c1f3ff4d0ddf36f2f3e97a7e7c22dbb3a8",
      "parents": [
        "e8274dcde1bd0f0339393714d57c019e57a5b798"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 14:58:42 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Feb 21 14:58:42 2005 +0000"
      },
      "message": "\t* ospf_ase.c: Don\u0027t show messages related to the ase calculations if\n\t  we are not debugging.\n"
    },
    {
      "commit": "e8274dcde1bd0f0339393714d57c019e57a5b798",
      "tree": "24109f0de306036dcf7f8baf3f8d4252db81603c",
      "parents": [
        "306541b31624a344db085bfee45e5d9343fc8dca"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Feb 20 19:09:23 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Feb 20 19:09:23 2005 +0000"
      },
      "message": "\t* rt_netlink.c: Don\u0027t show messages \"ignoring message type 0x001[89]\"\n\t  if we are not debugging.\n"
    },
    {
      "commit": "306541b31624a344db085bfee45e5d9343fc8dca",
      "tree": "1f57f3f14b7463596acb95728a4185aa72899133",
      "parents": [
        "c45eb839ae2aac88372180fda8ce90dc1abefe2f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 17:58:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 17:58:40 2005 +0000"
      },
      "message": "\t* ospf_api.h: char isn\u0027t always signed, but it has to be it here.\n\n\tFixes bugzilla #153. [backport candidate]\n"
    },
    {
      "commit": "c45eb839ae2aac88372180fda8ce90dc1abefe2f",
      "tree": "2afa3277c4049058c03425325a5267e2a720e332",
      "parents": [
        "e31f22999430d37acbb7706d8fb5dd613ee51150"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 13:58:06 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Feb 19 13:58:06 2005 +0000"
      },
      "message": "\t* configure.ac: Fix Linux detection. Host types like i686-pc-linux\n\t  didn\u0027t match the pattern.\n\n\tFixes bugzilla #150. [backport candidate]\n"
    },
    {
      "commit": "e31f22999430d37acbb7706d8fb5dd613ee51150",
      "tree": "00abec1a505874a93ade18847a48f3bd9e9c1847",
      "parents": [
        "fa81b713e785d4884d5f45f3acd21dc460110862"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 02:00:26 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 02:00:26 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* zserv.c: (zebra_read_ipv6) replace the char * arithmetic with\n\t  STREAM_READABLE.\n"
    },
    {
      "commit": "fa81b713e785d4884d5f45f3acd21dc460110862",
      "tree": "35b57c41b359f6d0db1c7491b1928a963ccb6730",
      "parents": [
        "109ac96f0296fd66d5a1d37def44db3cef7ca0fb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:19:20 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:19:20 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_stream_copy) remove\n\t  (ospf_packet_dup) use stream_copy instead of ospf_stream_copy\n"
    },
    {
      "commit": "109ac96f0296fd66d5a1d37def44db3cef7ca0fb",
      "tree": "aa6e12891391dd9d0a890b2a89c39222ad6409e6",
      "parents": [
        "518cde8d6ce0434b02bd5d7cf7e9627d57af6952"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: (stream_new) fix dumb mistake.\n"
    },
    {
      "commit": "518cde8d6ce0434b02bd5d7cf7e9627d57af6952",
      "tree": "2f4b607061eb01459523613c2f234d0361b760e6",
      "parents": [
        "53270116df3f54b1f9411f0832567e9effa87593"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:11:58 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:11:58 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* watchquagga.c: (handle_read) Use new ERRNO_IO_RETRY macro.\n"
    },
    {
      "commit": "53270116df3f54b1f9411f0832567e9effa87593",
      "tree": "08fab8ea890f84694a0f9fcaaf55a13fbf698ef3",
      "parents": [
        "d7e2a8188f6e9eaccb5e1c1bd7b9d5af79429c0c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.c: (stream_read_try) Use new ERRNO_IO_RETRY macro.\n"
    },
    {
      "commit": "d7e2a8188f6e9eaccb5e1c1bd7b9d5af79429c0c",
      "tree": "6abb03907d0eeaa5f343e3927ef6d9e619e6f079",
      "parents": [
        "038163fa87d5b41503c721bb097faea6b25661c9"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:02:49 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:02:49 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.h: Define a new ERRNO_IO_RETRY macro to test whether an I/O\n\t  operation should be retried.  This eliminates the need to duplicate\n\t  the same logic testing for EAGAIN or EINTR in multiple places.\n"
    },
    {
      "commit": "038163fa87d5b41503c721bb097faea6b25661c9",
      "tree": "6fac5c09747630ae88ba88c3b925d21b24cbcb39",
      "parents": [
        "52e66296f236cdda751e4206ad3d39c56e53f0fd"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 19:55:59 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 19:55:59 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) If there is somehow a runt\n\t  packet in the queue, it must be discarded.  Improve warning messages.\n\t  Fix scope to static.\n\t  (ospf_read) Fix bug: should reset the read thread in all cases\n\t  to make sure we continue to get incoming messages.\n"
    },
    {
      "commit": "52e66296f236cdda751e4206ad3d39c56e53f0fd",
      "tree": "b7d2162fe1e63946e56b47511a08db2fe36ef68e",
      "parents": [
        "262feb1ad0838bb585955b6ada5acbe106dbc9bf"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:40:25 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:40:25 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* watchquagga.c: (try_connect) Use new set_nonblocking function instead\n\t  of calling fcntl directly.\n"
    },
    {
      "commit": "262feb1ad0838bb585955b6ada5acbe106dbc9bf",
      "tree": "392f66d5d71bcfdd87e5db32e89325ed9ef06c44",
      "parents": [
        "42218e71256cb86b5078c99c931030c7b0ce9bab"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.h: Declare new function stream_read_try suitable for use\n\t  with non-blocking file descriptors.  Indicate that stream_read\n\t  and stream_read_unblock are deprecated.\n\t* stream.c: (stream_read_try) New function for use with non-blocking\n\t  I/O.\n\t  (stream_recvmsg) Should return -1 if the stream is too small to\n\t  contain the data.\n"
    },
    {
      "commit": "42218e71256cb86b5078c99c931030c7b0ce9bab",
      "tree": "32331f692e292f258b295727d2f2467617fe80ba",
      "parents": [
        "a269d613fe0536a01eb86367a545e337e51d1309"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 16:25:39 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 16:25:39 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.c: (set_nonblocking) Should check return code from\n\t  fcntl(F_GETFL).\n"
    },
    {
      "commit": "a269d613fe0536a01eb86367a545e337e51d1309",
      "tree": "21e648eaac2a1569af79dcbc75a962481b6cbc75",
      "parents": [
        "6ea7cdc593f7637e26da54192ef67245185994f3"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 00:45:37 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 00:45:37 2005 +0000"
      },
      "message": "2005-02-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* network.h: Declare new function set_nonblocking.  Indicate that\n\t  readn and writen are deprecated.\n\t* network.c: (set_nonblocking) New function to make a file descriptor\n\t  non-blocking, since it seems silly to have fcntl calls sprinkled\n\t  throughout the code.\n"
    },
    {
      "commit": "6ea7cdc593f7637e26da54192ef67245185994f3",
      "tree": "a4b5e80d3936a582d503750408395039ff273848",
      "parents": [
        "658b03a6bbb88357d841a99908d729e05e3b98c2"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Feb 15 17:10:03 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Tue Feb 15 17:10:03 2005 +0000"
      },
      "message": "Adjust size complexity estimates.  Still not quite right, but closer.\n"
    },
    {
      "commit": "658b03a6bbb88357d841a99908d729e05e3b98c2",
      "tree": "1ac1754274dfa07965c57f266de564e6522799a4",
      "parents": [
        "1e19315262b1eb1228af31f43aee7c9c3e9eefc6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 15 10:10:55 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 15 10:10:55 2005 +0000"
      },
      "message": "2005-02-15 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) Fix silly error wrt allocating\n\t  ibuf. Thanks Andrew.\n"
    },
    {
      "commit": "1e19315262b1eb1228af31f43aee7c9c3e9eefc6",
      "tree": "d7aedd6d94d06ddef166f62014369c845ee3defa",
      "parents": [
        "1dd13d41d09487c3d595b13a087b2ec87b7f4ce8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:53:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:53:05 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* Not all Linux netlink systems have IFLA_WIRELESS\n"
    },
    {
      "commit": "1dd13d41d09487c3d595b13a087b2ec87b7f4ce8",
      "tree": "981310e2b5a5a30b955f4dd2eca094b01a1b93e1",
      "parents": [
        "bfdc44af118e235e6979be42d4e4f2c1353f7bf0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:49:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:49:09 2005 +0000"
      },
      "message": "- oops, date was wrong in actual ChangeLog\n"
    },
    {
      "commit": "bfdc44af118e235e6979be42d4e4f2c1353f7bf0",
      "tree": "616da373ee6520cf47a7a278194730fec340cfef",
      "parents": [
        "050c013ac35337d86b03f140fb17d2e8e33a8baa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:48:42 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:48:42 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) use stream_recvmsg.\n\n2005-02-11 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_lsdb.c: Fix sum of checksums calculation.\n\n2005-02-09 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the\n\t  error message.\n\n2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Reduce structure padding by putting new u_char\n\t  field multicast_memberships in a better spot (grouped with\n\t  other u_char fields type and state).\n\n2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Improve passive_interface comment.  Add new\n\t  multicast_memberships bitmask to struct ospf_interface to track\n\t  active multicast subscriptions.  Declare new function\n\t  ospf_if_set_multicast.\n\t* ospf_interface.c: (ospf_if_set_multicast) New function to configure\n\t  multicast memberships properly based on the current\n\t  multicast_memberships status and the current values of the\n\t  ospf_interface state, type, and passive_interface status.\n\t  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is\n\t  now handled by ism_change_state\u0027s call to ospf_if_set_multicast).\n\t  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now\n\t  handled by ism_change_state).\n\t* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave\n\t  the DRouters multicast group (now handled by ism_change_state\u0027s call\n\t  to ospf_if_set_multicast).\n\t  (ism_change_state) Add call to ospf_if_set_multicast to change\n\t  multicast memberships as necessary to reflect the new interface state.\n\t* ospf_packet.c: (ospf_hello) When a Hello packet is received on a\n\t  passive interface: 1. Increase the severity of the error message\n\t  from LOG_INFO to LOG_WARNING; 2. Add more information to the error\n\t  message (packet destination address and interface address);\n\t  and 3. If the packet was sent to ospf-all-routers, then try\n\t  to fix the multicast group memberships.\n\t  (ospf_read) When a packet is received on an interface whose state\n\t  is ISM_Down, enhance the warning message to show the packet\n\t  destination address, and try to update/fix the multicast group\n\t  memberships if the packet was sent to a multicast address.\n\t  When a packet is received for ospf-designated-routers, but the\n\t  current interface state is not DR or BDR, then increase the\n\t  severity level of the error message from LOG_INFO to LOG_WARNING,\n\t  and try to fix the multicast group memberships.\n\t* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from active to passive.\n\t  (no_ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from passive to active.\n\t  (show_ip_ospf_interface_sub) Show multicast group memberships.\n\n2005-02-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.\n\n2005-02-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,\n\t  not for event ISM_InterfaceDown.  And improve the message by\n\t  adding the interface flags.\n\n2005-01-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_network.c: (ospf_sock_init) Save errno before calling\n\t  ospfd_privs.change.\n\n2005-01-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_packet_add) If oi-\u003eobuf is NULL, print\n\tan error message and return.\n\t(ospf_read) If the interface state is ISM_InterfaceDown, issue\n\ta warning message and ignore the packet.\n\n2005-01-10  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.h: Remove commented out definition of\n\tOSPF_MAX_PACKET; neither it or the uncommented one are used any more.\n\n\t* ospf_packet.c (ospf_make_ls_upd): Leave room for authentication\n\twhen deciding if an update will fit.\n\t(ospf_packet_authspace): Factor out calculation of size required\n\tfor authentication.\n\t(ospf_make_db_desc): Use ospf_max_packet, not OSPF_MAX_PACKET.\n\tDon\u0027t confuse readers that there is a macro.\n\n2004-12-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_network.c: Improve all setsockopt error messages to give detailed\n\t  information on the arguments.\n\n2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce severity of \"Negotiation done\"\n\t  messages from LOG_WARNING to LOG_INFO, since this seems to be\n\t  normal.\n\n2004-12-29 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Always look up the interface if\n\t  ospf_recv_packet returns NULL ifp, since some platforms such\n\t  as Solaris 8 appear to support ifindex retrieval but don\u0027t.\n\n2004-12-22 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_dump.c: Show debug configuration in vtysh.\n\t* ospf_vty.c: Fix \"show ip ospf\" output. Router can\u0027t be elected in\n\t  any case if it\u0027s configured as \"translate-never\".\n\t* ospf_lsdb.[ch]: New function to calculate sum of checksums.\n\t* ospf_vty.c: Bugfix to show really number of AS external LSAs, not\n\t  number of all LSAs with AS scope, this includes opaque as LSAs as\n\t  well, show this number separately. Show numbers and sums of\n\t  checksums for each type of LSAs.\n\t* ospf_lsa.c: Calculate checksum before putting LSA into database.\n\n2004-12-15 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Declare new function ospf_default_iftype.\n\t* ospf_interface.c: (ospf_default_iftype) New function to centralize\n\t  this logic in one place.\n\t* ospf_zebra.c: (ospf_interface_add) Use new function\n\t  ospf_default_iftype.\n\t* ospf_vty.c: (no_ip_ospf_network,config_write_interface) Fix logic\n\t  by using new function ospf_default_iftype.\n\n2004-12-11 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Should be static, not global.\n\t  (ospf_hello,ospf_db_desc,ospf_ls_upd,ospf_ls_ack) Improve warning\n\t  messages to include identifying information (e.g. router id).\n\t* ospf_nsm.c: (nsm_change_state) Improve info message to include\n\t  router id and state names.\n\n2004-12-09  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_apiserver.c (ospf_apiserver_term): Obtain struct\n\tospf_apiserver * from listnode.  Remove unused variables.  Follows\n\tsuggestion from Jay Fenlason.\n\n2004-12-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* *.c: Change level of debug messages to LOG_DEBUG.\n\n2004-12-07 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: (main) The 2nd argument to openzlog has been removed.\n\n2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc) Reduce priority on a debug message\n\t  from LOG_NOTICE to LOG_DEBUG.\n\n2004-12-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: (sigint) Use zlog_notice for termination message.\n\t  (main) Issue a startup announcement using zlog_notice.\n\n2004-11-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_db_desc_proc) Fix spelling of packet in warning\n\t  message and in comment.\n\t  (ospf_db_desc) Warning message that a packet is being discarded\n\t  should give the router id of the packet source.  Fix spelling\n\t  of packet in two warning messages.\n\t  (ospf_ls_req) Warning message that a link state request is being\n\t  discarded should give the router id of the neighbor that sent it.\n\n2004-11-26 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_main.c: Remove #include \"debug.h\" (was not being used, and\n\t  lib/debug.h has now been deleted).\n\n2004-11-25 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c: Make group to run as configurable.\n\n2004-11-15  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): Assume CMSG_SPACE is present\n\tand works (lib/zebra.h provides if OS doesn\u0027t).\n\n2004-11-15 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_{apiserver,te}.c: ospf_lsa_free\u0027s should be ospf_lsa_unlock.\n\n2004-11-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_ia.c: (process_summary_lsa) Only an ABR has any reason to\n          ignore stub area summary default. Even so it seems a strange\n          check, add a comment to that effect.\n\n2004-11-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd.c: (ospf_network_match_iface) revert to previous network\n          statement match behaviour.\n\n2004-11-02 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) remove iov arg, msg already points\n\t  to it. Add convenience pointer to msg-\u003emsg_iov[1], and use this,\n\t  fixing the unfortunate borkenness introduced in moving of this code\n\t  to a function.\n\t  (ospf_write) remove iovp and fix up call to previous.\n\t  (ospf_ls_upd_packet_new) cast size to long int - unfortunately\n          glibc\u0027s size_t format modifier is not portable.\n\n2004-10-31 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_write_frags) Add debug output\n\t  (ospf_write) set type early, so we can pass it to\n\t  ospf_write_frags.\n\t  (ospf_ls_upd_packet_new) print size in debug output when too large\n\t  packet is encountered.\n\t* ospf_zebra.c: (ospf_distribute_list_update_timer) Ugly misuse of\n\t  THREAD_ARG to store an integer, but it should at least use same\n          same type to retrieve the value. Assert value is sane.\n\n2004-10-22 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: (ospf_sock_init) call neutral setsock_ifindex()\n          function.\n        * ospf_packet.c: (ospf_read) manually look up ifindex\n          if system could not have returned one, eg openbsd, thanks to Rivo\n\t  Nurges for highlighting problem and fix.\n          Change setsockopt_pktinfo to setsockopt_ifindex.\n\n2004-10-19 Andrew J. Schorr \u003caschorr@telemetry-investments.com\u003e\n\n\t* ospf_snmp.c: (ospf_snmp_if_update) Fix logic to handle PtP links\n\t  with dedicated subnets properly.\n\t* ospf_lsa.c: (lsa_link_ptop_set) ditto.\n\t* ospfd.c: (ospf_network_match_iface) ditto.\n\t  (ospf_network_run) ditto.\n\t* ospf_interface.c: (ospf_if_is_configured) ditto.\n\t  (ospf_if_lookup_by_prefix) ditto.\n\t  (ospf_if_lookup_recv_if) ditto.\n\t* ospf_vty.c: (show_ip_ospf_interface_sub) Display the peer or\n\t  broadcast address if present.\n\n2004-10-13 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c: Unbreak compilation with ospfapi disabled.\n\t* ospf_snmp.c: Remove defaults used to initialize smux connection to\n\t  snmpd. Connection is initialized only if smux peer is configured.\n\n2004-10-12 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c, ospf_opaque.c: Unbreak ospfclient compilation - move\n\t  static variable from ospf_main.c into ospf_opaque.c.\n\n2004-10-11 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_main.c, ospf_opaque.c: Disable ospfapi init by default. New\n\t  command line switch to enable it.\n\n2004-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Assume header is in host order\n\t  remove ntohs that should have dissappeared. Take struct ip\n\t  as argument, caller has to know there\u0027s an IP header at start of\n\t  stream anyway.\n\t* ospf_dump.h: update declaration of ospf_ip_header_dump.\n\t* ospf_packet.c: (ospf_write) correct call to\n\t  sockopt_iphdrincl_swab_htosys which was munging the header.\n\t  (ospf_recv_packet) ip_len is needed for old OpenBSD fixup.\n\t  (ospf_read) sockopt_iphdrincl_swab_systoh ip header as soon as\n\t  we have it.\n\t* (global) Const char update and signed/unsigned fixes.\n\t* (various headers) size defines should be unsigned.\n\t* ospf_interface.h: remove duplicated defines, include the\n\t  authoritative header - though, these defines should probably\n          be moved to a dedicated header, or ospfd.h.\n\t* ospf_lsa.h: (struct lsa) ls_seqnum should be unsigned.\n\t* ospf_packet.c: (ospf_write) cast result of shift to unsigned.\n\n2004-10-08 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* *.[c|h]: Fix compiler warnings: make some strings const, signed -\u003e\n\t  unsigned, remove unused variables etc.\n\n2004-10-07  Greg Troxel  \u003cgdt@claude.ir.bbn.com\u003e\n\n\t* ospf_apiserver.c (ospf_apiserver_unregister_opaque_type): Don\u0027t\n\tuse of variable names \u0027node\u0027 and \u0027nextnode\u0027 to avoid possible\n\tconflict with list macros.  Move variable declaration inside for\n\tloop after a statement to top of function.\n\n2004-10-07 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_snmp.c: Missed list typedef update\n\t* ospf_dump.c: Include sockopt.h for header swab functions.\n\n2004-10-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: replace ospf_swap_iph_to... with\n          sockopt_iphdrincl_swab_...\n\n2004-10-03 James R. Leu \u003cjleu at mindspring.com\u003e\n\n\t* ospf_zebra.c: Read router id related messages from zebra daemon.\n\t  Schedule router-id update thread if it\u0027s changed.\n\t* ospfd.c: Remove own router-id selection function. Use router id from\n\t  zebra daemon if it isn\u0027t manually overriden in configuration.\n\n2004-09-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c: (ospf_ip_header_dump) Use HAVE_IP_HDRINCL_BSD_ORDER\n\t  Apply to offset too. Print ip_cksum, lets not worry about\n\t  possible 2.0.37 compile problems.\n\t* ospf_packet.c: (ospf_swap_iph_to{n,h}) Use\n\t  HAVE_IP_HDRINCL_BSD_ORDER.\n\t  (ospf_recv_packet) ditto.\n\t  (ospf_write) Fixup iov argument to ospf_write_frags.\n          (struct msghdr).msg_name is caddr_t on most platforms.\n\t  (ospf_recv_packet) ditto. And msg_flags is not always there\n          memset struct then set fields we care about rather than\n          initialise all fields individually.\n\n2004-09-26 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* ospf_abr.c, ospf_dump.c, ospf_lsa.c, ospf_packet.c, ospf_vty.c,\n\t  ospf_zebra.c: Fix compiler warnings.\n\n2004-09-24 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_apiserver.{c,h}: lists typedef removal cleanup.\n          update some list loops to LIST_LOOP. some miscellaneous indent\n          fixups.\n          (ospf_apiserver_unregister_opaque_type) fix listnode_delete of\n          referenced node in loop.\n \t  (ospf_apiserver_term) loops calling ospf_apiserver_free, which\n          deletes referenced nodes from apiserver_list, fixed.\n        * ospf_interface.h: lists typedef removal cleanup.\n        * ospf_opaque.{c,h}: lists typedef removal cleanup. update some list\n          loops to LIST_LOOP. miscellaneous style and indent fixups.\n        * ospf_te.{c,h}: ditto\n\t* ospf_packet.c: lists typedef removal cleanup.\n          (ospf_write) ifdef fragmentation support. move actual\n\t  fragmentation out to a new, similarly ifdefed, function.\n\t  (ospf_write_frags) fragmented write support, moved from previous.\n\n2004-09-23 Hasso Tepper \u003chasso at quagga.net\u003e\n\n\t* *.[c|h]: list -\u003e struct list *, listnode -\u003e struct listnode *.\n\n2004-09-12 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: Fix bugzilla #107\n \t  (ospf_packet_max) get rid of the magic 88 constant\n\t  (ospf_swab_iph_ton) new function. set ip header to network order,\n\t  taking BSDisms into account.\n\t  (ospf_swab_iph_toh) the inverse.\n\t  (ospf_write) Add support for IP fragmentation, will only work on\n\t  linux though, other kernels make it impossible. get rid of the\n\t  magic 4 constant.\n\t  (ospf_make_ls_upd) Bound check to end of stream, not to\n\t  interface mtu.\n\t  (ospf_ls_upd_packet_new) New function, allocate upd packet\n\t  taking oversized LSAs into account.\n\t  (ospf_ls_upd_queue_send) use ospf_ls_upd_packet_new to allocate,\n\t  rather than statically allocating mtu sized packet buffer, which\n\t  actually was wrong - it didnt take ip header into account, which\n\t  should not be included in packet buffer.\n\t  (ospf_ls_upd_send_queue_event) minor tweaks and remove\n\t  TODO comment.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_spf_calculate): Many more comments and debug\n\t  print statements.  New function ospf_vertex_dump used in debugging.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.h (struct vertex): Comments for flags and structure members.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_route.c: When finding an alternate route, log cost as well.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_interface.c (ospf_lookup_if_params): Initialize af in\n\t  struct prefix allocated on stack.\n\n2004-08-31  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send\n\t  acks to AllSPFRouters, rather than All-DR.\n\n2004-08-27  Hasso Tepper  \u003chasso at quagga.net\u003e\n\n\t* ospf_vty.c: Don\u0027t print ospf network type under interface only\n\t  if interface is in broadcast mode and interface type really is\n\t  broadcast. Fixes Bugzilla #108.\n\n2004-08-27  David Wiggins  \u003cdwiggins@bbn.com\u003e\n\n\t* ospf_spf.c (ospf_nexthop_calculation): Initialize address family\n\t  in on-stack struct prefix_ipv4.  Fixes point-to-multipoint SPF\n\t  calculation.\n\n2004-08-26  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): adjust size declaration of\n\t  buffer used to get interface index so that it compiles on other\n\t  than Linux and includes the required alignment space.  Probably\n\t  this was only working on sparc/sparc64 because most of\n\t  sockaddr_dl was not being written.\n\n2004-08-19 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: update to match sockopt renames.\n\n2004-08-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_spf.c: (ospf_spf_consider_nexthop) Add comment about issue.\n\t  Compare only against list head - all nexthops must be same cost\n\t  anyway, fixes a reference-listnode-after-delete bug noted by\n\t  Kir Kostuchenko.\n\t  (ospf_nexthop_calculation) Use ospf_spf_consider_nexthop for all\n\t  candidates attached to root.\n\n2004-07-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * ospf_packet.c: (ospf_ls_upd_send_queue_event) fix thinko from\n          last fix for ospfd wedging due to oversize LSAs: dont list loop on\n          ospf_ls_upd_queue_send() - guaranteed segfault.\n\n2004-07-27 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_opaque.c: (ospf_opaque_lsa_flush_schedule) do not NULL out\n\t  the LSA as then free_opaque_info_per_id() can never unlock (and\n\t  free) the LSA. Reported by Gunnar Stigen.\n\n2004-07-23 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: Replace PKTINFO/RECVIF with call to\n\t  setsockopt_pktinfo\n\t* ospf_packet.c: Use getsockopt_pktinfo_ifindex and\n\t  SOPT_SIZE_CMSG_PKTINFO_IPV4.\n\n2004-07-14 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (ospf_ls_upd_send_queue_event) Partial fix for\n\t  problem reported by Peter Frost amongst others, where function\n\t  will spin indefinitely if update list contains LSAs greater than\n\t  MTU-headers or other condition leading to update list never being\n          cleared. Problem of what to do with these LSAs remains.\n          (ospf_make_ls_upd) add comment about large LSA problem,\n\t  indentation cleanup.\n\n2004-07-01  Greg Troxel  \u003cgdt@fnord.ir.bbn.com\u003e\n\n\t* Makefile.am (lib_LTLIBRARIES): make libospf shared\n\n2004-06-30  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* Makefile.am: Add shlib support.\n\n2004-06-10 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* *: Removed ifdefs HAVE_NSSA.\n\n2004-06-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_dump.c,ospf_lsa.c: Fix typos of merge of previous.\n\t  ospf_flood.c: (ospf_process_self_originated_lsa) fix zlog format\n\n2004-05-31 Sagun Shakya \u003csagun.shakya@sun.com\u003e\n\n\t* ospf_dump.c: (ospf_lsa_header_dump) LOOKUP can return null if\n\t  index is out of range.\n\t  ospf_flood.c: endianness fix\n\t  ospf_lsa.c: Missing ntohl\u0027s on (struct lsa *)-\u003edata-\u003els_seqnum\n\t  in various places.\n\n2004-05-10 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_zebra.c, ospfd.c: Move ospf_prefix_list_update() function\n\t  to ospf_zebra.c from ospfd.c and add redistribution updates if\n\t  route-map is used in redistribution.\n\t* ospf_main.c: Remove now useless call to ospf_init().\n\n2004-05-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_zebra.c: Sync with lib/zclient changes\n\n2004-05-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_network.c: (ospf_sock_init) Check whether IP_HDRINCL is\n\t  defined. Warn at compile and runtime. Use\n\t  IPTOS_PREC_INTERNETCONTROL otherwise.\n\t* ospf_packet.c:  (ospf_associate_packet_vl) cleanup, move\n\t  some of the checks up to ospf_read, return either a\n\t  virtual link oi, or NULL.\n\t  (ospf_read) Cleanup, make it responsible for checks. Remove\n\t  the nbr lookup - moved to ospf_neighbor. Adjust all nbr\n\t  lookups to use new wrappers exported by ospf_neighbor.\n\t* ospf_neighbor.h: Add ospf_neigbour_get and ospf_nbr_lookup.\n\t* ospf_neighbor.c: (ospf_neigbour_get) Index ospf_interface\n\t  neighbour table by router-id for virtual-link ospf_interfaces,\n\t  not by peer_addr (which breaks for asymmetric vlinks)\n\t  (ospf_nbr_lookup) add a wrapper for nbr lookups to deal with\n\t  above.\n\t* ospf_interface.c: (ospf_vl_set_params) Catch changes of interface\n\t  address for either end of a virtual-link, and hence potential cost\n\t  changes.\n\n2004-04-22 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_zebra.c: Don\u0027t ignore reject/bh routes, it\u0027s the only way\n\t  to \"summarize\" routes in ASBR at the moment.\n\n2004-04-20 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospfd.c: Unset NP flag if area is going to be normal or stub.\n\t  Fixes UNH OSPF_NSSA.1.2a comment.\n\t* ospf_abr.c: Originate default into stub/nssa area even if\n\t  summaries are disabled.\n\t* ospf_zebra.c: Don\u0027t attempt to redistribute 127.0.0.0/8.\n\n2004-04-19 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: Don\u0027t warn that export- and import-list can\u0027t be\n\t  configured to backbone area if they are applied and are working\n\t  fine.\n\n2004-02-19 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* ospf_packet.c: Don\u0027t drop packets in Solaris x86.\n\t  [quagga-dev 1005].\n\n2004-03-18 Amir Guindehi \u003camir@datacore.ch\u003e\n\n\t* ospf_opaque.c: Attempt to correct the incorrect behavior of\n\tQuagga\u0027s ospfd in the special situation that a node\u0027s opaque\n\tcapability has changed as \"ON -\u003e OFF -\u003e ON\". [quagga-dev 843].\n\n2004-02-19 Sowmini Varadhan \u003csowmini.varadhan@sun.com\u003e\n\n\t* ospf_abr.c: (ospf_abr_update_aggregate) UNH 3.12b,c, address range\n\t  should be configured with the highest cost path within the range,\n\t  not lowest.\n\n2004-02-17 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_zebra.c: (ospf_interface_delete) Do not delete the interface\n\t  params, nor the interface structure, if an interface delete\n\t  message is received from zebra.\n\t* ospf_interface.c: (ospf_if_delete_hook) Delete the interface\n\t  params and interface, ie that which was previously removed in\n\t  (ospf_interface_delete) above.\n\n2004-02-11 Hasso Tepper \u003chasso@estpak.ee\u003e\n\t* ospf_interface.c, ospf_zebra.c: Don\u0027t attempt to read path-\u003eoi-\u003eifp\n\t  if oi doesn\u0027t exist any more.\n\n2004-02-11 Vadim Suraev \u003cvadim.suraev@terayon.com\u003e\n\t* ospf_packet.c (ospf_ls_upd): Router should flush received network\n\t  LSA if it was originated with older router-id ([zebra 14710] #6).\n\n2003-12-08 Mattias Amnefelt \u003cmattiasa@kth.se\u003e\n\n\t* ospf_packet.c: (ospf_recv_packet) OpenBSD now leaves iph.ip_len\n\t  network byte order.\n\n2003-12-05  Greg Troxel  \u003cgdt@poblano.ir.bbn.com\u003e\n\n\t* ospfd.c (ospf_network_match_iface): Rewrite code for clarity\n\twhile trying not to change semantics.  Add ifdefed-out code to\n\tavoid matching ppp interfaces whose destination address does not\n\talso match the prefix under consideration, to help out people with\n\tproblems due to as-yet-unfixed bugs with p2p interfaces coming and\n\tgoing.\n\n2003-07-25 kamatchi soundaram \u003ckamatchi@tdd.sj.nec.com\u003e\n\n        * ospf_packet.c (ospf_ls_upd_send_queue_event): get next route\n          node in body of the loop to avoid chance that route node\n          is unlocked and deleted before the next iteration tries to\n          get next route node.\n\n2003-05-24 Kenji Yabuuchi\n\n\t* ospf_interface.c(ospf_if_lookup_recv_if): Use the most specific\n\t  match for interface lookup.\n\n2003-05-18 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: Show NSSA LSA route info in \"show ip ospf database\"\n\toutput\n\n2003-05-16 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_lsa.c: Fix handling of NSSA\n\n2003-04-23 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* ospf_vty.c: fix \"router xxx\" node commands in vtysh\n\n2003-04-19 Hasso Tepper \u003chasso@estpak.ee\u003e\n\n\t* {ospf_abr,ospfd}.c: area id\u0027s DECIMAL -\u003e ADDRESS\n\t* ospf_routemap.c: sync daemon\u0027s route-map commands to have same\n\t  syntax.\n\n2003-04-19 Sergey Vyshnevetskiy \u003cserg@vostok.net\u003e\n\n\t* ospf_packet.c: Add missing param to zlog\n\t* ospf_flood.c: remove unused vars\n\n2003-04-17 Denis Ovsienko \u003czebra@pilot.org.ua\u003e\n\n\t* ospf_interface.c: fix incorrect memset\n\n2003-04-10 Amir Guindehi \u003camir@datacore.ch\u003e\n\n\t* ospf_lsa.[ch]: opaque LSA fix, use ospf_lookup.\n\n2003-04-03 David Watson \u003cdwatson@eecs.umich.edu\u003e\n\n\t* ospf_lsa.c: byte order fix\n\n2002-03-17  Amir Guindehi \u003camir@datacore.ch\u003e\n\n        * ospf_apiserver.[ch]: Merge Ralph Keller\u0027s OSPFAPI support.\n        * ospf_api.[ch]: Merge Ralph Keller\u0027s OSPFAPI support.\n\t* ospfclient: OSPFAPI demonstration client.\n\n2003-01-23  Masahiko Endo \u003cendo@suri.co.jp\u003e\n\n\t* ospf_ism.c: NSM event schedule bug fix.\n\n2002-10-30  Greg Troxel \u003cgdt@ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_make_md5_digest): MD5 length fix.\n\n2002-10-23  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_opaque.c: Update Opaque LSA patch.\n\n2002-10-23  Ralph Keller \u003ckeller@tik.ee.ethz.ch\u003e\n\n\t* ospf_vty.c (show_ip_ospf_database): Fix CLI parse.\n\n2002-10-23  Juris Kalnins \u003cjuris@mt.lv\u003e\n\n\t* ospf_interface.c (ospf_if_stream_unset): When write queue\n\tbecomes empty stop write timer.\n\n2002-10-10  Greg Troxel \u003cgdt@ir.bbn.com\u003e\n\n\t* ospf_packet.c (ospf_check_md5_digest): Change \u003e\u003d to \u003e to make it\n\tconform to RFC.\n\n2002-07-07  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.93 released.\n\n2002-06-19  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_spf.c (ospf_nexthop_calculation): Add NULL set to oi and\n\tcheck of l2.  Reported by: Daniel Drown \u003cdan-zebra@drown.org\u003e\n\t(ospf_lsa_has_link): LSA Length calculation fix.  Reported by:\n\tPaul Jakma \u003cpaulj@alphyra.ie\u003e.\n\n\t* ospfd.c (ospf_if_update): Fix nextnode reference bug.  Reported\n\tby: juris@mt.lv.\n\n2002-01-21  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospfd.c: Merge [zebra 11445] Masahiko ENDO\u0027s Opaque-LSA support.\n\n2001-08-27  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_interface.c (ospf_add_to_if): Use /32 address to register\n\tOSPF interface information.\n\t(ospf_delete_from_if): Likewise.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Likewise.\n\n2001-08-23  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_zebra.c (ospf_redistribute_unset): When redistribute type\n\tis OSPF, do not unset redistribute flag.\n\n2001-08-19  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.92a released.\n\n2001-08-15  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* zebra-0.92 released.\n\n2001-08-12  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospfd.c (ospf_config_write): auto-cost reference-bandwidth\n\tconfiguration display.\n\n2001-07-24  David Watson \u003cdwatson@eecs.umich.edu\u003e\n\n\t* ospf_spf.c (ospf_spf_next): Modify ospf_vertex_add_parent to\n\tcheck for an existing link before connecting the parent and child.\n\tospf_nexthop_calculation is also modified to check for duplicate\n\tentries when copying from the parent.  Finally, ospf_spf_next\n\tremoves duplicates when it merges two equal cost candidates.\n\n2001-07-23  itojun@iijlab.net\n\n\t* ospfd.c (show_ip_ospf_neighbor): Check ospf_top before use it\n\t[zebra 8549].\n\n2001-07-23  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_packet.c (ospf_write): Remove defined(__OpenBSD__) to make\n\tit work on OpenBSD.\n\n2001-06-26  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_zebra.c (config_write_ospf_default_metric): Display\n\tdefault-metric configuration.\n\n2001-06-18  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_ia.h (OSPF_EXAMINE_SUMMARIES_ALL): Remove old macros.\n\n2001-05-28  Kunihiro Ishiguro  \u003ckunihiro@ipinfusion.com\u003e\n\n\t* ospf_snmp.c (ospfIfEntry): Fix interface lookup bug to avoid\n\tcrush.\n\t(ospfIfMetricEntry): Likewise.\n\n2001-03-18  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_read): Fix typo.  Reported by: \"Jen B\n\tLin\u0027Kova\" \u003cjen@stack.net\u003e.\n\n2001-03-15  Gleb Natapov \u003cgleb@nbase.co.il\u003e\n\n\t* ospf_interface.c (ip_ospf_network): Set interface parameter.\n\t(interface_config_write): Add check for OSPF_IFTYPE_LOOPBACK.\n\n\t* ospf_zebra.c (ospf_interface_add): Set interface parameter.\n\n2001-02-21  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): Solaris also need to add\n\t(iph.ip_hl \u003c\u003c 2) to iph.ip_len.\n\n2001-02-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospfd.h (OSPF_LS_REFRESH_TIME): Fix OSPF_LS_REFRESH_TIME value.\n\tSuggested by: David Watson \u003cdwatson@eecs.umich.edu\u003e.\n\n\t* ospf_zebra.c (zebra_init): Remove zebra node.\n\n\t* ospfd.c (ospf_area_range_set): Function name is changed from\n\tospf_ara_range_cmd.\n\t(ospf_area_range_unset): New function which separated from DEFUN.\n\tNew commands are added:\n\t\"no area A.B.C.D range A.B.C.D/M advertise\"\n\t\"no area \u003c0-4294967295\u003e range A.B.C.D/M advertise\"\n\t\"no area A.B.C.D range A.B.C.D/M not-advertise\"\n\t\"no area \u003c0-4294967295\u003e range A.B.C.D/M not-advertise\"\n\n\t* ospf_lsa.c (ospf_lsa_more_recent): Fix previous change.\n\n2001-02-08  Matthew Grant \u003cgrantma@anathoth.gen.nz\u003e\n\n\t* ospf_network.c (ospf_if_add_allspfrouters): Use\n\tsetsockopt_multicast_ipv4.\n\t(ospf_if_drop_allspfrouters): Likewise.\n\n\t* ospf_lsa.c (ospf_router_lsa_install): Add rt_recalc flag.\n\t(ospf_network_lsa_install): Likewise.\n\t(ospf_summary_lsa_install): Likewise.\n\t(ospf_summary_asbr_lsa_install): Likewise.\n\t(ospf_external_lsa_install): Likewise.\n\t(ospf_lsa_install): Call ospf_lsa_different to check this LSA is\n\tnew one or not.\n\n2001-02-08  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_zebra.c (ospf_interface_delete): Do not free interface\n\tstructure when ospfd receive interface delete message to support\n\tpseudo interface.\n\n2001-02-01  Dick Glasspool \u003cdick@ipinfusion.com\u003e\n\n\t* ospfd.c (area_range_notadvertise): Change area range \"suppress\"\n\tcommand to \"not-advertise\".\n\n\t* ospfd.h (OSPF_LS_REFRESH_TIME): Change OSPF_LS_REFRESH_TIME from\n\t1800 to 60.\n\n\t* ospf_abr.c (ospf_abr_update_aggregate): When update_aggregate is\n\tupdating the area-range, the lowest cost is now saved.\n\n\t* ospf_lsa.c (ospf_lsa_more_recent): Routing to compare sequence\n\tnumbers rather than creating overflow during calculation.\n\n2001-02-01  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* zebra-0.91 is released.\n\n2001-01-31  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_db_desc_proc): Do not continue process when\n\tNSM_SeqNumberMismatch is scheduled.\n\t(ospf_ls_req): Free ls_upd when return from this function.\n\t(ospf_ls_upd_timer): When update list is empty do not call\n\tospf_ls_upd_send().  Suggested by: endo@suri.co.jp (Masahiko\n\tEndo).\n\n2001-01-26  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_lsa.c (ospf_maxage_flood): Flood LSA when it reaches\n\tMaxAge.  RFC2328 Section 14.\n\t(ospf_maxage_lsa_remover): Call above function during removing\n\tMaxAge LSA.\n\n2001-01-26  Dick Glasspool \u003cdick@ipinfusion.com\u003e\n\n\t* ospf_flood.c (ospf_flood_through_as): Function is updated for\n\tNSSA Translations now done at ospf_abr.c with no change in P-bit.\n\n\t* ospf_lsa.c (ospf_get_nssa_ip): Get 1st IP connection for Forward\n\tAddr.\n\t(ospf_install_flood_nssa):  Leave Type-7 LSA at Lock Count \u003d 2.\n\n\t* ospf_ase.c (ospf_ase_calculate_route): Add debug codes.\n\n\t* ospf_abr.c (ospf_abr_translate_nssa): Recalculate LSA checksum.\n\n\t* ospf_packet.h (OSPF_SEND_PACKET_LOOP): Added for test packet.\n\n\t* ospf_dump.c (ospf_lsa_type_msg): Add OSPF_GROUP_MEMBER_LSA and\n\tOSPF_AS_NSSA_LSA.\n\n\t* ospfd.c (data_injection): Function to inject LSA.  This is\n\tdebugging command.\n\n2001-01-11  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_route.c (ospf_route_match_same): Remove function.\n\t(ospf_route_match_same_new): Renamed to ospf_route_match_same.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Add check for\n\toi-\u003eaddress.  Suggested by Matthew Grant\n\t\u003cgrantma@anathoth.gen.nz\u003e.\n\t(ospf_zebra_add): Remove function.\n\t(ospf_zebra_add_multipath): Rename to ospf_zebra_add.\n\n\t* ospf_interface.c: Remove HAVE_IF_PSEUDO part.\n\n\t* ospf_zebra.c: Likewise.\n\n2001-01-10  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_ase.c: Remove OLD_RIB part.\n\n\t* ospf_route.c: Likewise.\n\n\t* zebra-0.90 is released.\n\n\t* ospf_packet.c (ospf_recv_packet): Use ip_len adjestment code to\n\tNetBSD.\n\n2001-01-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_route.c (ospf_route_delete): Use\n\tospf_zebra_delete_multipath.\n\n2001-01-09  Matthew Grant \u003cgrantma@anathoth.gen.nz\u003e\n\n\t* ospf_interface.c (ospf_if_cleanup): Function name is renamed\n\tfrom ospf_if_free().  Rewrite whole procudure to support primary\n\taddress deletion.\n\n\t* ospf_zebra.c (ospf_interface_address_delete): Add primary\n\taddress deletion process.\n\n2001-01-09  Kunihiro Ishiguro  \u003ckunihiro@zebra.org\u003e\n\n\t* ospf_packet.c (ospf_recv_packet): OpenBSD has same ip_len\n\ttreatment like FreeBSD.\n\n2001-01-09  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_packet.c (ospf_recv_packet): FreeBSD kernel network code\n\tstrips IP header size from receiving IP Packet.  So we adjust\n\tip_len to whole IP packet size by adding IP header size.\n\n2001-01-08  endo@suri.co.jp (Masahiko Endo)\n\n\t* ospf_network.c (ospf_serv_sock): When socket() is failed return\n"
    },
    {
      "commit": "050c013ac35337d86b03f140fb17d2e8e33a8baa",
      "tree": "7241e3972e2116f67b762a37305c31ee7d8d9671",
      "parents": [
        "f2e6c429375adf0d3c5deaa409734d5d41ac15ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n\t* stream.h: Add stream_copy, stream_dup, stream_recvmsg.\n\t  Add comment describing struct stream abstraction, and various\n\t  other comments.\n\t  Deprecate several unsafe/ambigious macros.\n\t  Add STREAM_WRITEABLE and STREAM_READABLE.\n\t  Add (stream_getl_from) for symmetry.\n\t  Update stream_forward_{endp,getp} to use size_t offset.\n\t  Make stream data a 0 length array, rather than a seperate malloc.\n\t* stream.c: Add consistency checks. Update to follow stream.h\n\t  changes.\n\t  (stream_new) Alloc stream+data in one go.\n\t  (stream_copy) new function, copy a stream.\n\t  (stream_dup) new function, dup a stream.\n\t  (stream_recvmsg) new function, recvmsg data into a stream.\n\t  (stream_empty) no need to check getp \u003d\u003d 0.\n"
    },
    {
      "commit": "f2e6c429375adf0d3c5deaa409734d5d41ac15ce",
      "tree": "73c056492bff8eb06eb7350909d0b2fa8baba772",
      "parents": [
        "082253f5d08577e2c7b61ed2302be88295b459eb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "message": "2005-02-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n"
    },
    {
      "commit": "082253f5d08577e2c7b61ed2302be88295b459eb",
      "tree": "4a359027a29c673844f89bd36e706baaa5326db4",
      "parents": [
        "5d6191ee84cc4b292f19f287a5c4fc45f7dd9b84"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Feb 11 08:31:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Feb 11 08:31:54 2005 +0000"
      },
      "message": "\t* ospf_lsdb.c: Fix sum of checksums calculation.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "5d6191ee84cc4b292f19f287a5c4fc45f7dd9b84",
      "tree": "9db0ef2debaf3a0b18bb5955456264bf36c3dab6",
      "parents": [
        "9985f83ce7102f64b15f744b60320f8d14a8a5ff"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Feb 10 16:38:09 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Thu Feb 10 16:38:09 2005 +0000"
      },
      "message": "notes on what files contain what, and an initial stab at understanding\nhow much storage is required.\n"
    },
    {
      "commit": "9985f83ce7102f64b15f744b60320f8d14a8a5ff",
      "tree": "344629bdc2b4a7d53b8d7ca1705c9be2ca282d18",
      "parents": [
        "083ee9d9cdbf72a452b9af96e62d0625ea712cd9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "message": "2005-02-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Update code to match stream.h changes.\n\t  stream_get_putp effectively replaced with stream_get_endp.\n\t  stream_forward renamed to stream_forward_getp.\n\t  stream_forward_endp introduced to replace some previous\n\t  setting/manual twiddling of putp by daemons.\n\t* lib/stream.h: Remove putp. Update reference to putp with endp.\n\t  Add stream_forward_endp, which daemons were doing manually.\n\t  Rename stream_forward to stream_forward_getp.\n\t  lib/stream.c: Remove/update references to putp.\n\t  introduce stream_forward_endp.\n"
    },
    {
      "commit": "083ee9d9cdbf72a452b9af96e62d0625ea712cd9",
      "tree": "25843a21e1d0ed9dd9125a8ed117e895b51bd432",
      "parents": [
        "8cfde37647b40640667ffb38c32b575da1476586"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 09 15:35:50 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 09 15:35:50 2005 +0000"
      },
      "message": "2005-02-09 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_write) If sendmsg fails, give more info in the\n\t  error message.\n"
    },
    {
      "commit": "8cfde37647b40640667ffb38c32b575da1476586",
      "tree": "c62e41ee92ce48b0887047f1028138953b480862",
      "parents": [
        "548e6f7d58a08e28132936431bba75428412857f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:59:16 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:59:16 2005 +0000"
      },
      "message": "2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Reduce structure padding by putting new u_char\n\t  field multicast_memberships in a better spot (grouped with\n\t  other u_char fields type and state).\n"
    },
    {
      "commit": "548e6f7d58a08e28132936431bba75428412857f",
      "tree": "4d168f4ea30a0fedc496ec158ac6fb58b2cd14cd",
      "parents": [
        "ba6454ec1fd1ca7266b10eba07d016becb22db74"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:57:25 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:57:25 2005 +0000"
      },
      "message": "2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Change macro definitions SET_FLAG and UNSET_FLAG\n\t  to use compound assignment operators (aesthetic change).\n"
    },
    {
      "commit": "ba6454ec1fd1ca7266b10eba07d016becb22db74",
      "tree": "1ee3f882924db44883e1023e5081741e10d86b3a",
      "parents": [
        "3a9eb091494f7afb8ce6bf82b8e1a20bb2a8f10f"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:37:30 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Feb 08 15:37:30 2005 +0000"
      },
      "message": "2005-02-08 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_interface.h: Improve passive_interface comment.  Add new\n\t  multicast_memberships bitmask to struct ospf_interface to track\n\t  active multicast subscriptions.  Declare new function\n\t  ospf_if_set_multicast.\n\t* ospf_interface.c: (ospf_if_set_multicast) New function to configure\n\t  multicast memberships properly based on the current\n\t  multicast_memberships status and the current values of the\n\t  ospf_interface state, type, and passive_interface status.\n\t  (ospf_if_up) Remove call to ospf_if_add_allspfrouters (this is\n\t  now handled by ism_change_state\u0027s call to ospf_if_set_multicast).\n\t  (ospf_if_down) Remove call to ospf_if_drop_allspfrouters (now\n\t  handled by ism_change_state).\n\t* ospf_ism.c: (ospf_dr_election) Remove logic to join or leave\n\t  the DRouters multicast group (now handled by ism_change_state\u0027s call\n\t  to ospf_if_set_multicast).\n\t  (ism_change_state) Add call to ospf_if_set_multicast to change\n\t  multicast memberships as necessary to reflect the new interface state.\n\t* ospf_packet.c: (ospf_hello) When a Hello packet is received on a\n\t  passive interface: 1. Increase the severity of the error message\n\t  from LOG_INFO to LOG_WARNING; 2. Add more information to the error\n\t  message (packet destination address and interface address);\n\t  and 3. If the packet was sent to ospf-all-routers, then try\n\t  to fix the multicast group memberships.\n\t  (ospf_read) When a packet is received on an interface whose state\n\t  is ISM_Down, enhance the warning message to show the packet\n\t  destination address, and try to update/fix the multicast group\n\t  memberships if the packet was sent to a multicast address.\n\t  When a packet is received for ospf-designated-routers, but the\n\t  current interface state is not DR or BDR, then increase the\n\t  severity level of the error message from LOG_INFO to LOG_WARNING,\n\t  and try to fix the multicast group memberships.\n\t* ospf_vty.c: (ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from active to passive.\n\t  (no_ospf_passive_interface) Call ospf_if_set_multicast for\n\t  any ospf interface that may have changed from passive to active.\n\t  (show_ip_ospf_interface_sub) Show multicast group memberships.\n"
    },
    {
      "commit": "3a9eb091494f7afb8ce6bf82b8e1a20bb2a8f10f",
      "tree": "82408688827d3dbae81b240aa1da60b05201fea0",
      "parents": [
        "b14ee00b7f23f216b5f159e88de915b8755b97d6"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 08 11:29:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Feb 08 11:29:41 2005 +0000"
      },
      "message": "2005-02-08 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospf_packet.c: (various) Remove unneeded stream_set_putp abuse.\n"
    },
    {
      "commit": "b14ee00b7f23f216b5f159e88de915b8755b97d6",
      "tree": "9ca5e20d7ddb00d1e2c40f3ed0f2a68c3b0ba876",
      "parents": [
        "c4c7d0c48b1219d7ed9ed1377cea1be239c45d5d"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Feb 04 23:42:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Feb 04 23:42:41 2005 +0000"
      },
      "message": "2005-02-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ripd.c: Untangle the construction of RIP auth data.\n\t  (rip_auth_prepare_str_send) new helper function, prepare\n\t  correct key string.\n\t  (rip_auth_simple_write) new helper, write out the\n\t  rip simple password auth psuedo-RTE.\n\t  (rip_auth_md5_ah_write) new helper, write out the\n\t  MD5 auth-header psuedo-RTE.\n\t  (rip_auth_header_write) new helper, write out correct\n\t  auth header data / psuedo-RTE.\n\t  (rip_auth_md5_set) rip out the memmove and writing of the\n\t  auth header psuedo-RTE. So that all that is left is to\n\t  write the trailing auth digest, and update digest offset\n\t  field in the original header.\n\t  (rip_write_rte) rip out writing of RIP header, writing of\n\t  simple auth data psuedo-RTE. Make it do what its name suggests,\n\t  write out actual RTEs.\n\t  (rip_output_process) remove the incorrect additional decrements\n\t  of rtemax. Prepare the auth_str, which simple or MD5 auth will\n\t  need. Move write out of RIP header and auth data to inside the\n\t  loop. Adjust paramaters as required.\n"
    },
    {
      "commit": "c4c7d0c48b1219d7ed9ed1377cea1be239c45d5d",
      "tree": "2dda4470cf7a5b0a5277edc06484f0065ef7bcc1",
      "parents": [
        "c70257d0afa4df7c838dc7c8f5948baca5f12657"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 19:22:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 19:22:05 2005 +0000"
      },
      "message": "2005-02-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (zlog_signal,zlog_backtrace_sigsafe) Eliminate use of fileno()\n\t  since it is not async-signal-safe.\n\t  (_zlog_assert_failed) Rewrite crashlog logic more compactly.\n\t  (zlog_set_file,zlog_reset_file,zlog_rotate) Update logfile_fd\n\t  for use in signal handler.\n"
    },
    {
      "commit": "c70257d0afa4df7c838dc7c8f5948baca5f12657",
      "tree": "fb5c1333bd7cf222c3c7054b97c0c6cecc350ec9",
      "parents": [
        "1e2213541bbda26c49667b699a333d87bcc0f2e6"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 17:12:01 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 17:12:01 2005 +0000"
      },
      "message": "2005-02-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* basic.texi: Add note about last-resort crash logging to /var/tmp\n\t  when file logging is not configured.\n\t* quagga.info: updated build of autogenerated file\n"
    },
    {
      "commit": "1e2213541bbda26c49667b699a333d87bcc0f2e6",
      "tree": "23ed10aeadeb22a4f3e40c794a829604cc25cb7e",
      "parents": [
        "847947f20b152f0b64057a7115e118b44d238b5c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 16:42:40 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 03 16:42:40 2005 +0000"
      },
      "message": "2005-02-03 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* log.c: (syslog_sigsafe) Reduce scope of syslog_fd: it is accessed\n\t  inside this function only.\n\t  (open_crashlog) New function to open /var/tmp/quagga.\u003cdaemon\u003e.crashlog\n\t  with flags O_WRONLY|O_CREAT|O_EXCL to save some crash info.\n\t  (zlog_signal,_zlog_assert_failed) Increase logging priority from\n\t  LOG_ERR to LOG_CRIT.  If no file logging is configured, try to use\n\t  open_crashlog to create a crash logfile.\n\t  (zlog_backtrace_sigsafe) If a crashlog file descriptor is open,\n\t  dump a backtrace to that file.\n"
    },
    {
      "commit": "847947f20b152f0b64057a7115e118b44d238b5c",
      "tree": "68f726878177a594e258ce5312b7937951d3b421",
      "parents": [
        "dd4c593fb88b7c6cf5f27aa8a8286644743ed58a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 02 18:38:48 2005 +0000"
      },
      "message": "2005-02-02 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_packet.c: (ospf_read) Fix bug: must check for state ISM_Down,\n\t  not for event ISM_InterfaceDown.  And improve the message by\n\t  adding the interface flags.\n\t* if.h: Declare if_flag_dump.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "dd4c593fb88b7c6cf5f27aa8a8286644743ed58a",
      "tree": "962cd10bb5bf92a42285f3bb88cbb3ef3f33f595",
      "parents": [
        "c1643bb7d7de6c030a61983be8e0925160a9e427"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 17:15:34 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 17:15:34 2005 +0000"
      },
      "message": "\t* bgp_vty.c: Deprecate \"neighbor transparent-as\" and \"neighbor\n\t  transparent-nexthop\" commands.\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "c1643bb7d7de6c030a61983be8e0925160a9e427",
      "tree": "4be029bfbc3ec5d53996966824a5a88c5c2a0395",
      "parents": [
        "fee6e4e4547783b915838f6868d6cd694f6cee21"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 16:43:17 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 16:43:17 2005 +0000"
      },
      "message": "\t* bgp_routemap.c: New route-map command - \"match ip route-source\".\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "fee6e4e4547783b915838f6868d6cd694f6cee21",
      "tree": "2fb39322113433ab2d5e42042c1b9e397779b6c1",
      "parents": [
        "6ffd2079596c232856dda0d56fddd9610e8d61fe"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 16:29:31 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 16:29:31 2005 +0000"
      },
      "message": "\t* bgp_clist.[ch], bgp_route.c, bgp_routemap.c, bgp_vty.c:\n\t  community-list cleanup.\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "6ffd2079596c232856dda0d56fddd9610e8d61fe",
      "tree": "d5c4906cbfb4af98a8c73be667a9ab2369a6c64b",
      "parents": [
        "93406d87e68a0e9cf5ce0240461395cd59c143b6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 14:50:11 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 14:50:11 2005 +0000"
      },
      "message": "\t* bgp_route.c, bgp_vty.c, bgp_zebra.c, bgpd.[ch]: \"enforce-multihop\"\n\t  -\u003e \"disable-connected-check\".\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "93406d87e68a0e9cf5ce0240461395cd59c143b6",
      "tree": "b1cb2bae2eca7c5206565f73169cf43bf8cf892d",
      "parents": [
        "c9502438e822199370fe87100c725e1092e943c1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 14:40:33 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Feb 02 14:40:33 2005 +0000"
      },
      "message": "\t* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,\n\t  bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. \"bgp\n\t  graceful-restart\" commands added. Show numbers of individual\n\t  messages in \"show ip bgp neighbor\" command. Final pieces of graceful\n\t  restart.\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "c9502438e822199370fe87100c725e1092e943c1",
      "tree": "bfeb6babd5d0ba6037ab2aa3a544b2d855e4e8d9",
      "parents": [
        "3d515fd9af9f126667a9c2da9c2f40c4c37c28df"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Feb 01 22:01:48 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Feb 01 22:01:48 2005 +0000"
      },
      "message": "\t* bgp_open.c, bgp_packet.c, bgp_vty.c, bgpd.[ch]: Remove \"no neighbor\n\t  capability route-refresh\" commands. Route refresh capability is sent\n\t  anyway now. Preserve dummy deprecated commands.\n\n\t[merge from GNU Zebra]\n"
    },
    {
      "commit": "3d515fd9af9f126667a9c2da9c2f40c4c37c28df",
      "tree": "c107224556ed7678d7a5afc42c19742948cda477",
      "parents": [
        "0a486e5fcb1b8dac7d8b4cf6ed93e82b8b72fed6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Feb 01 21:30:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Feb 01 21:30:04 2005 +0000"
      },
      "message": "\t* bgp_attr.c, bgp_snmp.c, bgp_vty.c, bgpd.[ch]: Remove support for old\n\t  draft - ie. \"neighbor version 4-\" commands. Preserve dummy \"neighbor\n\t  version\" command as deprecated.\n\n\t[merge from GNU Zebra]\n"
    }
  ],
  "next": "0a486e5fcb1b8dac7d8b4cf6ed93e82b8b72fed6"
}
