2004-12-30: Jens Jakobsen <jj@openggsn.org>
        Initial MAC OS X support

	Quality assurance and improved error logging

	QoS length bug fix.
	
2004-09-11: Jens Jakobsen <jj@openggsn.org>
	Added selection mode option to sgsnemu.
	Added charging characteristics option to sgsnemu.

	Only include charging characteristics in create PDP context
	request is if flags are set. (Thanks to Loic Bernable
	<leto@vilya.org>).

	PPP PCO length bug fix. (Thanks to Loic Bernable
	<leto@vilya.org>).

	IP pool hash table bugfix and improved logging.
	
	Improved configure.in and Makefile.am for compilation under
	Solaris. New config.sub and config.guess.
	
2004-04-28: Jens Jakobsen <jj@openggsn.org>
	Improved Solaris support. OpenGGSN now correctly initializes
	tun/tap driver under Solaris. As a consequence the ggsn network
	interface IP address is set to the network address plus one.

	Added routing manipulation and IP address alias capability for
	FreeBSD.

2004-01-19: Jens Jakobsen <jj@openggsn.org>
	Initial FreeBSD port (Thanks to	Pavel Andreev <pavel.andreev@hp.com>).

	IMSI bugfix. The IMSI encoding used by create PDP context was
	missing the leading '1111' to indicate that the 16'nd digit was
	unused. (Thanks to Pavel Andreev <pavel.andreev@hp.com>).
	

2004-01-15: Jens Jakobsen <jj@openggsn.org>
	Added iptables firewall script.
	

2004-01-14: Jens Jakobsen <jj@openggsn.org>
	Changes to allow compilation under Solaris: u_int8_t changed to uint8_t
	and tun api changed for sun platform (#ifdef).

	
2004-01-09: Jens Jakobsen <jj@openggsn.org>
	Fixed bug which included NSAPI in GTPv0 create PDP context messages.


2003-11-10: Jens Jakobsen <jj@openggsn.org>
	Added --net option for sgsnemu. Allow user to specify the network
	address and mask of the local interface.

	Added --gtpversion option for sgsnemu. Allow user to specify which
	GTP version to use.

	Added --nsapi option for sgsnemu. Allow user to specify which
	NSAPI to use.

	Changed the functionality for multiple contexts. Previously
	contexts were differentiated by nsapi. This limited the number of
	contexts to 16. Now each context is established with a new imsi
	and msisdn.


2003-10-22: Jens Jakobsen <jj@openggsn.org>
	Support for GTP1. Currently without support for the secondary pdp
	context activation procedure.

	sgsnemu will first attempt to use GTP1. If that fails it will
	proceed with GTP0.

	Various gtplib API changes to allow support for GTP1.

	gtplib now listens to 3 separate UDP ports: GTP0, GTP1 control
	plane and GTP1 user plane. A socket for each port has to be
	included in the application select loop.

	gtplib now verifies that messages are valid for the particular
	type of support node. As an example a received Create PDP Context
	Request message is not allowed for an SGSN.

	Standards compliance document.

	
2003-07-07: Jens Jakobsen <jj@openggsn.org>
	Added spec.in file for building binary RPM packages. Now openggsn
	will install binaries, man pages as well as scripts.

	Added ggsn and sgsnemu man pages

	Added ggsn Sys V init script

	Added bootstrap script for autotools automation
	

2003-04-11: Jens Jakobsen <jj@openggsn.org>
	Added -ggdb to gtp, sgsnemu and ggsn makefiles in order to include
	debugging information.

	Added ippool.c and ippool.h to ggsn. This allows for generic
	allocation of dynamic ip addresses based on a <net>/<mask>
	description of ip address space. The same files are also used in
	sgsnemu, but only for hashing IP addresses. At the same time the
	corresponding functionality is removed from pdp.c.
	
	Added syserr.h and syserr.c to ggsn and sgsnemu. These files allow
	writing to syslog with file name and line number. Later this
	should also be introduced in gtp.

	Added support for DNS protocol configuration options in ggsn for
	create context response. This allow the MS to setup DNS
	configuration correctly.

	tun.c and tun.h have been updated to allow setting interface IP
	addresses and routes by means of ioctl and netlink. This allow
	sgsnemu to allocate an interface IP address for each context
	established.


2003-01-29: Jens Jakobsen <jj@openggsn.org>
	Added -L../gtp to sgsnemu and ggsn makefiles so that make will
	work without an installed libgtp.

	Added sgsnemu check to check for valid pointer when deleting tun.

	Removed enabling of ip_forward = 1 from ggsn.c and sgsnemu. From a
	security point of view it was not very good that openggsn
	automatically enabled routing.

	Added ipup, ipdown and createif to sgsnemu/cmdline.ggo. Now
	sgsnemu will set up default route and then execute ipup script
	after tun device has been set up. After tun has been deleted the
	ipdown script is executed.

	Added support for ping to sgsnemu.

	Added ipup and ipdown to ggsn/cmdline.ggo.
	
