|
VK7AX > LINHAM 12.07.08 03:22l 127 Lines 3859 Bytes #999 (0) @ WW
BID : VK7AX-1207WW
Read: GUEST
Subj: ATCH] [AX25] unsigned long timers in ax25_info_struct_new
Path: IZ3LSV<IK2XDE<DB0RES<DK0WUE<7M3TJZ<XE1FH<ON0BEL<VK7AX
Sent: 080712/0227Z @:VK7AX.#ULV.TAS.AUS.OC #:48946 [Ulverstone] FBB7.00g $:VK7A
From: VK7AX@VK7AX.#ULV.TAS.AUS.OC
To : LINHAM@WW
From: Bernard Pidoux <bpidoux(AT)free.fr>
Date: Fri, 11 Jul 2008 20:30:21 +0200
To: "David S. Miller" <davem(AT)davemloft.net>
CC: Ralf Baechle DL5RB <ralf(AT)linux-mips.org>,
Linux Netdev List <netdev(AT)vger.kernel.org>,
"linux-hams" <linux-hams(AT)vger.kernel.org>
A new structure is proposed with unsigned long types
for AX25 timers, in order to be compliant with kernel 2.6.
These timers are listed in /proc/net/ax25/
AX25 info can be copied into user space via ioctl call using
a new argument SIOCAX25GETINFONEW.
A KERN_INFO warning is printed if ioctl is called using
deprecated structure and argument.
Signed-off-by: Bernard Pidoux <f6bvp(AT)amsat.org>
---
include/linux/ax25.h | 16 +++++++++++++++-
net/ax25/af_ax25.c | 16 +++++++++++-----
2 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/include/linux/ax25.h b/include/linux/ax25.h
index 56c11f0..5b4ee2f 100644
--- a/include/linux/ax25.h
+++ b/include/linux/ax25.h
(AT)(AT) -36,6 +36,7 (AT)(AT)
#define SIOCAX25DELFWD (SIOCPROTOPRIVATE+11)
#define SIOCAX25DEVCTL (SIOCPROTOPRIVATE+12)
#define SIOCAX25GETINFO (SIOCPROTOPRIVATE+13)
+#define SIOCAX25GETINFONEW (SIOCPROTOPRIVATE+14)
#define AX25_SET_RT_IPMODE 2
(AT)(AT) -94,7 +95,7 (AT)(AT) struct ax25_info_struct_deprecated {
unsigned int state;
unsigned int rcv_q, snd_q;
};
-
+/* deprecated */
struct ax25_info_struct {
unsigned int n2, n2count;
unsigned int t1, t1timer;
(AT)(AT) -108,6 +109,19 (AT)(AT) struct ax25_info_struct {
unsigned int window;
};
+struct ax25_info_struct_new {
+ unsigned int n2, n2count;
+ unsigned long t1, t1timer;
+ unsigned long t2, t2timer;
+ unsigned long t3, t3timer;
+ unsigned long idle, idletimer;
+ unsigned int state;
+ unsigned int rcv_q, snd_q;
+ unsigned int vs, vr, va, vs_max;
+ unsigned int paclen;
+ unsigned int window;
+};
+
struct ax25_fwd_struct {
ax25_address port_from;
ax25_address port_to;
diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
index 2712544..e52c6af 100644
--- a/net/ax25/af_ax25.c
+++ b/net/ax25/af_ax25.c
(AT)(AT) -1769,9 +1769,10 (AT)(AT) static int ax25_ioctl(struct socket *sock,
unsigned int cmd, unsigned long arg)
break;
case SIOCAX25GETINFO:
+ case SIOCAX25GETINFONEW:
case SIOCAX25GETINFOOLD: {
ax25_cb *ax25 = ax25_sk(sk);
- struct ax25_info_struct ax25_info;
+ struct ax25_info_struct_new ax25_info;
ax25_info.t1 = ax25->t1 / HZ;
ax25_info.t2 = ax25->t2 / HZ;
(AT)(AT) -1793,11 +1794,11 (AT)(AT) static int ax25_ioctl(struct socket *sock,
unsigned int cmd, unsigned long arg)
ax25_info.paclen = ax25->paclen;
ax25_info.window = ax25->window;
- /* old structure? */
- if (cmd == SIOCAX25GETINFOOLD) {
+ /* old structure ? */
+ if (cmd != SIOCAX25GETINFONEW) {
static int warned = 0;
if (!warned) {
- printk(KERN_INFO "%s uses old SIOCAX25GETINFO\n",
+ printk(KERN_INFO "%s uses deprecated SIOCAX25GETINFOOLD or SIOCAX25GETINFO\n",
current->comm);
warned=1;
}
(AT)(AT) -1806,8 +1807,13 (AT)(AT) static int ax25_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)
res = -EFAULT;
break;
}
- } else {
+
if (copy_to_user(argp, &ax25_info, sizeof(struct ax25_info_struct))) {
+ res = -EFAULT;
+ break;
+ }
+ } else {
+ if (copy_to_user(argp, &ax25_info, sizeof(struct ax25_info_struct_new))) {
res = -EINVAL;
break;
}
-- 1.5.5 --
***************************************************************
ABOVE IS A CROSS POST TO THE PACKET RADIO NETWORK IN AN EFFORT
TO PROMOTE FURTHER INTEREST IN HAM SOFTWARE USING LINUX
OPERATING SYSTEMS AND PACKET RADIO
Courtesy Tony VK7AX VK7AX(AT)VK7AX.#ULV.TAS.AUS.OC
***************************************************************
Read previous mail | Read next mail
| |