git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.3
[linux-2.6.git]
/
net
/
ipv4
/
netfilter
/
ip_conntrack_tftp.c
diff --git
a/net/ipv4/netfilter/ip_conntrack_tftp.c
b/net/ipv4/netfilter/ip_conntrack_tftp.c
index
ddee737
..
d132a3c
100644
(file)
--- a/
net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/
net/ipv4/netfilter/ip_conntrack_tftp.c
@@
-19,6
+19,7
@@
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
#include <linux/netfilter_ipv4/ip_conntrack_tftp.h>
#include <linux/netfilter_ipv4/ip_tables.h>
#include <linux/netfilter_ipv4/ip_conntrack_helper.h>
#include <linux/netfilter_ipv4/ip_conntrack_tftp.h>
+#include <linux/moduleparam.h>
MODULE_AUTHOR("Magnus Boden <mb@ozaba.mine.nu>");
MODULE_DESCRIPTION("tftp connection tracking helper");
MODULE_AUTHOR("Magnus Boden <mb@ozaba.mine.nu>");
MODULE_DESCRIPTION("tftp connection tracking helper");
@@
-27,7
+28,7
@@
MODULE_LICENSE("GPL");
#define MAX_PORTS 8
static int ports[MAX_PORTS];
static int ports_c;
#define MAX_PORTS 8
static int ports[MAX_PORTS];
static int ports_c;
-
MODULE_PARM(ports, "1-" __MODULE_STRING(MAX_PORTS) "i"
);
+
module_param_array(ports, int, ports_c, 0400
);
MODULE_PARM_DESC(ports, "port numbers of tftp servers");
#if 0
MODULE_PARM_DESC(ports, "port numbers of tftp servers");
#if 0
@@
-41,14
+42,16
@@
static int tftp_help(struct sk_buff *skb,
struct ip_conntrack *ct,
enum ip_conntrack_info ctinfo)
{
struct ip_conntrack *ct,
enum ip_conntrack_info ctinfo)
{
- struct tftphdr
tftp
h;
+ struct tftphdr
_tftph, *tf
h;
struct ip_conntrack_expect *exp;
struct ip_conntrack_expect *exp;
- if (skb_copy_bits(skb, skb->nh.iph->ihl * 4 + sizeof(struct udphdr),
- &tftph, sizeof(tftph)) != 0)
+ tfh = skb_header_pointer(skb,
+ skb->nh.iph->ihl * 4 + sizeof(struct udphdr),
+ sizeof(_tftph), &_tftph);
+ if (tfh == NULL)
return NF_ACCEPT;
return NF_ACCEPT;
- switch (ntohs(tf
tph.
opcode)) {
+ switch (ntohs(tf
h->
opcode)) {
/* RRQ and WRQ works the same way */
case TFTP_OPCODE_READ:
case TFTP_OPCODE_WRITE:
/* RRQ and WRQ works the same way */
case TFTP_OPCODE_READ:
case TFTP_OPCODE_WRITE:
@@
-104,10
+107,10
@@
static int __init init(void)
int i, ret;
char *tmpname;
int i, ret;
char *tmpname;
- if (
!ports[0]
)
- ports[
0]=
TFTP_PORT;
+ if (
ports_c == 0
)
+ ports[
ports_c++] =
TFTP_PORT;
- for (i = 0
; (i < MAX_PORTS) && ports[i]
; i++) {
+ for (i = 0
; i < ports_c
; i++) {
/* Create helper structure */
memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));
/* Create helper structure */
memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));
@@
-137,7
+140,6
@@
static int __init init(void)
fini();
return(ret);
}
fini();
return(ret);
}
- ports_c++;
}
return(0);
}
}
return(0);
}