git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[NETFILTER]: x_tables: switch xt_match->checkentry to bool
[safe/jmp/linux-2.6]
/
net
/
ipv6
/
netfilter
/
ip6t_hbh.c
diff --git
a/net/ipv6/netfilter/ip6t_hbh.c
b/net/ipv6/netfilter/ip6t_hbh.c
index
d32a205
..
6fdd797
100644
(file)
--- a/
net/ipv6/netfilter/ip6t_hbh.c
+++ b/
net/ipv6/netfilter/ip6t_hbh.c
@@
-16,6
+16,7
@@
#include <asm/byteorder.h>
#include <asm/byteorder.h>
+#include <linux/netfilter/x_tables.h>
#include <linux/netfilter_ipv6/ip6_tables.h>
#include <linux/netfilter_ipv6/ip6t_opts.h>
#include <linux/netfilter_ipv6/ip6_tables.h>
#include <linux/netfilter_ipv6/ip6t_opts.h>
@@
-46,7
+47,7
@@
MODULE_ALIAS("ip6t_dst");
* 5 -> RTALERT 2 x x
*/
* 5 -> RTALERT 2 x x
*/
-static
int
+static
bool
match(const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
match(const struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
@@
-54,31
+55,36
@@
match(const struct sk_buff *skb,
const void *matchinfo,
int offset,
unsigned int protoff,
const void *matchinfo,
int offset,
unsigned int protoff,
-
int
*hotdrop)
+
bool
*hotdrop)
{
struct ipv6_opt_hdr _optsh, *oh;
const struct ip6t_opts *optinfo = matchinfo;
unsigned int temp;
unsigned int ptr;
unsigned int hdrlen = 0;
{
struct ipv6_opt_hdr _optsh, *oh;
const struct ip6t_opts *optinfo = matchinfo;
unsigned int temp;
unsigned int ptr;
unsigned int hdrlen = 0;
-
unsigned int ret = 0
;
+
bool ret = false
;
u8 _opttype, *tp = NULL;
u8 _optlen, *lp = NULL;
unsigned int optlen;
u8 _opttype, *tp = NULL;
u8 _optlen, *lp = NULL;
unsigned int optlen;
+ int err;
- if (ipv6_find_hdr(skb, &ptr, match->data, NULL) < 0)
- return 0;
+ err = ipv6_find_hdr(skb, &ptr, match->data, NULL);
+ if (err < 0) {
+ if (err != -ENOENT)
+ *hotdrop = true;
+ return false;
+ }
oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh);
if (oh == NULL) {
oh = skb_header_pointer(skb, ptr, sizeof(_optsh), &_optsh);
if (oh == NULL) {
- *hotdrop =
1
;
- return
0
;
+ *hotdrop =
true
;
+ return
false
;
}
hdrlen = ipv6_optlen(oh);
if (skb->len - ptr < hdrlen) {
/* Packet smaller than it's length field */
}
hdrlen = ipv6_optlen(oh);
if (skb->len - ptr < hdrlen) {
/* Packet smaller than it's length field */
- return
0
;
+ return
false
;
}
DEBUGP("IPv6 OPTS LEN %u %u ", hdrlen, oh->hdrlen);
}
DEBUGP("IPv6 OPTS LEN %u %u ", hdrlen, oh->hdrlen);
@@
-117,7
+123,7
@@
match(const struct sk_buff *skb,
DEBUGP("Tbad %02X %02X\n",
*tp,
(optinfo->opts[temp] & 0xFF00) >> 8);
DEBUGP("Tbad %02X %02X\n",
*tp,
(optinfo->opts[temp] & 0xFF00) >> 8);
- return
0
;
+ return
false
;
} else {
DEBUGP("Tok ");
}
} else {
DEBUGP("Tok ");
}
@@
-138,7
+144,7
@@
match(const struct sk_buff *skb,
if (spec_len != 0x00FF && spec_len != *lp) {
DEBUGP("Lbad %02X %04X\n", *lp,
spec_len);
if (spec_len != 0x00FF && spec_len != *lp) {
DEBUGP("Lbad %02X %04X\n", *lp,
spec_len);
- return
0
;
+ return
false
;
}
DEBUGP("Lok ");
optlen = *lp + 2;
}
DEBUGP("Lok ");
optlen = *lp + 2;
@@
-161,14
+167,14
@@
match(const struct sk_buff *skb,
if (temp == optinfo->optsnr)
return ret;
else
if (temp == optinfo->optsnr)
return ret;
else
- return
0
;
+ return
false
;
}
}
- return
0
;
+ return
false
;
}
/* Called when user tries to insert an entry of this type. */
}
/* Called when user tries to insert an entry of this type. */
-static
int
+static
bool
checkentry(const char *tablename,
const void *entry,
const struct xt_match *match,
checkentry(const char *tablename,
const void *entry,
const struct xt_match *match,
@@
-179,9
+185,9
@@
checkentry(const char *tablename,
if (optsinfo->invflags & ~IP6T_OPTS_INV_MASK) {
DEBUGP("ip6t_opts: unknown flags %X\n", optsinfo->invflags);
if (optsinfo->invflags & ~IP6T_OPTS_INV_MASK) {
DEBUGP("ip6t_opts: unknown flags %X\n", optsinfo->invflags);
- return
0
;
+ return
false
;
}
}
- return
1
;
+ return
true
;
}
static struct xt_match opts_match[] = {
}
static struct xt_match opts_match[] = {