2004-09-13 Jose Luis Rubio <jrubio@dit.upm.es>
           (at Technical University of Madrid as part of Euro6ix Project)

        Enhanced Route Server functionality and Route-Maps:

        * bgpd/bgpd.h: Modified 'struct peer' and 'struct bgp_filter' to
        support rs-clients. A 'struct bgp_table *rib' has been added to the
        first (to mantain a separated RIB for each rs-client) and two new
        route-maps have been added to the last (for import/export policies).
        Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX},
        PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT.

        * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in
        order to consider the new fields included in 'struct peer' for
        supporting rs-clients, i.e. the import/export route-maps and the
        'struct bgp_table'.

        * bgpd/bgp_route.{ch}: Modified several functions related with
        receiving/sending announces in order to support the new Route Server
        capabilities.
        Function 'bgp_process' has been reorganized, creating an auxiliar
        function for best path selection ('bgp_best_selection').
        Modified 'bgp_show' and 'bgp_show_route' for displaying information
        about any RIB (and not only the main bgp RIB).
        Added commands for displaying information about RS-clients RIBs:
        'show bgp rsclient (A.B.C.D|X:X::X:X)', 'show bgp rsclient
        (A.B.C.D|X:X::X:X) X:X::X:X/M', etc

        * bgpd/bgp_table.{ch}: The structure 'struct bgp_table' now has two
        new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT})
        and 'void *owner' which points to 'struct bgp' or 'struct peer' which
        owns the table.
        When creating a new bgp_table by default 'type=BGP_TABLE_MAIN' is set.

        * bgpd/bgp_vty.c: The commands 'neighbor ... route-server-client' and
        'no neighbor ... route-server-client' now not only set/unset the flag
        PEER_FLAG_RSERVER_CLIENT, but they create/destroy the 'struct
        bgp_table' of the peer. Special actions are taken for peer_groups.
        Command 'neighbor ... route-map WORD (in|out)' now also supports two
        new kinds of route-map: 'import' and 'export'.
        Added commands 'clear bgp * rsclient', etc. These commands allow a new
        kind of soft_reconfig which affects only the RIB of the specified
        RS-client.
        Added commands 'show bgp rsclient summary', etc which display a
        summary of the rs-clients configured for the corresponding address
        family.

        * bgpd/bgp_routemap.c: A new match statement is available,
        'match peer (A.B.C.D|X:X::X:X)'. This statement can only be used in
        import/export route-maps, and it matches when the peer who announces
        (when used in an import route-map) or is going to receive (when used
        in an export route-map) the route is the same than the one specified
        in the statement.
        For peer-groups the statement matches if the specified peer is member
        of the peer-group.
        A special version of the command, 'match peer local', matches with
        routes originated by the Route Server (defined with 'network ...',
        redistributed routes and default-originate).

        * lib/routemap.{ch}: Added a new clause 'call NAME' for use in
        route-maps. It jumps into the specified route-map and when it returns
        the first route-map ends if the called RM returns DENY_MATCH, or
        continues in other case.

2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: make m4 as subdir, rather the EXTRA_DISTing it

	* configure.ac: add m4/Makefile to output list

2004-08-31  Greg Troxel  <gdt@poblano.ir.bbn.com>
	
	* Makefile.am: Only put pkgsrc dir in SUBDIRS if we should install
	  rc.d files.  (Note that pkgsrc is always in DIST_SUBDIRS.)

	* configure.ac (pkgsrcdir): add new --enable-pkgsrcrcdir to give a
	  directory into which www.pkgsrc.org-style rc.d files are
	  installed.

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

	* Makefile.am: add m4 directory to EXTRA_DIST, and define 
	  ACLOCAL_AMFLAGS to have aclocal pull in m4/
	* configure.ac: AM_PROG_LIBTOOL should be AC_...
	* update-autotools: print a warning that this script is deprecated  
	
2004-08-17  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* update-autotools: print tools versions to aid people in sending
	bug reports.

2004-07-23  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* */Makefile.am: Use ../dir/libfoo.la, rather than "-L../dir
	-lfoo", to avoid linking against installed libraries from a
	previous version.

	* {lib,ospfd,ospfclient}/Makefile.am: explicitly define the shared
	library version number to be 0.0

	* configure.ac: remove spurious , so extract.pl is chmod'd +x.
	
	* HACKING: explain shared library versioning rules
	
2004-07-22 Paul Jakma <paul@dishone.st>

	* configure.ac: modify default CFLAGS to be compiler agnostic
	  build Makefile for tests/ subdir.
	  
2004-07-14  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am (EXTRA_DIST): Add missing \, so tools stuff is
	really in distfile.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* */Makefile.am: use -L../lib -lzebra, so we pick up the shlib
	version of libzebra when available.

	* configure.ac, update-autotools: Add libtool.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* Makefile.am: add files to EXTRA_DIST rather than copying, and
	omit the kludgy cleaning steps, which were failing when the list
	to clean was empty.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>
	
	* configure.ac: Look for perl, and substitute into vtysh/extract.pl.
	Search for termcap functions more expansively (fixes vtysh compile
	on NetBSD).  Clean up --enable-vtysh definition.

2004-06-30  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* update-autotools: Use -rf on autom4te.cache.

2004-06-20 Hasso Tepper <hasso@estpak.ee>

	* lib/vty.c: Don't attempt to load configuration file from current
	  directory.
	* Update vty_read_config() calls in bgpd/bgp_main.c, isisd/isis_main.c,
	  ospf6d/ospf6_main.c, ospfd/ospf_main.c, ripd/rip_main.c,
	  ripngd/ripng_main.c and zebra/main.c.

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

	* configure.ac: Add solaris support for the zebra/*_solaris 
	  method's, based on Sowmini's patches.

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

	* ospf_spf.h: Add backlink field to struct vertex
	* ospf_spf.h: (ospf_vertex_new) initialise backlink
	  (ospf_lsa_has_link) return index of link back to
	  vertex V from candidate vertex W, or -1 if no link exists.
	  (ospf_spf_next) save backlink index for candidate vertex
	* ospf_interface.c: (ospf_vl_set_params) Use the backlink index
	  to determine correct address for virtual-link peers. Fall back 
	  to older "pick first link" method if no backlink index exists.
	  
2004-04-06 Hasso Tepper <hasso@estpak.ee>
	
	* zebra/ipforward_proc.c: Fixed lowering privileges.
	* zebra/zserv.c: Fixed "(no) ipv6 forwarding" command logic.
	* configure.ac: Added --disable-capabilities switch to configure.

2004-03-22 Hasso Tepper <hasso@estpak.ee>

	* Readded SIGTERM handling so daemons can clean up their stuff if they
	  are killed (not murdered).

2004-03-20 Michael Bruening <mike@vailsys.com>

	* ospfd/ospf_vty.c: Completed array distribute_str of route types with
	  addition of "isis". This array must be indexed by
	  ZEBRA_ROUTE_(SYSTEM|KERNEL|...) defines in zebra.h, and should
	  be updated with every route type addition. This fix allows
	  commands redistributing routes from (bgp|isis), like "router ospf
	  redistribute bgp ...", to be written to terminal, memory, file,
	  which would otherwise result in a seg fault or, possibly, config
	  file corruption. Overlooked in import of isisd.
	* Similar fixes to bgpd/bgp_vty.c ospf6d/ospf6_asbr.c ripd/rip_zebra.c
	  and ripngd/ripng_zebra.c.

2004-03-17 Jean-Yves Simon <lethalwp@tiscali.be>
	
	* zebra/main.c, ripd/rip_main.c: Fix typos sigusr1 -> sigint,
	  bugzilla #82.

2004-03-16 David Young <dyoung@pobox.com>

	* (many) reference <lib/version.h> rather than "version.h",
	because version.h is a generated file and not present in the
	source tree when using objdir builds.

2004-03-03 PC Drew <pc@superiorcomm.net>

	* lib/keychain.c: typecast time_t function to long, fixes compile
	  warning.
	* lib/debug.c: wrapped function with ifdef HAVE_GLIBC_BACKTRACE fixes
	  compile warning when backtrace doesn't exist for that system.
	* zebra/rtadv.c: for OpenBSD, added include statement for
	  netinet/icmp6.h
	* zebra/zserv.c: added default case to switch statements, fixes compile
	  warning about certain NEXTHOP_TYPE enumeration values not being
	  handled.
	* zebra/rt_socket.c: set *mask = NULL by default, fixes compile
	  warning, about mask possibly being used uninitialized.
	* bgpd/bgp_nexthop.c: added default case to switch statements, fixes
	  compile warning about certain NEXTHOP_TYPE enumeration values not
	  being handled.
	* ospfd/ospf_spf.c: typecast time_t to long, fixes compile warning.
	* ospfd/ospf_route.c: typecast route_node->prefix to prefix_ipv4, fixes
	  compile warning.
	* ospfd/ospf_route.c: typecast prefix_ipv4 to prefix, fixes compile
	  warning.
	* ospfd/ospf_abr.c: typecast prefix to prefix_ipv4 in two instances,
	  fixes compile warning.
	* vtysh/vtysh.c: fixed null pointer sentinel value when doing execl and
	  friends, fixes compile warning.
	* ospf6d/ospf6_damp.c: typecast time_t to long in 4 instances, fixes
	  compile warning.
	* ospf6d/ospf6_main.c: use MAXPATHLEN (if set) instead of 64 for the
	  _cwd array, fixes compile warning.

2004-01-19 Paul Jakma <paul@dishone.st>

	* tests/test-sig.c: New file, regression test for sigevents.
	* lib/Makefile.am: add sigevent.{c,h}
	* (isis|rip|ripng|ospf|ospf6|bgp)d/\1_main.c: modify for sigevents.
	* zebra/main.c: ditto.
	
2004-01-10 Paul Jakma <paul@dishone.st>

	* Makefile.am: redhat/ is a dist subdir too.
	
2004-01-10 Vincent Jardin <jardin@6wind.com>

	* configure.ac: add the redhat/Makefile as a AC_OUTPUT() argument.
	It fixes build on FreeBSD 5.1 and FreeBSD 4.7

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

	* Makefile.am: as per gdt, specify the redhat dir as a DIST_SUBDIR,
	  remove the redhat/... dist targets - instead these now go in..
	  redhat/Makefile.am: (new) proper place to describe redhat/ dist 
	  files, as well as allow quagga.spec to be regenerated properly.
	  redhat/quagga.sysconfig: specify conf file location.
	  redhat/quagga.spec.in: Add 2 patches to RPM build.
	  
2003-12-30 Paul Jakma <paul@dishone.st>

	* redhat/isisd.init: new file, init script for isisd.
	  redhat/quagga.sysconfig: new file, sysconfig file for quagga
	  initscripts. 
	  redhat/quagga.spec.in: various cleanups, including sysconfig patch
	  from RH, fixed UID/GID as per RH EL, shell changed to 
	  /sbin/nologin, daemon vty's listen to 127.1 only per default and 
	  isisd packaged.
	  redhat/*.init: sysconfig support and runlevels specified.
	  
2003-12-30 Paul Jakma <paul@dishone.st>

	* Makefile.am: put the redhat/ stuff into EXTRA_DIST rather than
	  copying via dist-hook. Remove ~ files backup cruft from dists.
	  isisd/Makefile.am: sysconf example should go via
	  dist_examples_DATA. The include-netbsd/ headers werent mentioned
	  as sources and werent being copied into dists.
	  
2003-12-23 Vincent Jardin <jardin@6wind.com>

	* isisd: Import isisd from Sampo Saaristo's source code.

2003-12-22 Christian Hammers <ch@lathspell.de>

	* configure.ac (and everywhere a regular file is opened for
	  writing): use file permissions from configure rather than
	  compiled-in umask.

2003-12-22 Hasso Tepper <hasso@estpak.ee>

	* lib/linklist.c: Revert microfix I commited while reverting 
	  [quagga-dev 227]. Caused by misreading code.

2003-12-21 Hasso Tepper <hasso@estpak.ee>

	* lib/linklist.c: Revert patch [quagga-dev 227]. listnode_add_sort()
	  function should not drop nodes in any case. But fix behavior where
	  nodes were added to the end of list when cmp returned 0.
	* lib/if.c: Check for duplicates before calling listnode_add_sort().

2003-12-08  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* {lib,ospfd,ospfapi}/Makefile.am: Use pkginclude_HEADERS rather
	than include_HEADERS to place includes in
	${prefix}/include/quaggainstead of polluting ${prefix}/include.

2003-12-04  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* configure.ac: When setting exampledir to sysconfdir as a
	default, don't quote ${sysconfdir}.  (Bug reported by Vincent
	Jardin.)

2003-12-03  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* configure.ac: Compile in Router Advertisement support by
	default.  Note that this does not default to sending RAs; it just
	makes 'ipv6 nd send-ra' and 'ipv6 nd prefix-advertisement'
	available.  While others may prefer other tools, no argument has
	been made that router advertisement support is such bloat that it
	should be compiled out by default (it 9556 bytes on NetBSD/i386 vs
	8 bytes with the support compiled out). This reversion of a
	previous change was done in consultation with Paul.

2003-12-03  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* configure.ac: Move tests for v6 header files to after the check
	for v6 code version, and conditionalize on the right variable.
	(Fixes problem where v6 header files are not included when v6 is
	enabled implicitly.)

2003-12-03  Greg Troxel  <gdt@poblano.ir.bbn.com>

	* configure.ac: Add --enable-exampledir to specify where example
	config files should go, defaulting to sysconfdir.

	* */Makefile.am: use exampledir instead of sysconfdif for examples

2003-11-02 Paul Jakma <paul@dishone.st>

        * bgpd/bgp_routemap.c: Fix up 'set ip next-hop A.B.C.D|peer-address'
          route map command so that vtysh can use it. Modified version of   
          Hasso Tepper's patch. Fixes bug #52.
        * configure.ac: FreeBSD has net-snmp in /usr/local.
        * redhat/quagga.spec.in: Install libzebra headers with -devel
          package.

2003-11-02 Krzysztof Oledzki <oleq@ans.pl>

        * zebra/zebra_rib.c: Revert patch (dating from zebra.org) which  
          caused zebra to read all routes in all tables, rather than just
          the main table. See [quagga-dev 280].

2003-10-30 Paul Jakma <paul@dishone.st>

        * configure.ac: netinet/in_systm.h is yet another well-known
          header file we really should be checking for

2003-10-27 kamatchi soundaram <kamatchi@tdd.sj.nec.com>

        * ospfd/ospfd.c: Do not increment act_int for an area, as it is done
          by ospf_ism.c::ism_change_state() - results in incorrect figure
          for active interfaces in an area.

2003-10-27 Paul Jakma <paul@dishone.st>

        * lib/if.{ch}: remove ifc_pointtopoint() - left over from the
          reverted RFC3021 patch.

2003-10-27 Simon <lists@routemeister.net>

        * ospfd/ospfd.c: if_is_pointopoint() takes (struct interface *), was
          being called with struct connected. Change to co->ifp.

2003-10-27 Gilad Arnold <gilad.arnold@terayon.com>

        * zebra/zebra_rib.c: (nexthop_active_update) Check for multipath
          limit when setting changed flag to avoid spurious changes.
          (static_install_ipv{4,6}) dont uninstall by default, might not be
          required - avoid spurious uninstalls.
          (static_uninstall_ipv{4,6}) only uninstall the route if its
          actually FIB route.

2003-10-24 sowmini.varadhan@sun.com

        * ospfd/ospf_network.c: (ospf_sock_init) Exit if socket can not be
          created.

2003-10-24 Jose Luis Rubio Guivernau <jrubio@dit.upm.es>

        * Better 'show bgp' support for views (eg ipv6), see [quagga-dev 238]
        * bgpd/bgp_route.c: (bgp_show) Take a struct bgp argument instead of
          view string.
          (bgp_show_neighbor_route) Take a struct peer argument instead of
          ip string.
          (peer_adj_routes) ditto
          (show_adj_routes) ditto
          (peer_lookup_in_view) new function to return appropriate struct
          peer for a given view string.
          (misc) Fixup all calls to above to reflect new calling arguments,
          and use peer_lookup_in_view as needed. Additional commands
          installed to use expanded functionality above, existing commands
          modified to suit as well.
        * bgpd/bgp_vty.c: 2 new aliases.

2003-10-24 Paul Jakma <paul@dishone.st>

        * configure.ac: Check for fcntl()
        * {bgpd,ospf,ospf6d,ripd,ripngd}/Makefile.am: Install conf file via
          regular automake means, not magic install incantations, see
          bug #38.
        * lib/Makefile.am: install the headers, needed to link libzebra.a
          (and hence libospf.a, OSPF-API, etc.)

2003-10-24 waldi@debian.org

        * vtysh/Makefile.am: vtysh_cmd.c rebuild was broken because it
          depended against source files without specification, i.e. it
          used ../zebra instead of $(top_srcdir)/zebra.

2003-10-23 Paul Jakma <paul@dishone.st>

        * configure.ac: IRIX configure.ac support. Sort of works.
          sysctl() crashes though (ipforward), there's some kind of odd
          padding in the PF_ROUTE socket messages and setsockopt() on
          SOCK_RAW does not work (so ospfd doesnt work).

2003-10-22 Paul Jakma <paul@dishone.st>

        * vtysh/Makefile.am: do not include vtysh_cmd.c in dists, its
          configure dependent. (still need to find a way to make building of
          it dependent on configure options or include all commands.)

2003-10-22 Paul Jakma <paul@dishone.st>

        * lib/zebra.h: include limits.h if its there, its a portable header
          and useful and not just solaris specific. net/route.h is also
          useful.

2003-10-22 Paul Jakma <paul@dishone.st>

        * lib/regex.c: bzero -> memset
        * zebra/ioctl.c: ditto. bzero is not portable.

2003-10-22 Paul Jakma <paul@dishone.st>

        * zebra/kernel_socket.c: HAVE_IPV6 conditional for WRAPUP when
          HAVE_SA_LEN is not defined. bcopy -> memcpy, bcopy is not
          portable.

2003-10-22 Paul Jakma <paul@dishone.st>

        * configure.ac: Split up header checks into non-net, net and ipv6
          related. Checking of IPv6 is conditional. Add some more output
          text for the end of the configure run.

2003-10-18 Lorenzo Colitti <lorenzo@ripe.net>

        * bgpd/bgp_attr.c: (bgp_dump_routes_attr) Dont dump IPv4 nexthop
          for IP. Dump MP_NLRI attr with IPv6 next-hop for AF_INET6 address
          family prefixes. Accept prefix as argument.
        * bgpd/bgp_attr.c: modify bgp_dump_routes_attr declaration.
        * bgpd/bgp_dump.c: (bgp_dump_routes_entry) Modify calls to
          bgp_dump_routes_attr.
          (bgp_dump_common) Go by the family of the peering socket, not
          configured address family when dumping peering information.
          Add HAVE_IPV6 conditionals, eg missing from previous bgp interval
          patch.

2003-10-18 Lorenzo Colitti <lorenzo@ripe.net>

        * bgpd/bgp_dump.{c,h}: (bgp_dump_interval_add) Dump at discrete
          fixed intervals rather than fixed intervals from startup time.
          (bgp_dump_interval_func) Dont return immediately if file cant be
          openeded, but reschedule interval dumps, even - admin might
          fix problem in meantime. Close the dump file in between intervals.
          (bgp_dump_init) account for MSG header when initialising stream
          size.

2003-10-15 Paul Jakma <paul@dishone.st>

        * ospfd/ospf_interface: (ospf_if_lookup_table) new function to
          lookup oi for a given prefix in a given interfaces table of oi's.
          (ospf_if_new) use ospf_if_lookup_table to deal with zebra
          reporting new interface multiple times.
          NB: This patch is a complete plaster-band of a hack. First, why is
          zebra reporting interface events multiple times? Second, why does
          ospfd maintain so many damn lists and tables relating to oi's -
          these should be reconciled into one or two tables.

2003-10-15 sowmini.varadhan@sun.com

        * ripd/ripd.c: (rip_send_packet) use rip->sock for mcast sends,
          instead of creating one socket per send. send source addr to
          rip_update_interface.
          (rip_update_process) should send an update on every connected
          network for each interface.
          (rip_request_send) should send a request on every connected
          network for each interface.
        * ripd/ripd.h: update prototype for rip_interface_multicast_set
        * ripd/rip_interface.c: (rip_interface_multicast_set) reorganized
          so that it can be called repeatedly for aliased interfaces (on
          multiple networks).

2003-10-15 Jay Fenlason <fenlason@redhat.com>

        * lib/vty.c: (vty_telnet_option) Remote DoS exists if a telnet
          end-sub-negotation is sent when no sub-negotation data has been
          sent. Return immediately if no sub-negotation is in progress.
          (vty_read) do not attempt to process options if no sub-negotation
          is in progress.

2003-10-15 Paul Jakma <paul@dishone.st>

        * lib/vty.c: (vty_save_cwd) dont crash if getcwd fails. try fallback
          to SYSCONFDIR. Allocate cwd from the stack rather than relying on
          (non-portable) getcwd() allocation (which we didnt seem to be
          freeing).

2003-10-13 Jay Fenlason <fenlason@redhat.com>

        * lib/zebra.h: define UINT32_MAX for those systems which do not
          provide it.
        * bgp_attr.h: define BGP_MED_MAX.
        * bgp_route.c: update defines/constants to BGP_MED_MAX.
        * bgp_routemap.c: ditto. clean up route_match_metric_compile
          slightly to avoid unneccesary XMALLOC.

2003-10-13 sowmini.varadhan@sun.com

        * ospf_lsa.h: Add OSPF_LSA_PREMATURE_AGE flag.
        * ospf_lsa.c: added better debug comments. check sequence number in
          ospf_lsa_install. ospf_maxage_lsa_remover() checks for
          OSPF_LSA_PREMATURE_AGE and re-originates the lsa after ls_acks are
          received.
        * ospf_flood.c: improve debug statement- print ls_seqnum.

2003-10-13 Douglas Fraser <doug+quagga@idmf.net>

        * zebra/connected.c: PtP revert fixup. Zebra was not creating
        connected route for PtP peer.

2003-10-07 Tarhon-Onu Victor <mituc@iasi.rdsnet.ro>

        * zebra/ipforward_proc.c: (ipforward) Close the fd for
        /proc/net/snmp. See [quagga-dev 284]

2003-09-29 Gilad Arnold <gilad.arnold@terayon.com>

        * zebra/zebra_rib.c: Fix possible dangling reference to rib
        route_nodes - unlock it the appropriate number of times. (twice,
        because of the implicit lock). see [quagga-dev 251].

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

        * zebra/connected.c: revert the 'generic PtP' patch as it causes
        far too many problems. People who use FreeSWAN should investigate
        native linux ipsec.
        * zebra/rt_netlink.c: ditto
        * lib/if.c: ditto
        * ripd/ripd.h: ditto
        * ripd/ripd.c: ditto
        * ripd/rip_interface.c: ditto
        * ospfd/ospfd.c: ditto
        * ospfd/ospf_snmp.c: ditto
        * bgpd/bgp_nexthop.c: ditto
        * ospfd/ospf_packet.c: Add debug output for some of the previously
          completely silent drops of 'bad' packets.
        * configure.ac: bump version

2003-08-27 Jay Fenlason <fenlason@redhat.com>

        * lib/Makefile.am: Do not use a lib (libcap) as a dependency
        * zebra/Makefile.am: Link in libcap
        * bgpd/bgp_routemap.c: attr->med is type u_in32_t, should be
          compared with UINT32_MAX
        * ospfd/ospfd.c: remove redundant assert
        * zebra/rtadv.c: add missing include for zebra/rib.h

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

        * lib/version.h: moved to version.h.in
        * lib/version.h.in: New file, from version.h. Change hardcoded
          package name and version to use the autoconf defined substition
          variables.
        * configure.ac: Fix up AC/AM_INIT* to new style. Remove the sed'ing
          through lib/version.h for VERSION. Add lib/version.h to the
          AC_OUTPUT list. Update the text output of quagga version at end
          of configure run to use PACKAGE_VERSION.
        * doc/.cvsignore: ignore quagga.pdf
        * doc/.cvsignore: ignore version.h, its now autogenerated.

2003-09-24 sowmini.varadhan@sun.com

        * lib/if.c: (if_cmp_func) fix infinite loop if
          ifp1->name == ifp2->name
        * lib/linklist.c: (if_cmp_func) Fix handling of case where
          list->cmp returns 0.
        * rip_interface.c: (rip_interface_address_add) call
          rip_enable_apply(), or the interface is never considered up.
          see [quagga-dev 225].
        * zebra/kernel_socket.c: Fix up WRAPUP macro to deal with multiple
          address families in the absence of sa_len element in struct
          sockaddr.
          (ifm_read): Handle solaris 9 if_msghdr_t.
          Deal with interfaces which are incomplete, lookup on name rather
          than the placeholder interface index of -1.

2003-09-24 Thomas Giger TGC <thomas.giger@tgc.de>

        * ospf_packet.c (ospf_associate_packet_vl): pass NULL struct
          interface to ospf_if_lookup_by_local_addr() rather than the
          receiving interface ifp, packets for VL's could come in any
          interface. See quagga-dev 250.

2003-04-13 Paul Jakma <paul@dishone.st>

	* Amir: Opaque LSA bug fix for deletion of Type11's
	* configure.ac: use --localstatedir for Unix sockets
	* Hasso Tepper: When flushing as-ext LSAs flush associated NSSA
	  LSAs.

2003-04-04 Paul Jakma <paul@dishone.st>

	* Sync to Zebra CVS
	* Fix lib/thread.h leak
	* Fix small Opaque LSA leak
	* Do not configure OSPF interfaces for secondary addresses
	* vtysh fixes from Hasso
	* Dave Watson's missing ntohs fix

2003-03-25 Paul Jakma <paul@dishone.st>

	* Sync to Zebra CVS

2003-03-17 Amir Guindehi <amir@datacore.ch>

	* Extended SNMP checks in configure.ac so that net-snmp works

2003-03-17 Amir Guindehi <amir@datacore.ch>
           Ralph Keller <keller@tik.ee.ethz.ch>
	* merge OSPF-API 

2003-02-07 Paul Jakma <paul@dishone.st>

	* Sync to zebra CVS

2003-02-03 Paul Jakma <paul@dishone.st>

	* Sync to zebra CVS

2003-01-19 Paul Jakma <paul@dishone.st>

	* Temporary fix for Generic PtP wrt to IPv6

2003-01-17 Paul Jakma <paul@dishone.st>

	* Sync up to latest zebra.org CVS
	* [zebra 16823] Bugfix and new feature in Opaque-LSA handling
	  Masahiko Endo <endo@suri.co.jp>
	* [zebra 16824] [PATCH] nsm_kill_neighbor 
	  Masahiko Endo <endo@suri.co.jp>
	* [zebra 17217] [PATCH] show thread CPU
	  Yon Uriarte <havanna_moon@gmx.net>
	* [zebra 17218] Re: [PATCH] CLI extensions.
	  Yon Uriarte <havanna_moon@gmx.net>

2002-12-13 Paul Jakma <paul@dishone.st>

	* added support for vtysh 'write file' command to 
	  write either per-daamon and/or integrated file
	* ospfd md5 buffer copying fix (Greg Troxel) 
	* ospfd md5 sequence number derived from time()
	* RIPv1 fixes and improvements (John Hay)
	* link state detection (linux) ([zebra 12269])
	* Generic PtP and RFC3021 interface addressing support
	  (Frank van Maarseveen)
	* Michal Ludvig <michal@logix.cz>:
	  [zebra 16525] PATCH: Bugfixes for KAME systems
	* Kevin C Miller <kevinm@andrew.cmu.edu>
	  [zebra 16681] OSPF NSSA Patches
	* Yon Uriarte <havanna_moon@gmx.net>
	  [zebra 16671] [PATCH] CLI extensions
	* Masahiko Endo: [zebra 15475] - MPLS-TE docs

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

	* zebra-0.93 released.

2002-06-28  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* update-autotools: Change file name from update-auto-tools.sh.

2002-06-21  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* update-auto-tools.sh: Add a new script to clean up build
	environment.

2002-06-18  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* Shift to the latest build environment autoconf-2.53 and
	automake-1.6.2.

2001-10-22  Kunihiro Ishiguro  <kunihiro@ipinfusion.com>

	* Integrate Glen Turner <glen.turner@aarnet.edu.au>'s pid option.

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

	* zebra-0.92a released.

2001-08-19  "Peter Galbavy" <peter.galbavy@knowtion.net>

	* configure.in: SNMP library check problem fix when the library is
	installed under /usr/local/lib.

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

	* zebra-0.92 released.

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

	* configure.in (LIBPAM): Use ZEBRA_AC_C_BIGENDIAN to avoid a
	warning.
	(IF_METHOD): Use test -r instead of AC_CHECK_FILE to avoid
	warnings.

	* config.guess: Update to 2000-11-10 version.

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

	* configure.in: Use AC_TRY_COMPILE instead of AC_EGREP_HEADER to
	detect in_pktinfo structure.  Suggested by: Vlad Lungu
	<vlad@rls.roknet.ro>.

2001-03-07  Michael Rozhavsky <mrozhavsky@opticalaccess.com>

	* configure.in: Add check for structure in_pktinfo.

2001-02-07  "Bjoern A. Zeeb" <bzeeb+zebra@zabbadoz.net>

	* configure.in (USE_PAM): Fix PAM library detection code.

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

	* zebra-0.91 is released.

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

	* configure.in: Remove guile related definition.

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

	* configure.in (ac_cv_htonl_works): HAVE_REPAIRABLE_HTONL is
	removed.  htonl should work fine on any platform.

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

	* configure.in: Remove --enable-oldrib option.

	* acconfig.h: OLD_RIB definition is removed.

	* zebra-0.90 is released.

	* configure.in (LIBS): Add check for sun_len field in struct
	sun_len.

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

	* Makefile.am: Include init/redhat files to distribution.

2001-01-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* configure.in: check libm.a for BGPd compile error.
	AC_CHECK_LIB(m, main) was added.

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

	* configure.in: --enable-unixdomain becomes default.  Add
	--enable-tcp-zebra for TCP/IP communication between protocol
	daemon and zebra.

	* COPYING.LIB: Added for lib/getopt.c, lib/getopt.h,
	lib/getopt1.c, lib/md5-gnu.h, lib/md5.c, lib/regex-gnu.h,
	lib/regex.c.

	* Makefile.am (dist-hook): Include tools/*.cgi to distribution.

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

	* configure.in (MULTIPATH_NUM): --enable-multipath=ARG specify
	multipath number.  ARG must be digit.

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

	* configure.in: Add --enable-newrib for test new RIB code.

2000-11-25  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* configure.in, config.h.in: Add check for libutil.h and
	setproctitle().

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

	* configure.in: Add --enable-nssa for OSPF NSSA option.

	* acconfig.h: Define HAVE_NSSA.

2000-10-25  "Bjoern A. Zeeb" <bzeeb+zebra@zabbadoz.net>

	* configure.in: pam_misc is only linked when the platform is
	GNU/Linux.

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

	* configure.in (LIBS): Add check for crypto library.  test x`ls
	${ac_snmp}` is replaced with sipmle test -f.

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

	* configure.in: Add --enable-unixdomain option.  This will be
	default behavior in zebra-0.90.

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

	* zebra-0.89 is released.

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

	* configure.in: Add check for Intel CPU for Solaris on x86 check.

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

	* configure.in: Add check for getifaddrs().
	Set AM_INIT_AUTOMAKE version to 0.89.

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

	* config.guess: Update to the latest version.

	* config.sub: Likewise

2000-09-14  David Lipovkov <dlipovkov@OpticalAccess.com>

	* REPORTING-BUGS: New file is added.

2000-08-27  itojun@iijlab.net

	* configure.in: Add ncurses library check when --enable-vtysh is
	specified.

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

	* configure.in: Add check for readline/history.h.

	* acconfig.h: Remove pthread related variables.

	* configure.in: Add --with-libpam option for vtysh PAM
	authentication.  Remove --disable-pthread because we don't support
	pthread.

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

	* zebra-0.88 is released.

	* configure.in: Add Solaris -lcurses for vtysh.

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

	* configure.in: Add check for ncurses for compiling on Solaris.

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

	* configure.in: Add check for libreadline when --enable-vtysh is
	specified.

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

	* configure.in: Add AC_DEFINE(OPEN_BSD). When OS is OpenBSD
	interface method is if_ioctl.o

2000-07-09  Chris Dunlop <chris@onthe.net.au>

	* acconfig.h: Add HAVE_BROKEN_ALIASES.
	
	* configure.in: Add --enable-broken-aliases.

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

	* Set version to zebra-0.87.

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

	* configure.in: Remove --enable-mpls-vpn.  Now MPLS-VPN support is
	default.

	* Set version to zebra-0.87-pre

	* Makefile.am: Likewise.

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

	* Set version to 0.86.

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

	* Set version to 0.85b for ospfd test.

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

	* Set version to 0.85a for ospfd test.

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

	* Set version to 0.85.

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

	* Makefile.in: Regenerated by patched automake for fixing "make
	clean" problem on FreeBSD.

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

	* Set version to 0.83a.  This is for *BSD static route lookup
	problem.

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

	* Set version to 0.83.

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

	* Set version to 0.82.

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

	* aczebra.m4: New file added.

1999-11-21  Michael Handler <handler@sub-rosa.com>

	* configure.in (LIBS): Add sa_len check of sockaddr.

	* acconfig.h: Add HAVE_SA_LEN.

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

	* version.h: Update version to zebra-0.81b for bgpd test.

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

	* configure.in: Add --enable-mbgp.

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

	* Makefile.am (EXTRA_DIST): Add TODO to the distribution.

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

	* TODO: New file is added.

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

	* version.h: Update version to zebra-0.81a for ospfd test.

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

	* configure.in: New option --enable-snmp is added.

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

	* version.h: Update version to zebra-0.80.

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

	* version.h: Update version to zebra-0.80-pre3

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

	* configure.in (LIBS): SNMP check is done by ucd-snmp/asn1.h.

1999-10-10  Peter Galbavy <Peter.Galbavy@knowledge.com>

	* configure.in: Add support of OpenBSD.

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

	* version.h: Update version to zebra-0.80-pre2.

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

	* version.h: Update version to zebra-0.80-pre.  From this version,
	access-list and prefix-list's name space is divided into IPv4 and
	IPv6.

1999-09-17  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: For test recent fixes Set version to zebra-0.79a.

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

	* version.h: zebra-0.79 is out.

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

	* version.h: For ospfd's virtual link test.  Set version to 0.78h.

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

	* version.h: For ospfd test.  Set version to 0.78g.

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

	* version.h: For internal test of ospfd. Set version to 0.78f.

1999-09-02  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: To test ospfd's fix, set version to 0.78e.

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

	* version.h: To test ospfd's area related bug fix, set version 
	to 0.78d.

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

	* version.h: To test ospfd, set version to 0.78c.

1999-08-31  Janos Farkas <chexum@shadow.banki.hu>

	* Many misspelling correction.

1999-08-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* version.h: To test ospfd, set version to 0.78b.

1999-08-31  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in (LIBS): Add UCD-SNMP include path check.

1999-08-31  Lars Fenneberg  <lf@elemental.net>

	* configure.in: The logic which detects the UCD-SNMP library
	should first check in the default system locations for the library
	and then in /usr/local.

1999-08-27  itojun@iijlab.net

	* configure.in (LIBS): Fix problem about libsnmp.a check.

1999-08-26  kay <kay@v6.access.co.jp>

	* configure.in (CFLAGS): Add <sys/socket.h> to check socklen_t.

1999-08-24  VOP <vop@unity.net>

	* filter.c: Include "sockunion.h".
	plist.c: Likewise.
	table.c: Likewise.

1999-08-24  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: Add netinet6/in6.h check.

1999-08-21  Masaki Minami <masaki@minami.org>

	* BSD/OS 4.0 porting.

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

	* configure.in: Add --enable-netlink option to force to use Linux
	netlink interface.
	(CFLAGS): Add ucd-snmp library check.

	* acconfig.h: If socklen_t is not defined, typedef int to
	socklen_t.

1999-08-15  Arkadiusz Miskiewicz <misiek@misiek.eu.org>

	* configure.in: When --enable-ipv6 specified, then only kernel
	version is checked.

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

	* configure.in: Add GNU libc 2.1 check.

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

	* configure.in: Fix privious Linux IPv6 check changes.

1999-08-02  Arkadiusz Miskiewicz <misiek@misiek.eu.org>

	* configure.in: Improve Linux IPv6 feature check.

1999-07-29  Rick Payne <rickp@rossfell.co.uk>

	* Changed route-maps to behave in a more cisco-like fashion

1999-07-27  Gerhard Poul <gpoul@gnu.org>

	* SERVICES: New file added.

1999-07-12  itojun@iijlab.net

	* configure.in: Add check for getaddrinfo.  Improve Kame related
	library check.

1999-07-07  Yasuhiro Ohara  <yasu@sfc.wide.ad.jp>

	* configure.in, acconfig.h: Add check for FreeBSD 3.2.

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

	* configure.in: Delete check for netinet/ip6.h.

1999-06-30  Gerhard Poul  <gpoul@gnu.org>

	* README: remixed the old files and added some new parts.
	moved some INSTALL stuff into INSTALL file.
	moved some other stuff to doc/zebra.texi

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

	* configure.in (LIBS): Add libresolv check.
	Change --enabe-all-in-one option to --enable-one-vty.

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

	* configure.in: Add --enabe-all-in-one option.

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

	* configure.in: Add socklen_t check.

1999-06-16  Gerhard Poul <gpoul@gnu.org>

	* Many compile warnings fixed.

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

	* configure.in: Change message from Linux 2.2.X IPv6 to Linux IPv6.
	OpenBSD (NRL) check is enabled.

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

	* configure.in (LIBS): Add crypt library check.

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

	* configure.in: Add sin6_scope_id in struct sockaddr_in6 check.

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

	* Set version to 0.63 for first beta package.

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

	* guile.m4: Added from guile package.

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

	* Set version to 0.60 for beta package preparation.

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

	* Makefile.am: Add noninst_LIBRARIES each directory's Makefile.am.
	This change is for linking these libraries to guile.

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

	* configure.in (LIBS): Add struct rt_addrinfo check.

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

	* configure.in: AC_STDC_HEADERS added.

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

	* Add dependencies to each directory's Makefile.am.

1999-03-02  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* reworked include file structure, and configure so that all
 	source files get all system-dependent include files by including
 	<zebra.h> which is really lib/zebra.h. This means that the
 	different programs include files are now available as #include
 	"zebra/zebra.h" - note the use of quotes, not <> as delimiters.

	In practical terms, if I haven't really screwed up, the main file
 	that maintainers for other OSes have to change is lib/zebra.h for
 	all the conditional includes etc.

	* added --disable-pthread for those systems that seem to have
 	POSIX threads, but do not work. OpenBSD 2.4+ is like that just
 	now. Changed all occurance of #ifdef PTHREAD to use HAVE_PTHREAD
 	instead.

1999-02-24    <kunihiro@zebra.org>

	* configure.in: update to AC_PREREQ(1.13).
	Change message from Linux 2.1.x to Linux 2.2.x.
	* Added ospf6d directory support.

1999-02-22  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* added a "log" element to the BGPd peer structure, enabling us to
 	start thinging about a log stream per peer. This is currently
 	ignored by the wrapper code, but developers should try to use the
 	"appropriate" ZLOG stream. Documentation will follow, when the
 	real routines start to exist.

	The current plan is to use a copy of the BSD syslog() routines and
 	replace the syslog library function with our own. I will need
 	feedback from users of other platforms as this work is done to see
 	if all is well elsewhere.
	
	* preliminary work on zlog() library. directly replaces syslog()
 	currently with zlog(ZLOG *, ...) where the new first argument
	is a pointer to a ZLOG structure (defined in lib/log.h) and will
	encapsulate all the information necessary to maintain multiple
	logging streams.

1999-02-19  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* added vsnprintf() macro to lib/str.h if required and removed
	#ifdef SUNOS_5 dependency on it

1999-02-18  Peter Galbavy  <Peter.Galbavy@knowledge.com>

	* syslog support added

1999-02-18  Peter Galbavy <Peter.Galbavy@knowledge.com>

	* configure.in: Add daemon function check.

1999-01-21  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: Add --disable-ipv6, --disable-zebra,
	--disable-bgpd, --disable-ripd, --disable-ripngd, --disable-ospfd
	options to configure.

1998-12-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: Check /usr/inet6/lib/libinet6.a exists or not.

1998-10-14  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: Comment out FreeBSD's libc_r detect section. At
	this moment it doesn't work correctly with zebra.

	Netlink interface is only enabled when Linux kernel version is
	upper than 2.1.0.

1998-09-15  HEO SeonMeyong <seirios@matrix.iri.co.jp>

	* Hydrangea is now called KAME, so change all defines.

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

	* configure.in: ifaliasreq check added.

1998-08-12  Katsuhiro Kondou <kondou@nec.co.jp>

	* Patch is applied for compile under EWS4800

1998-06-09  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: delete old mtu_method check.

	* doc/zebra.texi (Kernel interface): chapter `Kernel interface' added

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

	* configure.in: add new netlink check for GNU/Linux

1998-06-07  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* doc/zebra.texi: Update Linux netlink chapter.

1998-05-18  Yamashita TAKAO  <jargon@lares.dti.ne.jp>

	* config.h.in: define PTHREAD if work on Solaris 2.6
		why delete the definition? I miss?

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

	* configure.in: add net/if.h header check.

1998-05-02  SeonMeyong HEO <seirios@Matrix.iri.co.jp>

        * zebra.tex,archfig.tex,zebra.sty: Manual file is added.
	* zebra.texi: Modify Introduction text.
	* RIPngd.c: Patch Hydrangea code.

1998-05-01  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* .cvsignore: added.

	* Makerule.in: is gone.
	* Makefile.am: Now we use automake to generate Makefile.in

1998-03-19  Yamashita TAKAO  <jargon@lares.dti.ne.jp>

	* lib/vty.c: modified the definition of *master
	* lib/sockunion.c (inet_aton): add, but don't work. uum...


1998-03-15  Yamashita TAKAO  <jargon@lares.dti.ne.jp>

	* configure.in: define PTHREAD if work on Solaris 2.6
	* config.h.in: likewise
	* lib/thread.c: likewise
	* lib/vty.c: likewise
	
1998-03-15  SeonMeyong HEO  <seirios@Matrix.iri.co.jp>

	* config.h.in: define INET6 if defined HAVE_IPV6 & HYDRANGEA
	* bgpd/: remove include <netinet6/in6.h> line.
	* lib/: remove include <netinet6/in6.h> line.
	* ripbgd/: remove include <netinet6/in6.h> line.
	* zebra/: remove include <netinet6/in6.h> line.
	* ripd/*.c: remove include <netinet6/in6.h> line.
	undefine IPV6 difinitions because RIPd is not worked for
	IPv6 protocol.

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

	* configure.in: Change routing socket check method from
	AC_TRY_COMPILE to AC_TRY_RUN because GNU libc version 2 has
	AF_ROUTE but over linux it's meenigless.

1998-01-06  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* config.h.in: remove err_t define.

1997-11-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in (canonical): add check of IF_METHOD

1997-09-27  Kunihiro Ishiguro  <kunihiro@note.digital-magic.co.jp>

	* configure.in: add INRIA check

1997-09-25  Kunihiro Ishiguro  <kunihiro@note.digital-magic.co.jp>

	* configure.in (canonical): change ipforward_snmp.o to ipforward_proc.o

1997-09-12  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* configure.in: change IRDPD to NDPD

1997-08-18  Kunihiro Ishiguro  <kunihiro@zebra.org>

	* INSTALL: new file

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

	* config.h: add XCALLOC()

