mirror of
https://github.com/torvalds/linux.git
synced 2024-11-06 12:11:59 +00:00
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [DECNET]: Fix level1 router hello [TCP]: Fix sock_orphan dead lock [ROSE]: Eleminate HZ from ROSE kernel interfaces [NETROM]: Eleminate HZ from NET/ROM kernel interfaces [AX.25]: Eleminate HZ from AX.25 kernel interfaces [ROSE]: Fix routing table locking in rose_remove_neigh. [AX.25]: Move AX.25 symbol exports [HAMRADIO]: Remove remaining SET_MODULE_OWNER calls from hamradio drivers. [AX25, ROSE]: Remove useless SET_MODULE_OWNER calls. [AX.25]: Spelling fix [ROSE]: Remove useless prototype for rose_remove_neigh(). [NETFILTER]: x_tables: don't use __copy_{from,to}_user on unchecked memory in compat layer [NETFILTER]: H.323 helper: Change author's email address [NETFILTER]: NAT: silence unused variable warnings with CONFIG_XFRM=n [NETFILTER]: H.323 helper: fix use of uninitialized data [NETFILTER]: H.323 helper: fix endless loop caused by invalid TPKT len
This commit is contained in:
commit
936ef1d48a
@ -582,7 +582,6 @@ static int __init setup_adapter(int card_base, int type, int n)
|
||||
INIT_WORK(&priv->rx_work, rx_bh, priv);
|
||||
dev->priv = priv;
|
||||
sprintf(dev->name, "dmascc%i", 2 * n + i);
|
||||
SET_MODULE_OWNER(dev);
|
||||
dev->base_addr = card_base;
|
||||
dev->irq = irq;
|
||||
dev->open = scc_open;
|
||||
|
@ -1550,7 +1550,6 @@ static unsigned char ax25_nocall[AX25_ADDR_LEN] =
|
||||
|
||||
static void scc_net_setup(struct net_device *dev)
|
||||
{
|
||||
SET_MODULE_OWNER(dev);
|
||||
dev->tx_queue_len = 16; /* should be enough... */
|
||||
|
||||
dev->open = scc_net_open;
|
||||
|
@ -1098,7 +1098,6 @@ static void yam_setup(struct net_device *dev)
|
||||
|
||||
dev->base_addr = yp->iobase;
|
||||
dev->irq = yp->irq;
|
||||
SET_MODULE_OWNER(dev);
|
||||
|
||||
dev->open = yam_open;
|
||||
dev->stop = yam_close;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
* This source code is licensed under General Public License version 2.
|
||||
*
|
||||
|
@ -145,14 +145,14 @@ enum {
|
||||
#define AX25_DEF_CONMODE 2 /* Connected mode allowed */
|
||||
#define AX25_DEF_WINDOW 2 /* Window=2 */
|
||||
#define AX25_DEF_EWINDOW 32 /* Module-128 Window=32 */
|
||||
#define AX25_DEF_T1 (10 * HZ) /* T1=10s */
|
||||
#define AX25_DEF_T2 (3 * HZ) /* T2=3s */
|
||||
#define AX25_DEF_T3 (300 * HZ) /* T3=300s */
|
||||
#define AX25_DEF_T1 10000 /* T1=10s */
|
||||
#define AX25_DEF_T2 3000 /* T2=3s */
|
||||
#define AX25_DEF_T3 300000 /* T3=300s */
|
||||
#define AX25_DEF_N2 10 /* N2=10 */
|
||||
#define AX25_DEF_IDLE (0 * 60 * HZ) /* Idle=None */
|
||||
#define AX25_DEF_IDLE 0 /* Idle=None */
|
||||
#define AX25_DEF_PACLEN 256 /* Paclen=256 */
|
||||
#define AX25_DEF_PROTOCOL AX25_PROTO_STD_SIMPLEX /* Standard AX.25 */
|
||||
#define AX25_DEF_DS_TIMEOUT (3 * 60 * HZ) /* DAMA timeout 3 minutes */
|
||||
#define AX25_DEF_DS_TIMEOUT 180000 /* DAMA timeout 3 minutes */
|
||||
|
||||
typedef struct ax25_uid_assoc {
|
||||
struct hlist_node uid_node;
|
||||
|
@ -42,11 +42,11 @@ enum {
|
||||
#define NR_COND_PEER_RX_BUSY 0x04
|
||||
#define NR_COND_OWN_RX_BUSY 0x08
|
||||
|
||||
#define NR_DEFAULT_T1 (120 * HZ) /* Outstanding frames - 120 seconds */
|
||||
#define NR_DEFAULT_T2 (5 * HZ) /* Response delay - 5 seconds */
|
||||
#define NR_DEFAULT_T1 120000 /* Outstanding frames - 120 seconds */
|
||||
#define NR_DEFAULT_T2 5000 /* Response delay - 5 seconds */
|
||||
#define NR_DEFAULT_N2 3 /* Number of Retries - 3 */
|
||||
#define NR_DEFAULT_T4 (180 * HZ) /* Busy Delay - 180 seconds */
|
||||
#define NR_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */
|
||||
#define NR_DEFAULT_T4 180000 /* Busy Delay - 180 seconds */
|
||||
#define NR_DEFAULT_IDLE 0 /* No Activity Timeout - none */
|
||||
#define NR_DEFAULT_WINDOW 4 /* Default Window Size - 4 */
|
||||
#define NR_DEFAULT_OBS 6 /* Default Obsolescence Count - 6 */
|
||||
#define NR_DEFAULT_QUAL 10 /* Default Neighbour Quality - 10 */
|
||||
|
@ -49,14 +49,14 @@ enum {
|
||||
ROSE_STATE_5 /* Deferred Call Acceptance */
|
||||
};
|
||||
|
||||
#define ROSE_DEFAULT_T0 (180 * HZ) /* Default T10 T20 value */
|
||||
#define ROSE_DEFAULT_T1 (200 * HZ) /* Default T11 T21 value */
|
||||
#define ROSE_DEFAULT_T2 (180 * HZ) /* Default T12 T22 value */
|
||||
#define ROSE_DEFAULT_T3 (180 * HZ) /* Default T13 T23 value */
|
||||
#define ROSE_DEFAULT_HB (5 * HZ) /* Default Holdback value */
|
||||
#define ROSE_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */
|
||||
#define ROSE_DEFAULT_T0 180000 /* Default T10 T20 value */
|
||||
#define ROSE_DEFAULT_T1 200000 /* Default T11 T21 value */
|
||||
#define ROSE_DEFAULT_T2 180000 /* Default T12 T22 value */
|
||||
#define ROSE_DEFAULT_T3 180000 /* Default T13 T23 value */
|
||||
#define ROSE_DEFAULT_HB 5000 /* Default Holdback value */
|
||||
#define ROSE_DEFAULT_IDLE 0 /* No Activity Timeout - none */
|
||||
#define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */
|
||||
#define ROSE_DEFAULT_FAIL_TIMEOUT (120 * HZ) /* Time until link considered usable */
|
||||
#define ROSE_DEFAULT_FAIL_TIMEOUT 120000 /* Time until link considered usable */
|
||||
#define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */
|
||||
#define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */
|
||||
|
||||
|
@ -228,6 +228,8 @@ ax25_cb *ax25_find_cb(ax25_address *src_addr, ax25_address *dest_addr,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_find_cb);
|
||||
|
||||
void ax25_send_to_raw(ax25_address *addr, struct sk_buff *skb, int proto)
|
||||
{
|
||||
ax25_cb *s;
|
||||
@ -424,6 +426,26 @@ static int ax25_ctl_ioctl(const unsigned int cmd, void __user *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ax25_fillin_cb_from_dev(ax25_cb *ax25, ax25_dev *ax25_dev)
|
||||
{
|
||||
ax25->rtt = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]) / 2;
|
||||
ax25->t1 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T1]);
|
||||
ax25->t2 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T2]);
|
||||
ax25->t3 = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_T3]);
|
||||
ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
|
||||
ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
|
||||
ax25->idle = msecs_to_jiffies(ax25_dev->values[AX25_VALUES_IDLE]);
|
||||
ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
|
||||
|
||||
if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) {
|
||||
ax25->modulus = AX25_EMODULUS;
|
||||
ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
|
||||
} else {
|
||||
ax25->modulus = AX25_MODULUS;
|
||||
ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill in a created AX.25 created control block with the default
|
||||
* values for a particular device.
|
||||
@ -433,39 +455,28 @@ void ax25_fillin_cb(ax25_cb *ax25, ax25_dev *ax25_dev)
|
||||
ax25->ax25_dev = ax25_dev;
|
||||
|
||||
if (ax25->ax25_dev != NULL) {
|
||||
ax25->rtt = ax25_dev->values[AX25_VALUES_T1] / 2;
|
||||
ax25->t1 = ax25_dev->values[AX25_VALUES_T1];
|
||||
ax25->t2 = ax25_dev->values[AX25_VALUES_T2];
|
||||
ax25->t3 = ax25_dev->values[AX25_VALUES_T3];
|
||||
ax25->n2 = ax25_dev->values[AX25_VALUES_N2];
|
||||
ax25->paclen = ax25_dev->values[AX25_VALUES_PACLEN];
|
||||
ax25->idle = ax25_dev->values[AX25_VALUES_IDLE];
|
||||
ax25->backoff = ax25_dev->values[AX25_VALUES_BACKOFF];
|
||||
ax25_fillin_cb_from_dev(ax25, ax25_dev);
|
||||
return;
|
||||
}
|
||||
|
||||
if (ax25_dev->values[AX25_VALUES_AXDEFMODE]) {
|
||||
ax25->modulus = AX25_EMODULUS;
|
||||
ax25->window = ax25_dev->values[AX25_VALUES_EWINDOW];
|
||||
} else {
|
||||
ax25->modulus = AX25_MODULUS;
|
||||
ax25->window = ax25_dev->values[AX25_VALUES_WINDOW];
|
||||
}
|
||||
/*
|
||||
* No device, use kernel / AX.25 spec default values
|
||||
*/
|
||||
ax25->rtt = msecs_to_jiffies(AX25_DEF_T1) / 2;
|
||||
ax25->t1 = msecs_to_jiffies(AX25_DEF_T1);
|
||||
ax25->t2 = msecs_to_jiffies(AX25_DEF_T2);
|
||||
ax25->t3 = msecs_to_jiffies(AX25_DEF_T3);
|
||||
ax25->n2 = AX25_DEF_N2;
|
||||
ax25->paclen = AX25_DEF_PACLEN;
|
||||
ax25->idle = msecs_to_jiffies(AX25_DEF_IDLE);
|
||||
ax25->backoff = AX25_DEF_BACKOFF;
|
||||
|
||||
if (AX25_DEF_AXDEFMODE) {
|
||||
ax25->modulus = AX25_EMODULUS;
|
||||
ax25->window = AX25_DEF_EWINDOW;
|
||||
} else {
|
||||
ax25->rtt = AX25_DEF_T1 / 2;
|
||||
ax25->t1 = AX25_DEF_T1;
|
||||
ax25->t2 = AX25_DEF_T2;
|
||||
ax25->t3 = AX25_DEF_T3;
|
||||
ax25->n2 = AX25_DEF_N2;
|
||||
ax25->paclen = AX25_DEF_PACLEN;
|
||||
ax25->idle = AX25_DEF_IDLE;
|
||||
ax25->backoff = AX25_DEF_BACKOFF;
|
||||
|
||||
if (AX25_DEF_AXDEFMODE) {
|
||||
ax25->modulus = AX25_EMODULUS;
|
||||
ax25->window = AX25_DEF_EWINDOW;
|
||||
} else {
|
||||
ax25->modulus = AX25_MODULUS;
|
||||
ax25->window = AX25_DEF_WINDOW;
|
||||
}
|
||||
ax25->modulus = AX25_MODULUS;
|
||||
ax25->window = AX25_DEF_WINDOW;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1979,24 +1990,6 @@ static struct notifier_block ax25_dev_notifier = {
|
||||
.notifier_call =ax25_device_event,
|
||||
};
|
||||
|
||||
EXPORT_SYMBOL(ax25_hard_header);
|
||||
EXPORT_SYMBOL(ax25_rebuild_header);
|
||||
EXPORT_SYMBOL(ax25_findbyuid);
|
||||
EXPORT_SYMBOL(ax25_find_cb);
|
||||
EXPORT_SYMBOL(ax25_linkfail_register);
|
||||
EXPORT_SYMBOL(ax25_linkfail_release);
|
||||
EXPORT_SYMBOL(ax25_listen_register);
|
||||
EXPORT_SYMBOL(ax25_listen_release);
|
||||
EXPORT_SYMBOL(ax25_protocol_register);
|
||||
EXPORT_SYMBOL(ax25_protocol_release);
|
||||
EXPORT_SYMBOL(ax25_send_frame);
|
||||
EXPORT_SYMBOL(ax25_uid_policy);
|
||||
EXPORT_SYMBOL(ax25cmp);
|
||||
EXPORT_SYMBOL(ax2asc);
|
||||
EXPORT_SYMBOL(asc2ax);
|
||||
EXPORT_SYMBOL(null_ax25_address);
|
||||
EXPORT_SYMBOL(ax25_display_timer);
|
||||
|
||||
static int __init ax25_init(void)
|
||||
{
|
||||
int rc = proto_register(&ax25_proto, 0);
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/string.h>
|
||||
@ -33,6 +34,8 @@
|
||||
*/
|
||||
ax25_address null_ax25_address = {{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00}};
|
||||
|
||||
EXPORT_SYMBOL(null_ax25_address);
|
||||
|
||||
/*
|
||||
* ax25 -> ascii conversion
|
||||
*/
|
||||
@ -64,6 +67,8 @@ char *ax2asc(char *buf, ax25_address *a)
|
||||
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax2asc);
|
||||
|
||||
/*
|
||||
* ascii -> ax25 conversion
|
||||
*/
|
||||
@ -97,6 +102,8 @@ void asc2ax(ax25_address *addr, char *callsign)
|
||||
addr->ax25_call[6] &= 0x1E;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(asc2ax);
|
||||
|
||||
/*
|
||||
* Compare two ax.25 addresses
|
||||
*/
|
||||
@ -116,6 +123,8 @@ int ax25cmp(ax25_address *a, ax25_address *b)
|
||||
return 2; /* Partial match */
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25cmp);
|
||||
|
||||
/*
|
||||
* Compare two AX.25 digipeater paths.
|
||||
*/
|
||||
|
@ -61,7 +61,8 @@ void ax25_ds_set_timer(ax25_dev *ax25_dev)
|
||||
return;
|
||||
|
||||
del_timer(&ax25_dev->dama.slave_timer);
|
||||
ax25_dev->dama.slave_timeout = ax25_dev->values[AX25_VALUES_DS_TIMEOUT] / 10;
|
||||
ax25_dev->dama.slave_timeout =
|
||||
msecs_to_jiffies(ax25_dev->values[AX25_VALUES_DS_TIMEOUT]) / 10;
|
||||
ax25_ds_add_timer(ax25_dev);
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/timer.h>
|
||||
@ -74,6 +75,8 @@ int ax25_protocol_register(unsigned int pid,
|
||||
return 1;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_protocol_register);
|
||||
|
||||
void ax25_protocol_release(unsigned int pid)
|
||||
{
|
||||
struct protocol_struct *s, *protocol;
|
||||
@ -106,6 +109,8 @@ void ax25_protocol_release(unsigned int pid)
|
||||
write_unlock(&protocol_list_lock);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_protocol_release);
|
||||
|
||||
int ax25_linkfail_register(void (*func)(ax25_cb *, int))
|
||||
{
|
||||
struct linkfail_struct *linkfail;
|
||||
@ -123,6 +128,8 @@ int ax25_linkfail_register(void (*func)(ax25_cb *, int))
|
||||
return 1;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_linkfail_register);
|
||||
|
||||
void ax25_linkfail_release(void (*func)(ax25_cb *, int))
|
||||
{
|
||||
struct linkfail_struct *s, *linkfail;
|
||||
@ -155,6 +162,8 @@ void ax25_linkfail_release(void (*func)(ax25_cb *, int))
|
||||
spin_unlock_bh(&linkfail_lock);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_linkfail_release);
|
||||
|
||||
int ax25_listen_register(ax25_address *callsign, struct net_device *dev)
|
||||
{
|
||||
struct listen_struct *listen;
|
||||
@ -176,6 +185,8 @@ int ax25_listen_register(ax25_address *callsign, struct net_device *dev)
|
||||
return 1;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_listen_register);
|
||||
|
||||
void ax25_listen_release(ax25_address *callsign, struct net_device *dev)
|
||||
{
|
||||
struct listen_struct *s, *listen;
|
||||
@ -208,6 +219,8 @@ void ax25_listen_release(ax25_address *callsign, struct net_device *dev)
|
||||
spin_unlock_bh(&listen_lock);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_listen_release);
|
||||
|
||||
int (*ax25_protocol_function(unsigned int pid))(struct sk_buff *, ax25_cb *)
|
||||
{
|
||||
int (*res)(struct sk_buff *, ax25_cb *) = NULL;
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/string.h>
|
||||
@ -221,3 +222,5 @@ int ax25_rebuild_header(struct sk_buff *skb)
|
||||
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL(ax25_hard_header);
|
||||
EXPORT_SYMBOL(ax25_rebuild_header);
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/string.h>
|
||||
@ -104,6 +105,8 @@ ax25_cb *ax25_send_frame(struct sk_buff *skb, int paclen, ax25_address *src, ax2
|
||||
return ax25; /* We had to create it */
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_send_frame);
|
||||
|
||||
/*
|
||||
* All outgoing AX.25 I frames pass via this routine. Therefore this is
|
||||
* where the fragmentation of frames takes place. If fragment is set to
|
||||
|
@ -360,7 +360,7 @@ struct file_operations ax25_route_fops = {
|
||||
/*
|
||||
* Find AX.25 route
|
||||
*
|
||||
* Only routes with a refernce rout of zero can be destroyed.
|
||||
* Only routes with a reference count of zero can be destroyed.
|
||||
*/
|
||||
static ax25_route *ax25_get_route(ax25_address *addr, struct net_device *dev)
|
||||
{
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <linux/socket.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/string.h>
|
||||
@ -137,6 +138,8 @@ unsigned long ax25_display_timer(struct timer_list *timer)
|
||||
return timer->expires - jiffies;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_display_timer);
|
||||
|
||||
static void ax25_heartbeat_expiry(unsigned long param)
|
||||
{
|
||||
int proto = AX25_PROTO_STD_SIMPLEX;
|
||||
|
@ -49,6 +49,8 @@ static DEFINE_RWLOCK(ax25_uid_lock);
|
||||
|
||||
int ax25_uid_policy = 0;
|
||||
|
||||
EXPORT_SYMBOL(ax25_uid_policy);
|
||||
|
||||
ax25_uid_assoc *ax25_findbyuid(uid_t uid)
|
||||
{
|
||||
ax25_uid_assoc *ax25_uid, *res = NULL;
|
||||
@ -67,6 +69,8 @@ ax25_uid_assoc *ax25_findbyuid(uid_t uid)
|
||||
return res;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(ax25_findbyuid);
|
||||
|
||||
int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)
|
||||
{
|
||||
ax25_uid_assoc *ax25_uid;
|
||||
|
@ -18,14 +18,14 @@ static int min_backoff[1], max_backoff[] = {2};
|
||||
static int min_conmode[1], max_conmode[] = {2};
|
||||
static int min_window[] = {1}, max_window[] = {7};
|
||||
static int min_ewindow[] = {1}, max_ewindow[] = {63};
|
||||
static int min_t1[] = {1}, max_t1[] = {30 * HZ};
|
||||
static int min_t2[] = {1}, max_t2[] = {20 * HZ};
|
||||
static int min_t3[1], max_t3[] = {3600 * HZ};
|
||||
static int min_idle[1], max_idle[] = {65535 * HZ};
|
||||
static int min_t1[] = {1}, max_t1[] = {30000};
|
||||
static int min_t2[] = {1}, max_t2[] = {20000};
|
||||
static int min_t3[1], max_t3[] = {3600000};
|
||||
static int min_idle[1], max_idle[] = {65535000};
|
||||
static int min_n2[] = {1}, max_n2[] = {31};
|
||||
static int min_paclen[] = {1}, max_paclen[] = {512};
|
||||
static int min_proto[1], max_proto[] = { AX25_PROTO_MAX };
|
||||
static int min_ds_timeout[1], max_ds_timeout[] = {65535 * HZ};
|
||||
static int min_ds_timeout[1], max_ds_timeout[] = {65535000};
|
||||
|
||||
static struct ctl_table_header *ax25_table_header;
|
||||
|
||||
|
@ -493,7 +493,6 @@ struct elist_cb_state {
|
||||
static void neigh_elist_cb(struct neighbour *neigh, void *_info)
|
||||
{
|
||||
struct elist_cb_state *s = _info;
|
||||
struct dn_dev *dn_db;
|
||||
struct dn_neigh *dn;
|
||||
|
||||
if (neigh->dev != s->dev)
|
||||
@ -503,10 +502,6 @@ static void neigh_elist_cb(struct neighbour *neigh, void *_info)
|
||||
if (!(dn->flags & (DN_NDFLAG_R1|DN_NDFLAG_R2)))
|
||||
return;
|
||||
|
||||
dn_db = (struct dn_dev *) s->dev->dn_ptr;
|
||||
if (dn_db->parms.forwarding == 1 && (dn->flags & DN_NDFLAG_R2))
|
||||
return;
|
||||
|
||||
if (s->t == s->n)
|
||||
s->rs = dn_find_slot(s->ptr, s->n, dn->priority);
|
||||
else
|
||||
|
@ -162,6 +162,8 @@ static int get_tpkt_data(struct sk_buff **pskb, struct ip_conntrack *ct,
|
||||
|
||||
/* Validate TPKT length */
|
||||
tpktlen = tpkt[2] * 256 + tpkt[3];
|
||||
if (tpktlen < 4)
|
||||
goto clear_out;
|
||||
if (tpktlen > tcpdatalen) {
|
||||
if (tcpdatalen == 4) { /* Separate TPKT header */
|
||||
/* Netmeeting sends TPKT header and data separately */
|
||||
|
@ -2,7 +2,7 @@
|
||||
* ip_conntrack_helper_h323_asn1.c - BER and PER decoding library for H.323
|
||||
* conntrack/NAT module.
|
||||
*
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com>
|
||||
* Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net>
|
||||
*
|
||||
* This source code is licensed under General Public License version 2.
|
||||
*
|
||||
@ -703,6 +703,10 @@ int decode_choice(bitstr_t * bs, field_t * f, char *base, int level)
|
||||
type = get_bits(bs, f->sz);
|
||||
}
|
||||
|
||||
/* Write Type */
|
||||
if (base)
|
||||
*(unsigned *) base = type;
|
||||
|
||||
/* Check Range */
|
||||
if (type >= f->ub) { /* Newer version? */
|
||||
BYTE_ALIGN(bs);
|
||||
@ -712,10 +716,6 @@ int decode_choice(bitstr_t * bs, field_t * f, char *base, int level)
|
||||
return H323_ERROR_NONE;
|
||||
}
|
||||
|
||||
/* Write Type */
|
||||
if (base)
|
||||
*(unsigned *) base = type;
|
||||
|
||||
/* Transfer to son level */
|
||||
son = &f->fields[type];
|
||||
if (son->attr & STOP) {
|
||||
|
@ -219,8 +219,10 @@ ip_nat_out(unsigned int hooknum,
|
||||
const struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
#ifdef CONFIG_XFRM
|
||||
struct ip_conntrack *ct;
|
||||
enum ip_conntrack_info ctinfo;
|
||||
#endif
|
||||
unsigned int ret;
|
||||
|
||||
/* root is playing with raw sockets. */
|
||||
|
@ -1441,7 +1441,7 @@ static int compat_copy_entry_to_user(struct ipt_entry *e,
|
||||
ret = -EFAULT;
|
||||
origsize = *size;
|
||||
ce = (struct compat_ipt_entry __user *)*dstptr;
|
||||
if (__copy_to_user(ce, e, sizeof(struct ipt_entry)))
|
||||
if (copy_to_user(ce, e, sizeof(struct ipt_entry)))
|
||||
goto out;
|
||||
|
||||
*dstptr += sizeof(struct compat_ipt_entry);
|
||||
@ -1459,9 +1459,9 @@ static int compat_copy_entry_to_user(struct ipt_entry *e,
|
||||
goto out;
|
||||
ret = -EFAULT;
|
||||
next_offset = e->next_offset - (origsize - *size);
|
||||
if (__put_user(target_offset, &ce->target_offset))
|
||||
if (put_user(target_offset, &ce->target_offset))
|
||||
goto out;
|
||||
if (__put_user(next_offset, &ce->next_offset))
|
||||
if (put_user(next_offset, &ce->next_offset))
|
||||
goto out;
|
||||
return 0;
|
||||
out:
|
||||
|
@ -1468,6 +1468,7 @@ void tcp_close(struct sock *sk, long timeout)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
int data_was_unread = 0;
|
||||
int state;
|
||||
|
||||
lock_sock(sk);
|
||||
sk->sk_shutdown = SHUTDOWN_MASK;
|
||||
@ -1544,6 +1545,11 @@ void tcp_close(struct sock *sk, long timeout)
|
||||
sk_stream_wait_close(sk, timeout);
|
||||
|
||||
adjudge_to_death:
|
||||
state = sk->sk_state;
|
||||
sock_hold(sk);
|
||||
sock_orphan(sk);
|
||||
atomic_inc(sk->sk_prot->orphan_count);
|
||||
|
||||
/* It is the last release_sock in its life. It will remove backlog. */
|
||||
release_sock(sk);
|
||||
|
||||
@ -1555,8 +1561,9 @@ adjudge_to_death:
|
||||
bh_lock_sock(sk);
|
||||
BUG_TRAP(!sock_owned_by_user(sk));
|
||||
|
||||
sock_hold(sk);
|
||||
sock_orphan(sk);
|
||||
/* Have we already been destroyed by a softirq or backlog? */
|
||||
if (state != TCP_CLOSE && sk->sk_state == TCP_CLOSE)
|
||||
goto out;
|
||||
|
||||
/* This is a (useful) BSD violating of the RFC. There is a
|
||||
* problem with TCP as specified in that the other end could
|
||||
@ -1584,7 +1591,6 @@ adjudge_to_death:
|
||||
if (tmo > TCP_TIMEWAIT_LEN) {
|
||||
inet_csk_reset_keepalive_timer(sk, tcp_fin_time(sk));
|
||||
} else {
|
||||
atomic_inc(sk->sk_prot->orphan_count);
|
||||
tcp_time_wait(sk, TCP_FIN_WAIT2, tmo);
|
||||
goto out;
|
||||
}
|
||||
@ -1603,7 +1609,6 @@ adjudge_to_death:
|
||||
NET_INC_STATS_BH(LINUX_MIB_TCPABORTONMEMORY);
|
||||
}
|
||||
}
|
||||
atomic_inc(sk->sk_prot->orphan_count);
|
||||
|
||||
if (sk->sk_state == TCP_CLOSE)
|
||||
inet_csk_destroy_sock(sk);
|
||||
|
@ -289,7 +289,7 @@ int xt_compat_match(void *match, void **dstptr, int *size, int convert)
|
||||
case COMPAT_TO_USER:
|
||||
pm = (struct xt_entry_match *)match;
|
||||
msize = pm->u.user.match_size;
|
||||
if (__copy_to_user(*dstptr, pm, msize)) {
|
||||
if (copy_to_user(*dstptr, pm, msize)) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
}
|
||||
@ -366,7 +366,7 @@ int xt_compat_target(void *target, void **dstptr, int *size, int convert)
|
||||
case COMPAT_TO_USER:
|
||||
pt = (struct xt_entry_target *)target;
|
||||
tsize = pt->u.user.target_size;
|
||||
if (__copy_to_user(*dstptr, pt, tsize)) {
|
||||
if (copy_to_user(*dstptr, pt, tsize)) {
|
||||
ret = -EFAULT;
|
||||
break;
|
||||
}
|
||||
|
@ -425,11 +425,16 @@ static int nr_create(struct socket *sock, int protocol)
|
||||
|
||||
nr_init_timers(sk);
|
||||
|
||||
nr->t1 = sysctl_netrom_transport_timeout;
|
||||
nr->t2 = sysctl_netrom_transport_acknowledge_delay;
|
||||
nr->n2 = sysctl_netrom_transport_maximum_tries;
|
||||
nr->t4 = sysctl_netrom_transport_busy_delay;
|
||||
nr->idle = sysctl_netrom_transport_no_activity_timeout;
|
||||
nr->t1 =
|
||||
msecs_to_jiffies(sysctl_netrom_transport_timeout);
|
||||
nr->t2 =
|
||||
msecs_to_jiffies(sysctl_netrom_transport_acknowledge_delay);
|
||||
nr->n2 =
|
||||
msecs_to_jiffies(sysctl_netrom_transport_maximum_tries);
|
||||
nr->t4 =
|
||||
msecs_to_jiffies(sysctl_netrom_transport_busy_delay);
|
||||
nr->idle =
|
||||
msecs_to_jiffies(sysctl_netrom_transport_no_activity_timeout);
|
||||
nr->window = sysctl_netrom_transport_requested_window_size;
|
||||
|
||||
nr->bpqext = 1;
|
||||
|
@ -185,7 +185,6 @@ static struct net_device_stats *nr_get_stats(struct net_device *dev)
|
||||
|
||||
void nr_setup(struct net_device *dev)
|
||||
{
|
||||
SET_MODULE_OWNER(dev);
|
||||
dev->mtu = NR_MAX_PACKET_SIZE;
|
||||
dev->hard_start_xmit = nr_xmit;
|
||||
dev->open = nr_open;
|
||||
|
@ -518,11 +518,11 @@ static int rose_create(struct socket *sock, int protocol)
|
||||
init_timer(&rose->timer);
|
||||
init_timer(&rose->idletimer);
|
||||
|
||||
rose->t1 = sysctl_rose_call_request_timeout;
|
||||
rose->t2 = sysctl_rose_reset_request_timeout;
|
||||
rose->t3 = sysctl_rose_clear_request_timeout;
|
||||
rose->hb = sysctl_rose_ack_hold_back_timeout;
|
||||
rose->idle = sysctl_rose_no_activity_timeout;
|
||||
rose->t1 = msecs_to_jiffies(sysctl_rose_call_request_timeout);
|
||||
rose->t2 = msecs_to_jiffies(sysctl_rose_reset_request_timeout);
|
||||
rose->t3 = msecs_to_jiffies(sysctl_rose_clear_request_timeout);
|
||||
rose->hb = msecs_to_jiffies(sysctl_rose_ack_hold_back_timeout);
|
||||
rose->idle = msecs_to_jiffies(sysctl_rose_no_activity_timeout);
|
||||
|
||||
rose->state = ROSE_STATE_0;
|
||||
|
||||
|
@ -135,7 +135,6 @@ static struct net_device_stats *rose_get_stats(struct net_device *dev)
|
||||
|
||||
void rose_setup(struct net_device *dev)
|
||||
{
|
||||
SET_MODULE_OWNER(dev);
|
||||
dev->mtu = ROSE_MAX_PACKET_SIZE - 2;
|
||||
dev->hard_start_xmit = rose_xmit;
|
||||
dev->open = rose_open;
|
||||
|
@ -40,7 +40,8 @@ void rose_start_ftimer(struct rose_neigh *neigh)
|
||||
|
||||
neigh->ftimer.data = (unsigned long)neigh;
|
||||
neigh->ftimer.function = &rose_ftimer_expiry;
|
||||
neigh->ftimer.expires = jiffies + sysctl_rose_link_fail_timeout;
|
||||
neigh->ftimer.expires =
|
||||
jiffies + msecs_to_jiffies(sysctl_rose_link_fail_timeout);
|
||||
|
||||
add_timer(&neigh->ftimer);
|
||||
}
|
||||
@ -51,7 +52,8 @@ static void rose_start_t0timer(struct rose_neigh *neigh)
|
||||
|
||||
neigh->t0timer.data = (unsigned long)neigh;
|
||||
neigh->t0timer.function = &rose_t0timer_expiry;
|
||||
neigh->t0timer.expires = jiffies + sysctl_rose_restart_request_timeout;
|
||||
neigh->t0timer.expires =
|
||||
jiffies + msecs_to_jiffies(sysctl_rose_restart_request_timeout);
|
||||
|
||||
add_timer(&neigh->t0timer);
|
||||
}
|
||||
|
@ -48,8 +48,6 @@ static DEFINE_SPINLOCK(rose_route_list_lock);
|
||||
|
||||
struct rose_neigh *rose_loopback_neigh;
|
||||
|
||||
static void rose_remove_neigh(struct rose_neigh *);
|
||||
|
||||
/*
|
||||
* Add a new route to a node, and in the process add the node and the
|
||||
* neighbour if it is new.
|
||||
@ -235,11 +233,8 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
|
||||
|
||||
skb_queue_purge(&rose_neigh->queue);
|
||||
|
||||
spin_lock_bh(&rose_neigh_list_lock);
|
||||
|
||||
if ((s = rose_neigh_list) == rose_neigh) {
|
||||
rose_neigh_list = rose_neigh->next;
|
||||
spin_unlock_bh(&rose_neigh_list_lock);
|
||||
kfree(rose_neigh->digipeat);
|
||||
kfree(rose_neigh);
|
||||
return;
|
||||
@ -248,7 +243,6 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
|
||||
while (s != NULL && s->next != NULL) {
|
||||
if (s->next == rose_neigh) {
|
||||
s->next = rose_neigh->next;
|
||||
spin_unlock_bh(&rose_neigh_list_lock);
|
||||
kfree(rose_neigh->digipeat);
|
||||
kfree(rose_neigh);
|
||||
return;
|
||||
@ -256,7 +250,6 @@ static void rose_remove_neigh(struct rose_neigh *rose_neigh)
|
||||
|
||||
s = s->next;
|
||||
}
|
||||
spin_unlock_bh(&rose_neigh_list_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user