* Demise of AX.25 raw sockets
@ 2003-07-06 15:05 Steven Whitehouse
2003-07-06 18:01 ` Tomi Manninen
2003-07-07 0:00 ` Edson Pereira
0 siblings, 2 replies; 7+ messages in thread
From: Steven Whitehouse @ 2003-07-06 15:05 UTC (permalink / raw)
To: linux-hams
Hi,
As part of the work currently going on to improve the AX.25 code in
2.5 kernels I'm proposing that the support for AX.25 raw sockets
should be removed. So if you disagree, please say now :-)
There are a number of reasons why I don't think that we need support
for raw sockets in AX.25:
- No application that I've seen actually uses them (of course someone on
this list might prove me wrong on this point!)
- They are broken and haven't worked for some time and I've not seen any
bug reports posted recently (again leading me to think nothing uses them).
- The PF_PACKET family would seem to be just as good an option for
application writers.
- Its unclear exactly what the rules were for which packets should
be delivered to raw sockets.
So I think they are obsolete, but maybe someone knows better? If I don't
hear negative responses in the next few days I'll send the attached patch
to davem for inclusion in the next 2.5 kernel,
Steve.
------------------------------------------------------------------------------
diff -Nru linux-2.5.74/include/net/ax25.h linux/include/net/ax25.h
--- linux-2.5.74/include/net/ax25.h Sun Jun 15 03:58:07 2003
+++ linux/include/net/ax25.h Sun Jul 6 15:48:20 2003
@@ -211,8 +211,6 @@
struct sock *ax25_find_listener(ax25_address *, int, struct net_device *, int);
struct sock *ax25_get_socket(ax25_address *, ax25_address *, int);
extern ax25_cb *ax25_find_cb(ax25_address *, ax25_address *, ax25_digi *, struct net_device *);
-extern struct sock *ax25_addr_match(ax25_address *);
-extern void ax25_send_to_raw(struct sock *, struct sk_buff *, int);
extern void ax25_destroy_socket(ax25_cb *);
extern ax25_cb *ax25_create_cb(void);
extern void ax25_fillin_cb(ax25_cb *, ax25_dev *);
diff -Nru linux-2.5.74/net/ax25/TODO linux/net/ax25/TODO
--- linux-2.5.74/net/ax25/TODO Sat Apr 19 19:48:56 2003
+++ linux/net/ax25/TODO Sun Jul 6 15:46:06 2003
@@ -18,7 +18,4 @@
Implement proper socket locking in netrom and rose.
-Check socket locking when ax25_rcv is sending to raw sockets. In particular
-ax25_send_to_raw() seems fishy. Heck - ax25_rcv is fishy.
-
Handle XID and TEST frames properly.
diff -Nru linux-2.5.74/net/ax25/af_ax25.c linux/net/ax25/af_ax25.c
--- linux-2.5.74/net/ax25/af_ax25.c Sun Jul 6 15:30:49 2003
+++ linux/net/ax25/af_ax25.c Sun Jul 6 15:47:08 2003
@@ -251,45 +251,6 @@
}
/*
- * Look for any matching address - RAW sockets can bind to arbitrary names
- */
-struct sock *ax25_addr_match(ax25_address *addr)
-{
- struct sock *sk = NULL;
- ax25_cb *s;
-
- spin_lock_bh(&ax25_list_lock);
- for (s = ax25_list; s != NULL; s = s->next) {
- if (s->sk != NULL && ax25cmp(&s->source_addr, addr) == 0 &&
- s->sk->sk_type == SOCK_RAW) {
- sk = s->sk;
- lock_sock(sk);
- break;
- }
- }
- spin_unlock_bh(&ax25_list_lock);
-
- return sk;
-}
-
-void ax25_send_to_raw(struct sock *sk, struct sk_buff *skb, int proto)
-{
- struct sk_buff *copy;
- struct hlist_node *node;
-
- sk_for_each_from(sk, node)
- if (sk->sk_type == SOCK_RAW &&
- sk->sk_protocol == proto &&
- atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) {
- if ((copy = skb_clone(skb, GFP_ATOMIC)) == NULL)
- return;
-
- if (sock_queue_rcv_skb(sk, copy) != 0)
- kfree_skb(copy);
- }
-}
-
-/*
* Deferred destroy.
*/
void ax25_destroy_socket(ax25_cb *);
@@ -830,8 +791,6 @@
}
break;
- case SOCK_RAW:
- break;
default:
return -ESOCKTNOSUPPORT;
}
diff -Nru linux-2.5.74/net/ax25/ax25_in.c linux/net/ax25/ax25_in.c
--- linux-2.5.74/net/ax25/ax25_in.c Sun Jun 15 03:58:07 2003
+++ linux/net/ax25/ax25_in.c Sun Jul 6 15:47:59 2003
@@ -193,7 +193,7 @@
{
ax25_address src, dest, *next_digi = NULL;
int type = 0, mine = 0, dama;
- struct sock *make, *sk, *raw;
+ struct sock *make, *sk;
ax25_digi dp, reverse_dp;
ax25_cb *ax25;
ax25_dev *ax25_dev;
@@ -240,11 +240,6 @@
/* UI frame - bypass LAPB processing */
if ((*skb->data & ~0x10) == AX25_UI && dp.lastrepeat + 1 == dp.ndigi) {
skb->h.raw = skb->data + 2; /* skip control and pid */
-
- if ((raw = ax25_addr_match(&dest)) != NULL) {
- ax25_send_to_raw(raw, skb, skb->data[1]);
- release_sock(raw);
- }
if (!mine && ax25cmp(&dest, (ax25_address *)dev->broadcast) != 0) {
kfree_skb(skb);
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: Demise of AX.25 raw sockets
2003-07-06 15:05 Demise of AX.25 raw sockets Steven Whitehouse
@ 2003-07-06 18:01 ` Tomi Manninen
2003-07-07 7:45 ` Steven Whitehouse
2003-07-07 0:00 ` Edson Pereira
1 sibling, 1 reply; 7+ messages in thread
From: Tomi Manninen @ 2003-07-06 18:01 UTC (permalink / raw)
To: Steve Whitehouse; +Cc: linux-hams
On Sun, 2003-07-06 at 18:05, Steven Whitehouse wrote:
> - No application that I've seen actually uses them (of course someone on
> this list might prove me wrong on this point!)
About three years ago I rewrote netromd to use a PF_AX25, SOCK_RAW,
NETROM_PID socket for receiving NODES broadcasts. The main reason
for the rewrite was to support digipeated broadcasts. Raw socket was
an easy way of getting the digi path.
Unfortunately at that time something was broken in the kernel
(ax25_getname IIRC) so it only worked with a patched kernel.
Also there wasn't much interest in it so it was all forgotten.
I don't know of any other programs using raw AX.25 sockets.
> - They are broken and haven't worked for some time and I've not seen any
> bug reports posted recently (again leading me to think nothing uses them).
How exactly is it broken?
> - The PF_PACKET family would seem to be just as good an option for
> application writers.
Most applications use PF_PACKET but there is the problem that it needs
elevated privileges. Granted, using a raw socket and binding it to
anything else than your own callsign also needs privileges so this
may not be an issue.
Anyway using PF_PACKET for just about everything like it is currently
is in my opinion ugly so I would prefer maintaining raw socket support
if possible.
> - Its unclear exactly what the rules were for which packets should
> be delivered to raw sockets.
--
Tomi Manninen Internet: oh2bns@sral.fi
OH2BNS AX.25: oh2bns@oh2rbi.fin.eu
KP20ME04 Amprnet: oh2bns@oh2rbi.ampr.org
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Demise of AX.25 raw sockets
2003-07-06 18:01 ` Tomi Manninen
@ 2003-07-07 7:45 ` Steven Whitehouse
0 siblings, 0 replies; 7+ messages in thread
From: Steven Whitehouse @ 2003-07-07 7:45 UTC (permalink / raw)
To: Tomi Manninen; +Cc: linux-hams
Hi,
>
> On Sun, 2003-07-06 at 18:05, Steven Whitehouse wrote:
>
> > - No application that I've seen actually uses them (of course someone on
> > this list might prove me wrong on this point!)
>
> About three years ago I rewrote netromd to use a PF_AX25, SOCK_RAW,
> NETROM_PID socket for receiving NODES broadcasts. The main reason
> for the rewrite was to support digipeated broadcasts. Raw socket was
> an easy way of getting the digi path.
>
> Unfortunately at that time something was broken in the kernel
> (ax25_getname IIRC) so it only worked with a patched kernel.
> Also there wasn't much interest in it so it was all forgotten.
>
> I don't know of any other programs using raw AX.25 sockets.
>
Ok. Thats not too much of a problem it seems but another use has now also
been posted on the list so I'll investigate that too.
> > - They are broken and haven't worked for some time and I've not seen any
> > bug reports posted recently (again leading me to think nothing uses them).
>
> How exactly is it broken?
>
If you look at the packet delivery code and ignore the fact that the
locking is broken for the moment then it looks rather odd since it does:
1. Search for first socket which is of type raw and has a matching
address. If found then do:
2. Deliver to all raw sockets which come after the first one and have
enough buffer space left (i.e. there is no match on the address) and
also match on the protocol field.
So whether or not you see a packet not destined for the address you are
listening for depends on the "random" position of your socket in the AX.25
sockets list. Also note that the socket found in step 1 might not actually
get the packet sent to it in the case that it matches on address but not
on protocol although it will still trigger step 2. Confused? I hoped that
if applications existed (which it appears they do) it might clarify whats
supposed to happen :-)
> > - The PF_PACKET family would seem to be just as good an option for
> > application writers.
>
> Most applications use PF_PACKET but there is the problem that it needs
> elevated privileges. Granted, using a raw socket and binding it to
> anything else than your own callsign also needs privileges so this
> may not be an issue.
>
> Anyway using PF_PACKET for just about everything like it is currently
> is in my opinion ugly so I would prefer maintaining raw socket support
> if possible.
>
Ok. Well it looks now like there are uses for it, so I'll fix it rather
than removing it - I just didn't want to spend time on it if nobody was
using it,
Steve.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Demise of AX.25 raw sockets
2003-07-06 15:05 Demise of AX.25 raw sockets Steven Whitehouse
2003-07-06 18:01 ` Tomi Manninen
@ 2003-07-07 0:00 ` Edson Pereira
2003-07-07 7:46 ` Steven Whitehouse
1 sibling, 1 reply; 7+ messages in thread
From: Edson Pereira @ 2003-07-07 0:00 UTC (permalink / raw)
To: Steve Whitehouse; +Cc: linux-hams
The PACSAT PB&PG programs uses raw sockets.
/* open up the AX25 datagram socket to send file requests */
if ((s_file = socket(PF_AX25, SOCK_RAW, PID_FILE)) == -1)
{
perror("socket");
return(1);
}
/* open up the AX25 datagram socket to send directory requests */
if ((s_directory = socket(PF_AX25, SOCK_RAW, PID_DIRECTORY)) ==
-1)
{
perror("socket");
return(1);
}
-- Edson, 7n4ncl
On Sun, 6 Jul 2003, Steven Whitehouse wrote:
> Hi,
>
> As part of the work currently going on to improve the AX.25 code in
> 2.5 kernels I'm proposing that the support for AX.25 raw sockets
> should be removed. So if you disagree, please say now :-)
>
> There are a number of reasons why I don't think that we need support
> for raw sockets in AX.25:
>
> - No application that I've seen actually uses them (of course someone on
> this list might prove me wrong on this point!)
> - They are broken and haven't worked for some time and I've not seen any
> bug reports posted recently (again leading me to think nothing uses them).
> - The PF_PACKET family would seem to be just as good an option for
> application writers.
> - Its unclear exactly what the rules were for which packets should
> be delivered to raw sockets.
>
> So I think they are obsolete, but maybe someone knows better? If I don't
> hear negative responses in the next few days I'll send the attached patch
> to davem for inclusion in the next 2.5 kernel,
>
> Steve.
>
> ------------------------------------------------------------------------------
>
> diff -Nru linux-2.5.74/include/net/ax25.h linux/include/net/ax25.h
> --- linux-2.5.74/include/net/ax25.h Sun Jun 15 03:58:07 2003
> +++ linux/include/net/ax25.h Sun Jul 6 15:48:20 2003
> @@ -211,8 +211,6 @@
> struct sock *ax25_find_listener(ax25_address *, int, struct net_device *, int);
> struct sock *ax25_get_socket(ax25_address *, ax25_address *, int);
> extern ax25_cb *ax25_find_cb(ax25_address *, ax25_address *, ax25_digi *, struct net_device *);
> -extern struct sock *ax25_addr_match(ax25_address *);
> -extern void ax25_send_to_raw(struct sock *, struct sk_buff *, int);
> extern void ax25_destroy_socket(ax25_cb *);
> extern ax25_cb *ax25_create_cb(void);
> extern void ax25_fillin_cb(ax25_cb *, ax25_dev *);
> diff -Nru linux-2.5.74/net/ax25/TODO linux/net/ax25/TODO
> --- linux-2.5.74/net/ax25/TODO Sat Apr 19 19:48:56 2003
> +++ linux/net/ax25/TODO Sun Jul 6 15:46:06 2003
> @@ -18,7 +18,4 @@
>
> Implement proper socket locking in netrom and rose.
>
> -Check socket locking when ax25_rcv is sending to raw sockets. In particular
> -ax25_send_to_raw() seems fishy. Heck - ax25_rcv is fishy.
> -
> Handle XID and TEST frames properly.
> diff -Nru linux-2.5.74/net/ax25/af_ax25.c linux/net/ax25/af_ax25.c
> --- linux-2.5.74/net/ax25/af_ax25.c Sun Jul 6 15:30:49 2003
> +++ linux/net/ax25/af_ax25.c Sun Jul 6 15:47:08 2003
> @@ -251,45 +251,6 @@
> }
>
> /*
> - * Look for any matching address - RAW sockets can bind to arbitrary names
> - */
> -struct sock *ax25_addr_match(ax25_address *addr)
> -{
> - struct sock *sk = NULL;
> - ax25_cb *s;
> -
> - spin_lock_bh(&ax25_list_lock);
> - for (s = ax25_list; s != NULL; s = s->next) {
> - if (s->sk != NULL && ax25cmp(&s->source_addr, addr) == 0 &&
> - s->sk->sk_type == SOCK_RAW) {
> - sk = s->sk;
> - lock_sock(sk);
> - break;
> - }
> - }
> - spin_unlock_bh(&ax25_list_lock);
> -
> - return sk;
> -}
> -
> -void ax25_send_to_raw(struct sock *sk, struct sk_buff *skb, int proto)
> -{
> - struct sk_buff *copy;
> - struct hlist_node *node;
> -
> - sk_for_each_from(sk, node)
> - if (sk->sk_type == SOCK_RAW &&
> - sk->sk_protocol == proto &&
> - atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) {
> - if ((copy = skb_clone(skb, GFP_ATOMIC)) == NULL)
> - return;
> -
> - if (sock_queue_rcv_skb(sk, copy) != 0)
> - kfree_skb(copy);
> - }
> -}
> -
> -/*
> * Deferred destroy.
> */
> void ax25_destroy_socket(ax25_cb *);
> @@ -830,8 +791,6 @@
> }
> break;
>
> - case SOCK_RAW:
> - break;
> default:
> return -ESOCKTNOSUPPORT;
> }
> diff -Nru linux-2.5.74/net/ax25/ax25_in.c linux/net/ax25/ax25_in.c
> --- linux-2.5.74/net/ax25/ax25_in.c Sun Jun 15 03:58:07 2003
> +++ linux/net/ax25/ax25_in.c Sun Jul 6 15:47:59 2003
> @@ -193,7 +193,7 @@
> {
> ax25_address src, dest, *next_digi = NULL;
> int type = 0, mine = 0, dama;
> - struct sock *make, *sk, *raw;
> + struct sock *make, *sk;
> ax25_digi dp, reverse_dp;
> ax25_cb *ax25;
> ax25_dev *ax25_dev;
> @@ -240,11 +240,6 @@
> /* UI frame - bypass LAPB processing */
> if ((*skb->data & ~0x10) == AX25_UI && dp.lastrepeat + 1 == dp.ndigi) {
> skb->h.raw = skb->data + 2; /* skip control and pid */
> -
> - if ((raw = ax25_addr_match(&dest)) != NULL) {
> - ax25_send_to_raw(raw, skb, skb->data[1]);
> - release_sock(raw);
> - }
>
> if (!mine && ax25cmp(&dest, (ax25_address *)dev->broadcast) != 0) {
> kfree_skb(skb);
> -
> To unsubscribe from this list: send the line "unsubscribe linux-hams" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: Demise of AX.25 raw sockets
2003-07-07 0:00 ` Edson Pereira
@ 2003-07-07 7:46 ` Steven Whitehouse
2003-08-27 20:21 ` Bent Bagger
0 siblings, 1 reply; 7+ messages in thread
From: Steven Whitehouse @ 2003-07-07 7:46 UTC (permalink / raw)
To: Edson Pereira; +Cc: linux-hams
Hi,
To save me searching the archives can you point to a URL of the code? I'd
like to see exactly what this code expects raw sockets to do,
Steve.
>
>
> The PACSAT PB&PG programs uses raw sockets.
>
> /* open up the AX25 datagram socket to send file requests */
> if ((s_file = socket(PF_AX25, SOCK_RAW, PID_FILE)) == -1)
> {
> perror("socket");
> return(1);
> }
>
> /* open up the AX25 datagram socket to send directory requests */
> if ((s_directory = socket(PF_AX25, SOCK_RAW, PID_DIRECTORY)) ==
> -1)
> {
> perror("socket");
> return(1);
> }
>
> -- Edson, 7n4ncl
>
> On Sun, 6 Jul 2003, Steven Whitehouse wrote:
>
> > Hi,
> >
> > As part of the work currently going on to improve the AX.25 code in
> > 2.5 kernels I'm proposing that the support for AX.25 raw sockets
> > should be removed. So if you disagree, please say now :-)
> >
> > There are a number of reasons why I don't think that we need support
> > for raw sockets in AX.25:
> >
> > - No application that I've seen actually uses them (of course someone on
> > this list might prove me wrong on this point!)
> > - They are broken and haven't worked for some time and I've not seen any
> > bug reports posted recently (again leading me to think nothing uses them).
> > - The PF_PACKET family would seem to be just as good an option for
> > application writers.
> > - Its unclear exactly what the rules were for which packets should
> > be delivered to raw sockets.
> >
> > So I think they are obsolete, but maybe someone knows better? If I don't
> > hear negative responses in the next few days I'll send the attached patch
> > to davem for inclusion in the next 2.5 kernel,
> >
> > Steve.
> >
> > ------------------------------------------------------------------------------
> >
> > diff -Nru linux-2.5.74/include/net/ax25.h linux/include/net/ax25.h
> > --- linux-2.5.74/include/net/ax25.h Sun Jun 15 03:58:07 2003
> > +++ linux/include/net/ax25.h Sun Jul 6 15:48:20 2003
> > @@ -211,8 +211,6 @@
> > struct sock *ax25_find_listener(ax25_address *, int, struct net_device *, int);
> > struct sock *ax25_get_socket(ax25_address *, ax25_address *, int);
> > extern ax25_cb *ax25_find_cb(ax25_address *, ax25_address *, ax25_digi *, struct net_device *);
> > -extern struct sock *ax25_addr_match(ax25_address *);
> > -extern void ax25_send_to_raw(struct sock *, struct sk_buff *, int);
> > extern void ax25_destroy_socket(ax25_cb *);
> > extern ax25_cb *ax25_create_cb(void);
> > extern void ax25_fillin_cb(ax25_cb *, ax25_dev *);
> > diff -Nru linux-2.5.74/net/ax25/TODO linux/net/ax25/TODO
> > --- linux-2.5.74/net/ax25/TODO Sat Apr 19 19:48:56 2003
> > +++ linux/net/ax25/TODO Sun Jul 6 15:46:06 2003
> > @@ -18,7 +18,4 @@
> >
> > Implement proper socket locking in netrom and rose.
> >
> > -Check socket locking when ax25_rcv is sending to raw sockets. In particular
> > -ax25_send_to_raw() seems fishy. Heck - ax25_rcv is fishy.
> > -
> > Handle XID and TEST frames properly.
> > diff -Nru linux-2.5.74/net/ax25/af_ax25.c linux/net/ax25/af_ax25.c
> > --- linux-2.5.74/net/ax25/af_ax25.c Sun Jul 6 15:30:49 2003
> > +++ linux/net/ax25/af_ax25.c Sun Jul 6 15:47:08 2003
> > @@ -251,45 +251,6 @@
> > }
> >
> > /*
> > - * Look for any matching address - RAW sockets can bind to arbitrary names
> > - */
> > -struct sock *ax25_addr_match(ax25_address *addr)
> > -{
> > - struct sock *sk = NULL;
> > - ax25_cb *s;
> > -
> > - spin_lock_bh(&ax25_list_lock);
> > - for (s = ax25_list; s != NULL; s = s->next) {
> > - if (s->sk != NULL && ax25cmp(&s->source_addr, addr) == 0 &&
> > - s->sk->sk_type == SOCK_RAW) {
> > - sk = s->sk;
> > - lock_sock(sk);
> > - break;
> > - }
> > - }
> > - spin_unlock_bh(&ax25_list_lock);
> > -
> > - return sk;
> > -}
> > -
> > -void ax25_send_to_raw(struct sock *sk, struct sk_buff *skb, int proto)
> > -{
> > - struct sk_buff *copy;
> > - struct hlist_node *node;
> > -
> > - sk_for_each_from(sk, node)
> > - if (sk->sk_type == SOCK_RAW &&
> > - sk->sk_protocol == proto &&
> > - atomic_read(&sk->sk_rmem_alloc) <= sk->sk_rcvbuf) {
> > - if ((copy = skb_clone(skb, GFP_ATOMIC)) == NULL)
> > - return;
> > -
> > - if (sock_queue_rcv_skb(sk, copy) != 0)
> > - kfree_skb(copy);
> > - }
> > -}
> > -
> > -/*
> > * Deferred destroy.
> > */
> > void ax25_destroy_socket(ax25_cb *);
> > @@ -830,8 +791,6 @@
> > }
> > break;
> >
> > - case SOCK_RAW:
> > - break;
> > default:
> > return -ESOCKTNOSUPPORT;
> > }
> > diff -Nru linux-2.5.74/net/ax25/ax25_in.c linux/net/ax25/ax25_in.c
> > --- linux-2.5.74/net/ax25/ax25_in.c Sun Jun 15 03:58:07 2003
> > +++ linux/net/ax25/ax25_in.c Sun Jul 6 15:47:59 2003
> > @@ -193,7 +193,7 @@
> > {
> > ax25_address src, dest, *next_digi = NULL;
> > int type = 0, mine = 0, dama;
> > - struct sock *make, *sk, *raw;
> > + struct sock *make, *sk;
> > ax25_digi dp, reverse_dp;
> > ax25_cb *ax25;
> > ax25_dev *ax25_dev;
> > @@ -240,11 +240,6 @@
> > /* UI frame - bypass LAPB processing */
> > if ((*skb->data & ~0x10) == AX25_UI && dp.lastrepeat + 1 == dp.ndigi) {
> > skb->h.raw = skb->data + 2; /* skip control and pid */
> > -
> > - if ((raw = ax25_addr_match(&dest)) != NULL) {
> > - ax25_send_to_raw(raw, skb, skb->data[1]);
> > - release_sock(raw);
> > - }
> >
> > if (!mine && ax25cmp(&dest, (ax25_address *)dev->broadcast) != 0) {
> > kfree_skb(skb);
> > -
> > To unsubscribe from this list: send the line "unsubscribe linux-hams" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-hams" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2003-09-03 10:46 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-07-06 15:05 Demise of AX.25 raw sockets Steven Whitehouse
2003-07-06 18:01 ` Tomi Manninen
2003-07-07 7:45 ` Steven Whitehouse
2003-07-07 0:00 ` Edson Pereira
2003-07-07 7:46 ` Steven Whitehouse
2003-08-27 20:21 ` Bent Bagger
2003-09-03 10:46 ` Steven Whitehouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox