OPENGGSN NEWS
=============

OpenGGSN - Gateway GPRS Support Node
Copyright (C) 2002, 2003, 2004 Mondru AB.

Version 0.84
============

* Initial MAC OSX support (Thanks to Pekka Nikander)
* Quality assurance and improved error logging (Thanks to Pekka
  Nikander and Jonny Winberg)

Version 0.83
============

* Added selection mode and charging characteristics option to sgsnemu.
* Bug fixes on charging characteristics and PPP PCO length.(Thanks to
  Loic Bernable	<leto@vilya.org>).
* Improved Solaris support, hash table bugfix and improved logging.

Version 0.82
============

* Improved Solaris support. 
* Routing manipulation and IP address alias capability for FreeBSD.
* Initial Debian port (Thanks to ARAKI Yasuhiro <ar@debian.org>).

Version 0.81
============

 * Initial FreeBSD port (Thanks to Pavel Andreev <pavel.andreev@hp.com>).
 * IMSI '1111' bugfix (Thanks to Pavel Andreev <pavel.andreev@hp.com>).

Version 0.8
===========

 * Support for compilation under Solaris.
 * Iptables firewall script.
 * New options for sgsnemu


Version 0.7
===========

 * 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
   fallback to using GTP0.
 * Standards compliance document.

Version 0.6
===========

 * Improved README file.
 * Now uses ioctl instead of ifconfig and route in ggsn and sgsnemu.
 * Absolute path to gtp library in ggsn/Makefile.am and ggsn/Makefile.am
 * Compiles with gengetopt 2.8 (Thanks to Lorenzo Bettini <bettini@gnu.org>)
 * sgsnemu is now able to handle several contexts and allocate
   interface IP addresses for each context.
 * ggsn now supports protocol configuration option DNS
   addresses. This allow mobile stations to set up DNS based on
   information configured in the ggsn.
 * Ping facility in sgsnemu allow testing without the need to route
   packets through the tun interface.
 * Man pages for ggsn and sgsnemu.
 * Sys 5 init script.
 * Spec file for building binary RPM packages.
 * If not --createif exit after "ping" or "echo" finishes
 * If sgsnemu echo failure, exit with code != 0


Version 0.5
===========

 * Initial release. See README file for installation and usage
   instructions.
 
