2005-11-07  Masahide NAKAMURA <nakam@linux-ipv6.org>

	* Updating for 2.6.14
	- Show UPD{SA,POLICY} message information from kernel instead of error
	- Add lengh check of deleting message from kernel
	- Use macro for struct xfrm_user{sa,policy}_id

	* Minor fix:
	- Add fflush at the end of normal dump

2005-11-01  Jamal Hadi Salim <hadi@znyx.com>

	* Fix handling of XFRM monitor and state

2005-11-01  Stephen Hemminger  <shemminger@osdl.org

	* Update to 2.6.14 sanitized headers

2005-10-24  Patrick McHardy <kaber@trash.net>

	* Fix ip commnad shortcuts

2005-10-12  Stephen Hemminger  <shemminger@osdl.org>

	* Add more CBQ examples from Fedora Core
	* Fix buffer overrun in iproute because of bits vs. bytes confusion
	
2005-10-12  Jamal Hadi Salim <hadi@znyx.com>

	* Fix ip rule flush, need to reopen rtnl

2005-10-07  Stephen Hemminger  <shemminger@osdl.org>

	* Reenable ip mroute

2005-10-07  Mike Frysinger <vapier@gentoo.org>

	* Handle pfifo_fast that has no qopt without segfaulting

2005-10-05  Mads Martin Joergensen <mmj@suse.de>

	* Trivial netem ccopts

2005-10-04  Jerome Borsboom <j.borsboom@erasmusmc.nl>

	* Fix regression in ip addr (libnetlink) handling

2005-09-21  Stephen Hemminger  <shemminger@osdl.org>

	* Fix uninitialized memory and leaks with valgrind
	  Reported by Redhat

2005-09-01   Mike Frysinger <vapier@gentoo.org>

	* Fix build issues with netem tables (parallel make and HOSTCC)
	
2005-09-01  Stephen Hemminger  <shemminger@osdl.org>

	* Integrate support for DCCP into 'ss' (from acme)
	* Add -batch option to ip.
	* Update to 2.6.14 headers

2005-09-01  Eric Dumazet <dada1@cosmosbay.com>
	
	* Fix lnstat : First column should not be summed

2005-08-16  Stephen Hemminger  <shemminger@osdl.org>

	* Limit ip route flush to 10 rounds.
	* Cleanup ip rule flush error message
	
2005-08-08  Stephen Hemminger  <shemminger@osdl.org>

	* Update to 2.6.13+ kernel headers
	* Fix array overrun in paretonormal
	* Fix ematch to not include dropped fields from skb.
	
2005-07-14  Thomas Graf <tgraf@suug.ch>

	* Make ematch bison/lex build with common flex
	
2005-07-10  Stephen Hemminger  <shemminger@osdl.org>
	
	* Fix Gcc 4.0 build warnings signed/unsigned

2005-06-23  Jamal Hadi Salim <hadi@znyx.com>

	* Fix for options process with ipt

2005-06-23  Thomas Graf <tgraf@suug.ch>
	
	* Add extended matches (nbyte, cmp, u32, meta)
	* Add basic classifier
	* Fix clean/distclean makefile targets
	* update local header file copies
	* IPv4 multipath algorithm selection support
	* cscope Makefile target
	* Fix off-by-one while generating argument vector
	  in batched mode.
	* Assume stdin if no argument is given to -batch

2005-06-22  Stephen Hemminger  <shemminger@osdl.org>

	* Update include files to 2.6.12
	* Add ss support for TCP_CONG

2005-06-13  Steven Whitehouse <steve@chygwyn.com>

	* Decnet doc's update

2005-06-07  Stephen Hemminger  <shemminger@osdl.org>

	* Fix 'ip link' map to handle case where device gets autoloaded
	  by using if_nametoindex as fallback
	* Device indices are unsigned not int.

2005-06-07   Masahide NAKAMURA <nakam@linux-ipv6.org>
	
	* [ip] show timestamp when using '-t' option.
	* [ip] remove duplicated code for expired message of xfrm.
	* [ip] add "deleteall" command for xfrm;
	  "flush" uses kernel's flush interface and
	  "deleteall" uses legacy iproute2's flush feature like
	   getting-and-deleting-for-each.

2005-03-30  Stephen Hemminger  <shemminger@osdl.org>

	* include/linux/netfilter_ipv4/ip_tables.h dont include compiler.h
	  because it isn't needed and not on all systems
	* Update rtnetlink.h and pkt_cls.h to be stripped versions
	  of headers from 2.6.12-rc1

2005-03-30  Jamal Hadi Salim <hadi@znyx.com>

	* Proper verison of iptables headers (from 1.3.1)
	* Set revision file in m_ipt
	* Fix action_util naming in mirred
	* don't call ll_init_map in mirred

2005-03-19  Thomas Graf <tgraf@suug.ch>

	* Warn about wildcard deletions and provide IFA_ADDRESS upon
	  deletions to enforce prefix length validation for IPv4.
	* Fix netlink message alignment when the last routing attribute added
	  has a data length not aligned to RTA_ALIGNTO.
	
2005-03-30  Masahide NAKAMURA <nakam@linux-ipv6.org>
	
	* ipv6 xfrm allocspi and monitor support.
	
2005-03-29  Stephen Hemminger  <shemminger@osdl.org>

	* switch to stack for netem tables

2005-03-18  Stephen Hemminger  <shemminger@osdl.org>

	* add -force option to batch mode
	* handle midline comments in batch mode
	* sum per cpu fields in lnstat correctly

2005-03-14  Stephen Hemminger  <shemminger@osdl.org>

	* cleanup batch mode, allow continuation, comments etc.
	* recode reuse of netlink socket

2005-03-14  Boian Bonev <boian@bonev.com>
	
	* enhancement to batch mode.
	 it does not exit on error, just report it
	 tc reuses the already open netlink socket for subsequent command(s)

2005-03-14  Thomas Graf <tgraf@suug.ch>
	
	* ip link command
	  print NO-CARRIER flag if there is no carrier and the link is up.

2005-03-14  Patrick McHardy <kaber@trash.net>

	* bug: Use USER_HZ where necessary

2005-03-10  Jamal Hadi Salim <hadi@znyx.com>

	* Fix bug with register_target

2005-03-10  Stephen Hemminger  <shemminger@osdl.org>

	* fix pkt_cls.h to have tc_u32_mark
	* update include files to be stripped versions of 2.6.11
	* add documentation about netem distributions [from nistnet]
	* turn off nup in document make [from FC3]
	* don't build with extra debug info (-g) [from FC3]
	
2005-03-10 Nix <nix@esperi.org.uk>

	* make man3 directory
	
2005-03-10 Pasi <Pasi.Eronen@nokia.com>
	
	* add ESP-in-UDP encapsulation

2005-03-10 Thomas Graf <tgraf@suug.ch>
	* [NETEM] Fix off by one
 	* update local header file copies
	* [NEIGH] print number of probes done so far (statistics mode only)
	
2005-03-10 Herbert Xu <herbert@gondor.apana.org.au>
	* Trivial typo in ip help

2005-02-09  Stephen Hemminger  <shemminger@osdl.org>

	* netem distribution data reorganization

2005-02-09  Roland Dreier <roland@topspin.com>

	* ip over infiniband address display

2005-02-09  Jim Gifford <lfs@jg555.com>

	* make install fix for ip/

2005-02-07 Mads Martin Joergensen <mmj@suse.de>
	
	* Don't mix address families when flushing	
	
2005-02-07  Stephen Hemminger  <shemminger@osdl.org>

	* Validate classid is not too large to cause loss of bits.

2005-02-07 Jean-Marc Ranger <jmranger@sympatico.ca>

	* need to call getline() with null for first usage
	* don't overwrite const arg

2005-02-07  Stephen Hemminger  <shemminger@osdl.org>

	* Add experimental distribution

2005-01-18  Yun Mao <maoy@cis.upenn.edu>

	* typo in ss

2005-01-18  Thomas Graf <tgraf@suug.ch>
	
	* tc pedit/action cleanups
	* add addraw_l
	* rtattr_parse cleanups

2005-01-17  Jamal Hadi Salim <hadi@znyx.com>

	* typo in m_mirred
	* add support for pedit

2005-01-13  Jim Gifford <lfs@jg555.com>
	
	* Fix allocation size error in nomal and paretonormal generation
	  programs.

2005-01-12  Masahide Nakamura <nakam@linux-ipv6.org>
	
	* ipmonitor shows IPv6 prefix list notification
	* update to iproute2 xfrm for ipv6	
	
2005-01-12  Stephen Hemminger  <shemminger@osdl.org>

	* Fix compile warnings when building 64bit system since
	  u64 is unsigned long, but format is %llu

2005-01-12  "Catalin(ux aka Dino) BOIE" <util@deuroconsult.ro>

	* Add the possibility to use fwmark in u32 filters
	
2005-01-12  Andi Kleen <ak@suse.de>

	* Add netlink manual page

2004-10-20  Stephen Hemminger  <shemminger@osdl.org>
	
	* Add warning about "ip route nat" no longer supported

2005-01-12  Thomas Graf <tgraf@suug.ch>

	* Tc testsuite

2005-01-12  Jamal Hadi Salim <hadi@znyx.com>

	* Add iptables tc support. This meant borrowing headers
	  from iptables *ugh*

2004-12-08  Jamal Hadi Salim <hadi@znyx.com>

	* Add mirror and redirect actions

2004-10-20  Stephen Hemminger  <shemminger@osdl.org>

	* Don't include <asm/byteorder.h> since then we get dependant on
	  kernel headers on host machine
	* Minor fix for building on old machine without IPPROTO_SCTP

2004-10-19  Harald Welte <laforge@gnumonks.org>

	* Replace rtstat (and ctstat) with new lnstat

2004-10-19  Mads Martin Joergensen <mmj@suse.de>

	* Ip is using the wrong structure in ipaddress.c when showing stats
	* Make sure no buffer overflow in nstat

2004-10-19  Michal <md@lnet.pl>

	* fix scaling in print_rates (for bits)

2004-09-28  Stephen Hemminger  <shemminger@osdl.org>

	* fix build problems with arpd and pthread
	* add pkt_sched.h

2004-09-28  Mike Frysinger <vapier@gentoo.org>
	
	* make man8 directory
	* install ifcfg and rtpr scripts

2004-09-28  Andreas Haumer <andreas@xss.co.at>

	* make install symlink fix.

2004-09-28  Masahide Nakamura <nakam@linux-ipv6.org>

	* ICMP/ICMPv6's type and code in IPsec selector.
	* fixes `ip xfrm`'s algorithm key when using hexadecimal
	* support 'ip xfrm' protocol types
	* flush message types for XFRM's policy/state


2004-09-01  Stephen Hemminger  <shemminger@osdl.org>

	* Fix ip command to not crash when interface name is too long.
	  always use strncpy(.., IFNAMSIZ)

2004-08-31  Stephen Hemminger  <shemminger@osdl.org>

	* Add gact documentation from jamal
	* Chang more arguments to rtnetlink API const
	* Drop dead queuing disciplines
	* Handle qdisc without xstats in core rather than
	  putting stub's everywhere
	* Add requeue to tc_stats and handle new/old ABI issues

2004-08-30  Stephen Hemminger  <shemminger@osdl.org>

	* Make clean and install changes for man pages
	* Patch from jamal to support gact
	* Add support for loading distributions to netem
	

2004-08-23  Stephen Hemminger  <shemminger@osdl.org>

	* Update from jamal for all the parts that got broken in the
	  last classification patch.
	* Hfsc/sc patch from patrick

2004-08-13  Stephen Hemminger  <shemminger@osdl.org>

	* Add jamal's tc extensions for classification
	* Get rid of old Patches/ directory for tcp_diag module
	* Make get_rate table based.

2004-08-11  Stephen Hemminger  <shemminger@osdl.org>

	* Add xfrm message formatting from
	  Masahide Nakamura <nakam@linux-ipv6.org>

2004-08-09  Stephen Hemminger  <shemminger@osdl.org>

	* Fix netem scheduler to handle case where psched us != real us

	* Remove configuration for everything that can depend on 
	  extracted kernel headers
	* Add kernel headers required to include/linux

2004-08-04  Stephen Hemminger  <shemminger@osdl.org>

	* Get rid of old tcp_diag module, it is part of kernel.

	* Add some kernel include files back (netlink, tcp_diag, pkt_sched)

2004-07-30  Stephen Hemminger  <shemminger@osdl.org>

	* Make ip xfrm stuff config option since it doesn't exist on 2.4

	* HFSC doesn't exist on older 2.4 kernels so make it configurable

	* HTB API changed and won't build with mismatched version.
	  Rather than sticking user with a build error, just don't
	  build it in on mismatch.

	* Change configure script to make sure netem is the correct
	  version. I changed the structure def. a couple of times before
	  settling on the final API

2004-07-16  Stephen Hemminger  <shemminger@osdl.org>

	* Add htb mpu support 
	http://luxik.cdi.cz/~devik/qos/htb/v3/htb_tc_overhead.diff
	* Three small xfrm updates

2004-07-07  Stephen Hemminger  <shemminger@osdl.org>

	* Fix if_ether.h to fix arpd build
	* Add hfsc scheduler support
	* Add ip xfrm support
	* Add add jitter (instead of rate) to netem scheduler

2004-07-02  Stephen Hemminger  <shemminger@osdl.org>

	* use compile to test for ATM libraries
	* put TC layered scheduler hooks in /usr/lib/tc as shared lib
	  before it looked in standard search path (/lib;/usr/lib;...)
	  which seems out of place.
	* build netem as shared library (more for testing/example)
	* build ATM as shared library since libatm may be on build
	  machine but not on deployment machine
	* fix make install to not install SCCS directories

2004-07-01  Stephen Hemminger  <shemminger@osdl.org>

	* add more link options to ip command (from Mark Smith
	* add rate and duplicate arguments to tc command
	* add -iec flag for tc printout
	* rename delay scheduler to netem

2004-06-25  Stephen Hemminger  <shemminger@osdl.org>

	* Add loss parameter to delay
	* Rename delay qdisc to netsim
	* Add autoconfiguration by building a Config file
	  and using it.

2004-06-09  Stephen Hemminger  <shemminger@osdl.org>

	* Report rates in K=1000 (requested by several people)
	* Add GNU long style options
	* For HTB use get_hz to pick up value of system HZ at runtime
	* Delete unused funcs.

2004-06-08  Stephen Hemminger  <shemminger@osdl.org>

	* Cleanup ss
	     - use const char and local functions where possible
	* Add man pages from SuSe
	* SuSE patches
	     - path to db4.1
	     - don't hardcode path to /tmp in ifstat
	       Alternat fix: was to use TMPDIR
	     - handle non-root user calling ip route flush going into
	       an infinite loop.
	       Alternate fix: was to timeout if route table doesn't empty.
	* Try and get rid of dependency on kernel include files
	  Get rid of having private glibc-include headers
	
2004-06-07  Stephen Hemminger  <shemminger@osdl.org>

	* Import patches that make sense from Fedora Core 2
		- iproute2-2.4.7-hex
		     print fwmark in hex
		- iproute2-2.4.7-netlink
		     handle getting right netlink mesg back
		- iproute2-2.4.7-htb3-tc
		     add HTB scheduler
		- iproute2-2.4.7-default
		     add entry default to rttable
                    
2004-06-04  Stephen Hemminger  <shemminger@osdl.org>

	* Add support for vegas info to ss

2004-06-02  Stephen Hemminger  <shemminger@osdl.org>

	* Use const char in utility routines where appropriate
	* Rearrange include files so can build with standard headers
	* For "tc qdisc ls" see the default queuing discpline "pfifo_fast"
	  and understand it
	* Get rid of private defintions of network headers which existed
	  only to handle old glibc

2004-04-15  Stephen Hemminger  <shemminger@osdl.org>

	* Add the delay (network simulation scheduler)

2004-04-15  Stephen Hemminger  <shemminger@osdl.org>

	* Starting point baseline based on iproute2-2.4.7-ss020116-try

