2008-07-21 Paul Jakma <paul.jakma@sun.com>


	* bgp_packet.c: (bgp_open_receive) fix warning in a zlog call
	* bgp_vty.c: (bgp_vty_return) add return code
	* bgpd.c: (bgp_master_init) setup the socket list.
	* bgp_network.c: Remove the dual IPv4/6 socket thing for now, which
	  was implemented by Michael, until such time as its clear its
	  required for Linux (see sockopt comments). IPv6 support, including
	  IPv4 sessions on AF_INET6 sockets, therefore is broken, and the
	  '-l 0.0.0.0' arguments would need to be given to bgpd to make
	  things work here.

2008-07-21 Michael H. Warfield <mhw@wittsend.com>
           YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
	   Tomohiko Kusuda <kusuda@inetcore.com>
           Leigh Brown <leigh@solinno.co.uk>
	
	* bgp_network.c: (bgp_md5_set_one) shim between libzebra tcp-md5
	  sockopt and bgpd.
	  (bgp_md5_set_socket) Helper for bgp_connect
	  (bgp_md5_set) setup TCP-MD5SIG for the given peer.
	  (bgp_connect) call out to bgp_md5_set_socket for the outgoing
	  connect socket.
	  (bgp_socket) save references to the listen sockets, needed if
	  TCP-MD5SIG is applied later or changed.
	* bgp_vty.c: (*neighbor_password_cmd) New 'neighbor ... password'
	  commands.
	* bgpd.c: (peer_{new,delete) manage TCP-MD5 password
	  (peer_group2peer_config_copy) inherit TCP-MD5 password
	  (peer_password_{un,}set) orchestrate the whole add/remove of TCP-MD5
	  passwords: applying checks, stopping peers, and trying to return
	  errors to UI, etc.
	  (bgp_config_write_peer) save password.
	  Fix missing newline in writeout of neighbor ... port.

2008-07-02 MIYAJIMA Mitsuharu <miyajima.mitsuharu@anchor.jp>

	* *.c: CMD_AS_RANGE was being used inside command strings, and thus
	  not being expanded, fix by dequoting.

2008-07-02 Stephen Hemminger <stephen.hemminger@vyatta.com>

	* bgp_table.{c,h}: (bgp_table_finish) Take a double pointer and 
	  scrub pointer in caller, so fixing double-free crashes seen
	  with route-server-client configuration.
	* *.c: Adjust all callers of bgp_table_finish

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

	* bgp_table.{c,h}: (bgp_node_delete, bgp_table_free) shouldn't be
	  exported.
	
2008-06-07 Paul Jakma <paul@jakma.org>

	* bgp_attr.{c,h}: (bgp_mp_{un,}reach_parse) export, for unit tests.
	* bgp_attr.c: (bgp_mp_reach_parse) Add logging. Tighten length test
	  to bounds check against the attribute length rather than the
	  stream length..

2008-06-01 jfletche@gmail.com 

	* bgp_attr.c: (bgp_attr_aspathlimit) fix silly bug in flags check
	  that was causing BGP to drop sessions if it received a
	  aspath-limit with partial set. Fixes bug #419.

2008-04-10 Denis Ovsienko

	* bgp_aspath.[ch]: (aspath_filter_exclude) New function allows
	  filtering out arbitrary ASns from AS_PATH attribute.
	* bgp_aspath.[ch]: (aspath_print_vty) Accept suffix to let calling
	  functions signal, if they want the separator or not.
	* bgp_route.c: (route_vty_out, route_vty_out_tmp, damp_route_vty_out,
	  flap_route_vty_out, route_vty_out_detail) Fix aspath_print_vty()
	  calls to have AS_PATH output nicely.
	* bgp_routemap.c: Introduce "set as-path exclude" route-map command
	  to employ new filtering functionality.

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

	* (various) Remove 0 entries from struct message's, unneeded due to
	  recent improvements in mes_lookup/LOOKUP.

2008-01-29 Jorge Boncompte <jorge@dti2.net>

	* bgp_network.c: (bgp_socket) IPv4-only version crashes if -l is not
	  used as address will be null.

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

	* Fix series of vulnerabilities reported by "Mu Security
	  Research Team", where bgpd can be made to crash by sending
	  malformed packets - requires that bgpd be configured with a
	  session to the peer.
	* bgp_attr.c: (bgp_attr_as4_path) aspath_parse may fail, only
	  set the attribute flag indicating AS4_PATH if we actually managed
	  to parse one.
	  (bgp_attr_munge_as4_attrs) Assert was too general, it is possible
	  to receive AS4_AGGREGATOR before AGGREGATOR.
	  (bgp_attr_parse) Check that we have actually received the extra
	  byte of header for Extended-Length attributes.
	* bgp_attr.h: Fix BGP_ATTR_MIN_LEN to account for the length byte.
	* bgp_open.c: (cap_minsizes) Fix size of CAPABILITY_CODE_RESTART,
	  incorrect -2 left in place from a development version of as4-path
	  patch.
	* bgp_packet.c: (bgp_route_refresh_receive) ORF length parameter
	  needs to be properly sanity checked.
 
2007-12-18 Denis Ovsienko

	* bgp_routemap.c: (no_set_aspath_prepend) This command cancelled
	  existing "set" command regardless if "no set" matched it or not.
	  Fixed.

2007-11-13 Paul Jakma <paul.jakma@sun.com>

	* bgp_main.c: Small fix, format string parameters should never
	  be NULL - it's not strictly valid and some libc's don't let
	  you away with.

2007-10-30 Nick Hilliard <nick@inex.ie>

	* bgp_main.c: Add 'listenon' argument, to pass address to bind
	  to.
	* bgp_network.c: (bgp_socket) Extend to take bind address.
	* bgpd.c: (bgp_init) Pass stored address.
	* bgpd.h: (struct bgp_master) storage for bind address

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

