From: Edson Pereira (nwkgjx.omlkcwuy@sasip.hu)
Date: Mon Jul 07 2003 - 03:00:26 EEST
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 rkjlyruy@ppp.cz
> 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 hhgqzu.tfhvptf@mx.dy.fi
More majordomo info at http://vger.kernel.org/majordomo-info.html
This archive was generated by hypermail 2b30 : Mon Jul 07 2003 - 03:00:19 EEST