)]}'
{
  "log": [
    {
      "commit": "412008568bddbc9475eafba224d1a1703d6cca97",
      "tree": "8f9fc89b99f657af060904ae353ba07b9375321f",
      "parents": [
        "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:52:18 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:52:18 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_damp.c: (bgp_reuse_timer) struct bgp can be retrieved via\n\t  the struct bgp_damp_info, no need to guess by using\n\t  bgp_get_default().\n"
    },
    {
      "commit": "0752ef0b2e9bbf6c7ab20ed0fe87840b3bd1b7f4",
      "tree": "d580aa8f809edf9a75968f7416e8415ffa72784c",
      "parents": [
        "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 12:35:21 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: Include memory.h\n\t  (connected_add_ipv4) Use MTYPE for ifc label.\n\t  (connected_add_ipv6) Also should accept label. Store it in ifp.\n\t  (connected_del_ipv4) Taking label as argument is pointless.\n\t* rt_netlink.c: (netlink_interface_addr) update label usage\n\t  for connected_{add,delete} functions.\n\t* if_ioctl.c: (if_getaddrs) NULL label for connected_add_ipv6.\n\t* if_ioctl_solaris.c: (interface_list_ioctl) Pass LIFC_NOXMIT\n\t  so we also find out about NOXMIT interfaces like VNI.\n\t  Bit of hackery to turn interface names into the primary\n\t  interface name, later with routing socket messages we only\n\t  will about primary interfaces anyway, so we must normalise\n\t  the name.\n\t  (if_get_addr) take label as argument, so it can\n\t  be passed to connected_add.\n\t  If label is provided, then it is interface name to issue the\n\t  ioctl for address information on, not the ifp name.\n\t  (interface_list) List AF_UNSPEC too, just in case.\n\t* if_proc.c: (ifaddr_proc_ipv6) label for connected_add_ipv6.\n\t* interface.c: (if_addr_wakeup) Some very bogus code - sets\n\t  IFF_RUNNING - add comment.\n\t  (if_refresh)\n\t  (ip_address_install) Use MTYPE for ifc label.\n\t* ioctl_solaris.c: (if_mangle_up) New function. Hackery to make\n\t  IFF_UP reflect whether any addresses are left on the\n\t  interface, as we get signalled for IFF_UP flags change on the\n\t  primary interface only. Logical interfaces dont generate\n\t  IFINFO, but we do get an RTM_DELADDR.\n\t  (if_get_flags) Call if_mangle_up before return.\n\t* kernel_socket.c: (ifam_read) Fixup calls to\n\t  connected_{add,delete} to match above changes. Rename gate\n\t  variable to brd, less confusing.\n\t  Pass the interface name as a label, if it is not same name\n\t  as ifp-\u003ename.\n"
    },
    {
      "commit": "6d45276f0c8aeec1ce53f77039ec02ec0f940ca1",
      "tree": "3b21783cff3ac3278a8fd39093dcdd05f443b891",
      "parents": [
        "9c4f1c6f10d4770933c0558528a0e59557b96230"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:15:44 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_packet.c: Change level of some warnings to\n\t  informational.\n"
    },
    {
      "commit": "9c4f1c6f10d4770933c0558528a0e59557b96230",
      "tree": "3e5d6c73e9e78b0aa6ed2cc8ffe276f2b19f3548",
      "parents": [
        "484315fd274b3782f72abc95c9796c604e53bcc9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:04:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 11:04:07 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* if.c: (connected_free) use MTYPE for connected label.\n\t  memtypes.c: Add MTYPE_CONNECTED_LABEL\n"
    },
    {
      "commit": "484315fd274b3782f72abc95c9796c604e53bcc9",
      "tree": "2b1753169c541429e0d360439a55c4905d71f70d",
      "parents": [
        "34204aac424f8c29317d863d64f1c3bb4d241a50"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:08:29 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (apiserver_sync_callback) stray semi-colon\n\t* ospf_packet.c: include checksum.h, remove the in_cksum extern\n\t* prototypes.\n\t* ospf_te.h: Add braces, quell warning.\n"
    },
    {
      "commit": "34204aac424f8c29317d863d64f1c3bb4d241a50",
      "tree": "a7ad861d7b3454dbe96b6e7a31d7dbacc4ad24e3",
      "parents": [
        "35a60c2d3c217e3b835821a7f6ea458e2eff44cf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:00:23 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Nov 03 09:00:23 2005 +0000"
      },
      "message": "2005-11-03 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra.h: BSD BYTE_ORDER define isn\u0027t available everywhere,\n\t  define if needs be.\n\t* checksum.h: new file. checksum.c exports in_cksum, provide\n\t  a header for it.\n\t* checksum.c: (in_cksum) callers shouldn\u0027t have to know it uses\n\t  a u_short internally, change to void *.\n\t* Makefile.am: Add checksum.h\n\t* command.h: remove bogus trailling slash.\n\t* md5.c: (general) Update it for the twentieth century. ANSI\n\t  declarations are widely supported now.. Don\u0027t include system\n\t  headers, only include zebra.h. Use POSIX types (the\n\t  alternative is to define u_int64_t in a portable way - rest\n\t  of Quagga needs same cleanup).\n\t  Make endian-conditional code be compiler conditional rather\n\t  than preprocessor conditional, so that breakage gets noticed\n\t  quicker.\n\t* md5.h: POSIX types. Get rid of the odd __P() non-ANSI capable\n\t  compiler compatibility hack.\n"
    },
    {
      "commit": "35a60c2d3c217e3b835821a7f6ea458e2eff44cf",
      "tree": "ff6dc20fdbf2f081556efaa0edec3ed341b29e97",
      "parents": [
        "e5b308d1af147c78acd2803f4006463e6ff67444"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Oct 30 23:51:32 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sun Oct 30 23:51:32 2005 +0000"
      },
      "message": "2005-10-30 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ripd.c: (rip_response_process) Instead of calling\n\t  rip_interface.c:if_valid_neighbor(), call the equivalent\n\t  library function if_lookup_address().\n\t* rip_interface.c: (if_valid_neighbor) Remove function, since it is\n\t  essentially equivalent to the if_lookup_address() library function.\n\t* ripd.h: (if_valid_neighbor) Remove function declaration.\n"
    },
    {
      "commit": "e5b308d1af147c78acd2803f4006463e6ff67444",
      "tree": "712ff117dd7d92e03f345199d731ed762433a62a",
      "parents": [
        "88d6cf37f66c3b7d1abdaa20875418192d5219b8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 20:19:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 20:19:49 2005 +0000"
      },
      "message": "2005-10-29 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* ospfd.texi: Document the new spf and max-metric commands, and\n\t  the additional form of dead-interval. Add documentation for\n\t  various other commands. Cleanup misc stuff, citations, etc.\n\t  Add some example configurations.\n\t* overview.texi: RFC3137 support added.\n\t* Makefile.am: Make quagga.pdf depend on the _TEXINFOS\n\t  variable, this still doesn\u0027t fix the dependency though,\n\t  sadly.\n"
    },
    {
      "commit": "88d6cf37f66c3b7d1abdaa20875418192d5219b8",
      "tree": "4843e77f622d3bf9e5df5c75de381e06e3126d6b",
      "parents": [
        "92779fe51dd061ab1502a9acdc0cf5241748e0c7"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Oct 29 12:50:09 2005 +0000"
      },
      "message": "2005-10-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) RFC3137 stub-router support\n\t* ospfd.h: Add OSPF_OUTPUT_COST_INFINITE define.\n\t  (struct ospf_master) Add a OSPF_MASTER_SHUTDOWN flag for\n\t  options, to allow shutdown to distinguish between complete\n\t  shutdown and shutdown of a subset of ospf instances.\n\t  (struct ospf)\n\t  Add stub_router_{startup,shutdown_}time, configuration of startup\n\t  and shutdown time for stub-router.\n\t  Add t_graceful_shutdown struct thread, timer for graceful\n\t  shutdown, if needed.\n\t  (struct ospf_area) Add stub_router_state - run time state of\n\t  stub-router for an area. Add flags for ADMIN, IS and WAS\n\t  states.\n\t  Add t_stub_router, timer thread to resend router-lsa for an\n\t  area.\n\t* ospf_lsa.c: (ospf_link_cost) new simple function to spit out\n\t  either the given lnks cost or infinite cost if stub-router is\n\t  in effect.\n\t  (lsa_link_{ptop,broadcast,virtuallink,ptomp}_set) use\n\t  previous function for transit-links.\n\t  (ospf_stub_router_timer) timer thread for end of startup stub\n\t  router. Change state as required for the area and setup\n\t  re-origination of router-lsa.\n\t  (ospf_stub_router_check) Check/do whether stub-router should be\n\t  enabled, and whether it requires timer to be setup.\n\t  (ospf_router_lsa_new) call previous function at top.\n\t  (ospf_router_lsa_originate) no external callers, made static.\n\t* ospf_lsa.h: (ospf_router_lsa_originate) removed.\n\t* ospf_main.c: (sigint) make static.\n\t  remove call to exit, as ospf_terminate now deals with\n\t  exiting.\n\t* ospf_route.c: (ospf_terminate) removed, now in ospfd.c.\n\t* ospf_vty.c: (show_ip_ospf_area) print out state of\n\t  stub-router, if active.\n\t  (show_ip_ospf) print out configuration of stub-router\n\t  support, and details of graceful-shutdown if the timer is\n\t  active.\n\t  ((no)?ospf_max_metric_router_lsa_{admin,startup,shutdown}) new\n\t  commands to (de-)?configure stub-router support.\n\t  (config_write_stub_router) write out config of stub-router.\n\t  (ospf_config_write) call previous.\n\t  (ospf_vty_init) install the new stub-router commands.\n\t* ospfd.c: various functions made static.\n\t  (ospf_new) Set defaults for stub-router. Graceful shutdown\n\t  is made to default on, just to be adventerous.\n\t  (ospf_graceful_shutdown_finish) new function, final part of\n\t  shutdown.\n\t  (ospf_graceful_shutdown_timer) timer thread wrapper for\n\t  graceful-shutdown.\n\t  (ospf_graceful_shutdown_check) check whether to setup timer\n\t  for shutdown or proceed directly to final shutdown.\n\t  (ospf_terminate) moved here from ospf_route.c, call\n\t  ospf_finish for each instance.\n\t  (ospf_finish) renamed to ospf_finish_final and made static.\n\t  (ospf_finish) new function, exported wrapper around\n\t  ospf_graceful_shutdown_check.\n\t  (ospf_finish_final) complete shutdown of an instance.\n\t  Add missing TIMER_OFF\u0027s of two timer threads.\n\t  (ospf_area_free) opaque self lsa timer should be turned off.\n"
    },
    {
      "commit": "92779fe51dd061ab1502a9acdc0cf5241748e0c7",
      "tree": "e9bfbaca14c5e87dee26c9e98aa1cefcb3650cea",
      "parents": [
        "05865c90ab0bc95b8ca1a54c794809891666cdce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 28 10:23:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 28 10:23:09 2005 +0000"
      },
      "message": "2005-10-28 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: Add rip_interface.h, or else it doesn\u0027t get\n\t  included in dists.\n"
    },
    {
      "commit": "05865c90ab0bc95b8ca1a54c794809891666cdce",
      "tree": "885eb032e62c4acd4706e27c24c7bc49aa259899",
      "parents": [
        "0241684ea77e8aa20ad2cb3903589559f4a7b009"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:49:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:49:54 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: Use MTYPE_HOST, MTYPE_STRVEC. Some other fixups,\n\t  including fixing some likely leaks in config_write_file.\n\t* vty.c: memory macro usage fixes.\n\t  (vty_read_config) fix leak where relative config file is\n\t  specified.\n"
    },
    {
      "commit": "0241684ea77e8aa20ad2cb3903589559f4a7b009",
      "tree": "2bb64a53f5d8c1091839be9e1afb6e4625828f38",
      "parents": [
        "216565ab68148d3161422c0d73730614bfeccd7c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:05:16 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Oct 26 05:05:16 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) Cleanup a some calls to XFREE,strdup, etc. to use\n\t  the memory.h macros.\n\t* memtypes.c: Add MTYPE_IF_RMAP_NAME, MTYPE_PQUEUE,\n\t  MTYPE_PQUEUE_DATA and MTYPE_HOST.\n\t* memtypes.h: update auto-built file.\n\t* if_rmap.c: Use MTYPE_IF_RMAP_NAME.\n\t* pqueue.c: Use the two MTYPE_PQUEUE mtypes for allocations.\n"
    },
    {
      "commit": "216565ab68148d3161422c0d73730614bfeccd7c",
      "tree": "d744175fb88d741b40a8131848b361bf8c842084",
      "parents": [
        "dc63bfd49513b7ca157c3992c8bc9da9d736fc39"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:35:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:35:28 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: Update couple more functions to specify void\n\t  explicitely.\n"
    },
    {
      "commit": "dc63bfd49513b7ca157c3992c8bc9da9d736fc39",
      "tree": "d6ccb6737c0354d106c6b85013979cef2abb3353",
      "parents": [
        "e029d448587551be7543e64e278dbb566f57509a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:31:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 25 23:31:05 2005 +0000"
      },
      "message": "2005-10-26 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) static/extern functions and definitions.\n\t* rip_interface.h: new file, export the public functions from\n\t  rip_interface.c\n"
    },
    {
      "commit": "e029d448587551be7543e64e278dbb566f57509a",
      "tree": "7ce8c2a0a69634c377c2e0180fecc6ad2cfa6eca",
      "parents": [
        "b8ad39d47a0fea7a336305cfd04f059c8e797aad"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:26:24 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_apiserver.c: (ospf_apiserver_term) This function should\n\t  not have side-effects (eg segv) if no apiserver instances are\n\t  active, ie be robust.\n"
    },
    {
      "commit": "b8ad39d47a0fea7a336305cfd04f059c8e797aad",
      "tree": "8387ae1ff1f397c79c035b3b303e8ea74b53a451",
      "parents": [
        "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 23 15:23:05 2005 +0000"
      },
      "message": "2005-10-23 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_vty.c: (show_ip_ospf) fix display of SPF timer if it\n\t  has not yet been run.\n"
    },
    {
      "commit": "ea4ffc9009ac4596fe865fd5f7e8363cdacbbd66",
      "tree": "e7281a93367a634b7d08fa45c24951dbb0bd444c",
      "parents": [
        "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 20:04:41 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_dump.c: (ospf_timeval_dump) fix ms adjustment, thanks to\n\t  Andrew Schorr.\n\t* ospf_vty.c: (ospf_config_write) fix write out of spf timers\n\t  configuration.\n"
    },
    {
      "commit": "d24f6e2a34ca829bd2ff6adb98b49d4d2d9cb737",
      "tree": "1d2a79a2ec4004f16b1ba3f2f2923ed8796cde83",
      "parents": [
        "c188c37caaf589a17b22e9889e63ec96f2f57106"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 09:23:12 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF millisecond resolution timer with adaptive,\n\t  linear back-off holdtime. Prettification of ospf_timer_dump.\n\t* ospf_dump.c: (ospf_timeval_dump) new function. The guts of\n\t  ospf_timer_dump, but made to be more dynamic in printing out\n\t  the relative timeval, sliding the precision printed out\n\t  according to the value.\n\t  (ospf_timer_dump) guts moved to ospf_timeval_dump.\n\t* ospf_dump.h: export ospf_timeval_dump.\n\t* ospf_flood.c: (ospf_flood) remove gettimeofday, use\n\t  the libzebra exported recent_time instead, as it\u0027s not\n\t  terribly critical to have time exactly right - the dropped\n\t  LSA will be retransmited to us if we don\u0027t ACK it.\n\t* ospf_packet.c: (ospf_ls_upd_timer) Ditto, but here we\u0027re\n\t  not transmitting, just putting LSA back on update transmit list.\n\t* ospfd.h: delay and holdtimes should be unsigned.\n\t  Add spf_max_holdtime and spf_hold_multiplier.\n\t  Update default defines for delay and hold time to be in msec.\n\t  (struct ospf) change the SPF timestamp to a struct timeval.\n\t  Remove ospf_timers_spf_(un)?set.\n\t* ospfd.c: (ospf_timers_spf_{set,unset}) removed.\n\t  (ospf_new) initialise spf_max_holdtime and spf_hold_multiplier\n\t* ospf_spf.c: (ospf_spf_calculate) SPF timestamp is a timeval\n\t  now, update with gettimeofday.\n\t  (ospf_spf_calculate_schedule) Change SPF timers to millisecond\n\t  resolution.\n\t  Make the holdtime be adaptive, with a linear increase in\n\t  holdtime ever consecutive SPF run which occurs within holdtime\n\t  of previous SPF, bounded by spf_max_holdtime.\n\t* ospf_vty.c: Update spf timers commands.\n\t  (ospf_timers_spf_set) trivial helper.\n\t  (ospf_timers_throttle_spf_cmd) new command to set SPF delay,\n\t  initial hold and max hold times with millisecond resolution.\n\t  (ospf_timers_spf_cmd) Deprecated. Accept the old values,\n\t  convert to msec, truncate to new limits.\n\t  (no_ospf_timers_throttle_spf_cmd) set timers to defaults.\n\t  (no_ospf_timers_spf_cmd) deprecated form, same as previous.\n\t  (show_ip_ospf_cmd) Display SPF parameters and times.\n\t  (show_ip_ospf_neighbour_header) Centralise the \u0027sh ip os ne\u0027\n\t  header.\n\t  (show_ip_ospf_neighbor_sub) Fix the field widths. Get rid of\n\t  the multiple spaces which were making the lines even longer.\n\t  (show_ip_ospf_neighbor_cmd) Use show_ip_ospf_neighbour_header\n\t  (show_ip_ospf_neighbor_all_cmd) ditto and fix the field\n\t  widths for NBMA neighbours.\n\t  (show_ip_ospf_neighbor_int) Use header function.\n\t  (show_ip_ospf_nbr_nbma_detail_sub) use sizeof for timebuf,\n\t  local array - safer.\n\t  (show_ip_ospf_neighbor_detail_sub) ditto\n\t  (ospf_vty_init) install the new SPF throttle timer commands.\n"
    },
    {
      "commit": "c188c37caaf589a17b22e9889e63ec96f2f57106",
      "tree": "018d7f024a08c986a5558425ede05590518c9a23",
      "parents": [
        "f9ad937f537df92bf3119686eee97db7b7176674"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Oct 21 02:57:41 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Fri Oct 21 02:57:41 2005 +0000"
      },
      "message": "2005-10-20 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* sockopt.c: (setsockopt_multicast_ipv4) If IP_ADD_MEMBERSHIP\n\t  fails with errno equal to EADDRINUSE, then issue an info\n\t  message and try IP_DROP_MEMBERSHIP followed by IP_ADD_MEMBERSHIP.\n"
    },
    {
      "commit": "f9ad937f537df92bf3119686eee97db7b7176674",
      "tree": "8c203f4bffabbb2fd27ffeafd2e87e5fd704a0e2",
      "parents": [
        "24065a3d4a61a136a17996a48df02b0b180bc6f0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Oct 21 00:45:17 2005 +0000"
      },
      "message": "2005-10-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) OSPF fast, sub-second hello and 1s dead-interval\n\t  support. A warning fix. Millisec support for ospf_timer_dump.\n\t  Change auto-cost ref-bandwidth to add a comment to write out\n\t  of config, rather than printing annoying messages to vty on\n\t  startup.\n\t* ospf_dump.c: (ospf_timer_dump) Print out milliseconds too.\n\t  Callers typically specify a length of 9, so most see\n\t  millisecs unless they specify the additional length.\n\t* ospf_interface.h: (struct ospf_interface) new interface param,\n\t  fast_hello.\n\t* ospf_interface.c: (ospf_if_table_lookup) add brackets,\n\t  gcc warning fix.\n\t  (ospf_new_if_params) Initialise fast_hello param.\n\t  (ospf_free_if_params) Check whether fast_hello is configured.\n\t  (ospf_if_new_hook) set fast_hello to default.\n\t* ospf_ism.h: Wrap OSPF_ISM_TIMER_ON inside do {} while (0) to\n\t  prevent funny side-effects from its if statement when this\n\t  macro is used conditionally by other macros.\n\t  (OSPF_ISM_TIMER_MSEC_ON) new macro, set in milliseconds.\n\t  (OSPF_HELLO_TIMER_ON) new macro to set hello timer according\n\t  to whether fast_hello is set.\n\t* ospf_ism.c: Update all setting of the hello timer to use\n\t  either OSPF_ISM_TIMER_MSEC_ON or OSPF_HELLO_TIMER_ON. The\n\t  former is used when hello is to be sent immediately.\n\t* ospf_nsm.c: ditto\n\t* ospf_packet.c: (ospf_hello) hello-interval is not checked\n\t  for mismatch if fast_hello is set.\n\t  (ospf_read) Annoying nit, fix \"no ospf_interface\" to be debug\n\t  rather than a warning, as it can be perfectly normal to\n\t  receive packets when logical subnets are used.\n\t  (ospf_make_hello) Set hello-interval to 0 if fast-hellos are\n\t  configured.\n\t* ospf_vty.c: (ospf_auto_cost_reference_bandwidth) annoying\n\t  nit, don\u0027t vty_out if this command is given, it gets tired\n\t  quick.\n\t  (show_ip_ospf_interface_sub) Print the hello-interval\n\t  according to whether fast-hello is set or not.\n\t  Print the extra 5 millisec characters from (ospf_timer_dump)\n\t  if fast-hello is configured.\n\t  (ospf_vty_dead_interval_set) new function, common to all\n\t  forms of dead-interval command, to set dead-interval and\n\t  fast-hello correctly. If a dead-interval is given, unset\n\t  fast-hello, else if a hello-multiplier is set, set\n          dead-interval to 1 and fast-hello to given multiplier.\n\t  (ip_ospf_dead_interval_addr_cmd) use\n\t  ospf_vty_dead_interval_set().\n\t  (ip_ospf_dead_interval_minimal_addr_cmd) ditto.\n\t  (no_ip_ospf_dead_interval) Unset fast-hello.\n\t  (no_ip_ospf_hello_interval) Bug-fix, unset of hello-interval\n\t  should set it to OSPF_HELLO_INTERVAL_DEFAULT, not\n\t  OSPF_ROUTER_DEAD_INTERVAL_DEFAULT.\n\t  (config_write_interface) Write out fast-hello.\n\t  (ospf_config_write) Write a comment about\n\t  \"auto-cost reference-bandwidth\" having to be equal on all\n\t  routers. Hopefully just as noticeable as old practice of\n\t  writing to vty, but less annoying.\n\t  (ospf_vty_if_init) install the two new dead-interval\n\t  commands.\n\t* ospfd.h: Add defines for OSPF_ROUTER_DEAD_INTERVAL_MINIMAL\n\t  and OSPF_FAST_HELLO_DEFAULT.\n"
    },
    {
      "commit": "24065a3d4a61a136a17996a48df02b0b180bc6f0",
      "tree": "e1e6463a5d56500d94abb74b320bcb6b99d4c6a1",
      "parents": [
        "38d3c163cff92465c94732cb7ecb9761053d2038"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Oct 20 22:28:14 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Oct 20 22:28:14 2005 +0000"
      },
      "message": "2005-10-20 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memory.c: (show_memory_vty) Omit zero statistics.  Print separators\n\t  only if some non-zero stats have been printed in between.\n\t  (show_separator) New function to print a separator.\n\t  (show_memory_all) Keep track of whether a separator is needed\n\t  between the different memory statistics groups.\n"
    },
    {
      "commit": "38d3c163cff92465c94732cb7ecb9761053d2038",
      "tree": "9ef8e7525d9d671ae833de6cd44d820812ac0898",
      "parents": [
        "5012322ddb0219138ee3583c50fd6e99c5a1d857"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Oct 19 19:29:59 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Wed Oct 19 19:29:59 2005 +0000"
      },
      "message": "2005-10-17 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n        * ripd.c: rip_create_socket() for each packet, it does not bind to the\n          proper interfaces because we forget to use the from address when\n          it is specified.\n"
    },
    {
      "commit": "5012322ddb0219138ee3583c50fd6e99c5a1d857",
      "tree": "8b6d5f43579428b29c72167ac099fe215ae1d9e9",
      "parents": [
        "eb3da6dfa92be8083bbe1b4436818754be158b93"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Oct 18 20:19:13 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Tue Oct 18 20:19:13 2005 +0000"
      },
      "message": "2005-10-18 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* memtypes.h: Add MTYPE_OSPF_VERTEX_PARENT (to match memtypes.c).\n"
    },
    {
      "commit": "eb3da6dfa92be8083bbe1b4436818754be158b93",
      "tree": "72067c3eb6ec2f5fd1678d555062424f163c6599",
      "parents": [
        "3623814abc4df8435d2fc50697c6d7fc66f21088"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 18 04:20:33 2005 +0000"
      },
      "message": "2005-10-18 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) SPF memory management cleanup and fix for rare\n\t  double-free bug.\n\t* ospf_spf.h: (struct vertex_parent) New struct to hold parent\n\t  specific data, eg the backlink and the parent vertex pointer,\n\t  and point to the appropriate general struct vertex_nexthop.\n\t  (struct vertex_nexthop) remove parent vertex pointer, so\n\t  this struct can be shared across vertices.\n\t  (struct vertex) rename list child to list children. Remove\n\t  list of nexthops, replace with list of vertex_parents.\n\t* ospf_spf.c: (update_stat) trivial, remove cast from void *.\n\t  (vertex_nexthop_new) remove init of parent - field is gone\n          from struct vertex_nexthop.\n          (ospf_canonical_nexthops_free) Remove the canonical\n          vertex_nexthop memory objects. These are the vertex_nexthops\n          attached to the first level of router vertices from the root.\n          (vertex_parent_new) new function, create a vertex_parent.\n          (vertex_parent_free) ditto, but free it.\n          (ospf_vertex_new) Update to match changes to struct vertex.\n          (ospf_vertex_free) Recursively free a struct vertex and its\n          children. The parent list is used as a reference count.\n          vertex_nexthops must be free seperately, if required.\n          (ospf_vertex_dump) update to match struct vertex changes.\n          Print out backlink of parents too.\n          (ospf_vertex_add_parent) ditto.\n          (ospf_lsa_has_link) update comment.\n          (ospf_nexthop_add_unique) removed, not needed anymore.\n          (ospf_nexthop_merge) ditto.\n          (ospf_spf_consider_nexthop) renamed to ospf_spf_add_parent.\n          Simplified to just create vertex_parent and add it.\n          (ospf_spf_flush_parents) new function, flush out the parent\n\t  list.\n\t  (ospf_nexthop_calculation) Take the relevant route_lsa_link\n\t  as an argument, which simplifies things and removes the need\n\t  for the hack in ospf_nexthop_add_unique - ospf_spf_next\n\t  already knew exactly which link the cost calculated was for.\n\t  Update to match struct vertex changes too.\n\t  (ospf_spf_next) Don\u0027t create a vertex for W unnecessarily, if\n          it\u0027s there\u0027s a vertex already created for W, use it, and\n          hence there\u0027s no need to free it either.\n          Update some manipulation/comparisons of distance to match.\n          Flush the parent list if a lower cost path is found.\n          (ospf_spf_route_free) unused, removed.\n          (ospf_spf_dump) match the struct vertex changes, and dump the\n          ifname if possible.\n          (ospf_spf_calculate) At end of SPF, free the canonical nexthops\n          and call ospf_vertex_free on the root vertex to free the\n\t  entire tree.\n\t* ospf_interface.c: (ospf_vl_set_params) match struct vertex\n          changes.\n        * ospf_route.c: (ospf_intra_route_add) ditto\n          (ospf_route_copy_nexthops_from_vertex) ditto\n\t* memtypes.c: (memory_list_ospf) Add MTYPE_OSPF_VERTEX_PARENT.\n"
    },
    {
      "commit": "3623814abc4df8435d2fc50697c6d7fc66f21088",
      "tree": "520bef46117e4c81956d4c1aeb23afcc339db832",
      "parents": [
        "d751f00299e0cd9be8f0e702288efe48ac1ddbca"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:12:54 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf_api.c: sign warnings.\n\t* ospf_apiserver.c: sign warning and convert all the struct\n\t  in_addr initialisations so as not to make assumptions about\n\t  how this struct is organised, initialise the s_addr member\n\t  explicitely.\n\t* ospf_packet.c: Add const qualifier to auth_key.\n"
    },
    {
      "commit": "d751f00299e0cd9be8f0e702288efe48ac1ddbca",
      "tree": "548f9962891c609383391b43e1936cfceb93d5ab",
      "parents": [
        "d06b2a64b7093f998e7b0f33454efc23190123ac"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:01:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 04:01:09 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* quagga.texi: Rejiggle the copyright sections a bit, seems to\n\t  make makeinfo happier and generates info pages again on FC4.\n\t* quagga.info: Update this auto-built file.\n"
    },
    {
      "commit": "d06b2a64b7093f998e7b0f33454efc23190123ac",
      "tree": "00117184e0d6ea2084d02abf31b4564182a03fc1",
      "parents": [
        "84771ee0deadae6d83b939a2d3f8f83cc420a829"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:53:54 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:53:54 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* connected.{c,h}: (connected_{add,delete}_ipv4) label should\n\t  be const qualified.\n"
    },
    {
      "commit": "84771ee0deadae6d83b939a2d3f8f83cc420a829",
      "tree": "68b3e5c5cc6e84dd7d57a4bda2e61616d518a1a2",
      "parents": [
        "77df1f78597af79209777d264ec9986f33a2fd17"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Oct 11 03:48:28 2005 +0000"
      },
      "message": "2005-10-11 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* test-privs.c: Privileges unit test.\n\t* Makefile.am: build testprivs\n\t* aspath_test.c: fix a few sign warnings\n"
    },
    {
      "commit": "77df1f78597af79209777d264ec9986f33a2fd17",
      "tree": "dd1aaf403511242b0cd3277cb0be14eed348a678",
      "parents": [
        "fac3e8410ade65e269aa2d896bcd3a0b68f10d70"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:46:22 2005 +0000"
      },
      "message": "2005-10-06 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n        * ospf_snmp.c: Avoid mixing interface and ospf_interface objects\n          which now allows snmpwalk to work with ospfIfTable and\n          also with ospfIfMetricTable\n"
    },
    {
      "commit": "fac3e8410ade65e269aa2d896bcd3a0b68f10d70",
      "tree": "a9c9653baee68c5f2a63b53242815dd99329195f",
      "parents": [
        "f52d13cb2e8e7197934d5f241f88647f9b9d78b8"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:45:43 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Oct 06 07:45:43 2005 +0000"
      },
      "message": "2005-10-06 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n        * rip_interface.c: Now the command \"no ip rip split-horizon\n          poisoned-reverse\" just inhibates the poisoned-reverse effects\n          but keep spli-horizon activ.\n"
    },
    {
      "commit": "f52d13cb2e8e7197934d5f241f88647f9b9d78b8",
      "tree": "b0aa01befc07f57ed47e83ac7dfb383284c49d26",
      "parents": [
        "c05612b9a702d0f49c379c92deb6daab55372aea"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 17:38:06 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* zebra.h: Declare new functions zebra_route_string() and\n\t  zebra_route_char().\n\t* log.c: (zroute_lookup,zebra_route_string,zebra_route_char) New\n\t  functions to map zebra route numbers to strings.\n\t* zebra_vty.c: (route_type_str) Remove obsolete function: use new\n\t  library function zebra_route_string() instead.  Note that there\n\t  are a few differences: for IPv6 routes, we now get \"ripng\" and\n\t  \"ospf6\" instead of the old behavior (\"rip\" and \"ospf\").\n\t  (route_type_char) Remove obsolete function: ues new library function\n\t  zebra_route_char() instead.  Note that there is one difference:\n\t  the old function returned \u0027S\u0027 for a ZEBRA_ROUTE_SYSTEM route,\n\t  whereas the new one returns \u0027X\u0027.\n\t  (vty_show_ip_route_detail,vty_show_ipv6_route_detail) Replace\n\t  route_type_str() with zebra_route_string().\n\t  (vty_show_ip_route,vty_show_ipv6_route) Replace route_type_char()\n\t  with zebra_route_char().\n\t* bgp_vty.c: (bgp_config_write_redistribute) Use new library function\n\t  zebra_route_string instead of a local hard-coded table.\n\t* ospf6_asbr.c: Remove local hard-coded tables zroute_name and\n\t  zroute_abname. Change the ZROUTE_NAME macro to use new library\n\t  function zebra_route_string().  Remove the ZROUTE_ABNAME macro.\n\t  (ospf6_asbr_external_route_show): Replace ZROUTE_ABNAME() with\n\t  a call to zebra_route_char(), and be sure to fix the format string,\n\t  since we now have a char instead of a char *.\n\t* ospf6_zebra.c: Remove local hard-coded tables zebra_route_name and\n\t  zebra_route_abname.  Note that the zebra_route_name[] table\n\t  contained mixed-case strings, whereas the zebra_route_string()\n\t  function returns lower-case strings.\n\t  (ospf6_zebra_read_ipv6): Change debug message to use new library\n\t  function zebra_route_string() instead of zebra_route_name[].\n\t  (show_zebra): Use new library function zebra_route_string() instead\n\t  of zebra_route_name[].\n\t* ospf_dump.c: Remove local hard-coded table ospf_redistributed_proto.\n\t  (ospf_redist_string) New function implemented using new library\n\t  function zebra_route_string().  Note that there are a few differences\n\t  in the output that will result: the new function returns strings\n\t  that are lower-case, whereas the old table was mixed case.  Also,\n\t  the old table mapped ZEBRA_ROUTE_OSPF6 to \"OSPFv3\", whereas the\n\t  new function returns \"ospf6\".\n\t* ospfd.h: Remove extern struct message ospf_redistributed_proto[],\n\t  and add extern const char *ospf_redist_string(u_int route_type)\n\t  instead.\n\t* ospf_asbr.c: (ospf_external_info_add) In two messages, use\n\t  ospf_redist_string instead of LOOKUP(ospf_redistributed_proto).\n\t* ospf_vty.c: Remove local hard-coded table distribute_str.\n\t  (config_write_ospf_redistribute,config_write_ospf_distribute): Use\n\t  new library function zebra_route_string() instead of distribute_str[].\n\t* ospf_zebra.c: (ospf_redistribute_set,ospf_redistribute_unset,\n\t  ospf_redistribute_default_set,ospf_redistribute_check)\n\t  In debug messages, use ospf_redist_string() instead of\n\t  LOOKUP(ospf_redistributed_proto).\n\t* rip_zebra.c: (config_write_rip_redistribute): Remove local hard-coded\n\t  table str[]. Replace str[] with calls to new library function\n\t  zebra_route_string().\n\t* ripd.c: Remove local hard-coded table route_info[].\n\t  (show_ip_rip) Replace uses of str[] with calls to new library\n\t  functions zebra_route_char and zebra_route_string.\n\t* ripng_zebra.c: (ripng_redistribute_write) Remove local hard-coded\n\t  table str[].  Replace str[i] with new library function\n\t  zebra_route_string(i).\n\t* ripngd.c: Remove local hard-coded table route_info[].\n\t  (show_ipv6_ripng) Use new library function zebra_route_char() instead\n\t  of table route_info[].\n"
    },
    {
      "commit": "c05612b9a702d0f49c379c92deb6daab55372aea",
      "tree": "3e99659456e05f2d3d428c430c883f49ad7fdd28",
      "parents": [
        "13fb40ac99823c405137a42d7666785fd7ac641a"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 16:36:54 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Oct 01 16:36:54 2005 +0000"
      },
      "message": "2005-10-01 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* rt_netlink.c: (netlink_request) Use memset to clear structure\n\t  before calling sendto (eliminates a valgrind error message about\n\t  uninitialized data).\n"
    },
    {
      "commit": "13fb40ac99823c405137a42d7666785fd7ac641a",
      "tree": "2332722bf346447bd5bfebf3fdc0fb97dc85502b",
      "parents": [
        "10fc9183686d9d7183949c9e74a1c51d98ddb67e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 01 06:03:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Oct 01 06:03:04 2005 +0000"
      },
      "message": "\t* isis_adjacency.c: Stop expire timer while deleting adjacency.\n\t* isis_events.c: Stop pseudo LSP thread while resigning circuit from\n\t  level.\n\t* isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not\n\t  in sync with zebra if it\u0027s changed.\n\t* isis_spf.c: Schedule route validating etc even if tent was empty.\n\t  It\u0027s probably because we just don\u0027t have any adjacencies.\n\t* isisd.c: Write minimum spf interval into configuration.\n"
    },
    {
      "commit": "10fc9183686d9d7183949c9e74a1c51d98ddb67e",
      "tree": "c2f5c4a32f0e062db0a1f7492d418dca92053134",
      "parents": [
        "6638c1ab3d4c0043a49a3a67768cccf4a23648dc"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:09:39 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:09:39 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* isis_route.c: fix EXTREME_DEBUG compilation\n"
    },
    {
      "commit": "6638c1ab3d4c0043a49a3a67768cccf4a23648dc",
      "tree": "8fd2f7cdf8f787b495109c36ecf87d411ddee860",
      "parents": [
        "2d74db55c463231e3542207bc3d940e2563e6b5b"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:08:54 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* ospf_dump.c, ospf_ia.c, ospf_spf.c, ospf_ase.c:\n\t  remove unused DEBUG\n"
    },
    {
      "commit": "2d74db55c463231e3542207bc3d940e2563e6b5b",
      "tree": "60f4c58957899ceb7987729882d948d59fe26ecf",
      "parents": [
        "5e4914c31ead7b99eeed73067451367336b21422"
      ],
      "author": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:07:50 2005 +0000"
      },
      "committer": {
        "name": "jardin",
        "email": "jardin",
        "time": "Sat Oct 01 00:07:50 2005 +0000"
      },
      "message": "2005-09-30 Vincent Jardin \u003cvincent.jardin@6wind.com\u003e\n\n\t* bgp_packet.c: fix compilation when DEBUG is used.\n"
    },
    {
      "commit": "5e4914c31ead7b99eeed73067451367336b21422",
      "tree": "f2c49d5c8182d4ee1b8ad8ca5005fe1223da18c8",
      "parents": [
        "ceacedba227e77156f92f7676b274c48a2817e8f"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 16:34:30 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/smux.[ch]: allow to retreive global OID (identified by \u003c0\n      namelen).\n    * ospf_ism.c: generate SNMP traps on Interface state change\n    * ospf_nsm.c: generate SNMP traps on Neighbour state change\n    * ospf_snmp.[ch]: support for SNMP traps for interface and neighbours.\n"
    },
    {
      "commit": "ceacedba227e77156f92f7676b274c48a2817e8f",
      "tree": "f362ecc8f6f183347ebe45ab79727b54d2f527a6",
      "parents": [
        "e62178797d0ee5f326fd587b84ee965cf88833e4"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 29 14:39:32 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 29 14:39:32 2005 +0000"
      },
      "message": "2005-09-29 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* configure.ac: Add the test for Solaris least-privileges. Set\n\t  defines for whether capabilities are supported and whether of\n\t  the linux or solaris variety.\n\t  Add missing-prototypes, missing-declarations, char-subscripts\n\t  and cast-qual warnings to default cflags, cause Hasso enjoys warnings,\n\t  and we really should clean the remaining ones up. (ie isisd..).\n\t* (*/*main.c) Update the zebra_capabilities_t arrays in the various\n\t  daemons to match the changes made in lib/privs.h.\n\t* zebra.h: Solaris capabilities requires priv.h to be included.\n\t* privs.{c,h}: Add support for Solaris Least-Privileges.\n\t  privs.h: Reduce some of the abstract capabilities, which do\n\t  not have rough equivalents on both systems. Rename the net\n\t  related caps to _NET, as they should have been in first\n\t  place.\n\t  (zprivs_terminate) should take the zebra_privs_t as argument so\n\t  that it can update change pointer.\n\t  Add an additional privilege state, ZPRIVS_UNKNOWN.\n\t* privs.c: (various capability functions) Add\n\t  Solaris privileges variants.\n\t  (zprivs_state) Use privs.c specific generic types to\n          represent various capability/privilege related types, so that\n          each can be typedef\u0027d as appropriate on each platform.\n\t  (zprivs_null_state) static added, to hold the state the null\n\t  method should report (should be raised by default, and\n          LOWERED if zprivs_terminate has been called)\n          (zprivs_state_null) Report back the zprivs_null_state.\n          (cap_map) Make it able to map abstract capability to multiple\n          system capabilities.\n          (zcaps2sys) Map to abstract capabilities to multiple system\n          privileges/capabilities.\n          (zprivs_init) move capability related init to seperate\n\t  function, zprivs_caps_init.\n          (zprivs_terminate) ditto, moved to zprivs_caps_terminate.\n          Set the change_state callback to the NULL state, so the\n          user can continue to run and use the callbacks.\n"
    },
    {
      "commit": "e62178797d0ee5f326fd587b84ee965cf88833e4",
      "tree": "a9a79699e89f806e84bbf6b39f664c5fc044f546",
      "parents": [
        "ba682537715c42ab3976790baea5cda86c5b1589"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:56:14 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:56:14 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n   * Of course ISM_SNMP MACRO mist be defined\n"
    },
    {
      "commit": "ba682537715c42ab3976790baea5cda86c5b1589",
      "tree": "791c998f0857bc4a53761e571427a6acdd11f4ae",
      "parents": [
        "fbf5d033041e406ecefd27c2deebf5a4953d1155"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:52:57 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 13:52:57 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * ospfd/ospf_vty.c: forece default route LSA to be re_issued whenever\n      cost is changed ( [no] ip ospf area XXX default-cost YYY)\n      Support ignore-mtu option\n    * ospfd/ospfd.h: define OSPF_MTU_IGNORE_DEFAULT\n    * ospfd/ospf_packet.c: support ignore-mtu option\n    * ospfd/ospf_interface.h: field added for skipping MTU check\n    * ospfd/ospf_interface.c: fix memory leak in ospf_crypt_key_delete()\n      Set mtu_ignore field to default value\n    * ospfd/ospf_abr.[ch]: export ospf_abr_announce_network_to_area()\n    * ospfd/ospf_ism.h: add MACRO to convert internal ISM status into SNMP\n      correct values\n    * ospfd/ospf_snmp.c: add sanity check on LSA type in lsdb_lookup_next()\n      convert OSPFIFSTATE internal status into SNMP values\n"
    },
    {
      "commit": "fbf5d033041e406ecefd27c2deebf5a4953d1155",
      "tree": "e9173ab5e05fc86e95f325d2cb2a7a123eb33327",
      "parents": [
        "3fdb2dd9dd8b4ab3517896092dd1b677d191adf9"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 11:25:50 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Thu Sep 29 11:25:50 2005 +0000"
      },
      "message": "2005-09-29 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/filer.c: show protocol name in filter_show()\n    * lib/plist.c: show protocol name in vty_show_prefix_entry()\n    * routemap.c: show protocol name in vty_show_route_map_entry()\n    * lib/vty.c: in vty_command(), show protocol name if command unknown\n\n    * zebra/zserv.c: Always provide distance fo route add\n\n    * ripd/rip_snmp.c: rip2IfConfReceive() sends values in conformance\n      with RFC. Also PeerDomain is now set to a STRING type.\n    * ripd/ripd.h: rip_redistribute_add() API includes metric and distance\n    * ripd/ripd.c: rip_redistribute_add() API i.e. stores metric and distance\n      Now allows a RIP-route to overcome a redistributed route coming\n      from a protocol with worse (higher) administrative distance\n      Metrics from redistribution are shown in show ip rip\n    * ripd/rip_zebra.c: adapt to the rip_redistribute_add() API, i.e.\n      provide distance and metric\n    * ripd/rip_interface.c: adapt to the rip_redistribute_add() API\n    * ripd/rip_routemap.c: no RMAP_COMPILE_ERROR on (metric \u003e 16) usage\n      rather a CMD_WARNING, because set metric ius shared with other\n      protocols using larger values (such as OSPF)\n      The match metric action takes first external metric if present\n      (from redistribution) then RIP metric.\n"
    },
    {
      "commit": "3fdb2dd9dd8b4ab3517896092dd1b677d191adf9",
      "tree": "2f2bdff0a3797517100d0f1319cd3e46bb00f53f",
      "parents": [
        "d3d7474ba98f01e6d9994ff48c0b3a4331a8ef2a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:45:54 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:45:54 2005 +0000"
      },
      "message": "\t* *.c: Massive cleanup of lists loops. Stop abusing ALL_LIST_ELEMENTS.\n\t  Replace XMALLOC + memset with XCALLOC. Fix some indentation issues.\n\t  The only really significant change is simplified isis_delete_adj\n\t  function in isis_adjacency.c.\n"
    },
    {
      "commit": "d3d7474ba98f01e6d9994ff48c0b3a4331a8ef2a",
      "tree": "efa9e1f7f1e7fdb79f5374c78301218f2b68bc95",
      "parents": [
        "9551eea4465e0e3eaab7a133fc06705c8f36afc4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:30:51 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:30:51 2005 +0000"
      },
      "message": "\t* isis_dynh.c, isisd.h: Implement dynamic hostname cache cleanup.\n\t* isis_lsp.c: Refresh dynamic hostname in the cache while refreshing\n\t  topology LSP.\n"
    },
    {
      "commit": "9551eea4465e0e3eaab7a133fc06705c8f36afc4",
      "tree": "ec76ab7baa0cbea12f85fc162053715ede4fa4e9",
      "parents": [
        "c1a03d4774f8ecc30a21267469d48cb2276de48c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:26:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 28 18:26:25 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Make topology generator generate TE TLVs if necessary.\n\t  Also take care of inserting dynamic hostname of topology TLVs into\n\t  cache.\n"
    },
    {
      "commit": "c1a03d4774f8ecc30a21267469d48cb2276de48c",
      "tree": "1bf9309bc99e316a5633d18f7724330d8d6fa836",
      "parents": [
        "aa2e32be264710ef208516dfe1661b8148c3eede"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 15:47:44 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 15:47:44 2005 +0000"
      },
      "message": "2005-09-28 Alain Ritoux \u003calain.ritoux@6wind.com\u003e\n\n    * lib/md5-gnu.h: removed\n    * lib/md5.h: replaces md5-gnu.h\n    * lib/Makefile.am: use correct md5.h\n    * lib/md5.c: import from WIDE\n    * ospfd/ospf_packet.c: use new md5 API\n    * ripd/ripd.c: use new md5 API\n"
    },
    {
      "commit": "aa2e32be264710ef208516dfe1661b8148c3eede",
      "tree": "c990a1ce60bfbfd4847099ef8c013db0638b794d",
      "parents": [
        "fac1f7cc8eaa750fa46985977a97e05e493228a2"
      ],
      "author": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 13:42:11 2005 +0000"
      },
      "committer": {
        "name": "vincent",
        "email": "vincent",
        "time": "Wed Sep 28 13:42:11 2005 +0000"
      },
      "message": "    * connected.c: flag connected_up_ipv6() and connected_down_ipv6()\n      usage with HAVE_IPV6\n"
    },
    {
      "commit": "fac1f7cc8eaa750fa46985977a97e05e493228a2",
      "tree": "9cb300fd56261c38b51e621ccb72523ec7b4bf4a",
      "parents": [
        "82a8428c84df1b1e7a1be5a5114a5d9a6f2bc2c4"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:26:26 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:26:26 2005 +0000"
      },
      "message": "\t* isis_spf.c: Changing cost from uint16_t to uint32_t. Unset\n\t  ISIS_ROUTE_FLAG_ACTIVE flag before running SPF.\n\t* isisd.[ch]: Separate route tables for different levels. SPF is done\n\t  separately, but in case of L1L2 area they have to be merged.\n\t* isis_zebra.c: Set/unset ISIS_ROUTE_FLAG_ZEBRA_SYNC flag correctly in\n\t  case of adding/removing IPv4 routes.\n\t* zebra_route.c: Rework route validating process. Merging L1 and L2\n\t  tables in case of L1L2 area.\n\n        In short - many changes to make SPF work more correctly, add/remove\n        to/from RIB also works now. It\u0027s still very far from perfect though.\n"
    },
    {
      "commit": "82a8428c84df1b1e7a1be5a5114a5d9a6f2bc2c4",
      "tree": "0a1c15480d52b36cb9144add9816849014881fb3",
      "parents": [
        "309ddb199aa4627e4597653ca12eb3bc8c20ab54"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:15:36 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:15:36 2005 +0000"
      },
      "message": "\t* isis_spf.[ch]: Added TE TLVs to the SPF process. It seems to work\n\t  mostly, but needs certainly much more testing, especially transition\n\t  situation.\n"
    },
    {
      "commit": "309ddb199aa4627e4597653ca12eb3bc8c20ab54",
      "tree": "a61c592c3fc18c39e43fa784e772d5dbd1221a89",
      "parents": [
        "81ad8f6a1040eaf9d4230bd63b71d85397660653"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:06:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 18:06:47 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Put correct metric info into TE TLV\u0027s. Wide metric is\n\t  used only if only wide metric style (extended TLV\u0027s) is in use.\n"
    },
    {
      "commit": "81ad8f6a1040eaf9d4230bd63b71d85397660653",
      "tree": "93ccfab5fe8ca9d9e79b65aed0e359ab21f0a1c1",
      "parents": [
        "aa4376ec0c37b9b2d484e9503ad7b8e1a010afd2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:58:24 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:58:24 2005 +0000"
      },
      "message": "\t* isis_tlv.[ch]: New function tlv_add_in_addr() to put just one IPv4\n\t  address into TLV. Used for IPv4 address TLV (in case of LSP) and TE\n\t  router ID TLV.\n\t* isis_lsp.c: Use tlv_add_in_addr() and include router ID in LSP.\n"
    },
    {
      "commit": "aa4376ec0c37b9b2d484e9503ad7b8e1a010afd2",
      "tree": "a8a31d251e7601adb0c5a2e08cd4c6b03104c1b4",
      "parents": [
        "ea3be4c12223b00a69652a8be330961489212447"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:39:48 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:39:48 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Support for originating TE IS and IPv4 TLV\u0027s. No any sub\n\t  TLV handling yet.\n"
    },
    {
      "commit": "ea3be4c12223b00a69652a8be330961489212447",
      "tree": "900f18472ddbbd9f2c418771a5d8525d0a8b24b0",
      "parents": [
        "f21fb27298fd49ce695fd403e02bcbd5e9f0cd27"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:11:12 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:11:12 2005 +0000"
      },
      "message": "\t* isis_tlv.[ch]: Two new functions - tlv_add_te_is_neighs() and\n\t  tlv_add_te_ipv4_reachs() to handle TLV\u0027s with new metric. None of\n\t  them handle sub TLVs though for now.\n"
    },
    {
      "commit": "f21fb27298fd49ce695fd403e02bcbd5e9f0cd27",
      "tree": "b0d3bc891908d7291f0315cf582334c1e85d37df",
      "parents": [
        "2984d26eb08f42a8f470277cef6c1657f984e968"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:05:55 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 17:05:55 2005 +0000"
      },
      "message": "\t* isis_circuit.[ch]: Some preliminary support for specifying wide\n\t  circuit metrics. Needs more thinking though, but should do for now.\n"
    },
    {
      "commit": "2984d26eb08f42a8f470277cef6c1657f984e968",
      "tree": "94066fba1723bbc2ea9badaf2dc09ae9f7948a57",
      "parents": [
        "ffe543af88fca1d8be49c3a3fe2f50b02919c689"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 16:49:07 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 26 16:49:07 2005 +0000"
      },
      "message": "\t* isisd.[ch]: Introduce oldmetric flag for area and transition\n\t  metricstyle command. With metricstyle wide only extended TLVs\n\t  should be used.\n"
    },
    {
      "commit": "ffe543af88fca1d8be49c3a3fe2f50b02919c689",
      "tree": "9eac072d987227d11689443e4446ce2c82f79017",
      "parents": [
        "d24af186ea5a964300d93bb6fb4384911153d9d6"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 25 12:04:25 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 25 12:04:25 2005 +0000"
      },
      "message": "\t* dict.[ch]: Revert all nonfunctional changes. It\u0027s external module\n\t  imported from kazlib and it\u0027s better not to screw it - there is\n\t  theoretical chance that we might want to merge changes from upstream\n\t  at some point. Also avoid the loss of info about upstream version\n\t  (rcsid).\n"
    },
    {
      "commit": "d24af186ea5a964300d93bb6fb4384911153d9d6",
      "tree": "7b8e57758edca8e12e5004192d6e14bd1cbb43c6",
      "parents": [
        "3d54927678139c580fd3029c17e7d8a94b3a60f7"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 24 14:00:26 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 24 14:00:26 2005 +0000"
      },
      "message": "\t* rib.h: Add note about behaviour of rib_add_ipv[46]* functions -\n\t  add is treated as implicit withdraw.\n"
    },
    {
      "commit": "3d54927678139c580fd3029c17e7d8a94b3a60f7",
      "tree": "5c7fd8ec889f67e5bc206cee4fbc12eaa5ee3762",
      "parents": [
        "ebf1ead0326bf18293c24ee151d22071e8bebc10"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 18:52:14 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 18:52:14 2005 +0000"
      },
      "message": "\t* isis_route.c: Fix output of nexthops in case of extreme debug.\n"
    },
    {
      "commit": "ebf1ead0326bf18293c24ee151d22071e8bebc10",
      "tree": "a39df91000789222ca622fec1325f4acaf2d564e",
      "parents": [
        "75b2dd025af1d839279a21ee4b3035085d17331c"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Sep 21 14:58:20 2005 +0000"
      },
      "message": "\t* zebra_rib.c: Reduce the height of some staircases. Fix\n\t  rib_delete_ipv6() to match routes in the RIB by their gateway as\n\t  well as by destination.\n"
    },
    {
      "commit": "75b2dd025af1d839279a21ee4b3035085d17331c",
      "tree": "19435808ccbdc15bc1e19fbe2c6bdb44d2b6a782",
      "parents": [
        "319572cc52267bfd55cca5eaab405df4db27ddaf"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 14:06:35 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 14:06:35 2005 +0000"
      },
      "message": "2005-09-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* memtypes.{c,h}: Add MTYPE_AS_SEG_DATA.\n"
    },
    {
      "commit": "319572cc52267bfd55cca5eaab405df4db27ddaf",
      "tree": "576a148fe8515caf60bde98505a41845068c1d4d",
      "parents": [
        "5339cfdb7c3f6187452982173aa55ff525d1f6fe"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Sep 21 12:30:08 2005 +0000"
      },
      "message": "2005-09-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* zebra_rib.c: (static_uninstall_ipv{4,6}) Fix regression wrt\n\t  removal of static routes with multiple-hops introduced with\n\t  the workqueue conversion. We should free the relevant\n\t  nexthop and then get rib_process to run, otherwise we just\n\t  get same static route back again (with no way to unconfigure\n          it, because its already deleted from configuration).\n"
    },
    {
      "commit": "5339cfdb7c3f6187452982173aa55ff525d1f6fe",
      "tree": "e7cd744e116040c7bc5f2823f8b73ea9e1316d7e",
      "parents": [
        "f06834b80504497824ce50b533ba4fedb6abf2c7"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Sep 19 13:28:05 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Mon Sep 19 13:28:05 2005 +0000"
      },
      "message": "2005-09-19 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_lsa.h: (ospf_external_lsa_flush) Comment out the 5th argument\n\t  (nexthop) since it is not used in the function (except inside\n\t  some commented-out code).\n\t* ospf_lsa.c: (ospf_external_lsa_flush,ospf_external_lsa_refresh)\n\t  Comment out the 5th argument to ospf_external_lsa_flush.\n\t* ospf_asbr.c: (ospf_redistribute_withdraw) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n\t* ospf_vty.c: (no_ospf_default_information_originate) Eliminate 5th\n\t  uninitialized nexthop arg to ospf_external_lsa_flush.\n\t* ospf_zebra.c: (ospf_zebra_read_ipv4) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n\t* ospfd.c: (ospf_network_set) Comment out 5th arg\n\t  to ospf_external_lsa_flush.\n"
    },
    {
      "commit": "f06834b80504497824ce50b533ba4fedb6abf2c7",
      "tree": "65a379aa4cc493ae9e547be740a3169d86206586",
      "parents": [
        "e6a4feb763749ff0c63558db456e617915fd1386"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 10:44:04 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 10:44:04 2005 +0000"
      },
      "message": "\t* isis_lsp.c, isis_pdu.c, isis_spf.c: Remove some old unused code.\n"
    },
    {
      "commit": "e6a4feb763749ff0c63558db456e617915fd1386",
      "tree": "e348859f9ef281521ad13552e062ea6da44a2248",
      "parents": [
        "96e30387f164148fe47da6d4481283a61d761c97"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 09:53:21 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 09:53:21 2005 +0000"
      },
      "message": "\t* configure.ac: Test existance of strndup.\n\t* lib/str.[ch]: Add strndup() from glibc.\n"
    },
    {
      "commit": "96e30387f164148fe47da6d4481283a61d761c97",
      "tree": "d22600c92bf5d3f8d38c57c39646842e78e5d4dd",
      "parents": [
        "72b9c956e2e025d24cf1e55a5e17ba34942a6ee3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 06:35:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 06:35:47 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Better output of detailed LSP printout and fixed TE IPv4\n\t  reachibility metric display.\n"
    },
    {
      "commit": "72b9c956e2e025d24cf1e55a5e17ba34942a6ee3",
      "tree": "a27533f2aae630e7a5c6ab2b1f6f198afa328763",
      "parents": [
        "f1082d1934fae86e67b13594d2b506d1147f022f"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 06:02:34 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 06:02:34 2005 +0000"
      },
      "message": "\t* isis_tlv.h: Cleanup comment about TLVs we should support, remove info\n\t  about useless (in sense of IP(v6)) TLVs.\n"
    },
    {
      "commit": "f1082d1934fae86e67b13594d2b506d1147f022f",
      "tree": "60b02841edb8ef9c82b279d7c255b19d77389d5c",
      "parents": [
        "4eda93ab0bb51da95f239b9e7eaecf8487ef4424"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 04:23:34 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Mon Sep 19 04:23:34 2005 +0000"
      },
      "message": "\t* isis_lsp.h: Added backpointer to the area from LSP. For now it\u0027s used\n\t  only in generated topology LSPs.\n\t* isisd.[ch]: Cleanup CLI commands related to topology generation and\n\t  added command to specify base fo dynamic hostname for topology LSPs.\n\t* isis_lsp.c: Rewrite almost all code related to generation topology\n\t  LSPs (top_lsp_refresh(), generate_topology_lsps() and\n\t  build_topology_lsp_data() functions). Topology is connected to own\n\t  LSP now (lsp_build_nonpseudo). Commented out lsppdu_realloc\n\t  functions, it\u0027s not used any more hopefully.\n\n\tTopology generation feature is actually useful now.\n"
    },
    {
      "commit": "4eda93ab0bb51da95f239b9e7eaecf8487ef4424",
      "tree": "4913dafddd31a0c2e16e6887d01179982e3d6fcf",
      "parents": [
        "e6a0bf9ca05b5543d0d21045ce939598c4e79887"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 18 17:51:02 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 18 17:51:02 2005 +0000"
      },
      "message": "\t* isis_lsp.c (lsp_update): Fix previous commit - manipulate the right\n\t  database and only if LSP is really in the database (sanity check).\n"
    },
    {
      "commit": "e6a0bf9ca05b5543d0d21045ce939598c4e79887",
      "tree": "9ca8e935ef9884e22afd3e046242e334917ff24a",
      "parents": [
        "a96d8d1095da09811e343a534f5801a948ae1061"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Sep 17 18:53:38 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Sat Sep 17 18:53:38 2005 +0000"
      },
      "message": "2005-09-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* ospf_opaque.c:\n\t  (ospf_opaque_lsa_refresh_schedule,ospf_opaque_lsa_flush_schedule)\n\t  No need to call ospf_lookup(), just use lsa0-\u003earea-\u003eospf instead.\n"
    },
    {
      "commit": "a96d8d1095da09811e343a534f5801a948ae1061",
      "tree": "572fdf17817de64a85cda87d15f3b0da8640c6b5",
      "parents": [
        "53a6f932032a30625358414ae0f77790656ccaca"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Sep 16 14:44:23 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Sep 16 14:44:23 2005 +0000"
      },
      "message": "\t* isis_lsp.c (lsp_update): Remove LSP from database before updating\n\t  its data and put it back after. Database entry MUST contain at least\n\t  correct pointers to the sysid to get correct compare results.\n\t* isis_lsp.[ch], isis_pdu.c: Pass level to the lsp_update() function.\n"
    },
    {
      "commit": "53a6f932032a30625358414ae0f77790656ccaca",
      "tree": "aa5b33c8e58024ba68543ad8e2c3eaaa36984fd8",
      "parents": [
        "ca16218df74a43491e34a577db5023c89a7e79c8"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 15 06:50:53 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 15 06:50:53 2005 +0000"
      },
      "message": "\t* vtysh.c: Fix warning by casting rl_bind_key 2. argument correctly.\n\t* extract.pl.in: Fix warning - add isisd/topology to the includes.\n"
    },
    {
      "commit": "ca16218df74a43491e34a577db5023c89a7e79c8",
      "tree": "5aaee14da68863f7d7eb80fad46c83bebfc4fb8c",
      "parents": [
        "1f377b0202dfc4653f7717de964b628a369a9526"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 12 16:58:52 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 12 16:58:52 2005 +0000"
      },
      "message": "2005-09-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (general) RTM_CHANGE and implicit withdraw on RTM_NEWADDR\n\t  support.\n\t* connected.c: (connected_withdraw) new function. withdraw a\n\t  connected subnet address set from zebra, and pass information\n\t  along to clients.\n\t  (connected_announce) similar, but to announce a new connected\n\t  subnet address set.\n\t  (connected_check_ipv4) renamed to connected_check, as its\n\t  AFI independent.\n\t  (connected_add_ipv{4,6}) Remove the connected address announce\n\t  stuff, use connected_announce instead.\n\t  If connected_check indicates address is already present,\n\t  treat it as an implicit withdraw of the existing address, ie\n\t  remove the old address details and replace with the new\n\t  details.\n\t  (connected_delete_ipv{4,6}) Use connected_withdraw.\n\t  (connected_check_ipv6) deleted in favour of connected_check.\n\t* connected.h: Rename connected_check_ipv4 to connected_check.\n\t  delete connected_check_ipv6.\n\t* interface.c: Use connected_check rather than the AFI specific\n\t  symbols.\n\t* kernel_socket.c: (rtm_read) RTM_CHANGE support. Create a\n\t  rib delete event for the existing route, before adding route\n\t  again.\n\t  (kernel_read) we can handle RTM_CHANGE now.\n"
    },
    {
      "commit": "1f377b0202dfc4653f7717de964b628a369a9526",
      "tree": "ff8718a3d40adbec8adeab994a32873bbbd4bacf",
      "parents": [
        "fe69a505f7be4357bf8523e3bbdced9c95590f3a"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 18:00:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 18:00:11 2005 +0000"
      },
      "message": "2005-09-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* aspath_test.c: Test bgp_aspath functionality.\n\t* Makefile.am: build aspathtest\n\t* ChangeLog: Fix date of previous commit\n"
    },
    {
      "commit": "fe69a505f7be4357bf8523e3bbdced9c95590f3a",
      "tree": "6d2450016eb19f30b153b2439d06ade68d1b8f12",
      "parents": [
        "1f8ae70b7b86d132b95a18f0c824deb248987afc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 16:55:02 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Sep 10 16:55:02 2005 +0000"
      },
      "message": "2005-09-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* Makefile.am: bgpd shouldn\u0027t list libgp\u0027s sources as its own.\n\t  Use LDADD.\n\t* bgp_aspath.h:\n\t  (struct assegment) New struct, abstract representation of a\n\t  list of AS_PATH segments and the contained ASNs.\n\t  (struct aspath) Remove the raw-data related\n\t  fields, reference the abstract struct assegment instead.\n\t  Remove several other computed fields, it\u0027s just a\n\t  headache to maintain them and they\u0027re cheap to compute from\n\t  struct assegment.\n\t  (aspath_parse) parse a stream, not a pointer to raw data.\n\t  (aspath_count_{hops,confeds,size}) helpers to access\n\t  information formerly directly contained in struct aspath.\n\t  (aspath_snmp_pathseg) Helper for SNMP, BGP MIB wants\n\t  to be able to output hex representation of raw data.\n\t* bgp_aspath.c: (general) partial-rewrite. Store aspath data\n\t  as an abstract singly-linked list of abstract segments,\n          rather than storing the raw data, and parsing it each and\n\t  every time. Remove several count/size fields which are cheap\n\t  to compute from the abstract segment structure.\n\t  (global) Include stream.h, needed for aspath_parse, and\n\t  others. Couple of helper macros added.\n\t  (struct assegment_header) Just the header, and only the\n\t  header.\n\t  (assegment_data_{new,free}) convenience functions for\n\t  AS_SEG_DATA allocation, the dynamic, per-segment array of\n\t  ASNs.\n\t  (assegment_{new,free,free_all,dup,dup_all}) convenience\n\t  functions for creating struct assegments. The _all forms will\n\t  follow the entire chain of segments from the given segment.\n\t  (assegment_prepend_asns) new function, prepend an ASN N times\n\t  to segment.\n \t  (assegment_append_asns) Append a list (array) of ASNs to\n\t  segment.\n\t  (int_cmp) convenience function for the aspath hash.\n\t  (assegment_normalise) new function. Normalise the given\n\t  segment chain to meet expectations of Quagga, and to\n\t  eliminate differing raw representations of the same paths.\n\t  Merge \u0027runs\u0027 of SEQUENCEs into one segment as our internal\n\t  segment is not limited by the protocol AS_PATH segment\n\t  length. Sort ASNs in SETs.\n\t  (aspath_new) Take void argument to quell warnings. Use the\n\t  assegment convenience functions.\n\t  (assegment_count_{asns,confeds,hops}) new functions to\n\t  compute at runtime values previously held in struct aspath.\n\t  (aspath_size) ditto.\n\t  (aspath_make_str_count) rewritten to stringify new\n\t  representation, and to be slightly easier to understand\n\t  hopefully.\n\t  (aspath_str_update) convenience function, update the aspath\n\t  str. Should investigate removing maintained string from\n\t  struct aspath, just run-time compute it, as per other fields.\n\t  It\u0027s just a maintenance headache, would save noticeable\n\t  amount of RAM with possibly not much extra run-time cost.\n\t  (aspath_dup) use the assegment dup functions.\n\t  (aspath_hash_alloc) Take void * argument to satisfy gcc. Use\n\t  the proper helper functions to dup data.\n\t  (assegments_parse) new function. parse raw AS_PATH data into\n\t  struct assegments. Normalise and return the head of the list.\n\t  (aspath_parse) Parse a stream, not pointer to raw data and\n\t  use assegments_parse to do it.\n\t  (assegment_data_put) Write out a single segment data in protocol\n\t  form to stream.\n\t  (assegment_header_put) ditto but for segment header.\n\t  (aspath_put) new function. As per previous but for an entire\n\t  struct aspath.\n\t  (aspath_snmp_pathseg) wrapper around aspath_put for\n\t  bgp_snmp.c. Uses a static buffer sadly.\n\t  (aspath_aggregate_as_set_add) rewritten to use assegments.\n\t  (aspath_aggregate) ditto\n\t  (aspath_{firstas,loop,private_as}_check) ditto\n\t  (aspath_{merge,prepend,add_one_as}) ditto\n\t  (aspath_cmp_left{_confed}) ditto\n\t  (aspath_delete_confed_seq) ditto, plus fixed to properly\n\t  delete all leading confed segments.\n\t  (aspath_as_add) Just use assegment_append_asns.\n\t  (aspath_segment_add) updated to use assegments.\n\t  (enum as_token) Add values for confeds\n\t  (aspath_gettoken) Add support for confeds\n\t  (aspath_str2aspath) ditto\n\t  (aspath_key_make) updated to use as_segments. Also, add\n\t  segment type into the hash value as appropriate.\n\t  (aspath_cmp) updated to use as_segments.\n\t  (aspath_print) don\u0027t segfault on NULL argument.\n\t* bgp_attr.c: (bgp_attr_aspath) aspath_parse wants the stream\n\t  now. No need for manual forwarding of stream.\n\t  (bgp_packet_attribute) empty aspath is now denoted by NULL\n\t  segment field, length is gone.\n\t  Use aspath_size() to determine size.\n\t  (bgp_attr_init) Fix declaration, explicitely specify void\n\t  arg.\n\t  (bgp_dump_routes_attr) Use aspath_size() to determine size.\n\t* bgp_route.c: (bgp_info_cmp) use the aspath_count_* functions.\n\t  (bgp_rib_withdraw) remove unused variable. Use\n\t  aspath_count_hops.\n\t* bgp_snmp.c: (bgp4PathAttrTable) raw data is gone, use\n\t  aspath_snmp_pathseg to get the representation.\n"
    },
    {
      "commit": "1f8ae70b7b86d132b95a18f0c824deb248987afc",
      "tree": "4d50ffd23b5e1e63a442e59c66c16227d06c4d33",
      "parents": [
        "e7cd37bf334c6a4c0a3db6a0cfeb97674f820503"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 09 23:49:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Sep 09 23:49:49 2005 +0000"
      },
      "message": "2005-09-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_vty.c: (bgp_vty_init) gcc 4 compile fix. static\n\t  function declarations shouldn\u0027t be inside functions.\n\t* bgp_dump.c: (bgp_dump_interval_add) ditto.\n"
    },
    {
      "commit": "e7cd37bf334c6a4c0a3db6a0cfeb97674f820503",
      "tree": "666848c612aba66e32d59a788cda72b213d5943a",
      "parents": [
        "dff4f5272f7c3289b0c7eebe441cf7c223bcb044"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 08 15:18:39 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Sep 08 15:18:39 2005 +0000"
      },
      "message": "* Thu Sep 12 2005 Paul Jakma \u003cpaul@dishone.st\u003e\n- Steal some changes from Fedora spec file:\n- Add with_rtadv variable\n- Test for groups/users with getent before group/user adding\n- Readline need not be an explicit prerequisite\n- install-info delete should be postun, not preun\n"
    },
    {
      "commit": "dff4f5272f7c3289b0c7eebe441cf7c223bcb044",
      "tree": "113b16e046e029b52220a4c7bc96eb8102af7612",
      "parents": [
        "6379b96117a50803236fe698e4e27d9849f3a3bc"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Sep 06 23:08:01 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Sep 06 23:08:01 2005 +0000"
      },
      "message": "2004-09-06 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* test-buffer.c: include memory.h\n          (main) call memory_init().\n"
    },
    {
      "commit": "6379b96117a50803236fe698e4e27d9849f3a3bc",
      "tree": "2b01eef69470adb3ea4b10c309b553bf44357403",
      "parents": [
        "eb820afe3b53321624317cfa6b426ecae1392f24"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 05 14:00:09 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 05 14:00:09 2005 +0000"
      },
      "message": "2004-09-05 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* heavy-wq.c: (slow_func_del,slow_func_err) make them take\n\t  void * argument to shut up silly gcc warning.\n"
    },
    {
      "commit": "eb820afe3b53321624317cfa6b426ecae1392f24",
      "tree": "55557a19a1918bdca547c3a3d0e7f6c7802b78b4",
      "parents": [
        "c89c05dd04d097bd8213125a42d67204bb681de5"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 05 11:54:13 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Sep 05 11:54:13 2005 +0000"
      },
      "message": "2005-09-05 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* command.c: (install_element) be more robust. Eg, cmd_init\n\t  need not have been called, some applications may use other\n\t  library subsystems, which call install_element, without the\n          application wanting commands and hence not calling cmd_init.\n"
    },
    {
      "commit": "c89c05dd04d097bd8213125a42d67204bb681de5",
      "tree": "b8bde80fab9ea45f035edcb71ce1795abcb039c8",
      "parents": [
        "c0fb2a52150ece6042181ab49fafc12b3ba07870"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 04 21:36:36 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Sep 04 21:36:36 2005 +0000"
      },
      "message": "\t* *.c: Try to be less verbose by default (without any debug options\n\t  on).\n\t* isis_lsp.c (lsp_build_nonpseudo): Use stream_reset() instead of\n\t  touching endp directly.\n\t* isis_lsp.c (lsp_build_pseudo): Ditto.\n"
    },
    {
      "commit": "c0fb2a52150ece6042181ab49fafc12b3ba07870",
      "tree": "bb150096a736c9800816dbeccd35fd7669151dd1",
      "parents": [
        "be7d65d976f3e6f9d24b0e77064444ae69b74e1d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 03 16:29:40 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Sep 03 16:29:40 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Yet another regression introduced by stream cleanup.\n\t  Similar fix to the one commited to lsp_build_nonpseudo() some days\n\t  ago.\n"
    },
    {
      "commit": "be7d65d976f3e6f9d24b0e77064444ae69b74e1d",
      "tree": "a71758e3b3ad796ae62823ea8aa16f6eb55e952c",
      "parents": [
        "29e50b23530f37df9073808fe78a6c22f00beeea"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Sep 02 01:38:16 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Sep 02 01:38:16 2005 +0000"
      },
      "message": "\t* isis_lsp.c: Less TLV leaking.\n"
    },
    {
      "commit": "29e50b23530f37df9073808fe78a6c22f00beeea",
      "tree": "c6461b12ec92d0ba5dc776a16510dc2695c6587a",
      "parents": [
        "aac372f4f5b617a579dafeab31fb486a5d69d65d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 01 18:18:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 01 18:18:47 2005 +0000"
      },
      "message": "\t* random.c, spgrid.[ch]: Fix warnings with hope that I didn\u0027t broke\n\t  anything. These floats to longs and vice versa casts are starnge\n\t  indeed.\n\t* isis_pdu.c: As we don\u0027t use %z for size_t for now because we support\n\t  older compilers, cast them to unsigned long.\n\n\tAlso fix previous changelog entry. Isisd compiles cleanly now again.\n"
    },
    {
      "commit": "aac372f4f5b617a579dafeab31fb486a5d69d65d",
      "tree": "9aac3362db19f195238b8508761e82f2d6b8a370",
      "parents": [
        "deba35508e28a3861bb182218bb51af6769b2581"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 01 17:52:33 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Sep 01 17:52:33 2005 +0000"
      },
      "message": "\t* isis_adjacency.c, isis_lsp.c, isisd.c: Replace XMALLOC \u0026\u0026 memset\n\t  with XCALLOC.\n\t* isis_lsp.c (lsp_build_pseudo): Fix adding ES neighbour.\n\t* isis_tlv.c: More compact free_tlvs() function.\n\t* isis_lsp.c (lsp_build_nonpseudo) : Try to fix one more regression\n\t  introduced by stream cleanup. Seek enp to the right place before\n\t  starting to fill stream with TLVs.\n"
    },
    {
      "commit": "deba35508e28a3861bb182218bb51af6769b2581",
      "tree": "04613ed5ea108b58fcc83bf6abd403ed6b841f2f",
      "parents": [
        "be61c4eb59b8df1aab496176d87bb2e1763f185e"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:19:39 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:19:39 2005 +0000"
      },
      "message": "\t* ripng_zebra.c, ripngd.[ch]: Pass metric info to the zebra daemon.\n\n\tForwardport from stable branch.\n"
    },
    {
      "commit": "be61c4eb59b8df1aab496176d87bb2e1763f185e",
      "tree": "063e8baa7cd4a863e72d246d7c14f14842cbb604",
      "parents": [
        "b7395791a31f7b734094d032998ab632136f36f1"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:05:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sat Aug 27 06:05:47 2005 +0000"
      },
      "message": "\t* zebra_rib.c, rib.h: Add distance and metric arguments to the\n\t  rib_add_ipv6() function so that IPv6 routes in RIB can have correct\n\t  metric. No IPv6 routing daemon uses distance yet though.\n\t* zserv.c, connected.c, kernel_socket.c, rt_netlink.c,\n\t  rtread_proc.c,zserv.c: Pass metric and distance info to the\n\t  rib_add_ipv6().\n\n\tForwardport from stable branch.\n"
    },
    {
      "commit": "b7395791a31f7b734094d032998ab632136f36f1",
      "tree": "8b8e5efb0c0082b882f8a5a9db9eabd3aa9841e7",
      "parents": [
        "a969459c92d6b6cc557a0961aca14059e791bc08"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Aug 26 12:58:38 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Fri Aug 26 12:58:38 2005 +0000"
      },
      "message": "\t* bgp_route.c: Third (?) attempt to fix best selection breakage\n\t  introduced long time ago with route server patch. Hopefully\n\t  it\u0027s last case to fix - route-server client not in peer group.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "a969459c92d6b6cc557a0961aca14059e791bc08",
      "tree": "97ad6dcb79caf159e67b39252095c6724c45c416",
      "parents": [
        "c0689394aef68bcafacd570e4c9163d478131e76"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 25 14:50:05 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Aug 25 14:50:05 2005 +0000"
      },
      "message": "2005-08-25 Paul Jakma \u003cpaul@jakma.org\u003e\n\n\t* configure.ac: Add -fno-omit-frame-pointer after -Os in default\n\t  cflags, just to be sure.\n\t  Fedora\u0027s readline library does not itself link to termcap, hence\n\t  we must pass the result of termcap tests in via OTHER-LIBRARIES\n\t  argument, otherwise the test of main in readline will fail due to\n\t  missing termcap systems. On systems like Debian, -ltermcap\n\t  is not needed for the readline test, because libreadline already\n\t  links to it.\n"
    },
    {
      "commit": "c0689394aef68bcafacd570e4c9163d478131e76",
      "tree": "c85182d1fb1d4d4e65f9d3a6f9ca42bc93fb79fc",
      "parents": [
        "57b5b7ed079c08dd7670aaef988ecfb650c6b1d2"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Aug 25 12:00:58 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Thu Aug 25 12:00:58 2005 +0000"
      },
      "message": "\t* configure.ac, vtysh/Makefile.am: Only vtysh needs to be linked\n\t  against libreadline and friends.\n"
    },
    {
      "commit": "57b5b7ed079c08dd7670aaef988ecfb650c6b1d2",
      "tree": "fe2f62ddc88682bfca555e92742859345e16810b",
      "parents": [
        "25ffbdc1d72682dea1f5254d7c12e400215e0f1e"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:44:29 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:44:29 2005 +0000"
      },
      "message": "2005-08-22 Hugo Santos \u003chsantos@av.it.pt\u003e\n\n\t* vtysh.c: Add support for BGP_IPV6M_NODE\n"
    },
    {
      "commit": "25ffbdc1d72682dea1f5254d7c12e400215e0f1e",
      "tree": "f0a1c3a7fd8b384e71c49a27b4c3c7508ee7b163",
      "parents": [
        "1e83659026e5b9c5876273c83e86fd229dd98c88"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:42:08 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:42:08 2005 +0000"
      },
      "message": "2005-08-22 Hugo Santos \u003chsantos@av.it.pt\u003e\n\n\t* bgp_vty.c: (general) Add support for BGP IPv6 Multicast SAFI\n\t  commands and BGP_IPV6M_NODE.\n"
    },
    {
      "commit": "1e83659026e5b9c5876273c83e86fd229dd98c88",
      "tree": "cad15dd7ea31d3c0e18f1c0cd868168a3391e01e",
      "parents": [
        "b40d939b477a08d79dbee947aea42ac652090f85"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:39:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:39:56 2005 +0000"
      },
      "message": "2005-08-22 Hugo Santos \u003chsantos@av.it.pt\u003e\n\n\t* command.h: (enum node_type) Add BGP_IPV6M_NODE\n\t* command.c: (node_parent) Handle BGP_IPV6M_NODE node\n\t  (config_exit, config_end) ditto\n\t* vty.c: (vty_end_config) Handle BGP_IPV6M_NODE node\n"
    },
    {
      "commit": "b40d939b477a08d79dbee947aea42ac652090f85",
      "tree": "fe160cd4514218baea57c2566e318fc66ea9a6ef",
      "parents": [
        "bb5b7552cc4f067fbb25f7a8f0c4fe558a508f3f"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:34:41 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Aug 22 22:34:41 2005 +0000"
      },
      "message": "2005-08-22 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* bgp_route.h: (struct bgp_info) add a new flag, BGP_INFO_REMOVED.\n\t  BGP_INFO_VALID is already overloaded, don\u0027t care to do same thing\n\t  to STALE or HISTORY.\n\t* bgpd.h: (BGP_INFO_HOLDDOWN) Add INFO_REMOVED to the macro, as a\n\t  route which should generally be ignored.\n\t* bgp_route.c: (bgp_info_delete) Just set the REMOVE flag, rather\n\t  than doing actual work, so that bgp_process (called directly,\n\t  or indirectly via the scanner) can catch withdrawn routes.\n\t  (bgp_info_reap) Actually remove the route, what bgp_info_delete\n\t  used to do, only for use by bgp_process.\n\t  (bgp_best_selection) reap any REMOVED routes, other than the old\n\t  selected route.\n\t  (bgp_process_rsclient) reap the old-selected route, if appropriate\n\t  (bgp_process_main) ditto\n\t  (bgp_rib_withdraw, bgp_rib_remove) make them more consistent with\n\t  each other. Don\u0027t play games with the VALID flag, bgp_process\n\t  is async now, so it didn\u0027t make a difference anyway.\n\t  Remove the \u0027force\u0027 argument from bgp_rib_withdraw, withdraw+force\n\t  is equivalent to bgp_rib_remove. Update all its callers.\n\t  (bgp_update_rsclient) bgp_rib_withdraw and force set is same as\n\t  bgp_rib_remove.\n\t  (route_vty_short_status_out) new helper to print the leading\n\t  route-status string used in many command outputs. Consolidate.\n\t  (route_vty_out, route_vty_out_tag, damp_route_vty_out,\n\t   flap_route_vty_out) use route_vty_short_status_out rather than\n\t  duplicate.\n\t  (route_vty_out_detail) print state of REMOVED flag.\n\t  (BGP_SHOW_SCODE_HEADER) update for Removed flag.\n"
    },
    {
      "commit": "bb5b7552cc4f067fbb25f7a8f0c4fe558a508f3f",
      "tree": "67adaa204f37ea8c57ef8b0c893ed1e21b7d52bb",
      "parents": [
        "54bedb55d9f4185e35307a4178ad8d73a9a8857d"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 21 20:01:15 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Sun Aug 21 20:01:15 2005 +0000"
      },
      "message": "\t* ospf_vty.c: Make \"show ip ospf neighbor xxx\" commands work.\n\t  Interface should be specified by name now.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "54bedb55d9f4185e35307a4178ad8d73a9a8857d",
      "tree": "9cccbd6d9ed8d0e612a76817ced6cd24dbb8e2a0",
      "parents": [
        "56b24f4c33d2dc093922945319da02c7cbdadd2b"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 17 13:31:47 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Wed Aug 17 13:31:47 2005 +0000"
      },
      "message": "\t* ospf_vty.c: Check carefully if interface exists before trying to\n\t  print info about it.\n\n\tFixes bugzilla #213. [backport candidate]\n"
    },
    {
      "commit": "56b24f4c33d2dc093922945319da02c7cbdadd2b",
      "tree": "c04bb9cc0ecaffd0b03fb8b9a3044b62a1b6037b",
      "parents": [
        "7d7d0f3848283fea7efd6cfeddcfa588c229fb3a"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Aug 16 20:58:12 2005 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Aug 16 20:58:12 2005 +0000"
      },
      "message": "\t* isis_misc.[ch]: Fix some warnings, making some strings const.\n"
    },
    {
      "commit": "7d7d0f3848283fea7efd6cfeddcfa588c229fb3a",
      "tree": "73ca22e74ed6896d75c14b3aa3b74c079439ab61",
      "parents": [
        "2c61ae37821f4ece2b2f22d716ac8a135808e70c"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 16 17:23:15 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 16 17:23:15 2005 +0000"
      },
      "message": "2005-08-16 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* README.txt: point to the opensolaris.org sources for the SMF\n\t  manifest class scripts. Make step 3 slightly more explicit about\n\t  what \u0027this directory\u0027 is.\n"
    },
    {
      "commit": "2c61ae37821f4ece2b2f22d716ac8a135808e70c",
      "tree": "2ef1ae310612294f9a8ec16bb94d7858070c757b",
      "parents": [
        "60f0651c32e6ee35da5f2d227dc471427568ff45"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 16 15:22:14 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Aug 16 15:22:14 2005 +0000"
      },
      "message": "2005-08-16 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ripd.c: (general) Fix previous commit, broke multicast bind and\n\t  hence setting of source port, which broke communication with\n\t  non-borken ripd. Fix removes more stuff from rip_interface.c\n\t  than it adds to ripd.c ;)\n\t  (rip_create_socket) the to argument really is a from argument,\n\t  rename it. Set the source port to RIP port unconditionally, it\u0027s\n\t  required.\n\t  (rip_send_packet) Set from address correctly for multicast.\n\t  (rip_output_process) trivial: num can be BSS specified, rather\n\t  than in body.\n\t* rip_interface.c: (rip_interface_multicast_set) strip out\n\t  redundant stuff related to bind, which rip_create_socket does.\n\t  Just make it set the multicast socket option, as per the\n\t  interface concerned, no more.\n"
    },
    {
      "commit": "60f0651c32e6ee35da5f2d227dc471427568ff45",
      "tree": "bc3bbe1d94aa2126cb7f8d7088d230fed64e19c2",
      "parents": [
        "47828747f48ea6739d0af6555648759016462703"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Aug 13 13:42:38 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Aug 13 13:42:38 2005 +0000"
      },
      "message": "2005-08-13 Paul Jakma \u003cpaul@jakma.org\u003e\n\n\t* Makefile.am: (EXTRA_DIST) Add the trailing slash back in which\n\t  greg left out - tools bits weren\u0027t being included in dist,\n\t  which broke rpm builds :).\n"
    },
    {
      "commit": "47828747f48ea6739d0af6555648759016462703",
      "tree": "468a87c6176070819c6b43683d1ce46389cd6897",
      "parents": [
        "1dab30f421d9e6909d498961294fa1f44c76b207"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Aug 10 15:46:11 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Aug 10 15:46:11 2005 +0000"
      },
      "message": "2005-08-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* ospf6_asbr.c: (ospf6_asbr_redistribute_add) Fix sense of testing\n\t  of route_map_apply return code, it can return many things other\n\t  than RMAP_MATCH which do not indicate DENY. Should test explicitly\n\t  for equality to RMAP_DENYMATCH instead.\n\n\t[backport candidate]\n"
    },
    {
      "commit": "1dab30f421d9e6909d498961294fa1f44c76b207",
      "tree": "185c6579ea9a8b58e07cf90d47c75d275f1708f5",
      "parents": [
        "6204c7fb9e6bc2ca1ec72b46af4e3f575d5dd41c"
      ],
      "author": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Aug 10 15:11:21 2005 +0000"
      },
      "committer": {
        "name": "gdt",
        "email": "gdt",
        "time": "Wed Aug 10 15:11:21 2005 +0000"
      },
      "message": "add INSTALL.quagga.txt to the distribution, so that people who apply\npatches and lose because of old autoconf/automake versions have the\nopportunity to find tout what to do.\n"
    }
  ],
  "next": "6204c7fb9e6bc2ca1ec72b46af4e3f575d5dd41c"
}
