This work was packaged for Debian by:

    Harald Welte <laforge@gnumonks.org> on Tue, 24 Aug 2010 11:23:40 +0200

It was downloaded from:

    http://sourceforge.net/projects/ggsn

Upstream Author(s):

    Jens Jakobsen <jj@openggsn.org>
    Harald Welte <laforge@gnumonks.org>

Copyright:

    Copyright (C) 2002 Mondru AB
    Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>

License:

   This package is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License version 2 as
   published by the Free Software Foundation.

    This package is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program. If not, see <http://www.gnu.org/licenses/>

On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

The Debian packaging is:

    Copyright (C) 2010 Harald Welte <laforge@gnumonks.org>

you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
