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

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

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.
 
