2007-09-27 Paul Jakma <paul.jakma@sun.com>

	* bgp_aspath.c: (assegment_normalise) remove duplicates from
	  from sets.
	  (aspath_reconcile_as4) disregard a broken part of the RFC around
	  error handling in path reconciliation.

2007-09-25 Paul Jakma <paul.jakma@sun.com>

	* bgp_open.c: (peek_for_as4_capability) Fix to work.
	* bgp_packet.c: (bgp_open_receive) Fix sanity check of as4.
	
2007-09-18 Paul Jakma <paul.jakma@sun.com>

	* bgp_open.c: (bgp_capability_as4) debug printf inline with others.
	  (peek_for_as4_capability) There's no need to signal failure, as
	  failure is better dealt with through full capability parser -
	  just return the AS4, simpler.
	* bgp_packet.c: (bgp_open_receive) Update to match
	  peek_for_as4_capability change.
	  Allow use of BGP_AS_TRANS by 2b speakers.
	  Use NOTIFY_OPEN_ERR rather than CEASE for OPEN parsing errors.
	  (bgp_capability_msg_parse) missing argument to debug print
	  (bgp_capability_receive) missing return values.
	  
	  
2007-07-25 Paul Jakma <paul.jakma@sun.com>

	* Remove 2-byte size macros, just make existing macros take
	  argument to indicate which size to use.
	  Adjust all users - typically they want '1'.
	* bgp_aspath.c: (aspath_has_as4) New, return 1 if there are any
	  as4's in a path.
	  (aspath_put) Return the number of bytes actually written, to
	  fix the bug Juergen noted: Splitting of segments will change
	  the number of bytes written from that already written to the
	  AS_PATH header.
	  (aspath_snmp_pathseg) Pass 2-byte flag to aspath_put. SNMP
	  is still defined as 2b.
	  (aspath_aggregate) fix latent bug.
	  (aspath_reconcile_as4) AS_PATH+NEW_AS_PATH reconciliation
	  function.
	  (aspath_key_make) Hash the AS_PATH string, rather than
	  just taking the addition of assegment ASes as the hash value,
	  hopefully sligthly more collision resistant.
	  (bgp_attr_munge_as4_attrs) Collide the NEW_ attributes
	  together with the OLD 2-byte forms, code Juergen
	  had in bgp_attr_parse but re-organised a bit.
	  (bgp_attr_parse) Bunch of code from Juergen moves
	  to previous function.
	  (bgp_packet_attribute) Compact significantly by
	  just /always/ using extended-length attr header.
	  Fix bug Juergen noted, by using aspath_put's
	  (new) returned size value for the attr header rather
	  than the (guesstimate) of aspath_size() - the two could
	  differ when aspath_put had to split large segments, unlikely
	  this bug was ever hit in the 'wild'.
	  (bgp_dump_routes_attr) Always use extended-len and
	  use aspath_put return for header length. Output 4b ASN
	  for AS_PATH and AGGREGATOR.
	* bgp_ecommunity.c: (ecommunity_{hash_make,cmp}) fix
	  hash callback declarations to match prototypes.
	  (ecommunity_gettoken) Updated for ECOMMUNITY_ENCODE_AS4, 
	  complete rewrite of Juergen's changes (no asdot support)
	* bgp_open.c: (bgp_capability_as4) New, does what it says
	  on the tin.
	  (peek_for_as4_capability) Rewritten to use streams and
	  bgp_capability_as4.
	* bgp_packet.c: (bgp_open_send) minor edit
	  checked (in the abstract at least) with Juergen.
	  Changes are to be more accepting, e.g, allow AS_TRANS on
	  a 2-byte session.
	* (general) Update all commands to use CMD_AS_RANGE.
	* bgp_vty.c: (bgp_clear) Fix return vals to use CMD_..
	  Remove stuff replicated by VTY_GET_LONG
	  (bgp_clear_vty) Return bgp_clear directly to vty.
	  
	
2007-07-25 Juergen Kammer <j.kammer@eurodata.de>

	* (general) AS4 support.
	* bgpd.h: as_t changes to 4-bytes.
	* bgp_aspath.h: Add BGP_AS4_MAX and BGP_AS_TRANS defines.
	* bgp_aspath.c: AS_VALUE_SIZE becomes 4-byte, AS16_VALUE_SIZE
	  added for 2-byte.
	  Add AS16 versions of length calc macros.
	  (aspath_count_numas) New, count number of ASes.
	  (aspath_has_as4) New, return 1 if there are any as4's in a
	  path.
	  (assegments_parse) Interpret assegment as 4 or 2 byte,
	  according to how the caller instructs us, with a new
	  argument.
	  (aspath_parse) Add use32bit argument to pass to
	  assegments_parse. Adjust all its callers to pass 1, unless
	  otherwise noted.
	  (assegment_data_put) Adjust to be able to write 2 or 4 byte
	  AS, according to new use32bit argument.
	  (aspath_put) Adjust to write 2 or 4. 
	  (aspath_gettoken) Use a long for passed in asno.
	* bgp_attr.c: (attr_str) Add BGP_ATTR_AS4_PATH and
	  BGP_ATTR_AS4_AGGREGATOR.
	  (bgp_attr_aspath) Call aspath_parse with right 2/4 arg, as
	  determined by received-capability flag.
	  (bgp_attr_aspath_check) New, code previously in attr_aspath
	  but moved to new func so it can be run after NEW_AS_PATH
	  reconciliation.
	  (bgp_attr_as4_path) New, handle NEW_AS_PATH.
	  (bgp_attr_aggregator) Adjust to cope with 2/4 byte ASes.
	  (bgp_attr_as4_aggregator) New, read NEW_AGGREGATOR.
	  (bgp_attr_parse) Add handoffs to previous parsers for the two
	  new AS4 NEW_ attributes.
	  Various checks added for NEW/OLD reconciliation.
	  (bgp_packet_attribute) Support 2/4 for AS_PATH and
	  AGGREGATOR, detect when NEW_ attrs need to be sent.
	* bgp_debug.{c,h}: Add 'debug bgp as4'.
	* bgp_dump.c: MRTv2 support, unconditionally enabled, which
	  supports AS4. Based on patches from Erik (RIPE?).
	* bgp_ecommunity.c: (ecommunity_ecom2str) ECOMMUNITY_ENCODE_AS4
	  support.
	* bgp_open.c: (peek_for_as4_capability) New, peek for AS4
	  capability prior to full capability parsing, so we know which
	  ASN to use for struct peer lookup.
	  (bgp_open_capability) Always send AS4 capability.
	* bgp_packet.c: (bgp_open_send) AS4 handling for AS field
	  (bgp_open_receive) Peek for AS4 capability first, and figure
	  out which AS to believe.
	* bgp_vty.c: (bgp_show_peer) Print AS4 cap

2007-09-17 Paul Jakma <paul.jakma@sun.com>

	* bgp_open.c: (bgp_capability_mp) We were setting
	  afc_nego[safi][safi] rather than afc_nego[afi][safi], thus
	  failling to announce any non-IPv4 prefixes. Remove the extra,
	  typo-ed character.

2007-09-07 Paul Jakma <paul.jakma@sun.com>

	* (general) bgpd can be made crash by remote peers if debug
	  bgp updates is set, due to NULL pointer dereference.
	  Reported by "Mu Security Research Team",
	  <security@musecurity.com>.
	* bgp_attr.c: (bgp_attr_community) If community length is 0,
	  don't set the community-present attribute bit, just return
	  early.
	* bgp_debug.c: (community_str,community_com2str) Check com
	  pointer before dereferencing.

2007-08-27 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_announce_check) Fix bug #398, slight
	  modification of Vladimir Ivanov's suggested fix - to keep
	  memory alloc conditional.
	  (bgp_process_announce_selected) Don't take struct attr as
	  argument, none of the callers need it and it needlessly
	  distances allocation from use.
	  Free the extended attr, the attr itself is on the stack. 
	  Fix bad indentation.
	* bgp_attr.c: (bgp_packet_attribute) Remove incorrect assert,
	  and adjust conditional to test attr->extra, diagnosis by
	  Vladimir Ivanov in bug #398.

2007-08-27 Vladimir Ivanov <wawa@yandex-team.ru>

	* bgp_route.c: (bgp_announce_check_rsclient) copy of
	  ri->attr is no longer deep enough, due to addition of
	  attr->extra. It should use bgp_attr_dup, as
	  bgp_announce_check() does.

2007-08-23 Paul Jakma <paul.jakma@sun.com>

	* bgp_regex.c: (bgp_regcomp) Pass NOSUB flag to regcomp to
	  prevent parsing of substitutions, which can have profound
	  performance effects on bgpd and are of no use to the CLI
	  anyway. How much it helps depends on the regex
	  implementation.

2007-07-31 Paul Jakma <paul.jakma@sun.com>

	* (general) Support for draft-ietf-idr-as-pathlimit-03.
	* bgp_attr.h: (struct attr) Add pathlimit struct
          bgp_attr.c: (attr_str) Add BGP_ATTR_AS_PATHLIMIT string.
          (attrhash_key_make) tally pathlimit too
          (attrhash_cmp) cmp pathlimit attr
          (bgp_attr_aspathlimit) New, parse AS_PATHLIMIT attr.
          (bgp_attr_parse) ditto
          (bgp_packet_attribute) Write out AS_PATHLIMIT when set
          (bgp_dump_routes_attr) ditto
         * bgp_route.h: (struct bgp_static) Add TTL field
         * bgp_route.c: (bgp_announce_check) Drop paths that are over
           their hop-count TTL before sending via EBGP.
           Mangle ASN in pathlimit for confeds/private as best we can.
           (bgp_static_update_{rsclient,main}) Add any configure pathlimit
           information.
           (bgp_pathlimit_update_parents) New, update atomic-aggr setting for
           parents of an aspathlimit'ed static.
           (bgp_static_set) Add TTL argument, for all the 'bgp network'
           commands.
           Call previous for TTL changed statics.
           (bgp_static_unset) Call pathlimit_update_parents.
           (various bgp network commands) Add 'pathlimit <0-255>' qualifier
           to all the various forms, bar route-map - which can set ttl
           itself.
         * bgp_routemap.c: (general) Add support for 'set pathlimit ttl' and
           'match pathlimit as'.
           
2007-07-26 Paul Jakma <paul.jakma@sun.com>

	* (general) Clean up and compact capability parsing slightly.
	  Consolidate validation of length and logging of generic TLV, and
	  memcpy of capability data, thus removing such from cap specifc
	  code (not always present or correct).
	* bgp_open.h: Add structures for the generic capability TLV header
	  and for the data formats of the various specific capabilities we
	  support.  Hence remove the badly named, or else misdefined, struct
	  capability.
	* bgp_open.c: (bgp_capability_vty_out) Use struct capability_mp_data.
	  Do the length checks *before* memcpy()'ing based on that length
	  (stored capability - should have been validated anyway on input,
	  but..).
	  (bgp_afi_safi_valid_indices) new function to validate (afi,safi)
	  which is about to be used as index into arrays, consolidates
	  several instances of same, at least one of which appeared to be
	  incomplete..
	  (bgp_capability_mp) Much condensed.
	  (bgp_capability_orf_entry) New, process one ORF entry
	  (bgp_capability_orf) Condensed. Fixed to process all ORF entries.
	  (bgp_capability_restart) Condensed, and fixed to use a
	  cap-specific type, rather than abusing capability_mp.
	  (struct message capcode_str) added to aid generic logging.
	  (size_t cap_minsizes[]) added to aid generic validation of
	  capability length field.
	  (bgp_capability_parse) Generic logging and validation of TLV
	  consolidated here. Code compacted as much as possible.
	* bgp_packet.c: (bgp_open_receive) Capability parsers now use
	  streams, so no more need here to manually fudge the input stream
	  getp.
	  (bgp_capability_msg_parse) use struct capability_mp_data. Validate
	  lengths /before/ memcpy. Use bgp_afi_safi_valid_indices.
	  (bgp_capability_receive) Exported for use by test harness.	  
	* bgp_vty.c: (bgp_show_summary) fix conversion warning
	  (bgp_show_peer) ditto
	* bgp_debug.h: Fix storage 'extern' after type 'const'.

2007-07-31 Lorenzo Colitti <lorenzo@colitti.com>

	* bgp_dump.c: (general) Add comments to code.
	  (bgp_dump_interval_add) remove some redundant lines.
	  (bgp_dump_set) Use enum for type argument.
	  Avoid scheduling dump twice if exact same command
	  is given twice..

2007-06-22 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.c: (struct FSM) Bug #368. TCP Errors during OpenSent
	  should cycle to Active, not to Idle or else peer bringup can
	  race and cycle Idle<->Active. Reported and fix tested by
	  Mukesh Agrawal.

2007-05-25 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_default_originate) Sanity check added
	  previously was broken and always failed, thus this function
	  never could run, bug #370.

2007-05-03 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.h: (struct info) Move less frequently used
	  fields to a lazily allocated struct info_extra.
	  Export bgp_info_extra_get
	* bgp_route.c: (bgp_info_extra_new) allocate extra
	  (bgp_info_extra_free) Free damp info and the info_extra.
	  (bgp_info_extra_get) Retrieve the info_extra of a struct
	  info, allocating as required.
	  (generally) adjust to use info->extra
	* bgp_damp.c: (generally) use bgp_info_extra_get to access
	  dampinfo
	* bgp_attr.h: Move rarely allocated attributes from struct attr
	  to a struct attr_extra, for a substantial saving in size of
	  struct attr.
	* bgp_attr.c: (bgp_attr_extra_{new,free}), new, self-explanatory.
	  (bgp_attr_extra_get) Get the attr_extra for a given struct
	  attr, allocating it if needs be.
	  (bgp_attr_dup) Shallow copy the struct attr and its attr_extra.
	  (generally) adjust to know about attr->extra.
	* bgp_debug.c: (bgp_dump_attr) ditto
	* bgp_vty.c: (show_bgp_memory) print attr and info extra sizes.
	* bgp_nexthop.c: (generally) adjust to know about attr->extra
	  and info->extra.
	* bgp_{packet,routemap,snmp,zebra}.c: ditto

2007-04-22 Sebastien Tandel <sebastien@tandel.be>
	* bgp_advertise.c : (baa_hash_alloc, baa_hash_key, baa_hash_cmp)
	  conforms to quagga hash API. Defines _hash_[alloc|key|cmp] with
	  void * arguments as defined by the API.
	* bgp_aspath.c,h : (aspath_key_make) conforms to quagga hash API.
	  Defines _hash_[alloc|key|cmp] with void * arguments as defined by
	  the API.
	* bgp_attr.c,h : (cluster_hash_alloc, cluster_hash_key_make,
	  cluster_hash_cmp, transit_hash_alloc, transit_hash_key_make,
	  transit_hash_cmp, attrhash_key_make, attrhash_cmp,
	  bgp_attr_hash_alloc) conforms to quagga hash API. Defines
	  _hash_[alloc|key|cmp] with void * arguments as defined by the API.
	* bgp_attr.h : Definition of BGP_ATTR_DEFAULT_WEIGHT.
	* bgp_attr.c : (bgp_attr_default_intern) now uses 
	  bgp_attr_default_set instead of duplicating the same code.
	  (general) Use of BGP_ATTR_DEFAULT_WEIGHT. Replace two 16 by
	  IPV6_MAX_BYTELEN.

2007-04-15 Sebastien Tandel <sebastien@tandel.be>

	* bgp_aspath.c: (aspath_as_add, aspath_segment_add) Minor performance
	  optimization: while loop should test one pointer instead of two.

2007-04-08 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (general) Same bug as fixed on 2006-11-28 by ajs for
	  bgp static routes, but for main BGP RIB: Quick 'flap' of routes
	  can cause bgpd to mistake a new route for a duplicate route,
	  due to presence of removed, but not yet processed BGP RIB entry.
	  (bgp_update_rsclient) Ignore REMOVED bgp_info for duplicate,
	  restore route instead.
	  (bgp_update_main) Ditto.
	* bgp_attr.c: (general) Bug #354: parsing of MP_REACH_NLRI and
	  MP_UNREACH_NLRI does not take sufficient care to ensure reads
	  from stream buffer stay in-bounds. Hence bgpd may attempt to read
	  beyond end of stream, if given a crafted packet. As it uses the
	  stream access methods to do so, this will typically result in
	  assert() being hit in stream.c. Where code is compiled without
	  assert() enabled, result is unknown.
	  (struct message attr_str) should be static.
	  (bgp_mp_reach_parse) Carefully check length remaining in stream
	  against amount desired to read from stream, prior to each read,
	  particularly where lengths are conditional on data obtained from
	  stream - using STREAM_READABLE.
	  Remove code to parse SNPA-number, it's a defunct field and changed
	  to a fixed size in latest BGP MP update RFC - log warning if
	  SNPA-number is not 0.
	  (bgp_mp_unreach_parse) Check withdraw_length carefully against
	  STREAM_READABLE.
	  (bgp_attr_parse) If attribute-parser function returns error, log
	  warning.
	  Log attribute type on mismatch.

2007-04-07 Paul Jakma <paul.jakma@sun.com>

	* bgpd.c: (general) Fix bug #352
	  (bgp_config_write_family_header) write ipv6/multicast
	  address family header.
	  (bgp_config_write) write out ipv6 multicast AF config.

2007-02-22 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.c: (bgp_fsm_change_status) Handle state change into
	  clearing or greater here. Simpler.
	  (bgp_event) Clearing state change work moved to previous
	* bgp_route.c: (bgp_clear_route_node) Clearing adj-in here
	  is too late, as it leaves a race between a peer being deleted
	  and an identical peer being configured before clearing
	  completes, leading to a crash.
	  Simplest fix is to clean peers Adj-in up-front, rather than
	  queueing such work.
	  (bgp_clear_route_table) Clear peer's Adj-In and Adj-Out
	  up-front here, rather than queueing such work.
	  Extensive comment added on the various bits of indexed data
	  that exist and how they need to be dealt with.
	  (bgp_clear_route) Update comment.

2006-12-12 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
	
	* bgp_nexthop.c: (bgp_connected_add, bgp_connected_delete)
	  Simplify logic by using new CONNECTED_PREFIX macro.

2006-12-07 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.c: Bug #302 fix, diagnosis, suggestions and testing
	  by Juergen Kammer <j.kammer@eurodata.de>. Fix follows from
	  his suggested fix, just made in a slightly different way.
	  (bgp_event) Transitions into Clearing always must call
	  bgp_clear_route_all().
	  (bgp_stop) No need to clear routes here, BGP FSM should do
	  it.
 
2006-11-30 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_debug.h: Declare new bgp_debug_zebra conf and term flags,
	  and define BGP_DEBUG_ZEBRA.
	* bgp_debug.c: Declare conf_bgp_debug_zebra and term_bgp_debug_zebra.
	  (debug_bgp_zebra, no_debug_bgp_zebra, undebug_bgp_zebra) New
	  functions to enable/disable bgp zebra debugging.
	  (no_debug_bgp_all) Turn off zebra debugging.
	  (show_debugging_bgp) Show whether zebra debugging is on.
	  (bgp_config_write_debug) Add 'debug bgp zebra' if configured.
	  (bgp_debug_init) Add new zebra debugging commands.
	* bgp_zebra.c: (bgp_router_id_update, bgp_interface_add,
	  bgp_interface_delete, bgp_interface_up, bgp_interface_down,
	  bgp_interface_address_add, bgp_interface_address_delete,
	  zebra_read_ipv4, zebra_read_ipv6, bgp_zebra_announce,
	  bgp_zebra_withdraw, bgp_redistribute_set, bgp_redistribute_unset)
	  If zebra debugging is enabled, log an appropriate debug message.

2006-11-28 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_route.c: (bgp_info_restore) New function that undoes
	  the effects of a previous call to bgp_info_delete.  This is
	  used when a route is deleted and quickly re-added before the
	  deletion has been processed.
	  (bgp_static_update_rsclient, bgp_static_update_main,
	  bgp_redistribute_add) Check whether a pre-existing route
	  has the BGP_INFO_REMOVED set, and, if so, we need to call
	  bgp_info_restore to resurrect it.

2006-10-27 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_table_stats) oops, u_intXX_t should be
	  uintXX_t

2006-10-19 Paul Jakma <paul.jakma@sun.com>

	* bgpd.c: (peer_new) bgp element of peer absolutely must be
	  filled in, make peer_new() require it as argument and update
	  all callers. Fixes a crash reported by Jan 'yanek' Bortl and
	  Andrew Schorr where bgpd would crash in bgp_pcount_adjust
	  trying to dereference the bgp member of bgp->peer_self,
	  triggered through redistribution.
	* bgp_route.c: (bgp_pcount_adjust) assert sanity of arguments.

2006-10-15 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_table_stats_walker) NULL deref if table is
	  empty, bgp_table_top may return NULL, Coverity CID#73.
	* bgp_packet.c: (bgp_update_packet) adv->rn can not be NULL,
	  check is bogus - changed to assert(), CID#64.
	  binfo is checked for NULL, but then dereferenced
	  unconditionally, fix, CID #63.
	  (bgp_withdraw_packet) Assert adv->rn is valid, as with
	  bgp_update_packet().

2006-10-14 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.h: Remove BGP_EVENT_FLUSH_ADD, dangerous and not
	  needed.
	* bgp_fsm.c: (bgp_stop) Move BGP_EVENT_FLUSH to the top of the
	  of the function, otherwise it could flush a ClearingCompleted
          event, bug #302.
	* bgp_packet.c: Replace all BGP_EVENT_FLUSH_ADD with
	  BGP_EVENT_ADD, fixing bug #302.

2006-09-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgpd.c: (peer_uptime) Fix printf format/arg mismatch in
	  zlog_warn message (%ld/size_t -> %lu/u_long).

2006-09-14 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_table_stats_walker) Address space announced
	  should only count top-level unaggregateable prefixes, to
	  avoid falling afoul of anti-dodgy-accounting regulations
	  in various jurisdictions.. ;)
	  (bgp_process_queue_init) process queue hold time too high,
	  adds extra memory load. Change to be much lower, until such
	  time as it's made configurable.

2006-09-14 Paul Jakma <paul.jakma@sun.com>

	* (general) fix the peer refcount issue exposed by previous, by
	  just removing refcounting of peer threads, which is mostly
	  senseless as they're references leading from struct peer,
	  which peer_free cancels anyway. No need to muck around..
	* bgp_fsm.h: Just remove the refcounting from the various
	  TIMER/READ/WRITE/EVENT ON/OFF/ADD macros.
	* bgp_fsm.c: (bgp_stop) use BGP_EVENT_FLUSH, no refcounts attached
	  to events anymore.
	  (bgp_event) remove peer_unlock, events not refcounted.
	* bgpd.c: (peer_free) flush events before free.

2006-09-14 Paul Jakma <paul.jakma@sun.com>

	* (general) Fix some niggly issues around 'shutdown' and clearing
	  by adding a Clearing FSM wait-state and a hidden 'Deleted'
	  FSM state, to allow deleted peers to 'cool off' and hit 0
	  references. This introduces a slow memory leak of struct peer,
	  however that's more a testament to the fragility of the
	  reference counting than a bug in this patch, cleanup of
	  reference counting to fix this is to follow.
	* bgpd.h: Add Clearing, Deleted states and Clearing_Completed
	  and event.
	* bgp_debug.c: (bgp_status_msg[]) Add strings for Clearing and
	  Deleted.
	* bgp_fsm.h: Don't allow timer/event threads to set anything
	  for Deleted peers.
	* bgp_fsm.c: (bgp_timer_set) Add Clearing and Deleted. Deleted
	  needs to stop everything.
	  (bgp_stop) Remove explicit fsm_change_status call, the
	  general framework handles the transition.
	  (bgp_start) Log a warning if a start is attempted on a peer
	  that should stay down, trying to start a peer.
	  (struct .. FSM) Add Clearing_Completed
	  events, has little influence except when in state
	  Clearing to signal wait-state can end.
	  Add Clearing and Deleted states, former is a wait-state,
	  latter is a placeholder state to allow peers to disappear
	  quietly once refcounts settle.
	  (bgp_event) Try reduce verbosity of FSM state-change debug, 
	  changes to same state are not interesting (Established->Established)
	  Allow NULL action functions in FSM.
	* bgp_packet.c: (bgp_write) Use FSM events, rather than trying
	  to twiddle directly with FSM state behind the back of FSM.
	  (bgp_write_notify) ditto.
	  (bgp_read) Remove the vague ACCEPT_PEER peer_unlock, or else
	  this patch crashes, now it leaks instead.
	* bgp_route.c: (bgp_clear_node_complete) Clearing_Completed
	  event, to end clearing.
	  (bgp_clear_route) See extensive comments.
	* bgpd.c: (peer_free) should only be called while in Deleted,
	  peer refcounting controls when peer_free is called.
	  bgp_sync_delete should be here, not in peer_delete.
	  (peer_delete) Initiate delete. 
	  Transition to Deleted state manually.
	  When removing peer from indices that provide visibility of it,
	  take great care to be idempotent wrt the reference counting
	  of struct peer through those indices.
	  Use bgp_timer_set, rather than replicating.
	  Call to bgp_sync_delete isn't appropriate here, sync can be
	  referenced while shutting down and finishing deletion.
	  (peer_group_bind) Take care to be idempotent wrt list references
	  indexing peers.

2006-09-13 Paul Jakma <paul.jakma@sun.com>

	* bgp_aspath.c: (aspath_highest) new, return highest ASN in an
	  aspath.
	* bgp_route.c: (bgp_peer_count_walker) new, do the walk done
	  in bgp_peer_counts as a thread.
	  (bgp_peer_counts) move walk to previous and call it via
	  thread_execute so this RIB walk shows up in thread stats.
	  (bgp_table_stats) New, gather some statistics for a given
	  RIB.
	  (bgp_table_stats_walker) New, RIB walker thread for former.
	  (bgp_table_stats_vty) Parsing front-end for 'show bgp ...',
	  useful model for future rationalisation of 'show ... bgp'.
	  (bgp_route_init) Add new RIB stats commands.
	
2006-09-06 Paul Jakma <paul.jakma@sun.com>

	* (general) Squash any and all prefix-count issues by
	  abstracting route flag changes, and maintaining count as and
	  when flags are modified (rather than relying on explicit
	  modifications of count being sprinkled in just the right
	  places throughout the code).
	* bgp_route.c: (bgp_pcount_{dec,inc}rement) removed.
	  (bgp_pcount_adjust) new, update prefix count as
	  needed for a given route.
	  (bgp_info_{uns,s}et_flag) set/unset a BGP_INFO route status
	  flag, calling previous function when appropriate.
	  (general) Update all set/unsets of flags to use previous.
	  Remove pcount_{dec,inc}rement calls.
	  No need to unset BGP_INFO_VALID in places where
	  bgp_info_delete is called, it does that anyway.
	* bgp_{damp,nexthop}.c: Update to use bgp_info_{un,}set_flag.
	* bgp_route.h: Export bgp_info_{un,}set_flag.
	  Add a 'meta' BGP_INFO flag, BGP_INFO_UNUSEABLE.
	  Move BGP_INFO_HOLDDOWN macro to here from bgpd.h

2006-09-03 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: Add 'show ... bgp ... <neighbour> prefix-count'
	  commands, to provide detailed counts of prefixes for a peer.
	  Informative, and should help pin down to pfxcnt drift
	  problems.

2006-08-27 Paul Jakma <paul.jakma@sun.com>

	* bgp_advertise.c: (bgp_sync_delete) fix mtype in XFREE.
	  NULL out peer->hash after free, to be sure.

2006-08-06 Paul Jakma <paul.jakma@sun.com>

	* bgp_aspath.c: (aspath_loop_check) Fix the typo-bug which
	  essentially had disabled this check. Problem reported by
	  Bartek Kania <mrbk@gnarf.org> in [quagga-users 7388].

2006-07-27 Paul Jakma <paul.jakma@sun.com>

	* bgpd.c: (peer_delete) Ensure freed buffers can not be
	  accidently reused. A potential fix for bug #287.

2006-07-02 Paul Jakma <paul.jakma@sun.com>

	* bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain
	  bits of state from stop to start, as they may be used via
	  peer references on clearing queues..

2006-05-23 Paul Jakma <paul.jakma@sun.com>

	* bgp_vty.c: (neighbor_update_source_cmd) Expand tab completion
	  to make it clear it takes both address and ifname.

2006-05-12 Paul Jakma <paul.jakma@sun.com>

	* bgp_attr.c: (bgp_packet_attribute) Remove dead code, Coverity
	  CID #1
	* bgp_aspath.{c,h}: (aspath_print_vty) take a format string,
	  so as to reduce burden on callers, all in bgp_route.c
	* bgp_route.c: (bgp_static_update_main) Remove useless NULL
	  check, code already assumes bgp_static can not be NULL, 
	  fixes CID #7.
	  (bgp_static_update_rsclient) ditto, CID #6
	  (route_vty_out{,tmp}) Update to match aspath_print_vty,
	  simplifying checks needed to get spacing right. CID #4,#5.
	  ({damp,flap}_route_vty_out) Ditto, CID #9, #10

2006-05-08 Paul Jakma <paul.jakma@sun.com>

	* bgp_community.c: (community_str2com) Coverity CID#62, fix
	  double-free, use-after-free.
	* bgp_route.c: (bgp_afi_node_get) given table should never be
	  NULL, check/assert this.
	  (bgp_static_update) Bug #240. Rsclients should only be passed
	  the static update if they are configured for the afi,safi.

2006-05-04 Paul Jakma <paul.jakma@sun.com>

	* (general) VPNv4 fixes. Certain VPNv4 code was not enabled.
	  See bug #210.
	* bgp_attr.{c,h}: (bgp_packet_{withdraw,attribute}) Tag should be
	  u_char really.
	* bgp_packet.c: (bgp_{update,withdraw}_packet) Enable some
	  VPNv4 code which inexplicably was ifdef'd out. comments from
	  a tester on IRC suggest this fixes bug #210.
	* bgp_route.c: (general) Fix logical bug in clearing, noted
	  by Chris Caputo in [quagga-users 6728] - clearing depended on
	  at least one route being added to workqueue, in order for
	  workqueue completion function to restart FSM. However, if no
	  routes are cleared, then the completion function never is
	  called, it needs to be called manually if the workqueue
	  didn't get scheduled. 
	  Finally, clearing is per-peer-session, not per AFI/SAFI, so
	  the FSM synchronisation should be in bgp_clear_route_table.
	  (bgp_clear_route_table) Wrong place for FSM/clearing
	  synchronisation, move to..
	  (bgp_clear_route) FSM/clearing synchronisation should be
	  here.
	  If no routes were cleared, no workqueue scheduled, call
	  the completion func to ensure FSM kicks off again.

2006-03-30 Paul Jakma <paul.jakma@sun.com>

	* bgp_community.c: (community_gettoken) Unknown token should
	  return NULL, to give a strong indication to callers that
	  the token no longer can be parsed, otherwise callers looping
	  on this function may have a hard time ending their loop.
	  (community_str2com) While loop around community_gettoken appears
	  to have been coded thinking that break statement would break
	  from the while{}, hence it could never exit for unknown token
	  case. Fix it to do..while, so it can use the NULL result from
	  community_gettoken easily.

2006-03-22 Paul Jakma <paul.jakma@sun.com>

	* bgpd.c: (peer_free) release the per-peer workqueue when
	  freeing the peer.

2006-03-19 Paul Jakma <paul.jakma@sun.com>

	* bgpd/bgp_vty.c: Add includes to get several structs we want
	  to provide usage statistics on.
	  (show_bgp_memory_cmd) Show memory usage stats for various
	  notable fixed size objects. Using mtype_stats_alloc and
	  mtype_memstr recently added to memory.c.
	  (bgp_show_summary) Report some additional stats specific to
	  the given BGP instance and/or AFI/SAFI such as table counts,
	  peers, rsclients and peer-groups.
	  (bgp_vty_init) Install show_bgp_memory_cmd.
	* bgp_nexthop.h: Include if.h as a dependent header, for struct
	  connected.
	* bgp_advertise.c: Use a distinct memory type for struct
	  bgp_synchronize.

2006-03-12 Paul Jakma <paul.jakma@sun.com>

	* bgp_attr.h: (struct attr) rearrange fields to avoid
	  wasted padding between them as much as possible.
	  (attr_count,attr_unknown_count) export new functions to
	  return number of counts of cached attributes.
	* bgp_attr.c: (attr_count,attr_unknown_count) new functions to
	  return number of counts of cached attributes.
	* bgp_route.h: (struct bgp_info) rearrange fields to avoid
	  wasted padding.
	* bgp_table.h: (struct bgp_table) Add a count field, of number
	  of nodes in the table.
	  (struct bgp_node)  rearrange fields to avoid
	  wasted padding between them, though I don't think there
	  was any in this case. 
	* bgp_table.c: (bgp_node_{delete,get}) Maintain the table node count.
	  (bgp_table_count) new function to access the table count.

2006-03-03 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_clear_node_complete) Doh. When clearing
	  is complete we need to kick off FSM again.

2006-02-21 Paul Jakma <paul.jakma@sun.com>

	* bgpd.h: move the clear_node_queue to be peer specific.
	  Add a new peer status flag, PEER_STATUS_CLEARING.
	* bgp_table.h: (struct bgp_table) Add fields to record afi,
          safi of the table.
          (bgp_table_init) Take afi and safi to create table for.
        * bgp_table.c: (bgp_table_init) record the afi and safi.
        * bgp_nexthop.c: Update all calls to bgp_table_init.
        * bgp_vty.c: ditto.
        * bgpd.c: ditto.
        * bgp_fsm.c: (bgp_timer_set) dont bring up a session which is
	  clearing.
        * bgp_route.c: (general) Update all bgp_table_init calls.
          (bgp_process_{rsclient,main}) clear_node is serialised
          via PEER_STATUS_CLEARING and fsm now.
          (struct bgp_clear_node_queue) can be removed. struct bgp_node
          can be the queue item data directly, as struct peer can be
          kept in the new wq global user data and afi/safi can be
          retrieved via bgp_node -> bgp_table.
          (bgp_clear_route_node) fix to get peer via wq->spec.data,
          afi/safi via bgp_node->bgp_table.
          (bgp_clear_node_queue_del) no more item data to delete, only
          unlock the bgp_node.
          (bgp_clear_node_complete) only need to unset CLEARING flag
          and unlock struct peer.
          (bgp_clear_node_queue_init) queue attaches to struct peer
          now. record peer name as queue name.
          (bgp_clear_route_table) If queue transitions to active,
          serialise clearing by setting PEER_STATUS_CLEARING rather
          than plugging process queue, and lock peer while queue
          active.
          Update to pass only bgp_node as per-queue-item specific data.
	* bgp_vty.c: (bgp_show_summary) Add a 'Clrng' sub-description
	  to state of peer while it's suppressed due to clearing.

2006-02-18 Paul Jakma <paul.jakma@sun.com>

	* bgp_routemap.c: (route_set_community) Quick, very hacky, fix
	  for the set-community leak, bug #89. True fix will be to
	  detangle the web of *_intern caching and provide saner object
	  caching for Quagga, future work.
	* bgp_route.c: (bgp_announce_check) trivial, move declaration
	  of two local variables into the only block where they are
	  used, to aid the reader.

2006-02-05 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.h: Add BGP_INFO_COUNTED to track whether
	  prefix has been counted or not.
	* bgp_route.c: (bgp_pcount_{inc,dec}rement) new helpers, to
	  centralise inc/dec of prefix-count, 
	  (bgp_rib_remove) Remove pcount decrement, use helper.
	  (bgp_rib_withdraw) ditto, additionally use previous function
	  too.
	  (bgp_update_main) Use pcount helpers.
	  (bgp_clear_route_node) ditto, aslo REMOVED routes don't need
	  clearing.
	* bgp_aspath.c: (aspath_gettoken) fix gcc warning about
	  possible uninitialised usage.
 
2006-02-02 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_{clear_node,process}_queue_init) delay
	  field is removed from workqueue spec.

2006-01-19 Paul Jakma <paul.jakma@sun.com>

	* (general) various miscellaneous compiler warning fixes.
	   Remove redundant break statements from switch clauses
	   which return.
	   return from main, not exit, cause it annoys SOS.
	   Remove stray semi-colons which cause empty-statement
	   warnings.

2006-01-17 Paul Jakma <paul.jakma@sun.com>

	* bgp_nexthop.c: (zlookup_read*) convert to new Zserv format.
	  (zlookup_query_ipv6) ditto.
	  (bgp_import_check) ditto.
	  
2006-01-16 Paul Jakma <paul.jakma@sun.com>

	* bgp_aspath.c: (assegment_append_asns) XREALLOC can return
	  NULL theoretically, take care not to lose the allocated data.
	  (aspath_hash_alloc) aspath_dup already set the aspath
	  string - fix leak.
	  (aspath_parse) aspath_hash_alloc dupes the entire aspath,
	  including segments, but we forgot to free the temporary
	  assegment.
	  (aspath_snmp_pathseg) move the static stream pointer out to
	  file scope, so it can be freed.
	  (aspath_finish) new function, free aspath resources.
	* bgp_aspath.h: (aspath_finish) export.

2006-01-10 Juris Kalnins <juris@mt.lv>

	* bgpd.h: (bgp_router_id_unset) ex-function, remove.
	
2005-11-23 Paul Jakma <paul.jakma@sun.com>

	* bgp_aspath.c: (assegments_parse) should be static

2005-11-23 Juergen Kammer <j.kammer@eurodata.de>

	* bgp_aspath.c: (aspath_cmp_left_confed) fix SEGV for case
	  where one or both paths are empty.

2005-11-14 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.c: (bgp_process_rsclient) convert to new workqueue
          specs and shut up gcc, which complains about cast from void
          via function parameters, for some dumb reason. Do the cast
          inside the function instead.
          (bgp_process_main,bgp_processq_del) ditto.
          (bgp_clear_route_node) ditto.
          (bgp_clear_node_queue_del) ditto.

2005-11-03 Paul Jakma <paul.jakma@sun.com>

	* bgp_damp.c: (bgp_reuse_timer) struct bgp can be retrieved via
	  the struct bgp_damp_info, no need to guess by using
	  bgp_get_default().

2005-10-01 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_vty.c: (bgp_config_write_redistribute) Use new library function
	  zebra_route_string instead of a local hard-coded table.

2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>

	* bgp_packet.c: fix compilation when DEBUG is used.

2005-09-10 Paul Jakma <paul.jakma@sun.com>

	* Makefile.am: bgpd shouldn't list libgp's sources as its own.
	  Use LDADD.
	* bgp_aspath.h:	
	  (struct assegment) New struct, abstract representation of a
	  list of AS_PATH segments and the contained ASNs.	  
	  (struct aspath) Remove the raw-data related
	  fields, reference the abstract struct assegment instead. 
	  Remove several other computed fields, it's just a
	  headache to maintain them and they're cheap to compute from
	  struct assegment.
	  (aspath_parse) parse a stream, not a pointer to raw data.
	  (aspath_count_{hops,confeds,size}) helpers to access
	  information formerly directly contained in struct aspath.
	  (aspath_snmp_pathseg) Helper for SNMP, BGP MIB wants
	  to be able to output hex representation of raw data.
	* bgp_aspath.c: (general) partial-rewrite. Store aspath data
	  as an abstract singly-linked list of abstract segments,
          rather than storing the raw data, and parsing it each and
	  every time. Remove several count/size fields which are cheap
	  to compute from the abstract segment structure.
	  (global) Include stream.h, needed for aspath_parse, and
	  others. Couple of helper macros added.
	  (struct assegment_header) Just the header, and only the
	  header.
	  (assegment_data_{new,free}) convenience functions for
	  AS_SEG_DATA allocation, the dynamic, per-segment array of
	  ASNs.
	  (assegment_{new,free,free_all,dup,dup_all}) convenience
	  functions for creating struct assegments. The _all forms will
	  follow the entire chain of segments from the given segment.
	  (assegment_prepend_asns) new function, prepend an ASN N times
	  to segment.
 	  (assegment_append_asns) Append a list (array) of ASNs to
	  segment.
	  (int_cmp) convenience function for the aspath hash.
	  (assegment_normalise) new function. Normalise the given
	  segment chain to meet expectations of Quagga, and to
	  eliminate differing raw representations of the same paths.
	  Merge 'runs' of SEQUENCEs into one segment as our internal
	  segment is not limited by the protocol AS_PATH segment
	  length. Sort ASNs in SETs. 
	  (aspath_new) Take void argument to quell warnings. Use the
	  assegment convenience functions.
	  (assegment_count_{asns,confeds,hops}) new functions to
	  compute at runtime values previously held in struct aspath.
	  (aspath_size) ditto.
	  (aspath_make_str_count) rewritten to stringify new
	  representation, and to be slightly easier to understand
	  hopefully.
	  (aspath_str_update) convenience function, update the aspath
	  str. Should investigate removing maintained string from
	  struct aspath, just run-time compute it, as per other fields.
	  It's just a maintenance headache, would save noticeable
	  amount of RAM with possibly not much extra run-time cost.
	  (aspath_dup) use the assegment dup functions.
	  (aspath_hash_alloc) Take void * argument to satisfy gcc. Use
	  the proper helper functions to dup data.
	  (assegments_parse) new function. parse raw AS_PATH data into
	  struct assegments. Normalise and return the head of the list.
	  (aspath_parse) Parse a stream, not pointer to raw data and
	  use assegments_parse to do it.
	  (assegment_data_put) Write out a single segment data in protocol
	  form to stream.
	  (assegment_header_put) ditto but for segment header.
	  (aspath_put) new function. As per previous but for an entire
	  struct aspath.
	  (aspath_snmp_pathseg) wrapper around aspath_put for
	  bgp_snmp.c. Uses a static buffer sadly.
	  (aspath_aggregate_as_set_add) rewritten to use assegments.
	  (aspath_aggregate) ditto
	  (aspath_{firstas,loop,private_as}_check) ditto
	  (aspath_{merge,prepend,add_one_as}) ditto
	  (aspath_cmp_left{_confed}) ditto
	  (aspath_delete_confed_seq) ditto, plus fixed to properly
	  delete all leading confed segments.
	  (aspath_as_add) Just use assegment_append_asns.
	  (aspath_segment_add) updated to use assegments.
	  (enum as_token) Add values for confeds
	  (aspath_gettoken) Add support for confeds
	  (aspath_str2aspath) ditto
	  (aspath_key_make) updated to use as_segments. Also, add
	  segment type into the hash value as appropriate.
	  (aspath_cmp) updated to use as_segments.
	  (aspath_print) don't segfault on NULL argument.
	* bgp_attr.c: (bgp_attr_aspath) aspath_parse wants the stream
	  now. No need for manual forwarding of stream.
	  (bgp_packet_attribute) empty aspath is now denoted by NULL
	  segment field, length is gone.
	  Use aspath_size() to determine size.
	  (bgp_attr_init) Fix declaration, explicitely specify void
	  arg.
	  (bgp_dump_routes_attr) Use aspath_size() to determine size.
	* bgp_route.c: (bgp_info_cmp) use the aspath_count_* functions.
	  (bgp_rib_withdraw) remove unused variable. Use
	  aspath_count_hops.
	* bgp_snmp.c: (bgp4PathAttrTable) raw data is gone, use 
	  aspath_snmp_pathseg to get the representation.

2005-09-10 Paul Jakma <paul.jakma@sun.com>

	* bgp_vty.c: (bgp_vty_init) gcc 4 compile fix. static
	  function declarations shouldn't be inside functions.
	* bgp_dump.c: (bgp_dump_interval_add) ditto.
	
2005-08-26 Hasso Tepper <hasso at quagga.net>

	* bgp_route.c: Third (?) attempt to fix best selection breakage
	  introduced long time ago with route server patch. Hopefully
	  it's last case to fix - route-server client not in peer group.

2005-08-22 Hugo Santos <hsantos@av.it.pt>

	* bgp_vty.c: (general) Add support for BGP IPv6 Multicast SAFI
	  commands and BGP_IPV6M_NODE.
	  
2005-08-22 Paul Jakma <paul.jakma@sun.com>

	* bgp_route.h: (struct bgp_info) add a new flag, BGP_INFO_REMOVED.
	  BGP_INFO_VALID is already overloaded, don't care to do same thing
	  to STALE or HISTORY.
	* bgpd.h: (BGP_INFO_HOLDDOWN) Add INFO_REMOVED to the macro, as a
	  route which should generally be ignored.
	* bgp_route.c: (bgp_info_delete) Just set the REMOVE flag, rather 
	  than doing actual work, so that bgp_process (called directly,
	  or indirectly via the scanner) can catch withdrawn routes.
	  (bgp_info_reap) Actually remove the route, what bgp_info_delete
	  used to do, only for use by bgp_process.
	  (bgp_best_selection) reap any REMOVED routes, other than the old
	  selected route.
	  (bgp_process_rsclient) reap the old-selected route, if appropriate
	  (bgp_process_main) ditto
	  (bgp_rib_withdraw, bgp_rib_remove) make them more consistent with
	  each other. Don't play games with the VALID flag, bgp_process
	  is async now, so it didn't make a difference anyway.
	  Remove the 'force' argument from bgp_rib_withdraw, withdraw+force
	  is equivalent to bgp_rib_remove. Update all its callers.
	  (bgp_update_rsclient) bgp_rib_withdraw and force set is same as
	  bgp_rib_remove.
	  (route_vty_short_status_out) new helper to print the leading
	  route-status string used in many command outputs. Consolidate.
	  (route_vty_out, route_vty_out_tag, damp_route_vty_out, 
	   flap_route_vty_out) use route_vty_short_status_out rather than
	  duplicate.
	  (route_vty_out_detail) print state of REMOVED flag.
	  (BGP_SHOW_SCODE_HEADER) update for Removed flag. 
	  
2005-08-03 Hasso Tepper <hasso at quagga.net>

	* bgp_routemap.c: Revert part of leaking communities fix commited in
	  2005-05-27. While ecommunity fix seems to be correct, community case
	  isn't.

2005-06-28 Paul Jakma <paul.jakma@sun.com>

	* (global) The great bgpd extern and static'ification.
	* bgp_routemap.c: remove unused ROUTE_MATCH_ASPATH_OLD code
	  (route_set_metric_compile) fix u_int32_t to ULONG_MAX comparison
	  warnings.
	* bgp_route.h: (bgp_process, bgp_withdraw, bgp_update) export these
	  used by various files which had their own private declarations,
	  in the case of mplsvpn - incorrect.

2005-06-15 Paul Jakma <paul.jakma@sun.com>

	* bgpd.c: (bgp_terminate) workqueue's are lazy allocated and its
	  possible to terminate bgpd before workqueues were setup, causing
	  an abort/crash. Reported by Ashish Mehta of Sun.

2005-06-01 Paul Jakma <paul.jakma@sun.com>

	* (general) refcount struct peer and bgp_info, hence allowing us
	  add work_queues for bgp_process.
	* bgp_route.h: (struct bgp_info) Add 'lock' field for refcount.
	  Add bgp_info_{lock,unlock} helper functions.
	  Add bgp_info_{add,delete} helpers, to remove need for
	  users managing locking/freeing of bgp_info and bgp_node's.
	* bgp_table.h: (struct bgp_node) Add a flags field, and
	  BGP_NODE_PROCESS_SCHEDULED to merge redundant processing of
	  nodes.
	* bgp_fsm.h: Make the ON/OFF/ADD/REMOVE macros lock and unlock
	  peer reference as appropriate.
	* bgp_damp.c: Remove its internal prototypes for
	  bgp_info_delete/free. Just use bgp_info_delete.
	* bgpd.h: (struct bgp_master) Add work_queue pointers.
	  (struct peer) Add reference count 'lock'
	  (peer_lock,peer_unlock) New helpers to take/release reference
	  on struct peer.
	* bgp_advertise.c: (general) Add peer and bgp_info refcounting 
	  and balance how references are taken and released.
	  (bgp_advertise_free) release bgp_info reference, if appropriate
	  (bgp_adj_out_free) unlock peer
	  (bgp_advertise_clean) leave the adv references alone, or else
	  call bgp_advertise_free cant unlock them.
	  (bgp_adj_out_set) lock the peer on new adj's, leave the reference
	  alone otherwise. lock the new bgp_info reference.
	  (bgp_adj_in_set) lock the peer reference
	  (bgp_adj_in_remove) and unlock it here
	  (bgp_sync_delete) make hash_free on peer conditional, just in
	  case.
	* bgp_fsm.c: (general) document that the timers depend on
	  bgp_event to release a peer reference.
	  (bgp_fsm_change_status) moved up the file, unchanged.
	  (bgp_stop) Decrement peer lock as many times as cancel_event
	  canceled - shouldnt be needed but just in case.
	  stream_fifo_clean of obuf made conditional, just in case.
	  (bgp_event) always unlock the peer, regardless of return value
	  of bgp_fsm_change_status.
	* bgp_packet.c: (general) change several bgp_stop's to BGP_EVENT's.
	  (bgp_read) Add a mysterious extra peer_unlock for ACCEPT_PEERs
	  along with a comment on it.
	* bgp_route.c: (general) Add refcounting of bgp_info, cleanup
	  some of the resource management around bgp_info. Refcount peer.
	  Add workqueues for bgp_process and clear_table.
	  (bgp_info_new) make static
	  (bgp_info_free) Ditto, and unlock the peer reference.
	  (bgp_info_lock,bgp_info_unlock) new exported functions
	  (bgp_info_add) Add a bgp_info to a bgp_node in correct fashion,
	  taking care of reference counts.
	  (bgp_info_delete) do the opposite of bgp_info_add.
	  (bgp_process_rsclient) Converted into a work_queue work function.
	  (bgp_process_main) ditto.
	  (bgp_processq_del) process work queue item deconstructor
	  (bgp_process_queue_init) process work queue init
	  (bgp_process) call init function if required, set up queue item
	  and add to queue, rather than calling process functions directly.
	  (bgp_rib_remove) let bgp_info_delete manage bgp_info refcounts
	  (bgp_rib_withdraw) ditto
	  (bgp_update_rsclient) let bgp_info_add manage refcounts
	  (bgp_update_main) ditto
	  (bgp_clear_route_node) clear_node_queue work function, does
	  per-node aspects of what bgp_clear_route_table did previously
	  (bgp_clear_node_queue_del) clear_node_queue item delete function
	  (bgp_clear_node_complete) clear_node_queue completion function,
	  it unplugs the process queues, which have to be blocked while
	  clear_node_queue is being processed to prevent a race.
	  (bgp_clear_node_queue_init) init function for clear_node_queue
	  work queues
	  (bgp_clear_route_table) Sets up items onto a workqueue now, rather
	  than clearing each node directly. Plugs both process queues to
	  avoid potential race.
	  (bgp_static_withdraw_rsclient) let bgp_info_{add,delete} manage
	  bgp_info refcounts.
	  (bgp_static_update_rsclient) ditto
	  (bgp_static_update_main) ditto
	  (bgp_static_update_vpnv4) ditto, remove unneeded cast.
	  (bgp_static_withdraw) see bgp_static_withdraw_rsclient
	  (bgp_static_withdraw_vpnv4) ditto
	  (bgp_aggregate_{route,add,delete}) ditto
	  (bgp_redistribute_{add,delete,withdraw}) ditto
	* bgp_vty.c: (peer_rsclient_set_vty) lock rsclient list peer
	  reference
	  (peer_rsclient_unset_vty) ditto, but unlock same reference
	* bgpd.c: (peer_free) handle frees of info to be kept for lifetime
	  of struct peer.
	  (peer_lock,peer_unlock) peer refcount helpers
	  (peer_new) add initial refcounts
	  (peer_create,peer_create_accept) lock peer as appropriate
	  (peer_delete) unlock as appropriate, move out some free's to
	  peer_free.
	  (peer_group_bind,peer_group_unbind) peer refcounting as
	  appropriate.
	  (bgp_create) check CALLOC return value.
	  (bgp_terminate) free workqueues too.
	 
2005-05-28 Hasso Tepper <hasso at quagga.net>

	* bgp_routemap.c: Sync set_metric_addsub_cmd with ripd.

2005-05-27 Hasso Tepper <hasso at quagga.net>

	* bgp_routemap.c: Stop leaking communities.

2005-05-27 Hasso Tepper <hasso at quagga.net>

	* bgpd.c: Deleting bgp->rsclient list needs fix similar to pree-groups
	  deleting fix. Avoid leaking bgp->group, bgp->peer and bgp->rsclient
	  lists.

2005-05-26 Hasso Tepper <hasso at quagga.net>

        * bgpd.c: Don't crash while deleting list of peer-groups.

2005-05-25 Hasso Tepper <hasso at quagga.net>

	* bgpd.c: Fix obvious (routeserver patch) merge error. This makes "no
	  neighbor x.x.x.x routemap [export|import] commands work again.

2005-05-23 Paul Jakma <paul@dishone.st>

	* bgp_routemap.c: add semi-colons to VTY_GET_* to match vty.h change
	* bgp_fsm.h: Add extern qualifier to exported functions
	* bgp_nexthop.c: add static to nexthop specific globals
	* *.h: Add guard defines

2005-05-19 Paul Jakma <paul@dishone.st>

	* bgp_fsm.c: (bgp_stop) use sockunion_free, not XFREE..
	* bgp_network.c: (bgp_getsockname) ditto
	  (bgp_accept) use XSTRDUP
	* bgp_routemap.c: (route_match_peer) ditto, als use a ret value and
	  remove one sockunion_free.
	* bgpd.c: (peer_delete) ditto.
	  XFREE the correct memtype, not free.
	  (peer_create) use XSTRDUP
	* bgp_packet.c: (bgp_stream_dup) deleted, stream_dup should be used
	  (various) update -> s/bgp_stream_dup/stream_dup
	  

2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
	  The 2nd arg to zebra_redistribute_send is now zclient instead of
	  zclient->sock.

2005-04-09 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_vty.c: Make "exit-address-family" work in IPv4 unicast address
	  family node.

2005-04-08 Martin Ling <martin-quagga@earth.li>

	* bgp_aspath.[ch], bgp_route.c, bgp_vty.c, bgpd.[ch]: Allow to enable
	  the length of confederation path segments to be included during the
	  as-path length check in the best path decision.

2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_zebra.c: (bgp_interface_delete) After deleting, set ifp->ifindex
	  to IFINDEX_INTERNAL.

2005-03-21 Hasso Tepper <hasso at quagga.net>

	* bgp_route.c: Don't crash while clearing route tables if there is
	  no particular afi/safi configured.

2005-02-23 Hasso Tepper <hasso at quagga.net>

	* bgp_route.c: Make reannouncing prefixes with changed attributes
	  work again.

2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_vty.c: Deprecate "neighbor transparent-as" and "neighbor
	  transparent-nexthop" commands.

2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_routemap.c: New route-map command - "match ip route-source".

2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_clist.[ch], bgp_route.c, bgp_routemap.c, bgp_vty.c:
	  community-list cleanup.

2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_route.c, bgp_vty.c, bgp_zebra.c, bgpd.[ch]: "enforce-multihop"
	  -> "disable-connected-check".

2005-02-02 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_fsm.c, bgp_open.c, bgp_packet.c, bgp_route.[ch], bgp_vty.c,
	  bgpd.[ch]: Add BGP_INFO_STALE flag and end-of-rib support. "bgp
	  graceful-restart" commands added. Show numbers of individual
	  messages in "show ip bgp neighbor" command. Final pieces of graceful
	  restart.

2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_open.c, bgp_packet.c, bgp_vty.c, bgpd.[ch]: Remove "no neighbor
	  capability route-refresh" commands. Route refresh capability is sent
	  anyway now. Preserve dummy deprecated commands.

2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_attr.c, bgp_snmp.c, bgp_vty.c, bgpd.[ch]: Remove support for old
	  draft - ie. "neighbor version 4-" commands. Preserve dummy "neighbor
	  version" command as deprecated.

2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>

	* bgpd.[ch], bgp_vty.c, bgp_route.c: "Restart session after
	  maximum-prefix limit" feature support.

2005-02-01 Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_nexthop.c: Improve debug.
	* bgpd.[ch], bgp_nexthop.c, bgp_snmp.c: Remove useless bgp_get_master()
	  function.
	* bgp_packet.c: MP AFI_IP update and withdraw parsing.
	* bgp_fsm.c: Reset peer synctime in bgp_stop(). bgp_fsm_change_status()
	  is better place to log about peer status change than bgp_event().
	  Log in bgp_connect_success().
	* bgp_vty.c: Fix typo in comment.
	* bgp_attr.c: Better log about unknown attribute.

2005-01-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_filter.c: (ip_as_path,no_ip_as_path) Use argv_concat instead
	  of buffer_getstr.
	* bgp_route.c: (bgp_show_regexp) Fix memory leak: need to free string
	  returned by buffer_getstr.
	  (bgp_show_community) Must use XFREE instead of free on string
	  returned by buffer_getstr.
	* bgp_routemap.c: (set_community) Must use XFREE instead of free
	  on string returned by buffer_getstr.
	* bgp_vty.c: (neighbor_description) Use argv_concat instead of
	  buffer_getstr.

2005-01-24 Hasso Tepper <hasso at quagga.net>

	* bgp_route.c: Fix showstopper bug. New route must be selected also
	  if old one is flaged as BGP_INFO_ATTR_CHANGED.

2005-01-17 Hasso Tepper <hasso at quagga.net>

	* bgp_route.c: Clear peer's routing table regardless whether it's
	  configured or not. Being not configured is even better reason to
	  do it.

2005-01-05 Paul Jakma <paul@dishone.st>

	* bgp_packet.c: (bgp_write) set socket to nonblock while writing
          this should be generalised. See bugzilla #102. Fix supplied by
	  wawa@yandex-team.ru (Vladimir Ivanov).

2004-12-08 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* *.c: Change level of debug messages to LOG_DEBUG.

2004-12-07 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_main.c: (main) The 2nd argument to openzlog has been removed.

2004-12-03 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_main.c: (sigint) Use zlog_notice for termination message.
	  (main) Use zlog_notice for startup announcement.

2004-11-25 Hasso Tepper <hasso at quagga.net>

	* bgp_main.c: Make group to run as configurable.

2004-11-09 Paul Jakma <paul@dishone.st>

	* bgp_nexthop.c: collapse bgp_connected_ipvX, bgp_nexthop_cache_ipvX
	  and cache{1,2}.. into arrays of tables and hence collapse
          bgp_scan_ipv{4,6} into a single bgp_scan function. Tested, though
          a long time ago (and this change was hand-merged).

2004-11-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* bgp_route.c: Remove all code related to VTY_CONTINUE; this feature
	  is deprecated because the output did not represent a single point
	  in time.  All output needs to be generated inline and buffered
	  by the library code.
	  (route_vty_out,route_vty_out_tag,damp_route_vty_out,
	   flap_route_vty_out) Remove code to count number of lines of output,
	   since this was only useful for VTY_CONTINUE behavior.
	  (bgp_show_callback,vty_calc_line) Removed.
	  (bgp_show_table) Remove hooks for VTY_CONTINUE callback support.
	  As a result, there's a new output_arg argument to this function.
	  Make function static.
	  (bgp_show) Make function static and add a new output_arg argument.
	  Change all functions that call bgp_show or bgp_show_table to
	  pass the new output_arg argument (that used to be passed inside
	  vty->output_arg).
	* bgp_mplsvpn.c: Remove declarations of functions defined in
	  bgp_route.c; these declarations belong in bgp_route.h.
	* bgp_route.h: Declare 3 global functions used in both bgp_route.c
	  and in bgp_mplsvpn.c.

2004-10-31 Paul Jakma <paul@dishone.st>

	* {bgpd,bgp_attr}.c: size_t printf format should be ld.

2004-10-25 Paul Jakma <paul@dishone.st>

	* Update with fix in debian bug id 222930.
	* bgp_main.c: Add ZCAP_RAW, needed to bind to interfaces.
	  bgp_network.c: (....) raise/lower privs around call to
          SO_BINDTODEVICE sockopt. 

2004-10-19 Andrew J. Schorr <aschorr@telemetry-investments.com>

	* bgp_nexthop.c: (bgp_connected_add) Connected destination pointer
	  may be NULL.
	  (bgp_connected_delete) ditto.

2004-10-14 Hasso Tepper <hasso at quagga.net>

	* bgp_dump.c: Make dump configuration appear in vtysh.

2004-10-13 Hasso Tepper <hasso at quagga.net>

	* bgp_snmp.c: Remove defaults used to initialize smux connection to
	  snmpd. Connection is initialized only if smux peer is configured.
	* bgp_view.c: It's dead file. Reomved.

2004-10-13 Paul Jakma <paul@dishone.st>

	* (global) more const'ification and fixups of types to clean up code.
	* bgp_mplsvpn.{c,h}: (str2tag) fix abuse. Still not perfect,
          should use something like the VTY_GET_INTEGER macro, but without
          the vty_out bits..
        * bgp_routemap.c: (set_aggregator_as) use VTY_GET_INTEGER_RANGE
          (no_set_aggregator_as) ditto.
        * bgpd.c: (peer_uptime) fix unlikely bug, where no buffer is 
          returned, add comments about troublesome return value.
	
2004-10-03 James R. Leu <jleu at mindspring.com>

	* bgp_vty.c: Router id from zebra can be manually overriden.
	* bgp_zebra.c: Read router id related messages from zebra daemon.
	  Remove own code related with router id selection.
	* bgpd.c, bgpd.h: Remove own router id selection code. Use the one
	  from zebra daemon if it isn't manually overriden.

2004-09-26 Hasso Tepper <hasso at quagga.net>

	* bgp_aspath.c, bgp_packet.c, bgp_vty.c: Fix compiler warnings.

2004-09-23 Hasso Tepper <hasso at quagga.net>

	* *.[c|h]: list -> struct list *, listnode -> struct listnode *.

2004-07-09 Paul Jakma <paul@dishone.st>

	* Merge of GNU Zebra cvs2svn changesets r799, r800 and r807.
	* bgp_dump.c: (bgp_dump_attr) cleanup. return status code. check
	  attributes present before printing.
	* bgp_dump.c: update bgp_dump_attr prototype.
	* bgp_packet.c: (bgp_update_receive) init attrstr. check status
	  of bgp_dump_attr. Log end-of-rib UPDATEs.

2004-07-09 Sowmini Varadhan <sowmini.varadhan@sun.com>

	* bgp_packet.c: (bgp_collision_detect) Send NOTIFY on new socket
	  if that is connection we're closing.
	  (bgp_read) invalid marker check applies to KEEPALIVE too.
	* bgp_route.c: Ignore multicast NRLI, dont send NOTIFY.
	
2004-06-04 Paul Jakma <paul@dishone.st>

	* type mismatch fixes
	  
2004-05-21  Akihiro Mizutani <mizutani@net-chef.net>

	* bgpd.h, bgp_open.[ch], bgp_debug.c, bgp_vty.[ch], bgp_fsm.c:
	  Graceful restart capability display.

2005-05-20 Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_debug.c: Cosmetical fixes and log neighbor changes.

2004-05-20  Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_ecommunity.c: Transit ecommunity support.
	* bgp_ecommunity.c: Fix for unknown community crush.

2005-05-20 Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* *: Maximum prefix threshold support.
	* *: Reset notification fixups.

2004-05-08 Paul Jakma <paul@dishone.st>

	* bgp_zebra.c: (bgp_interface_address_add) sync to zclient changes
	  (bgp_interface_address_delete) ditto.
	  (bgp_zebra_announce) ditto.
	  (bgp_zebra_withdraw) ditto.

2004-05-03 Daniel Roesen <dr@cluenet.de>
	
	* bgp_fsm.c: (bgp_stop) Reset uptime only on transition from 
	  Established so that it reflects true downtime (rather time 
	  since last transition, eg Active->Idle)
	  
2004-05-01 rivo nurges <rix@estpak.ee>
 
        * bgp_route.c: fix UNH IOL BGP-4.1.12f
 
2004-05-01 Paul Jakma <paul@dishone.st>

	* Revert the attempted clean-up of the dummy peer hack, reverts
	  patchsets 435 (see 2004-02-17 below) and 456. 

2004-04-16 rivo nurges <rix@estpak.ee>

	* bgpd.h, bgp_debug.c: update cease subcodes to
	  draft-ietf-idr-cease-subcode-05
	* bgpd.h, bgpd.c, bgp_route.c, bgp_route.h: fix UNH IOL BGP-4.1.6a

2004-02-17 Paul Jakma <paul@dishone.st>

	* bgpd.h: (bgp_peer) add fd_local and fd_accept 
	  file descriptor's, fd becomes a pointer to one of these.
	* bgpd.c: (global) adjust for fact that fd is now a pointer.
	  (peer_create_accept) removed.
	* bgp_route.c: (global) adjust for change of peer fd to pointer
	* bgp_packet.c: (bgp_collision_detect) adjust and remove the 
	  "replace with other peer" hack. 
	* bgp_network.c: (bgp_accept) Remove the dummy peer hack. 
	  Update peer->fd_accept instead. 
	  (global) Adjust fd references - now a pointer.
	* bgp_fsm.c: (global) adjust peer fd to pointer.
	  (bgp_connection_stop) new function, to stop connection.
	  (global) adjust everything which closed peer fd to use
	  bgp_connection_stop().
	  
2003-12-23 Krzysztof Oledzki <oleq@ans.pl>

	* bgp_network.c: drop privs on error cases

2003-08-11 kunihiro <kunihiro@zebra.org>

	* bgp_route{,map}.c: Extend 'set ip next-hop' in route-maps with
	  ability to specify 'peer-address' rather than IP. 

2003-06-09 Paul Jakma <paul@dishone.st>

	* bgp_clist.c (community_list_delete): honour deny statements

2003-04-19 Hasso Tepper <hasso@estpak.ee>

	* rip_routemap.c: sync daemon's route-map commands to have same
	syntax

2003-01-09  Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_routemap.c: Add match extcommunity command.

2002-10-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_aspath.c (aspath_init): Extend hash size from default to
	32767.
	(aspath_key_make): Use unsigned shoft for making hash.  Suggested
	by: Marc Evans <Marc@SoftwareHackery.Com>

2002-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_clist.c (community_entry_free): Fix memory leak of standard
	extcommunity-list config string.

2002-08-19  Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_route.c (route_vty_out_detail): Fix bug of router-id display
	when multiple instance is used.

2002-08-18  Akihiro Mizutani <mizutani@net-chef.net>

	* bgpd.c: Make "default-originate" and "maximum-prefix" commands
	available in peer-group configuration.

2002-08-13  Akihiro Mizutani <mizutani@net-chef.net>

	* bgp_packet.c (bgp_open_send): Put Opt Parm Len 0 when last
	capability packet cause error or dont-capability-negotiate option
	is specified.

2002-07-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.93 released.

2001-10-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_vty_init): Translate update commands are removed.

2001-10-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_static_set): Add workaround for BGP static
	route announcement when there is no zebra running.

2001-10-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (neighbor_remote_as_unicast): Remove "remote-as nlri
	unicast multicast" commands.

2001-09-14  Akihiro Mizutani <mizutani@dml.com>

	* bgp_open.c: When we receive capability route-refresh, we should
	check we send the capability not we receive the capability.

	* bgp_route.c (bgp_network_mask_natural_route_map): network
	statement route-map is added.

2001-08-31  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_advertise.c (bgp_advertise_intern): attr must be interned
	before looking up hash table.

2001-08-30  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.h (struct peer): BGP filter is moved from peer_conf to
	peer.

2001-08-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_nexthop.c (bnc_nexthop_free): Fix next pointer bug.
	Suggested by: "Hong-Sung Kim" <hoskim@lanbird.co.kr>.

2001-08-26  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_table.c (bgp_node_create): Clearn memory before use it.

2001-08-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* Change to use bgp_table.[ch].

2001-08-23  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (bgp_init): Add "transparent-as" and
	"transparent-nexthop" for old version compatibility.

2001-08-23  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.h (struct peer): default-originate route-map is added.

	* bgp_route.c: When self originated route is advertised with
	attrubute-unchanged, nexthop was not properly set.  This bug is
	fixed.

2001-08-22  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (neighbor_attr_unchanged): transparent-as and
	transparent-next-hop commands are restructured.  Instead of
	current transparent-* commands, attribute-unchanged command is
	introduced.

	neighbor A.B.C.D attribute-unchanged [as-path|next-hop|med]

	(neighbor_default_originate): "default-originate" configuration
	announce default route even 0.0.0.0/0 does not exists in BGP RIB.

2001-08-19  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92a released.

2001-08-19  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: AF specific soft-reconfiguration inbound commands are
	added.

2001-08-17  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_route.c (bgp_show_callback): Do not do community NULL check.

	* bgp_community.c (community_cmp): Add check for commnunity NULL
	check.

	* bgp_routemap.c (route_match_community): Do not check comunity is
	NULL.  It may match to community-list "^$".

	* bgp_community.c (community_match): Add check for community is
	NULL case.

2001-08-17  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: AF specific route-reflector-client and
	route-server-client configuration are added.

2001-08-17  Rick Payne <rickp@ayrnetworks.com>

	* bgp_clist.c (community_match_regexp): Check special ^$ case.

2001-08-17  Akihiro Mizutani <mizutani@dml.com>

	* bgp_clist.c (community_list_match): Fix bug of community list
	permit and deny check.

2001-08-16  Akihiro Mizutani <mizutani@dml.com>

	* bgp_mplsvpn.c (bgp_mplsvpn_init): Add AF specific "nexthop-self"
	command.

2001-08-15  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.h (PEER_FLAG_SEND_COMMUNITY): Per AF based configuration
	flag is introduced.

	* bgp_mplsvpn.c (bgp_mplsvpn_init): VPNv4 filtering is added.

2001-08-15  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* zebra-0.92 released.

2001-08-13  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (bgp_delete): "no router bgp" free static, aggregate, rib
	table properly.

2001-08-12  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_route.c (bgp_node_safi): Return SAFI of current node.
	(bgp_config_write_network_vpnv4): VPNv4 static configuration
	display.

2001-08-11  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (no_bgp_ipv4_multicast_route_map): Add IPv4 multicast
	node filter commands.

2001-08-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (PEER_FLAG_IGNORE_LINK_LOCAL_NEXTHOP): Add
	"ignore-link-local-nexthop" flag for ignore link-local nexthop for
	IPv6.

2001-08-07  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (address_family_ipv4_multicast): "address-family ipv4
	multicast" is added.
	(address_family_ipv6_unicast): "address-family ipv6 unicast" is
	added.
	
2001-08-07  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_process): Use flag instead of as_selected
	memeber in struct bgp_info.

	* bgp_route.h (struct bgp_info): Remove as_selected memeber from
	struct bgp_info.

2001-07-31  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_route.c (bgp_announce_check): Enclose sending time AS loop
	check code with #ifdef BGP_SEND_ASPATH_CHECK.

2001-07-29  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_packet.c (bgp_withdraw_send): Simplify address family check.

	* bgpd.h (BGP_INFO_HOLDDOWN): Introduce new macro to check BGP
	information is alive or not.

	* bgp_community.c: Use community_val_get() on all OS.

2001-07-24  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_route.c (bgp_announce_check): Simplify set next-hop self
	check.

2001-07-24  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_announce_check): To route server clients, we
	announce AS path, MED and nexthop transparently.

2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (route_set_atomic_aggregate_free): Do not call
	XFREE.  No memory is allocated in
	route_set_atomic_aggregate_compile().

2001-06-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (bgp_route_map_init): `match nlri` and `set nlri`
	are replaced by `address-family ipv4` and `address-family vpnvr'.

2001-06-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_withdraw): Add check for BGP_PEER_CONFED.
	Reported by Rick Payne <rickp@rossfell.co.uk>.

2001-06-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (bgp_zebra_announce): When global IPv6 nexthop is
	empty, use socket's remote address for the nexthop.

2001-06-04  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (peer_delete): Fix memory leak.  Reported by Yosi Yarchi
	<Yosi_Yarchi@KereniX.com>

2001-06-01  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgpd.c (bgp_delete): Fix memory leak.  Reported by Yosi Yarchi
	<Yosi_Yarchi@KereniX.com>

2001-05-27  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* bgp_route.c (bgp_route_clear_with_afi_vpnv4): Use next instead
	of ri->next.

	* bgp_packet.c (bgp_withdraw_send): MPLS/VPN withdraw takes effect
	when HAVE_IPV6 is not defined.

2001-03-07  "Akihiro Mizutani" <mizutani@dml.com>

	* bgpd.c (peer_timers_set): Adjust keepalive timer to fit less
	than holdtime / 3.
	(bgp_confederation_peers_unset): Only set peer->local_as when
	confederation is enabled.
	(bgp_timers): Add "timers bgp <0-65535> <0-65535>" command.

	* bgp_route.c (bgp_announce_check): Set med of redistributed route
	when it is announced to EBGP peer.

2001-03-06  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_nexthop.c (bgp_scan_ipv4): bgp_scan() call bgp_process() for
	all prefixes.

2001-03-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_attr_origin): When bgpd send NOTIFICATION with
	erroneous attribute (type, length and value), it does include
	attribute flags field.

2001-02-21  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_announce_check): The route reflector is not
	allowed to modify the attributes of the reflected IBGP routes.

2001-02-20  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): During path seleciton, BGP
	confederation peer is treated as same as IBGP peer.

2001-02-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_redistribute_add): Initialize attr_new with
	attr.  Call aspath_unintern when return from this function.

2001-02-19  "Akihiro Mizutani" <mizutani@dml.com>

	* bgpd.c (bgp_router_id_set): Reset BGP peer when router-id is
	changed.

2001-02-18  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_packet.c (bgp_open_receive): When user configure holdtimer,
	do not refrect the value to current session.

2001-02-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_aggregate_delete): Set BGP_INFO_ATTR_CHANGE to
	suppress route withdraw.

	* bgp_damp.c (bgp_damp_init): Fix bug of flap dampening.

2001-02-16  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_aspath.c (aspath_make_str_count): Use ',' for separator for
	AS_SET and AS_CONFED_SET.

2001-02-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_process): Do not consider suppress route.

	* bgp_aspath.c (aspath_aggregate_as_set_add): Reset asset when
	aspath->data is realloced.

2001-02-15  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_attr.c (bgp_attr_aggregate_intern): Do not set atomic
	aggregate when using as-set.

2001-02-14  "Akihiro Mizutani" <mizutani@dml.com>

	* bgpd.c (bgp_confederation_peers_unset): Set peer's local-as
	correctly.

	* bgp_route.c (bgp_update): Just ignore AS path loop for
	confederation peer.

2001-02-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_aggregate_set): Add as_set argument.
	(bgp_aggregate_unset): Remove summary_only argument.
	(aggregate_address_as_set): New commands.
	"aggregate-address A.B.C.D/M as-set"
	"no aggregate-address A.B.C.D/M as-set"

2001-02-08  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_announce_check): Do not modify nexthop when the
	route is passed by route reflector.

2001-02-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c: "no bgp dampening" with argument.
	(bgp_announce_check): Do not modify nexthop when the route is
	passed by route reflector.

2001-02-07  "Akihiro Mizutani" <mizutani@dml.com>

	* bgpd.c (neighbor_passive): Change "neighbor NEIGHBOR remote-as
	ASN passive" to "neighbor NEIGHBOR passive".
	(bgp_announce_check): Check well-known community attribute even
	when "no neighbor send-community" is set.

2001-02-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_establish): Do not send keepalive at established
	time when keepalive timer is configured as zero.

2001-02-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_attr_check): When peer is IBGP peer, local
	preference is well-known attribute.

2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.91 is released.

	* bgp_attr.h (struct attr): Comment out DPA value.
	(struct attr): Change refcnt type from int to unsinged long.

	* bgp_attr.c (attrhash_key_make): Likewise.
	(attrhash_cmp): Likewise.
	(bgp_attr_dpa): Likewise.

2001-01-30  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): Make route selection completely same
	as Cisco's.

2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.h (BGP_ATTR_FLAG_OPTIONAL): Rename old ATTR_FLAG_* to
	BGP_ATTR_FLAG_* to clarify meenings.

2001-01-30  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (route_vty_out): Display argument to suppress same
	prefix information display.
	(route_vty_out_route): Don't display mask information for
	classfull network.

2001-01-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.h (SET_BITMAP): Simple bitmapping macros.

	* bgp_attr.c (bgp_attr_parse): Use bitmap for attribute type
	check.

2001-01-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_mp_reach_parse): Enclose loggin with BGP_DEBUG.
	(bgp_attr_parse): Comment out well-known attribute check.

2001-01-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_static_unset): Link-local IPv6 address can't be
	used for network advertisement.
	(nlri_parse): When link-local IPv6 address NLRI comes from
	remote-peer, log the information then simply ignore it.

	* bgp_zebra.c (zebra_read_ipv6): Link-local IPv6 address is not
	redistributed.

	* bgp_route.c (bgp_update): Check IPv6 global nexthop
	reachability.

2001-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Check nexthop points local address or
	not.
	(bgp_static_update_vpnv4): Set valid flag.

	* bgp_attr.c (bgp_attr_parse): Duplicate attribute check.
	(bgp_attr_parse): Well-known attribute check.

	* bgp_open.c (bgp_auth_parse): Authentication is not yet supported.

	* bgp_packet.c (bgp_valid_marker): Check marker is synchronized.

	* bgpd.c (clear_bgp): Send NOTIFICATION Cease when SEND_CEASE is
	defined.

	* bgp_snmp.c (bgp4PathAttrTable): Fix compile error.

2001-01-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_network_import_check): New command for IGP network
	check.

2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_scan): Run bgp_process when IGP metric is
	changed.  Call bgp_process once for each node.

2001-01-23  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): Add IGP metric comparison.

2001-01-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_info_cmp): Add IGP metric comparison.

	* bgp_nexthop.c (bgp_nexthop_lookup): Set IGP metric for valid
	IBGP route.

2001-01-23  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (show_ip_bgp_prefix_longer): Add new commands.
	"show ip bgp A.B.C.D/M longer-prefixes"
	"show ip bgp ipv4 (unicast|multicast) A.B.C.D/M longer-prefixes"
	"show ipv6 bgp X:X::X:X/M longer-prefixes"
	"show ipv6 mbgp X:X::X:X/M longer-prefixes"
	
2001-01-20  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (show_ip_bgp_cidr_only): Add new commands.
	"show ip bgp cidr-only"
	"show ip bgp ipv4 (unicast|multicast) cidr-only"
	
2001-01-18  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_update): AS path lookup check is done in
	bgp_update() not in attr_parse().

2001-01-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Call bgp_aggregate_decrement() just
	before bgp_attr_unintern().

2001-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Now intern is performed very last part
	of the BGP packet update procedure.

2001-01-17  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_update): When implicit withdraw occur, reuse
	existing bgp_info structure.

2001-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_aggregate_decrement): Fix bug of aggregate
	address matching method.
	(bgp_update): 

	* bgp_nexthop.c (bgp_nexthop_onlink): Separate EBGP nexthop onlink
	check and IBGP nexthop route check.

2001-01-16  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.h (BGP_INFO_ATRR_CHANGED): Added for track attribute
	change.

2001-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info): Remove selected flag.  Use
	BGP_INFO_SELECTED for flags instead.
	(struct bgp_info): Remove valid flag.  Use BGP_INFO_VALID for
	flags instead.
	(struct bgp_info): Add igpmetric for IBGP route nexthop IGP
	metric.
	(struct bgp_info_tab): Struct bgp_info_tag is integrated into
	struct bgp_info.
	(BGP_INFO_ATRR_CHANGED): Added for track attribute change.

	* bgp_community.c (community_val_get): gcc-2.95 on
	sparc-sun-solaris cause crush.  This function is for avoid the
	crush.

2001-01-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_open_receive): Translated peer's packet_size
	clear bug is fixed.

2001-01-14  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_packet.c (bgp_open_receive): Return notification with
	supported version number.

2001-01-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_show_summary): Display AS path and community
	entries.  Suggested by: "Matt Ranney" <mjr@ranney.com>.

	* bgp_packet.c (bgp_read_packet): Fix bug of unblocking BGP socket
	read.  When BGP packet read is partial, we must get size and type
	from packet again.

2001-01-12  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_route.c (bgp_update): Do not unset BGP_INFO_HISTORY flag.
	(bgp_update): When there is a history entry increment route count.
	(bgp_damp_set): Check BGP_CONFIG_DAMPENING flag.

	* bgp_damp.c (bgp_damp_withdraw): Set status to
	BGP_DAMP_DISCONTINUE.

2001-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_mp_reach_parse): Fix warning code when second
	IPv6 nexthop is not link-local addresss.

2001-01-11  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_damp.c (bgp_config_write_damp): Smart flap dampening
	configuration display.
	(bgp_damp_info_print): Display elapsed time from flap started.

	* bgp_damp.h (struct bgp_damp_info): Add flap start time.

	* bgpd.c (peer_create): Set last read time.
	(bgp_show_peer): Display last read time.
	(bgp_show_summary): Use BGP_CONFIG_DAMPENING flag to check
	configuration.
	
	* bgpd.h (BGP_CONFIG_DAMPENING): Add new configuration option.
	(struct peer): Add last read time member.
	(BGP_VERSION_MP_4): Remove obsolete definition.

2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c: Remove OLD_RIB codes.

	* bgp_route.c (bgp_process): Likewise.

	* zebra-0.90 is released.

	* bgp_route.h (BGP_INFO_HISTORY): Remove damped member from struct
	bgp_info.  Instead of that use BGP_INFO_DAMPED flag.
	(struct bgp_info): Remove invalid member from struct bgp_info.
	Instead of that use BGP_INFO_HISTORY flag.

2001-01-10  "Akihiro Mizutani" <mizutani@dml.com>

	* bgp_damp.c (bgp_damp_info_print): New function to display
	dampening status.
	(DEFAULT_HARF_LIFE): Define default value.
	(DEFAULT_REUSE): Likewise.
	(DEFAULT_SUPPRESS): Likewise.
	(bgp_config_write_damp): When config value is same as default
	value, simply display "bgp dampening" to configuration.

	* bgp_damp.h (struct bgp_damp_info): Add flap member.

	* bgp_route.h (struct bgp_info): Added for BGP flap dampening
	history status.

2001-01-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_connected_add): Point-to-point connected
	address is properly handled.
	(bgp_connected_delete): Likewise.

	* bgp_route.c (bgp_route_init): Turn off BGP Flap dampening code
	until it works fine.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_show_summary): Add BGP_VERSION_MP_4 case.

	* bgp_route.c (bgp_update): When this is not damped route, clear
	ri pointer.

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_main.c: Add "-n" no_kernel option to not install route to
	kernel.  Suggested by: "Matt Ranney" <mjr@ranney.com>

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_connected_add): Revert point-to-point
	connected route patch.  Reported by ruud@ruud.org (Ruud de Rooij)

	* bgp_damp.c (bgp_config_write_damp): Add configuration display
	function.

	* bgp_route.c (bgp_info_free): Set NULL to BGP dampening
	information when BGP info structure is freed.
	(bgp_info_cmp): Check damped flag.
	(bgp_announce_check): Damped route is not announced.

2001-01-09  "Akihiro Mizutani" <mizutani@dml.com>

	* bgpd.c (neighbor_capability_route_refresh): Change "neighbor
	route-refresh" command to "neighbor capability route-refresh".
	(clear_bgp_soft_in): Change soft-reconfig method.

	clear ip bgp <neighbor> soft in
        --------------------------------------
        Try stored cache first then route-refresh

        clear ip bgp <neighbor> in
        ---------------------------------
        Try route-refresh first then try to use stored cache

2001-01-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_connected_add): Check point-to-point
	connected route.  Reported by ruud@ruud.org (Ruud de Rooij)

2001-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_nexthop_lookup): When IBGP nexthop is
	changed, refresh it.

2001-01-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info_tag): Add as_selected to
	bgp_info_tag.

2001-01-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info_tag): Add damped and bgp_damp_info
	member for BGP flap dampening.

	* bgp_damp.c: New file is added.

	* bgp_damp.h: Likewise.

2001-01-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (BGP_VTYSH_PATH): Change "/tmp/bgpd" to "/tmp/.bgpd".

2000-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (zlookup_connect): Change to use UNIX domain
	socket for zebra communication.

2000-12-29  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_process): Fix "bgp deterministic-med" process.

2000-12-27  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_process): Add "bgp deterministic-med" process.

2000-12-25  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): Use ntohl comparing router ID.

2000-12-18  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): When over three same prefix exit,
	withdrawing best prefix perform router ID comparison.

2000-12-15  Akihiro Mizutani  <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): Do not compare router ID when the
	routes comes from EBGP peer.  When originator ID is same, take
	shorter cluster-list route.  If cluster-list is same take smaller
	IP address neighbor's route.

	* bgpd.c (bgp_bestpath_aspath_ignore): Add "bgp bestpath as-path
	ignore" command.  When this option is set, do not concider AS path
	length when route selection.
	(bgp_bestpath_compare_router_id): Add "bgp bestpath
	compare-routerid".  When this option is set, compare router ID
	when the routes comes from EBGP peer.
	
2000-12-15  Akihiro Mizutani  <mizutani@dml.com>

	* bgp_route.c (bgp_info_cmp): Compare originator ID when it is
	available.

2000-12-14  Akihiro Mizutani  <mizutani@dml.com>

	* bgp_packet.c (bgp_notify_receive): Disply received Notify data
	information.

2000-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_filter.c (as_filter_free): Use MTYPE_AS_FILTER_STR to make
	it sure the memory is freed.

	* bgp_route.c (route_vty_out_detail): Do not use AF_INET6 outside
	HAVE_IPV6.

2000-12-08  Akihiro Mizutani  <mizutani@dml.com>

	* bgp_packet.c (bgp_notify_send_with_data): Store BGP notification
	data part.

	* bgp_network.c (bgp_accept): When BGP connection comes from
	unconfigured IP address, close socket immediately.

	* bgpd.c: Fix some display format.

2000-11-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_keepalive_send): Delete duplicate
	bgp_packet_set_size () call.

2000-11-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_read_packet): Remove debug codes.

2000-11-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_snmp.c (write_bgpPeerTable): Add SNMP set method routine.

	* bgp_fsm.c (bgp_stop): Use fsm_change_status to change peer's
	status.
	(bgp_establish): Likewise.

2000-11-26  Akihiro Mizutani  <mizutani@dml.com>

	* bgp_open.c: Fix error messages.

2000-11-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_establish): Call BGP trap when the peer is
	established.
	(bgp_stop): Call BGP trap when the peer is dropped.

2000-11-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_snmp.c (bgp4PathAttrTable): Return BGP path attribute table.

	* bgpd.h (struct peer): Add update_time for track last update
	received time.

	* bgp_packet.c (bgp_notify_receive): Preserv notify code and sub
	code in any case.

	* bgp_snmp.c (bgpPeerTable): Return remote router ID instead of
	peering IP address.
	(bgpPeerTable): Return actual BGP version number.

2000-11-22  Akihiro Mizutani <mizutani@dml.com>

	* bgp_debug.c (bgp_notify_print): Notify data length display bug
	is fixed.

2000-11-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (zlookup_connect): When UNIX domain connection to
	zebra is enabled, use the method.

2000-11-16  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: Revise debug message output.

2000-11-15  Akihiro Mizutani <mizutani@dml.com>

	* bgp_clist.c (ip_community_list): Fix bug of string comparison.

2000-11-14  Akihiro Mizutani <mizutani@dml.com>

	* bgp_community.c (community_match): Fix bug of memcmp return
	value check.

2000-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_clist.c (community_list_match_exact): Add check for
	entry->style is COMMUNITY_LIST.
	(community_match_regexp): Apply new com_nthval macro.

2000-11-07  Rick Payne <rickp@rossfell.co.uk>

	* bgp_routemap.c (route_set_community_delete): "set
	community-delete COMMUNITY-LIST" is added.

	* bgp_community.c (community_del_val): Delete one community.
	(community_delete): Delete all community included in list.
	(community_match): Fix bug of matching community value.

	* bgp_clist.c (community_entry_free): Free community regular
	expression.
	(community_entry_make): Default style is COMMUNITY_LIST.
	(community_entry_lookup): Make it sure style is COMMUNITY_LIST.
	(community_entry_regexp_lookup): New function for community
	regular expression lookup.
	(community_match_regexp): New function.
	(community_delete_regexp): New function.
	(community_list_delete_entries): New function.
	(community_list_match): Add COMMUNITY_REGEXP treatment.
	(community_list_match_exact): Likewise.
	(config_write_community): Write community list according to
	entry->style.

2000-11-07  Rick Payne <rickp@rossfell.co.uk>

	* bgp_attr.c (bgp_attr_aspath): AS path first AS check.

	* bgp_clist.c (struct community_entry): Add style, regexp, reg to
	community_entry.

2000-11-06  Rick Payne <rickp@rossfell.co.uk>

	* bgp_aspath.c (aspath_firstas_check): AS path first AS check.

	* bgpd.c (bgp_enforce_first_as): New command "bgp
	enforce-first-as".

	* bgpd.h (BGP_CONFIG_ENFORCE_FIRST_AS): Add new flag.

2000-11-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_community.c (community_compare): Copy byte stream data to
	actual value instead of using type casting hack.
	(community_add_val): Likewise.
	(community_uniq_sort): Likewise.
	(community_print): Likewise.
	(community_print_vty): Likewise.
	(community_include): Use memcmp to compare community value.

	* bgp_community.h (com_lastval): com_lastval and com_nthval macro
	return pointer.

2000-11-06  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.h (struct peer): Add established and dropped member for
	count peering up/down statistics.

	* bgpd.c (bgp_show_peer): Display peering up/down statistics.

	* bgp_fsm.c (bgp_establish): Increment established count.
	(bgp_stop): Increment dropped count.

	* bgp_packet.c (bgp_notify_receive): Increament notify count.

2000-11-1  Akihiro Mizutani <mizutani@dml.com>

	* bgp_fsm.c: Fix bug of holdtimer is not reset when bgp cleared. 

2000-10-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h: Static bit flag is set by (1 << DIGIT).

2000-10-24  Akihiro Mizutani <mizutani@dml.com>

	* bgp_ecommunity.c (ecommunity_dup): Extended community display
	format fix.

2000-10-24  Arkadiusz Miskiewicz <misiek@pld.org.pl>

	* bgp_network.c (bgp_serv_sock_addrinfo): Use gai_strerror.
	(bgp_serv_sock_addrinfo): Check address family.

2000-10-23  Jochen Friedrich <jochen@scram.de>

	* bgp_snmp.c: bgp_oid and bgpd_oid are used in smux_open after it
	is registered.  So those variables must be static.

2000-10-23  Akihiro Mizutani <mizutani@dml.com>

	* bgp_routemap.c (route_match_ip_next_hop): Change "match ip
	next-hop" argument from IP address to access-list name.
	Remove zebra-0.88 compatibility commands.
        "match ip prefix-list WORD"
        "match ipv6 prefix-list WORD"
	
2000-10-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (route_match_ipv6_next_hop_compile): Fix bug of
	passing the pointer to the pointer of struct in6_addr instead of
	the pointer of struct in6_addr in "match ipv6 next-hop" command.

	* bgp_route.c (bgp_announce_check): Enclose IPv6 part with
	HAVE_IPV6.

2000-10-20  Jasper Wallace <jasper@ivision.co.uk>

	* bgp_snmp.c (bgpPeerTable): ntohs missing bug is fixed.  Change
	to use linklist.c.  Define COUNTER32 as ASN_COUNTER.

2000-10-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_announce_check): attr->nexthop empty check
	should be done by attr->nexthop.s_addr instead of strcmp.

2000-10-18  Akihiro Mizutani <mizutani@dml.com>

	* bgp_zebra.c (zebra_read_ipv4): Pass nexthop value to
	bgp_redistribute_add().

	* bgp_nexthop.c (bgp_multiaccess_check_v4): New function for
	checking IPv4 multiaccess nexthop.

	* bgp_route.c (bgp_announce_check): In case of the nexthop is
	reachable on multiaccess media, do not change nexthop.
	(bgp_redistribute_add): Set nexthop when the value is passed.

2000-10-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_timer_set): If peer is passive mode, do not set
	connect timer.
	(bgp_start): If the peer is passive mode, force to move to Active
	mode.

2000-10-17  Horms <horms@vergenet.net>

	* bgp_debug.c (debug_bgp_fsm): Fix typo.

2000-10-17  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c: "show ipv6 bgp" route display improvement.

2000-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (neighbor_routes): Allocate sockunion for callback
	function.
	(bgp_show_neighbor_route): Remove static declaration for union
	sockunion.

	* bgpd.c (peer_update_source_set): Clean previously allocated
	memory before allocate new one.

2000-10-03  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (neighbor_routes): Add show neighbor's routes
	command.
	"show ip bgp neighbors (A.B.C.D|X:X::X:X) routes"
	"show ip bgp ipv4 (unicast|multicast) neighbors (A.B.C.D|X:X::X:X) routes"
	"show ipv6 bgp neighbors (A.B.C.D|X:X::X:X) routes"
	"show ipv6 mbgp neighbors (A.B.C.D|X:X::X:X) routes"

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.89 is released.

2000-10-02  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: "bgp deterministic-med" command is added.

2000-10-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_connected_add): Apply mask for connected
	route addition and deletion.

2000-09-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_cmp_left): Skip confederation AS segment
	when comparing leftmost AS number.

2000-09-29  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (peer_route_reflector): Route reflector can be set for
	IBGP peer.
	(bgp_distribute_set): Fix bug of string check for (in|out).
	(bgp_show_summary): Display total neighbor count.

2000-09-28  Akihiro Mizutani <mizutani@dml.com>

	* bgp_attr.c (bgp_packet_attribute): Only add cluster_list and
	originator for clinet to client routes.
	(bgp_packet_attribute): Add new cluster_list to the beginning of
	existing cluster_list.
	(bgp_packet_attribute): Fix bug of originator is rewritten even
	when originator is already set.

2000-09-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_client_to_client_reflection): Add new command.
	"no bgp client-to-client reflection"
	"bgp client-to-client reflection"

	* bgpd.h (BGP_CONFIG_NO_CLIENT_TO_CLIENT): Add new definition.

2000-09-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_read): Make BGP packet read to non-blocking
	read.
	(bgp_read_packet): Likewise.
	(bgp_read_packet): When errono is EAGAIN, try to read it again.

	* bgp_fsm.c (bgp_stop): Clear packet size and read buffer.

2000-09-26  Akihiro Mizutani <mizutani@dml.com>

	* bgp_routemap.c: Configuration of prefix-list match is shown as
	"match ip address prefix-list <WORD>".  Old configuration "match
	ip prefix-list <WORD>" is left for compatibilitty.

2000-09-25  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.h (BGP_CONFIG_MED_MISSING_AS_WORST): Changed from
	BGP_CONFIG_MISSING_AS_WORST.

	* bgpd.c (bgp_bestpath_med): Change missing-as-worst syntax.
	Old "bgp bestpath missing-as-worst"
	New "bgp bestpath med missing-as-worst"

2000-09-24  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c: Compare MED properly in case of CONFED-IBGP.

2000-09-21  steve@Watt.COM (Steve Watt)

	* bgp_debug.h: Do not declare debug variables conf_bgp_debug_* and
	term_bgp_debug_*.

	* bgp_debug.c: Declare variables here.

2000-09-21  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: MBGP soft-reconfiguration command is added.
	clear ip bgp x.x.x.x ipv4 (unicast|multicast) in
	clear ip bgp x.x.x.x ipv4 (unicast|multicast) out
	clear ip bgp x.x.x.x ipv4 (unicast|multicast) soft
	clear ip bgp <1-65535> ipv4 (unicast|multicast) in
	clear ip bgp <1-65535> ipv4 (unicast|multicast) out
	clear ip bgp <1-65535> ipv4 (unicast|multicast) soft
	clear ip bgp * ipv4 (unicast|multicast) in
	clear ip bgp * ipv4 (unicast|multicast) out
	clear ip bgp * ipv4 (unicast|multicast) soft

	Change "clear ip bgp vpnv4 x.x.x.x soft" command to
	"clear ip bgp x.x.x.x vpnv4 unicast soft".

	"bgp bestpath med confed" command is added.
	
	* bgpd.h (BGP_CONFIG_MED_CONFED): Add New definition.

2000-09-18  Rick Payne <rickp@rossfell.co.uk>

	* bgpd.c (bgp_show_peer): Fix misplaced #endif.

2000-09-12  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (bgp_default_local_preference): Add "bgp default
	local-preference" command.

	* bgp_nexthop.c (no_bgp_scan_time): Add "no bgp scan-time"
	command.

2000-09-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (bgp_zebra_announce): BGP confederation peer's routes
	are passed to zebra like IBGP route.

2000-09-10  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (bgp_config_write_peer): Make it consistent passive
	configuration.

	* bgp_route.c: Community match command is added.
	"show ip bgp community <val>"
	"show ip bgp community <val> exact-match"

2000-09-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_nexthop_lookup): ebgp-multihop routes are
	treated as IBGP routes.

2000-09-08  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (bgp_show_route): When local-AS community route is
	selected, display "not advertised outside local AS" to "show ip
	route A.B.C.D" output.
	(show_ip_bgp_ipv4_filter_list): Add below four commands.
	"show ip bgp ipv4 (unicast|multicast) filter-list WORD"
	"show ip bgp ipv4 (unicast|multicast) community"
	"show ip bgp ipv4 (unicast|multicast) community-list WORD"
	"show ip bgp ipv4 (unicast|multicast) community-list WORD exact-match"
	
	* bgp_clist.c (community_list_match_exact): Community exact match
	function.

2000-09-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Add peer's ttl check.

	* bgpd.h (struct peer): Structure member refresh is renamed to
	refresh_adv.

	* bgpd.c (clear_bgp_soft_in): Check PEER_FLAG_ROUTE_REFRESH flag
	when soft reconfiguration is performed.

	* bgp_zebra.c (bgp_zebra_announce): When the peer is EBGP and
	ebgp-multiphop is set, set ZEBRA_FLAG_INTERNAL for nexthop lookup.

	* bgp_route.h (struct bgp_info_tag): Add valid flag.

2000-08-25  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: Add AS base BGP soft reconfiguration.

	* bgp_route.c: When no-advertise or no-export route is selected,
	"show ip bgp" display "not advertised to EBGP peer" or "not
	advertised to any peer" message.
	
2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* zebra-0.88 is released.

	* bgp_dump.c (dump_bgp_routes): Change "dump bgp routes" to "dump
	bgp route-mrt" to support MRT specific dump format.

	* bgpd.c (bgp_init): "clear ip bgp vpnv4 soft {in,out}" command is
	added.

	* bgp_route.c (bgp_update): Currently nexthop check is only works
	for IPv4.

2000-08-17  Akihiro Mizutani <mizutani@dml.com>

	* bgpd. (clear_ip_bgp_all_soft): Add "clear ip bgp * soft" for
	both inbound and outbound soft reconfiguration.

2000-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (clear_ip_bgp_peer_soft_out): Add soft-reconfiguration
	outbound.
	(peer_new): Set route-refresh flag.

2000-08-16  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: "no bgp router-id A.B.C.D" alias is added.  "no bgp
	cluster-id A.B.C.D" alias is added.  " bgp cluster-id
	<1-4294967295>" alias is added.  "clear ip bgp * soft in" command
	is added.  "clear ip bgp A.B.C.D in" alias is added.  "clear ip
	bgp * in" alias is added.

2000-08-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Add soft_reconfig flag.  When the flag
	is set do not install the route into Adj-RIBs-In.
	(bgp_update): Perform implicit withdraw before filtering of the
	route.

	* bgp_packet.c (bgp_read): draft-ietf-idr-bgp-route-refresh-01.txt
	capability code and BGP message can be accepted.

	* bgp_open.c (bgp_capability_parse): Likewise.

	* bgp_route.c (bgp_refresh_table): New function for route refresh.
	(bgp_refresh_rib): Likewise.

	* bgpd.c (bgp_show_peer): Display route refresh status.

	* bgp_route.c (bgp_aggregate_add): Add check for the route
	validness.
	(bgp_aggregate_delete): Likewise.

2000-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_nexthop.c (bgp_scan): Care for aggregate route when the
	route become inaccessible.

2000-08-15  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (show_ip_bgp_prefix): "show ip bgp A.B.C.D/M"
	command is added.

2000-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (bgp_interface_up): Register connected route.
	(bgp_interface_down): Unregister connected route.

2000-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info): Add distance to the structure.

	* bgp_route.c (bgp_aggregate_increment): Aggregate route only
	match to smaller prefixlen route not match same prefixlen route.
	(bgp_aggregate_decrement): Likewise.
	(bgp_aggregate_add): Likewise.
	(bgp_aggregate_delete): Likewise.
	(bgp_network_backdoor): Add backdoor network configuration.

	* bgpd.h (struct bgp ): Add distance_{ebgp,ibgp,local} for store
	configuration distance value.

	* bgp_route.c (bgp_update): Filter EBGP route which has non
	connected nexthop.

	* bgp_attr.c (bgp_attr_aggregate_intern): New function for
	aggregate route.  Set origin to IGP.  Set atomic aggregate flag.
	Set aggregator AS and address.
	(bgp_attr_aggregate_intern): Check BGP_CONFIG_CONFEDERATION when
	filling aggregator_as.

	* bgp_route.c (bgp_process): Delete suppress check for install
	suppressed route into local routing table.
	(bgp_aggregate_increment): Use bgp_attr_aggregate_intern() instead
	of bgp_attr_default_intern ().
	(bgp_aggregate_add): Likewise.

	* bgpd.c (bgp_get): Call bgp_if_update_all() after BGP instance is
	created.  This is for avoid 0.0.0.0 router-id.

2000-08-13  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (route_vty_out_detail): Display "valid" when the
	route is valied.  Display "aggregated" when the route is
	aggregated.  "Advertisements suppressed by an aggregate" is
	displayed when the route is suppressed.
	(bgp_info_cmp): Prefer EBGP than Confed-EBGP.

2000-08-10  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c (route_vty_out_detail): Display format change.

2000-08-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_update): Only AFI_IP nexthop check is enabled.

	* bgpd.c (bgp_delete): Delete static route before delete peer
	configuration.

2000-08-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c: Include bgpd/bgp_nexthop.h.

2000-07-31  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (bgp_show_summary): "show ip bgp summary" shows own BGP
	identifier.  And status is changed like below.

	State/Pref   -> State/PfxRcd
	Shutdown     -> Idle (Admin)
	PrefixOvflw  -> Idle (PfxCt)

	* bgp_route.c (route_vty_out): Show internal route as "i".

2000-07-13  Jim Bowen <jimb@zereau.net>

	* bgp_snmp.c: Add BGP peer MIB implementation.

2000-07-12  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c (bgp_show_peer): Fix typo.

2000-07-11  Akihiro Mizutani <mizutani@dml.com>

	* bgp_routemap.c: Add commands for deleting set without argument.

2000-07-03  Akihiro Mizutani <mizutani@dml.com>

	* bgp_zebra.c: Fix redistribute help strings.

2000-07-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_show): When bgpd works as vtysh server send all
	output to vty at once.

2000-06-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_mplsvpn.c (no_vpnv4_network): "no network A.B.C.D/M rd WORD
	tag WORD" command is added.

	* bgp_ecommunity.c (ecommunity_vty_out): New function added.

2000-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_show): Fix total number of prefix count bug.

	* bgpd.c (bgp_show_peer): Display VPNv4 unicast configuration and
	negotiation result in "show ip bgp neighbors".

2000-06-12  Akihiro Mizutani <mizutani@dml.com>

	* bgpd.c: Fix help strings.
	
	* bgpd.h: Likewise.
	
2000-06-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_aggregate_unset): Fix bug of checking rn->info
	instead of rn.  Reported by Akihiro Mizutani <mizutani@dml.com>.

	* bgp_mplsvpn.c (vpnv4_network): For testing purpose, "network
	A.B.C.D rd RD" is added to address-family vpnv4 unicast node.

	* bgp_route.c (bgp_static_set): Set safi to p.safi.

2000-06-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_show_prefix_list): Change to use bgp_show().
	(bgp_show_regexp): Change to use bgp_show().
	(show_adj_route): Change to display header.

	* bgpd.c (clear_bgp): Set peer->v_start to default value when peer
	is cleared manually.

	* bgp_route.c (bgp_show_route): New function which display
	specific BGP route.  Divided from bgp_show().
	(bgp_static_delete): Delete all static route.

2000-06-09  NOGUCHI Kay <kay@v6.access.co.jp>

	* bgp_route.c (show_ipv6_bgp): "show ipv6 bgp" is broken with
	invalid privious fix.  Now show_ipv6_bgp and show_ipv6_bgp_route
	take care of "show ipv6 bgp [X:X::X:X]".  Same change for "show ip
	mbgp" and "show ipv6 mbgp".

2000-06-07  Akihiro Mizutani <mizutani@dml.com>

	* bgp_route.c: Fix help strings and command arguments.

2000-06-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_ecommunity.c: Include prefix.h

2000-06-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info_tag): New structure to hold tag
	value.

	* bgp_route.c (bgp_adj_set): table NULL check is added.
	(bgp_adj_unset): Likewise.
	(bgp_adj_lookup): Likewise.
	(bgp_adj_clear): Likewise.
	(route_vty_out): Add SAFI check for nexthop display.
	(bgp_withdraw): Add SAFI check for withdraw route.

	* Remove all #ifdef MPLS_VPN then include it as default.

	* bgpd.c: Temporary disable peer-group command until the
	implementation is completed.

	* bgp_routemap.c (bgp_route_map_init): Install
	route_metric_match_cmd.
	(route_match_metric_compile): MED value compile using strtoul.

2000-06-05  Akihiro Mizutani <mizutani@dml.com>

	* bgp_filter.c: Fix help strings.  Change REGEXP to LINE.  Change
	NAME to WORD.

	* Change command argument to more comprehensive.

	METRIC         -> <0-4294967295>
	WEIGHT         -> <0-4294967295>
	LOCAL_PREF     -> <0-4294967295>
	IP_ADDR        -> A.B.C.D
	AS             -> <1-65535>
	AS-PATH-NAME   -> WORD
	ACCESS_LIST    -> WORD
	PREFIX_LIST    -> WORD
	COMMUNITY      -> AA:NN
	EXT_COMMUNITY  -> ASN:nn_or_IP-address:nn
	IPv6_ADDR      -> X:X::X:X

	* bgp_clist.c: Fix help strings.

2000-06-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (peer_active): Add new function for check the peer is
	active or not.
	(neighbor_activate): New command "neighbor PEER activate" and "no
	neighbor PEER activate" are added.

	* bgp_packet.c: Include bgpd/bgp_mplsvpn.h.

2000-06-02  Akihiro Mizutani <mizutani@dml.com>

	* bgp_clist.c: Fix commuity-list help strings.

	* bgp_routemap.c: Fix "set community" help strings.  Add #define
	SET_STR.  Use (unicast|multicast) argument for "set nlri" command.
	
2000-06-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (route_set_community_none_cmd): "set community
	none" command is added to route-map.

2000-06-01  Akihiro Mizutani <mizutani@dml.com>

	* bgp_debug.c: Change "show debug" to "show debugging".  Now "show
	debugging" is not used in VIEW_NODE.

2000-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_timer_set): Add check for shutdown flag.  This
	fix unconditional BGP connection.

	* bgpd.c (peer_shutdown): Replace peer_shutdown() with
	peer_change_flag_with_reset().

2000-05-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (no_bgp_default_ipv4_unicast): Add "no bgp default
	ipv4-unicast" command.

	* bgpd.h (BGP_CONFIG_NO_DEFAULT_IPV4): Add new definition.

	* bgp_filter.c (as_list_delete): Free all AS filter.

	* bgp_clist.c (community_list_delete): Free all community entry.

	* bgp_filter.c (no_ip_as_path_all): New DEFUN for "no ip as-path
	access-list NAME".

	* bgp_clist.c (no_ip_community_list_all): New DEFUN for "no ip
	community-list NAME".

2000-05-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (ipv6_mbgp_neighbor_routes): Change "show ip bgp PEER
	routes" to "show ip bgp PEER received-routes"

2000-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_ecommunity.c (ecommunity_parse): New file for Extended
	Communities attribute.
	* bgp_ecommunity.h: Likewise.

2000-05-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_mplsvpn.h: New file for MPLS-VPN.
	* bgp_mplsvpn.c: Likewise.

	* bgpd.c (bgp_delete): Fix bug of "no router bgp" crush.

2000-05-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_bestpath_missing_as_worst): Add "bgp bestpath
	missing-as-worst".

2000-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (match_community): Clarify help of "match
	community".

2000-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_cmp_left): Remove debug code.

2000-04-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_info_cmp): Compare MED only both routes comes
	from same neighboring AS.

	* bgp_aspath.c (aspath_cmp_left): Compare leftmost AS value.

	* bgp_route.c (bgp_info_cmp): Fix misused htonl() to ntohl().

2000-04-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_output_filter): When distribute-list's
	corresponding access-list does not exist, filter all routes.
	(bgp_input_filter): Likewise.

2000-04-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_packet_attribute): Propagate MED to IBGP peer.

	* bgp_route.c (bgp_info_cmp): Add evaluation of local preference.

2000-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_distribute_update): Add struct access_list *
	argument.

2000-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_clist.c (community_list_dup_check): Add duplicate insertion
	check.

	* bgp_filter.c (as_list_dup_check): Add duplicate insertion check.

	* bgp_route.c (bgp_show): Fix undeclared write variable.

2000-04-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c: Add "match ip address prefix-list".

2000-03-29  Rick Payne <rickp@rossfell.co.uk>

	* bgp_aspath.c (aspath_strip_confed): Fix realloc problem.

2000-03-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_reconnect): Connect retry timer is expired when
	the peer status is Connect.

2000-03-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Fix bug of rewritten originator-id.

2000-01-27  Rick Payne <rickp@rossfell.co.uk>

	* bgp_aspath.c (aspath_delimiter_char): New function.  Instead of
	directly referencing array, search proper AS path delimiter.
	(aspath_strip_confed): Strip the confederation stuff from the
	front of an AS path.
	(aspath_add_left_confed): New function for adding specified AS to
	the leftmost AS_CONFED_SEQUENCE.

	* bgp_aspath.h: Change AS_CONFED_SEQUENCE and AS_CONFED_SET value
	to Cisco compatible.

	* bgpd.c (bgp_confederation_id_set): Confederation configuration.
	(bgp_confederation_id_unset): Likewise.
	(bgp_confederation_peers_check): Likewise.
	(bgp_confederation_peers_add): Likewise.
	(bgp_confederation_peers_remove): Likewise.
	(bgp_confederation_peers_set): Likewise.
	(bgp_confederation_peers_unset): Likewise.
	(bgp_confederation_peers_print): Likewise.
	
2000-01-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c: Introduce peer_change_flag_with_reset() fucntion.

2000-01-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_open.c (bgp_open_option_parse): When there is no common
	capability send Unsupported Capability error to the peer.

2000-01-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_open.c (bgp_capability_mp): Fix bug of mis-negotiation about
	IPv6 unicast.

	* bgpd.c (bgp_init): Add "soft-reconfiguration inbound" command.
	
2000-01-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (neighbor_strict_capability): Add
	"strict-capability-match" command.

	* bgp_zebra.c (bgp_if_update): Ignore NET127 determining
	router-id.

	* bgpd.c (peer_override_capability): Add "override-capability"
	command.

1999-12-16  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_write): Change status to Idle and set timer
	after write failed.

1999-12-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (bgp_zebra_announce): Add info->selected check.

1999-12-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (nlri_unfeasible): nlri_unfeasible() is merged with
	nlri_parse().

1999-12-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.h (BGP_EVENT_DELETE): Macro added.

	* bgp_fsm.c (bgp_stop): Clear all event threads of the peer when
	the peer is cleared.

	* bgp_zebra.c (bgp_nexthop_set): Clear interface index of
	link-local address.  This is KAME specific problem.

1999-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_mp_reach_parse): Comment out previous code for a
	while.  We don't completely detect the link is shared or not at
	this moment.

	* bgp_packet.c (bgp_notify_send): Make shortcut call of
	bgp_write() and bgp_stop().

	* bgp_attr.c (bgp_mp_reach_parse): Fix serious bug when getting
	global and link-local address.

1999-12-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (no_neighbor_port): New command added.
	(peer_new): Set send_community.

1999-12-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (show_ip_bgp_summary): Changed to use bgp_show_summary().
	(show_ip_mbgp_summary): Likewise.
	(show_ipv6_bgp_summary): Likewise.
	(show_ipv6_mbgp_summary): Add new command.
	(peer_free): Free peer->host.
	(peer_lookup_by_su): Delete function.
	(ipv6_bgp_neighbor): Changed to use peer_remote_as().
	(sockunion_vty_out): Function deleted.
	(vty_clear_bgp): Use afi instead of family.
	Delete old list bgp_list.  Use struct newlist *bgplist.
	(peer_lookup_by_host): Function deleted.

1999-12-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (struct peer_group): New structure added.
	(struct peer_conf): New structure added.
	(struct	peer): Change all prefix_count to unsigned long.
	
	* bgpd.c: Reconstruct all of VTY commands reflect internal
	structure change.
	Use bgplist instead of bgp_list.
	Use peerlist intstead of peer_list.

	* bgp_attr.c (bgp_mp_reach_parse): If nlri_parse return -1, stop
	parsing then return immediately.

	* bgp_route.c (nlri_parse): When NLRI parse error occured, return
	-1.
	(nlri_process): Use pcount_v4_{unicast,multicast}.
	(nlri_delete): Likewise.

1999-11-25  Robert Olsson <Robert.Olsson@data.slu.se>

	* bgp_routemap.c (route_match_nlri): `match nlri
	unicast|multicast' and `set nlri unicast|multicast' command are
	added.

1999-11-22  Robert Olsson <Robert.Olsson@data.slu.se>

	* bgpd.c: Add translate-update support.

	* bgpd.h (TRANSLATE_UPDATE_OFF): Add translate-update definition.

1999-11-19  Robert.Olsson@data.slu.se

	* bgp_route.c (bgp_peer_delete): Add MBGP peer clear codes.

1999-11-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_open.c (bgp_capability_mp): Temporary comment out
	SAFI_UNICAST_MULTICAST handling until we know the meanings.

1999-11-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_btoa.c: New file added.

1999-11-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (struct peer): Add dont_capability flag.
	(struct peer): Add override_capability flag.

	* bgpd.c (neighbor_dont_capability_negotiation): `neighbor PEER
	dont-capability-negotiation' added.

1999-11-12  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>

	* bgp_attr.c (bgp_mp_reach_parse): Ignore link-local addresses
	attribute from non-shared-network peers.

1999-11-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_snmp.c: New file added.

	* BGP4-MIB.txt: Updated to the latest Internet-Draft
	draft-ietf-idr-bgp4-mib-04.txt.

1999-11-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_route_init): Add `show ipv6 bgp prefix-list'.

	* bgp_attr.c (bgp_mp_unreach_parse): Enclose safi setup with
	#ifdef HAVE_MBGPV4.

1999-11-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c (no_dump_bgp_all): Add [PATH] and [INTERVAL] to no
	dump bgp commands.
	(config_write_bgp_dump): Write interval value to the
	configuration.

1999-11-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c: Redistribute route-map support is added.

	* bgp_zebra.h: New file added.

1999-11-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c: BGP packet dump routine compatible with MRT.
	* bgp_dump.h: BGP packet dump routine compatible with MRT.

	* bgp_debug.c: Renamed from bgp_dump.c
	* bgp_debug.h: Renamed from bgp_dump.h

1999-10-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* BGP4-MIB.txt: New file added.  Edited version of RFC1657.

1999-10-25  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>

	* bgp_route.c (bgp_announce): If we're not on a shared network
	with the peer and we don't have a link-local next hop, but the
	inbound next-hop has a link-local address, don't readvertise it to
	our peer.

1999-10-25  Marc Boucher <marc@mbsi.ca>

	* bgp_zebra.c: Add redistribute kernel command.

1999-10-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_reset): New function added.

	* bgpd.conf.sample2: Add IPv6 configuration sample.

1999-10-24  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>

	* bgp_route.c (ipv6_aggregate_address): Function added.

1999-10-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_update): Unintern aspath, community, cluster
	list after parsing BGP update packet.

	* bgp_attr.c (bgp_attr_aspath): Intern parsed aspath.
	(bgp_attr_community): Intern parsed community.
	(bgp_attr_cluster_list): Intern parsed cluster list.

	* bgp_routemap.c: Add `set community-additive' command.

1999-10-21  Alexandr D. Kanevskiy <kad@blackcatlinux.com>

	* bgp_routemap.c (route_set_local_pref): Fix bug of setting
	attribute flag.

1999-10-21  Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>

	* bgp_route.c (bgp_announce): Add check of IPv6 default route
	announcement.

	* bgp_packet.c (bgp_update_send): Add BGP announcement logging.

1999-10-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* `show ip[v6] bgp PREFIX' show uptime of the route.

1999-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_filter_set): Delete PEER_FAMILY_{IPV4,IPV6}. instead
	of that use AF_INET and AF_INET6 directly.
	(vty_clear_bgp): Add new function to support various clear ip bgp
	method.

1999-10-04  Lars Fenneberg <lf@elemental.net>

	* bgpd.c (clear_ip_bgp): Add `clear ip bgp ASN'.

1999-10-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c: Add `match ip prefix-list' and `match ipv6
	prefix-list'.

1999-09-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_collision_detect): Add BGP collision detection
	function.

1999-09-26  Blake Meike <bmeike@adero.com>

	* bgpd.c (neighbor_port): New command `neighbor PEER port PORT' is
	added.

1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (no_neighbor_timers_keepalive): Change MIN to min.  Add
	min() macro.

1999-08-19  Rick Payne <rickp@rossfell.co.uk>

	* bgp_packet.c (bgp_open): BGP holdtimer bug is fixed.  Make BGP
	keepalive timer configurable.

1999-08-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (bgp_redistribute_set): Fix redistribute bug.

1999-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_peer_display): show ip bgp neighbors PEER only list
	the peer not all of them.

1999-08-11  Rick Payne <rickp@rossfell.co.uk>

	* bgp_route.c (bgp_announce): Remove MED if its an EBGP peer -
	will get overwritten by route-maps.

1999-08-08  Rick Payne <rickp@rossfell.co.uk>

	* bgp_routemap.c: Multi protocol route-map modification.

1999-08-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c: Set network statement route's origin attribute as
	igp.

	* bgp_zebra.c: Set redistribute route's origin attribute as
	incomplete.

	* bgp_route.c (bgp_info_cmp): Add attribute existance check,
	origin attribute check, BGP peer type check.

1999-07-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_peer_delete): Reselect of IPv6 route.

1999-07-29  Rick Payne <rickp@rossfell.co.uk>

	* Changed route-maps to behave in a more cisco-like fashion

1999-07-27  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (bgp_stop): Very serious bug of bgp_stop () is fixed.
	When multiple route to the same destination exist, bgpd try to
	announce the information to stopped peer.  Then add orphan write
	thread is added.  This cause many strange behavior of bgpd.
	Reported by Georg Hitsch <georg@atnet.at>.

1999-07-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c: Change peer's A.B.C.D to PEER.

1999-07-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_announce): Add hack for link-local nexthop.

	* bgp_zebra.c (bgp_zebra_announce): Fill in nexthop address from
	local address.

1999-07-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_open): Holdtime fetch bug is fixed.  Reported
	by Yuji SEKIYA <sekiya@sfc.wide.ad.jp>.

1999-07-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c (fsm_holdtime): Don't close file descriptor in
	fsm_holdtime ().

1999-07-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c: Add `set atomic-aggregate' command.

1999-07-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (route_set_ip_nexthop_cmd): Change "ip nexthop"
	to "ip next-hop".
	
1999-07-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (show_ipv6_bgp_regexp): `show ipv6 bgp regexp'
	added.

1999-07-01  Rick Payne <rickp@rossfell.co.uk>

	* bgp_zebra.c (zebra_init): Install standard commands to
	ZEBRA_NODE.

1999-06-28  Rick Payne <rickp@rossfell.co.uk>

	* bgpd.c (bgp_delete): bgp peer deletion bug is fixed.

1999-06-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c: Add neighbor update-source command as ALIAS to
	neighbor_interface.

1999-06-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_packet_attribute): Send community attribute when
	send_community flag is set.

	* bgpd.h (struct peer): Add send_community flag.

1999-06-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (router_bgp): router bgp's argument changed from AS_NO to
	<1-65535>.

1999-06-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.h (struct bgp_info): Add subtype for BGP route type.

1999-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_community.c (community_merge): Function added.

1999-06-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_clist.c: New file.
	* bgp_clist.h: New file.

	* bgp_community.h (COMMUNITY_LOCAL_AS): Added for Cisco
	compatibility.
	(COMMUNITY_NO_ADVERTISE): Fix typo.

1999-05-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c: Add `set weight WEIGHT' command.

	* bgpd.c: Remove all_digit_check function.  Instead of that use
	all_digit function in lib/prefix.c.

	* bgp_routemap.c (bgp_route_map_init): Install
	no_set_ipv6_nexthop_global_cmd and no_set_ipv6_nexthop_local_cmd
	element to the RMAP_NODE.

1999-05-28  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_make_str): Declare aspath_delimiter_char
	inside aspath_make_str function.
	(aspath_prepend): New function is added for AS path prepend.
	(aspath_make_str_count): Renamed from aspath_make_str.  AS path
	count is set to the structure.
	(aspath_merge): New function.

1999-05-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (redistribute_bgp): Add new DEFUN.
	(no_redistribute_bgp): Likewise.
	(router_zebra): Semantics changed.  Now 'router zebra' is default
	behavior of bgpd.

1999-05-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c: Add some commands to bgp route-map.
	match ip next-hop: New command.
	match metric: New command.
	set metric: Doc fix.
	set local-preference: Add DEFUN.

1999-05-14  Stephen R. van den Berg <srb@cuci.nl>

	* bgp_main.c (signal_init): SIGTERM call sigint.
	(sigint): Loggging more better message.

1999-05-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_packet_attribute): AS path attribute extended
	length bit check is added.

1999-05-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (bgp_route_map_init): Call route_map_install_set
	function with route_set_local_pref_cmd argument.
	(no_match_aspath): Function added.
	(route_set_metric): Set attribute flag bit.

	* bgp_attr.c (bgp_packet_attribute): MULTI_EXIT_DISC is now in BGP
	packet.

1999-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (no_neighbor_timers_holdtime): `no neighbor PEER timers
	holdtime' command is added.

	* bgpd.h (BGP_DEFAULT_HOLDTIME_BIG): Delete define.

	* bgpd.c (bgp_prefix_list_set): New function added.
	(bgp_prefix_list_unset): Likewise.
	(bgp_prefix_list_update): Likewise.
	(show_ip_bgp_neighbors): prefix-list information display.

1999-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_delete): Function added for `no router bgp'.

1999-05-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c (bgp_dump_attr): Add originator_id display.

	* bgpd.c (bgp_router_id): Even when address is malformed set the
	value to configuration bug fixed.
	(no_bgp_router_id): New function.
	(no_bgp_cluster_id): New function.

1999-05-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (BGP_ATTR_ORIGINATOR_ID): Changed from BGP_ATTR_ORIGINATOR.

1999-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (bgp_announce): Add route reflector check.

1999-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_cluster_id): Add function for route reflector.
	(neighbor_route_reflector_client): Likewise.
	(no_neighbor_route_reflector_client): Likewise.

	* bgpd.h (struct bgp ): Add cluster for route reflector.

	* bgp_route.c (show_ip_bgp_prefix_list): New command is added.

1999-04-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (noinst_HEADERS): Add bgp_filter.h

	* bgp_aspath.c (aspath_undup): Function deleted.  aspath_free ()
	has same functionality.

	* bgp_filter.h: New file.

	* bgp_aspath.c (aspath_unintern): Rename aspath_free () to
	aspath_unintern ()
	(aspath_free): New function.

1999-04-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_aggregate): Function added.

	* bgp_aspath.h (aspath_aggregate): Prototype added.

	* bgp_aspath.c (aspath_empty_aspath): New argument
	gated_dont_eat_flag is added.

1999-04-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c: Add bgp_aggregate_ipv4 and bgp_aggregate_ipv6.

1999-04-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c (aggregate_address): Function added.

	* bgp_zebra.c (zebra_read): Change log to zlog.

1999-04-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am (noninst_HEADERS): Added for make dist.

1999-04-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* aspath_regex.c: Removed from distribution.

1999-04-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c (bgp_packet_attribute): Old draft-00 packet treatment
	bug fixed.

1999-04-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_add_left): Fix empty aspath bug.  Reported
	by kad@gibson.skif.net.

	* bgp_regex.[ch]: New file added.

	
1999-04-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_filter.c: New file added.

1999-04-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_empty_aspath): Change for peering with
	gated.

1999-03-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_main.c (main): Default loggin method changed from syslog to
	stdout.

1999-03-05  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c: Delete obsolete default attribute DEFUN.

1999-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.c: Make attribute structure put into attribute hash.

1999-03-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_view.c : Delete file.

1999-02-25  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_routemap.c (bgp_apply_route_map): Add prefix argument. 

	* bgp_route.h (struct bgp_info): Add bgp_info structre.  I'll
	replace bgp_route with this.

	* bgp_routemap.c (route_match_ip_address): Fix bug of passing non
	prefix value to access_list_apply(). 

	* bgpd.conf.sample: Add route-map sample.
	Delete obsolete default-attr statements.

	* bgp_packet.c: Use stream_fifo for packet queueing.

1999-02-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_add_left): add non empty aspath treatment.

	* bgp_main.c: include unistd.h for daemon().

	* bgp_route.c (nlri_process): add IPv6 table lookup.

	* bgp_attr.c (route_parse_ipv6): call nlri_process().
	(attr_make): Obsolete function attr_make deleted.

1999-02-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_add_left): change function name from
	aspath_add_leftmost_as().

1999-02-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c: add aspath_add_leftmost_as ().

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* syslog support added

1999-01-26  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c: DEFUN (neighbor_nexthop): deleted.
	DEFUN (neighbor_distribute_list): added.

1999-01-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h (struct peer ): header_buf and read_buf is removed.

	* bgp_peer.[ch]: Deleted.  Peer related functions are merged to
	bgpd.c

	* bgp_network.c: New file.
	* bgp_network.h: New file.

	* bgp_packet.h: New file.
	
1999-01-11  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c (bgp_keepalive_send): Now BGP keepalive packet is
	buffered.

1999-01-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_packet.c: New file.

1998-12-22  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_zebra.c (zebra_client): Use zebra_connect() in lib/client.c. 

	* `show ip bgp' bug fixed.
	* aspath_log (): Remove argument logfp.

1998-12-15  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.h: New file.

1998-12-15  Magnus Ahltorp <map@stacken.kth.se>

	* bgp_attr.c, bgp_community.h, bgp_dump.c, bgp_fsm.c, bgp_open.c
	bgp_peer.c, bgp_peer.h, bgp_route.c, bgp_route.h, bgp_view.c
	bgpd.c, bgpd.h, bgp_attr.c, bgp_community.h, bgp_dump.c,
	bgp_fsm.c, bgp_open.c, bgp_peer.c, bgp_peer.h: Prototype fixes.

1998-12-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (bgp_config_write): Delete vector v argument.

1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h: Delete annoying ld_[124]byte and st_[124]byte macros.

1998-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_radix.[ch]: removed.

1998-09-15  HEO SeonMeyong  <seirios@matrix.iri.co.jp>

	* bgp_main.c: ifdef HYDRANGEA -> ifdef KAME

1998-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c: delete nroute().

1998-05-19  Yamshita TAKAO  <jargon@lares.dti.ne.jp>

	* bgp_aspath.c: HAVE_CONFIG_H typo :-)
	* bgpd.h: Modify for compile on Solaris.
	* bgp_aspath.h: likewize
	* bgp_community.h: likewize
	* bgp_routemap.c: likewize

1998-05-18  Yamshita TAKAO  <jargon@lares.dti.ne.jp>

	* bgpd.h: Modify for compile on Solaris.
	* bgp_aspath.h: likewize

1998-05-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.[ch]: move to ../lib directory.

1998-05-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.c (route_map_apply): add function.

1998-05-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* routemap.h: add file.

	* bgp_peer.h (enum ): change PEER_{IBGP,EBGP} to BGP_PEER_{IBGP,EBGP}

1998-05-03  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Makefile.am: sysconfdir_DATA added.

1998-05-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c: add `debug bgp fsm'
		      add `no debug bgp fsm'
		      add `show debug bgp'
	* bgp_open.c: File added.

1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* .cvsignore: File added.

1998-04-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_community.[ch]: File added.

1998-03-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd now use lib/thread.[ch].

1998-01-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.c (show_ip_bgp_neighbors): add 'show ip bgp neighbors' command.

	* bgpd.h (BGP_DEFAULT_START_TIMER): change from 1 to 30.

1997-12-30  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_vty.c: bgp_vty.c deleted.

	* bgpd.c (config_write_neighbor): add ebgp-multihop command.

1997-12-29  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_fsm.c: [-p bgp_port] and [-P vty_port] works

1997-12-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_vty.c: new file.

	* bgp_attr.c: add new logging system.

1997-11-23  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* Change all inet_addr call into inet_aton.

1997-11-10  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_radix.c: change radix_peer_delete

1997-10-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c: move AS_TOKEN_??? definition from header to c source.

1997-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_dump.c (bgp_log_route): add dump_attr function

1997-09-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (aspath_test): change AS_SET brace from '[' to '{'
	* bgp_dump.c (bgp_log_route): change logfile format.

1997-08-19  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_open.c (bgp_open): move bgp_open function from bgpd.c
	* bgp_attr.c (community_str2com): add community value generation
	* bgp_attr.h: add SAFI definition for BGP-4+

1997-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgpd.h: add BGP_OPEN_OPT_CAP for Capabilities Optional Parameter
	* Makefile.in: add bgp_open.o, delete bgp_loop.o
	* bgp_open.c: newfile which manages BGP Open message
	* bgp_loop.c: this file is merged with bgp_fsm.c
	* bgp_radix.c (radix_add): radix_add() now return route_t instead
	of int
	(bgp_sim): now we can read update & withdraw from file
	* bgp_route.c: add route_free() call into route_parse etc.

1997-08-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_radix.c: Radix code is completely rewritten. It has better
	memory treatment than old one.

1997-08-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_route.c: route_alloc for route struct allocation statistics.
	* bgpd.c (bgp_make_update): now we cann announce MED attribute.
	* bgp_aspath.c (aspath_print_all): change aspath_print_all output
	format.

1997-08-13  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_term.c (term_parse): add command : show asstat, show ashash
	* bgp_aspath.c: aspath_cmp bug fix
	(aspath_print_all): add aspath_print_all ();
	* bgp_peer.h: delete rlist element from struct peer.

1997-08-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c: completely rewritten.
	* bgp_aspath.h: completely rewritten.
	add AsPath, AsSegment structure
	add AS_SET treatment
	change Hash codes

1997-08-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_attr.h: add Attribute flags defines
	* bgp_route.c: delete rlist related functions
	* bgp_aspath.c (as_origin): add as_origin function
	(aspath_print): move from bgp_dump.c and add support of AS_SET
	change Hash related function names.

1997-08-08  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.h: add next entry, delete rlist entry from struct aspath

1997-08-04  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* bgp_aspath.c (as_sort): add function as_sort
	* bgp_aspath.h: add IBGP, EBGP

