l2tpns.git
20 years agoDocumentation update
Brendan O'Dea [Mon, 12 Jul 2004 14:15:11 +0000 (14:15 +0000)]
Documentation update

20 years agoadd lock_pages option
bodea [Mon, 12 Jul 2004 08:21:45 +0000 (08:21 +0000)]
add lock_pages option

20 years agoadd lock_pages option
Brendan O'Dea [Mon, 12 Jul 2004 08:21:45 +0000 (08:21 +0000)]
add lock_pages option

20 years agomore TODO stuff
bodea [Mon, 12 Jul 2004 08:19:46 +0000 (08:19 +0000)]
more TODO stuff

20 years agomore TODO stuff
Brendan O'Dea [Mon, 12 Jul 2004 08:19:46 +0000 (08:19 +0000)]
more TODO stuff

20 years ago- TerminateAck fix from Yuri
bodea [Sun, 11 Jul 2004 07:57:33 +0000 (07:57 +0000)]
- TerminateAck fix from Yuri
- Adject cli_loop args for libcli 1.8.0
- Allow for backward compatabity in C_PING packets
- Don't send RADIUS stop messages from sessionshutdown when called from
  sessionkill.

20 years ago- TerminateAck fix from Yuri
Brendan O'Dea [Sun, 11 Jul 2004 07:57:33 +0000 (07:57 +0000)]
- TerminateAck fix from Yuri
- Adject cli_loop args for libcli 1.8.0
- Allow for backward compatabity in C_PING packets
- Don't send RADIUS stop messages from sessionshutdown when called from
  sessionkill.

20 years ago- s/tap/tun/
bodea [Thu, 8 Jul 2004 16:54:35 +0000 (16:54 +0000)]
- s/tap/tun/
- fix for LASTSEEN breakage:  don't do anything in the CLI other than
  flag changes to be made by the parent
- split out master parts from cluster_check_master() into cluster_check_slaves()

20 years ago- s/tap/tun/
Brendan O'Dea [Thu, 8 Jul 2004 16:54:35 +0000 (16:54 +0000)]
- s/tap/tun/
- fix for LASTSEEN breakage:  don't do anything in the CLI other than
  flag changes to be made by the parent
- split out master parts from cluster_check_master() into cluster_check_slaves()

20 years agoupdate counters
bodea [Thu, 8 Jul 2004 16:19:09 +0000 (16:19 +0000)]
update counters

20 years agoupdate counters
Brendan O'Dea [Thu, 8 Jul 2004 16:19:09 +0000 (16:19 +0000)]
update counters

20 years agodoc updates from mo
bodea [Thu, 8 Jul 2004 16:16:48 +0000 (16:16 +0000)]
doc updates from mo

20 years agodoc updates from mo
Brendan O'Dea [Thu, 8 Jul 2004 16:16:48 +0000 (16:16 +0000)]
doc updates from mo

20 years agoupdate for new clustering
bodea [Thu, 8 Jul 2004 16:14:12 +0000 (16:14 +0000)]
update for new clustering

20 years agoupdate for new clustering
Brendan O'Dea [Thu, 8 Jul 2004 16:14:12 +0000 (16:14 +0000)]
update for new clustering

20 years ago- set hostname in CLI prompt
bodea [Wed, 7 Jul 2004 09:09:53 +0000 (09:09 +0000)]
- set hostname in CLI prompt
- add assertions to help identify odd LASTSEEN breakage
- make cluster_hb_interval work; include interval/timeout in heartbeats
  so that a change on the master is propagated immediately to the slaves
- use fast heartbeats when there are slaves not up to date
- ensure basetime of shut down master is set to zero (prevent delayed election)
- fix radius session leak on IPCP timeout
- fix some off-by-one errors in tunnel/session loops

20 years ago- set hostname in CLI prompt
Brendan O'Dea [Wed, 7 Jul 2004 09:09:53 +0000 (09:09 +0000)]
- set hostname in CLI prompt
- add assertions to help identify odd LASTSEEN breakage
- make cluster_hb_interval work; include interval/timeout in heartbeats
  so that a change on the master is propagated immediately to the slaves
- use fast heartbeats when there are slaves not up to date
- ensure basetime of shut down master is set to zero (prevent delayed election)
- fix radius session leak on IPCP timeout
- fix some off-by-one errors in tunnel/session loops

20 years agoroll in Michael's "limp along" fix for when a slave drops temporarily from the mcast...
bodea [Mon, 5 Jul 2004 06:54:01 +0000 (06:54 +0000)]
roll in Michael's "limp along" fix for when a slave drops temporarily from the mcast group

20 years agoroll in Michael's "limp along" fix for when a slave drops temporarily from the mcast...
Brendan O'Dea [Mon, 5 Jul 2004 06:54:01 +0000 (06:54 +0000)]
roll in Michael's "limp along" fix for when a slave drops temporarily from the mcast group

20 years agofluff to simplify diffs
bodea [Fri, 2 Jul 2004 07:31:23 +0000 (07:31 +0000)]
fluff to simplify diffs

20 years agofluff to simplify diffs
Brendan O'Dea [Fri, 2 Jul 2004 07:31:23 +0000 (07:31 +0000)]
fluff to simplify diffs

20 years agofold back in changes from production
bodea [Fri, 2 Jul 2004 07:30:43 +0000 (07:30 +0000)]
fold back in changes from production

20 years agofold back in changes from production
Brendan O'Dea [Fri, 2 Jul 2004 07:30:43 +0000 (07:30 +0000)]
fold back in changes from production

20 years agorename l2tpns.cfg as startup-config to match CONFIGFILE
bodea [Fri, 2 Jul 2004 07:29:07 +0000 (07:29 +0000)]
rename l2tpns.cfg as startup-config to match CONFIGFILE

20 years agorename l2tpns.cfg as startup-config to match CONFIGFILE
Brendan O'Dea [Fri, 2 Jul 2004 07:29:07 +0000 (07:29 +0000)]
rename l2tpns.cfg as startup-config to match CONFIGFILE

20 years agorename l2tpns.cfg to startup-config
bodea [Fri, 2 Jul 2004 07:26:18 +0000 (07:26 +0000)]
rename l2tpns.cfg to startup-config
fix installation of plugins
use DESTDIR rather than PREFIX

20 years agorename l2tpns.cfg to startup-config
Brendan O'Dea [Fri, 2 Jul 2004 07:26:18 +0000 (07:26 +0000)]
rename l2tpns.cfg to startup-config
fix installation of plugins
use DESTDIR rather than PREFIX

20 years ago* Update cli callbacks to work with libcli 1.6.
fred_nerk [Mon, 28 Jun 2004 02:43:13 +0000 (02:43 +0000)]
* Update cli callbacks to work with libcli 1.6.
  This supports privileged and unprivileged commands, as well as a configuration
  mode
* Add help for all cli commands
* Add "show version" command
* Fix uptime counter display
* Fix nasty bug where cluster basetime can be set to 0 when sending initial
  heartbeat
* Don't rmmod ip_conntrack, as this can take a lot of time
* Re-order logging in routeset such that the action is given before any error
* Use the correct gateway address when deleting routes
* Remove any routes when address changes
* Require authentication if telnet from remote ip
* Require enable password always
* Return error if show pool done on slave
* We MUST immediately exit if we're the wrong master!

20 years ago* Update cli callbacks to work with libcli 1.6.
David Parrish [Mon, 28 Jun 2004 02:43:13 +0000 (02:43 +0000)]
* Update cli callbacks to work with libcli 1.6.
  This supports privileged and unprivileged commands, as well as a configuration
  mode
* Add help for all cli commands
* Add "show version" command
* Fix uptime counter display
* Fix nasty bug where cluster basetime can be set to 0 when sending initial
  heartbeat
* Don't rmmod ip_conntrack, as this can take a lot of time
* Re-order logging in routeset such that the action is given before any error
* Use the correct gateway address when deleting routes
* Remove any routes when address changes
* Require authentication if telnet from remote ip
* Require enable password always
* Return error if show pool done on slave
* We MUST immediately exit if we're the wrong master!

20 years agoAdd INTERNALS file
fred_nerk [Mon, 28 Jun 2004 02:21:20 +0000 (02:21 +0000)]
Add INTERNALS file

20 years agoAdd INTERNALS file
David Parrish [Mon, 28 Jun 2004 02:21:20 +0000 (02:21 +0000)]
Add INTERNALS file

20 years ago* Wed Jun 23 2004 David Parrish <david@dparrish.com> 2.0.0
fred_nerk [Wed, 23 Jun 2004 03:52:24 +0000 (03:52 +0000)]
* Wed Jun 23 2004 David Parrish <david@dparrish.com> 2.0.0
- Major release
- Completely replace active/standby clustering with a new peer-to-peer
  clustering method which allows much greater throughput and is a lot more fault
  tolerant
- Add internal tbf implementation for throttling without relying on tc and
  kernel HTB
- Add support for iBGP and eBGP to advertise routes
- Add cli commands "show cluster", "show bgp", "show ipcache", "show throttle",
  "show tbf", "suspend bgp", "restart bgp", "show user"
- Interception destination must be set per-user
- If SMP machine, allow use of SCHED_FIFO, which should improve performance
- Added config option to send GARP at startup
- Added plugin_become_master and plugin_new_session_master plugin hooks
- Remove useless sessionsendarp(). This isn't needed now that we are using TUN
  instead of TAP.
- ICMP rate limiting so not every unreachable packet is replied with an ICMP
  unreachable message
- mangle table is not required on anything but the cluster master, so slaves
  will drop the mangle table and attempt to unload the ip_conntrack module
- Statically assigned IP addresses (by Radius) work now
- Add -d command-line flag to detach and become a daemon
- Configuration file is now "/etc/l2tpns/startup-config"
- Reduced MIN_IP_SIZE to 0x19 to stop a pile of Short IP warnings
- Resend initial IPCP request until it's acknowleged by the client
- Better radius session cleanup logic
- Many miscellaenous bugfixes and performance enhancements
- Thanks to Michael O'Reilly and Brendan O'Dea for most of these new features

20 years ago* Wed Jun 23 2004 David Parrish <david@dparrish.com> 2.0.0
David Parrish [Wed, 23 Jun 2004 03:52:24 +0000 (03:52 +0000)]
* Wed Jun 23 2004 David Parrish <david@dparrish.com> 2.0.0
- Major release
- Completely replace active/standby clustering with a new peer-to-peer
  clustering method which allows much greater throughput and is a lot more fault
  tolerant
- Add internal tbf implementation for throttling without relying on tc and
  kernel HTB
- Add support for iBGP and eBGP to advertise routes
- Add cli commands "show cluster", "show bgp", "show ipcache", "show throttle",
  "show tbf", "suspend bgp", "restart bgp", "show user"
- Interception destination must be set per-user
- If SMP machine, allow use of SCHED_FIFO, which should improve performance
- Added config option to send GARP at startup
- Added plugin_become_master and plugin_new_session_master plugin hooks
- Remove useless sessionsendarp(). This isn't needed now that we are using TUN
  instead of TAP.
- ICMP rate limiting so not every unreachable packet is replied with an ICMP
  unreachable message
- mangle table is not required on anything but the cluster master, so slaves
  will drop the mangle table and attempt to unload the ip_conntrack module
- Statically assigned IP addresses (by Radius) work now
- Add -d command-line flag to detach and become a daemon
- Configuration file is now "/etc/l2tpns/startup-config"
- Reduced MIN_IP_SIZE to 0x19 to stop a pile of Short IP warnings
- Resend initial IPCP request until it's acknowleged by the client
- Better radius session cleanup logic
- Many miscellaenous bugfixes and performance enhancements
- Thanks to Michael O'Reilly and Brendan O'Dea for most of these new features

20 years agoAdd -d detach option
fred_nerk [Mon, 24 May 2004 04:42:50 +0000 (04:42 +0000)]
Add -d detach option

20 years agoAdd -d detach option
David Parrish [Mon, 24 May 2004 04:42:50 +0000 (04:42 +0000)]
Add -d detach option

20 years agoFoo
fred_nerk [Mon, 24 May 2004 04:33:35 +0000 (04:33 +0000)]
Foo

20 years agoFoo
David Parrish [Mon, 24 May 2004 04:33:35 +0000 (04:33 +0000)]
Foo

20 years agoVersion 1.2.0
fred_nerk [Mon, 24 May 2004 04:33:31 +0000 (04:33 +0000)]
Version 1.2.0

20 years agoVersion 1.2.0
David Parrish [Mon, 24 May 2004 04:33:31 +0000 (04:33 +0000)]
Version 1.2.0

20 years agoOptimisations
fred_nerk [Mon, 24 May 2004 04:29:38 +0000 (04:29 +0000)]
Optimisations

20 years agoOptimisations
David Parrish [Mon, 24 May 2004 04:29:38 +0000 (04:29 +0000)]
Optimisations

20 years agoCheck return code when throttling users
fred_nerk [Mon, 24 May 2004 04:28:41 +0000 (04:28 +0000)]
Check return code when throttling users

20 years agoCheck return code when throttling users
David Parrish [Mon, 24 May 2004 04:28:41 +0000 (04:28 +0000)]
Check return code when throttling users

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
fred_nerk [Mon, 24 May 2004 04:26:01 +0000 (04:26 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests
Remove per-packet plugin hooks (they are slow)

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
David Parrish [Mon, 24 May 2004 04:26:01 +0000 (04:26 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests
Remove per-packet plugin hooks (they are slow)

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
fred_nerk [Mon, 24 May 2004 04:24:41 +0000 (04:24 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
David Parrish [Mon, 24 May 2004 04:24:41 +0000 (04:24 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests

20 years agoAdd log_backtrace
fred_nerk [Mon, 24 May 2004 04:24:06 +0000 (04:24 +0000)]
Add log_backtrace
Use multiple radius sockets to allow more concurrent authentication requests
Fix minimum length of IP packets
Add support for reading more than one packet per fd in each processing loop
Add variable cleanup_interval for changing cleanup interval
Bump version to 1.2.0

20 years agoAdd log_backtrace
David Parrish [Mon, 24 May 2004 04:24:06 +0000 (04:24 +0000)]
Add log_backtrace
Use multiple radius sockets to allow more concurrent authentication requests
Fix minimum length of IP packets
Add support for reading more than one packet per fd in each processing loop
Add variable cleanup_interval for changing cleanup interval
Bump version to 1.2.0

20 years ago- Use multiple radius sockets to allow more concurrent authentication requests
fred_nerk [Mon, 24 May 2004 04:20:28 +0000 (04:20 +0000)]
- Use multiple radius sockets to allow more concurrent authentication requests
- Add gcc __attribute__ to logging functions
- Fix warnings shown by __attribute__
- Make sure regular cleanup happens regularly under high load
- Add variable cleanup_interval for changing cleanup interval
- Add support for reading more than one packet per fd in each processing loop
- This is configurable with the multi_read_count variable
- Remove segv handler so core dumps can happen
- Use nonblocking sockets
- Increase tun queue length
- Fix minimum length of IP packets
- Remove per-packet plugin hooks (they are slow)
- Don't drop session if no free RADIUS
- Don't expire more than 1000 sessions per cleanup interval
- Remove -a and -c command-line options. They don't work anyway
- Don't require file: in log_filename

20 years ago- Use multiple radius sockets to allow more concurrent authentication requests
David Parrish [Mon, 24 May 2004 04:20:28 +0000 (04:20 +0000)]
- Use multiple radius sockets to allow more concurrent authentication requests
- Add gcc __attribute__ to logging functions
- Fix warnings shown by __attribute__
- Make sure regular cleanup happens regularly under high load
- Add variable cleanup_interval for changing cleanup interval
- Add support for reading more than one packet per fd in each processing loop
- This is configurable with the multi_read_count variable
- Remove segv handler so core dumps can happen
- Use nonblocking sockets
- Increase tun queue length
- Fix minimum length of IP packets
- Remove per-packet plugin hooks (they are slow)
- Don't drop session if no free RADIUS
- Don't expire more than 1000 sessions per cleanup interval
- Remove -a and -c command-line options. They don't work anyway
- Don't require file: in log_filename

20 years agoFix SEGFAULT
fred_nerk [Mon, 24 May 2004 04:18:23 +0000 (04:18 +0000)]
Fix SEGFAULT

20 years agoFix SEGFAULT
David Parrish [Mon, 24 May 2004 04:18:23 +0000 (04:18 +0000)]
Fix SEGFAULT

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
fred_nerk [Mon, 24 May 2004 04:13:06 +0000 (04:13 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests

20 years agoUse multiple radius sockets to allow more concurrent authentication requests
David Parrish [Mon, 24 May 2004 04:13:06 +0000 (04:13 +0000)]
Use multiple radius sockets to allow more concurrent authentication requests

20 years agoFix logging parameter errors
fred_nerk [Mon, 24 May 2004 04:12:48 +0000 (04:12 +0000)]
Fix logging parameter errors

20 years agoFix logging parameter errors
David Parrish [Mon, 24 May 2004 04:12:48 +0000 (04:12 +0000)]
Fix logging parameter errors

20 years agoAdd gcc __attribute__ to logging functions
fred_nerk [Mon, 24 May 2004 04:12:34 +0000 (04:12 +0000)]
Add gcc __attribute__ to logging functions

20 years agoAdd gcc __attribute__ to logging functions
David Parrish [Mon, 24 May 2004 04:12:34 +0000 (04:12 +0000)]
Add gcc __attribute__ to logging functions

20 years agoAdd username parameter to "show users" command
fred_nerk [Mon, 24 May 2004 04:12:02 +0000 (04:12 +0000)]
Add username parameter to "show users" command
Fix counting tunnel rx errors as tunnel tx errors
Add "show throttle" command

20 years agoAdd username parameter to "show users" command
David Parrish [Mon, 24 May 2004 04:12:02 +0000 (04:12 +0000)]
Add username parameter to "show users" command
Fix counting tunnel rx errors as tunnel tx errors
Add "show throttle" command

20 years agoInit data before trying to use it
fred_nerk [Mon, 10 May 2004 00:39:34 +0000 (00:39 +0000)]
Init data before trying to use it

20 years agoInit data before trying to use it
David Parrish [Mon, 10 May 2004 00:39:34 +0000 (00:39 +0000)]
Init data before trying to use it

20 years agoSmall typo fixes from Paul Lampron
fred_nerk [Fri, 16 Apr 2004 02:33:32 +0000 (02:33 +0000)]
Small typo fixes from Paul Lampron

20 years agoSmall typo fixes from Paul Lampron
David Parrish [Fri, 16 Apr 2004 02:33:32 +0000 (02:33 +0000)]
Small typo fixes from Paul Lampron

20 years agoRelease 1.1.1 release_1_1_1
fred_nerk [Mon, 5 Apr 2004 05:35:31 +0000 (05:35 +0000)]
Release 1.1.1

20 years agoRelease 1.1.1
David Parrish [Mon, 5 Apr 2004 05:35:31 +0000 (05:35 +0000)]
Release 1.1.1

20 years agoDon't use default 1:1
fred_nerk [Mon, 5 Apr 2004 05:29:13 +0000 (05:29 +0000)]
Don't use default 1:1

20 years agoDon't use default 1:1
David Parrish [Mon, 5 Apr 2004 05:29:13 +0000 (05:29 +0000)]
Don't use default 1:1

20 years agoAdd manual. It's very long
fred_nerk [Wed, 24 Mar 2004 07:15:56 +0000 (07:15 +0000)]
Add manual. It's very long

20 years agoAdd manual. It's very long
David Parrish [Wed, 24 Mar 2004 07:15:56 +0000 (07:15 +0000)]
Add manual. It's very long

20 years agoAdded autosnoop and autothrottle modules
fred_nerk [Wed, 24 Mar 2004 04:56:51 +0000 (04:56 +0000)]
Added autosnoop and autothrottle modules

20 years agoAdded autosnoop and autothrottle modules
David Parrish [Wed, 24 Mar 2004 04:56:51 +0000 (04:56 +0000)]
Added autosnoop and autothrottle modules

20 years agoFix makefile error
fred_nerk [Mon, 22 Mar 2004 05:26:17 +0000 (05:26 +0000)]
Fix makefile error

20 years agoFix makefile error
David Parrish [Mon, 22 Mar 2004 05:26:17 +0000 (05:26 +0000)]
Fix makefile error

20 years agoDon't mention configure, it's not used anymore
fred_nerk [Tue, 9 Mar 2004 00:31:49 +0000 (00:31 +0000)]
Don't mention configure, it's not used anymore

20 years agoDon't mention configure, it's not used anymore
David Parrish [Tue, 9 Mar 2004 00:31:49 +0000 (00:31 +0000)]
Don't mention configure, it's not used anymore

20 years ago. release_1_1_0
fred_nerk [Fri, 5 Mar 2004 00:22:45 +0000 (00:22 +0000)]
.

20 years ago.
David Parrish [Fri, 5 Mar 2004 00:22:45 +0000 (00:22 +0000)]
.

20 years agoDon't use configure it's a waste of time
fred_nerk [Fri, 5 Mar 2004 00:22:06 +0000 (00:22 +0000)]
Don't use configure it's a waste of time

20 years agoDon't use configure it's a waste of time
David Parrish [Fri, 5 Mar 2004 00:22:06 +0000 (00:22 +0000)]
Don't use configure it's a waste of time

20 years agoNew config file format
fred_nerk [Fri, 5 Mar 2004 00:21:50 +0000 (00:21 +0000)]
New config file format

20 years agoNew config file format
David Parrish [Fri, 5 Mar 2004 00:21:50 +0000 (00:21 +0000)]
New config file format

20 years ago* Fri Mar 5 2004 David Parrish <david@dparrish.com> 1.1.0
fred_nerk [Fri, 5 Mar 2004 00:09:03 +0000 (00:09 +0000)]
* Fri Mar 5 2004 David Parrish <david@dparrish.com> 1.1.0
- Change all strcpy() calls to strncpy() to avoid buffer overflow potential
- Add ICMP host unreachable support
- Logging to syslog if log_file = "syslog:facility"
- Now requires libcli 1.5
- All configuration moves to a config structure
- Ability to modify and write config on the fly through command-line interface
- Config file support is removed, and now handled by the cli
- Show hostname in cli prompt
- Keep current state type for tunnels
- Add uptime command do CLI, which also shows real-time bandwidth utilisation
- Add goodbye command to cluster master, which forces droppping a slave
- Cache IP address allocation, so that reconnecting users get the same address
- Fix tunnel resend timeouts, so that dead tunnels will be cleaned up
- Allocate tunnels and radius without using a linked list which had issues
- Fix some off-by-one errors in tunnel and session and radius arrays
- Save and reload ip address pool when dieing
- Check version and size of reloaded data when restarting
- Remove plugin_config support
- Remove old support for TBF which didn't work anyway. HTB is required to do throttling now.
- Add COPYING and Changes files

20 years ago* Fri Mar 5 2004 David Parrish <david@dparrish.com> 1.1.0
David Parrish [Fri, 5 Mar 2004 00:09:03 +0000 (00:09 +0000)]
* Fri Mar 5 2004 David Parrish <david@dparrish.com> 1.1.0
- Change all strcpy() calls to strncpy() to avoid buffer overflow potential
- Add ICMP host unreachable support
- Logging to syslog if log_file = "syslog:facility"
- Now requires libcli 1.5
- All configuration moves to a config structure
- Ability to modify and write config on the fly through command-line interface
- Config file support is removed, and now handled by the cli
- Show hostname in cli prompt
- Keep current state type for tunnels
- Add uptime command do CLI, which also shows real-time bandwidth utilisation
- Add goodbye command to cluster master, which forces droppping a slave
- Cache IP address allocation, so that reconnecting users get the same address
- Fix tunnel resend timeouts, so that dead tunnels will be cleaned up
- Allocate tunnels and radius without using a linked list which had issues
- Fix some off-by-one errors in tunnel and session and radius arrays
- Save and reload ip address pool when dieing
- Check version and size of reloaded data when restarting
- Remove plugin_config support
- Remove old support for TBF which didn't work anyway. HTB is required to do throttling now.
- Add COPYING and Changes files

20 years agoAdd license
fred_nerk [Wed, 25 Feb 2004 02:44:41 +0000 (02:44 +0000)]
Add license

20 years agoAdd license
David Parrish [Wed, 25 Feb 2004 02:44:41 +0000 (02:44 +0000)]
Add license

20 years agoInitial revision
fred_nerk [Tue, 16 Dec 2003 07:07:39 +0000 (07:07 +0000)]
Initial revision

20 years agoInitial revision
David Parrish [Tue, 16 Dec 2003 07:07:39 +0000 (07:07 +0000)]
Initial revision