[NETFILTER]: nf_conntrack: endian annotations
Resync with Al Viro's ip_conntrack annotations and fix a missed spot in ip_nat_proto_icmp.c. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
f9aae95828
Коммит
bff9a89bca
|
@ -26,8 +26,8 @@
|
||||||
network order! */
|
network order! */
|
||||||
union nf_conntrack_man_l3proto {
|
union nf_conntrack_man_l3proto {
|
||||||
u_int32_t all[NF_CT_TUPLE_L3SIZE];
|
u_int32_t all[NF_CT_TUPLE_L3SIZE];
|
||||||
u_int32_t ip;
|
__be32 ip;
|
||||||
u_int32_t ip6[4];
|
__be32 ip6[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The protocol-specific manipulable parts of the tuple: always in
|
/* The protocol-specific manipulable parts of the tuple: always in
|
||||||
|
@ -38,16 +38,16 @@ union nf_conntrack_man_proto
|
||||||
u_int16_t all;
|
u_int16_t all;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} tcp;
|
} tcp;
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} udp;
|
} udp;
|
||||||
struct {
|
struct {
|
||||||
u_int16_t id;
|
__be16 id;
|
||||||
} icmp;
|
} icmp;
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} sctp;
|
} sctp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -77,16 +77,16 @@ struct nf_conntrack_tuple
|
||||||
u_int16_t all;
|
u_int16_t all;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} tcp;
|
} tcp;
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} udp;
|
} udp;
|
||||||
struct {
|
struct {
|
||||||
u_int8_t type, code;
|
u_int8_t type, code;
|
||||||
} icmp;
|
} icmp;
|
||||||
struct {
|
struct {
|
||||||
u_int16_t port;
|
__be16 port;
|
||||||
} sctp;
|
} sctp;
|
||||||
} u;
|
} u;
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ icmp_in_range(const struct ip_conntrack_tuple *tuple,
|
||||||
const union ip_conntrack_manip_proto *min,
|
const union ip_conntrack_manip_proto *min,
|
||||||
const union ip_conntrack_manip_proto *max)
|
const union ip_conntrack_manip_proto *max)
|
||||||
{
|
{
|
||||||
return (tuple->src.u.icmp.id >= min->icmp.id
|
return ntohs(tuple->src.u.icmp.id) >= ntohs(min->icmp.id) &&
|
||||||
&& tuple->src.u.icmp.id <= max->icmp.id);
|
ntohs(tuple->src.u.icmp.id) <= ntohs(max->icmp.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
static int ipv4_pkt_to_tuple(const struct sk_buff *skb, unsigned int nhoff,
|
static int ipv4_pkt_to_tuple(const struct sk_buff *skb, unsigned int nhoff,
|
||||||
struct nf_conntrack_tuple *tuple)
|
struct nf_conntrack_tuple *tuple)
|
||||||
{
|
{
|
||||||
u_int32_t _addrs[2], *ap;
|
__be32 _addrs[2], *ap;
|
||||||
ap = skb_header_pointer(skb, nhoff + offsetof(struct iphdr, saddr),
|
ap = skb_header_pointer(skb, nhoff + offsetof(struct iphdr, saddr),
|
||||||
sizeof(u_int32_t) * 2, _addrs);
|
sizeof(u_int32_t) * 2, _addrs);
|
||||||
if (ap == NULL)
|
if (ap == NULL)
|
||||||
|
@ -410,10 +410,8 @@ static int ipv4_nfattr_to_tuple(struct nfattr *tb[],
|
||||||
if (nfattr_bad_size(tb, CTA_IP_MAX, cta_min_ip))
|
if (nfattr_bad_size(tb, CTA_IP_MAX, cta_min_ip))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
t->src.u3.ip =
|
t->src.u3.ip = *(__be32 *)NFA_DATA(tb[CTA_IP_V4_SRC-1]);
|
||||||
*(u_int32_t *)NFA_DATA(tb[CTA_IP_V4_SRC-1]);
|
t->dst.u3.ip = *(__be32 *)NFA_DATA(tb[CTA_IP_V4_DST-1]);
|
||||||
t->dst.u3.ip =
|
|
||||||
*(u_int32_t *)NFA_DATA(tb[CTA_IP_V4_DST-1]);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,7 +311,7 @@ static int icmp_nfattr_to_tuple(struct nfattr *tb[],
|
||||||
tuple->dst.u.icmp.code =
|
tuple->dst.u.icmp.code =
|
||||||
*(u_int8_t *)NFA_DATA(tb[CTA_PROTO_ICMP_CODE-1]);
|
*(u_int8_t *)NFA_DATA(tb[CTA_PROTO_ICMP_CODE-1]);
|
||||||
tuple->src.u.icmp.id =
|
tuple->src.u.icmp.id =
|
||||||
*(u_int16_t *)NFA_DATA(tb[CTA_PROTO_ICMP_ID-1]);
|
*(__be16 *)NFA_DATA(tb[CTA_PROTO_ICMP_ID-1]);
|
||||||
|
|
||||||
if (tuple->dst.u.icmp.type >= sizeof(invmap)
|
if (tuple->dst.u.icmp.type >= sizeof(invmap)
|
||||||
|| !invmap[tuple->dst.u.icmp.type])
|
|| !invmap[tuple->dst.u.icmp.type])
|
||||||
|
|
|
@ -287,7 +287,7 @@ static int icmpv6_nfattr_to_tuple(struct nfattr *tb[],
|
||||||
tuple->dst.u.icmp.code =
|
tuple->dst.u.icmp.code =
|
||||||
*(u_int8_t *)NFA_DATA(tb[CTA_PROTO_ICMPV6_CODE-1]);
|
*(u_int8_t *)NFA_DATA(tb[CTA_PROTO_ICMPV6_CODE-1]);
|
||||||
tuple->src.u.icmp.id =
|
tuple->src.u.icmp.id =
|
||||||
*(u_int16_t *)NFA_DATA(tb[CTA_PROTO_ICMPV6_ID-1]);
|
*(__be16 *)NFA_DATA(tb[CTA_PROTO_ICMPV6_ID-1]);
|
||||||
|
|
||||||
if (tuple->dst.u.icmp.type < 128
|
if (tuple->dst.u.icmp.type < 128
|
||||||
|| tuple->dst.u.icmp.type - 128 >= sizeof(invmap)
|
|| tuple->dst.u.icmp.type - 128 >= sizeof(invmap)
|
||||||
|
|
|
@ -72,7 +72,7 @@ struct nf_ct_frag6_queue
|
||||||
struct hlist_node list;
|
struct hlist_node list;
|
||||||
struct list_head lru_list; /* lru list member */
|
struct list_head lru_list; /* lru list member */
|
||||||
|
|
||||||
__u32 id; /* fragment id */
|
__be32 id; /* fragment id */
|
||||||
struct in6_addr saddr;
|
struct in6_addr saddr;
|
||||||
struct in6_addr daddr;
|
struct in6_addr daddr;
|
||||||
|
|
||||||
|
@ -115,28 +115,28 @@ static __inline__ void fq_unlink(struct nf_ct_frag6_queue *fq)
|
||||||
write_unlock(&nf_ct_frag6_lock);
|
write_unlock(&nf_ct_frag6_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int ip6qhashfn(u32 id, struct in6_addr *saddr,
|
static unsigned int ip6qhashfn(__be32 id, struct in6_addr *saddr,
|
||||||
struct in6_addr *daddr)
|
struct in6_addr *daddr)
|
||||||
{
|
{
|
||||||
u32 a, b, c;
|
u32 a, b, c;
|
||||||
|
|
||||||
a = saddr->s6_addr32[0];
|
a = (__force u32)saddr->s6_addr32[0];
|
||||||
b = saddr->s6_addr32[1];
|
b = (__force u32)saddr->s6_addr32[1];
|
||||||
c = saddr->s6_addr32[2];
|
c = (__force u32)saddr->s6_addr32[2];
|
||||||
|
|
||||||
a += JHASH_GOLDEN_RATIO;
|
a += JHASH_GOLDEN_RATIO;
|
||||||
b += JHASH_GOLDEN_RATIO;
|
b += JHASH_GOLDEN_RATIO;
|
||||||
c += nf_ct_frag6_hash_rnd;
|
c += nf_ct_frag6_hash_rnd;
|
||||||
__jhash_mix(a, b, c);
|
__jhash_mix(a, b, c);
|
||||||
|
|
||||||
a += saddr->s6_addr32[3];
|
a += (__force u32)saddr->s6_addr32[3];
|
||||||
b += daddr->s6_addr32[0];
|
b += (__force u32)daddr->s6_addr32[0];
|
||||||
c += daddr->s6_addr32[1];
|
c += (__force u32)daddr->s6_addr32[1];
|
||||||
__jhash_mix(a, b, c);
|
__jhash_mix(a, b, c);
|
||||||
|
|
||||||
a += daddr->s6_addr32[2];
|
a += (__force u32)daddr->s6_addr32[2];
|
||||||
b += daddr->s6_addr32[3];
|
b += (__force u32)daddr->s6_addr32[3];
|
||||||
c += id;
|
c += (__force u32)id;
|
||||||
__jhash_mix(a, b, c);
|
__jhash_mix(a, b, c);
|
||||||
|
|
||||||
return c & (FRAG6Q_HASHSZ - 1);
|
return c & (FRAG6Q_HASHSZ - 1);
|
||||||
|
@ -338,7 +338,7 @@ static struct nf_ct_frag6_queue *nf_ct_frag6_intern(unsigned int hash,
|
||||||
|
|
||||||
|
|
||||||
static struct nf_ct_frag6_queue *
|
static struct nf_ct_frag6_queue *
|
||||||
nf_ct_frag6_create(unsigned int hash, u32 id, struct in6_addr *src, struct in6_addr *dst)
|
nf_ct_frag6_create(unsigned int hash, __be32 id, struct in6_addr *src, struct in6_addr *dst)
|
||||||
{
|
{
|
||||||
struct nf_ct_frag6_queue *fq;
|
struct nf_ct_frag6_queue *fq;
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ oom:
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ struct nf_ct_frag6_queue *
|
static __inline__ struct nf_ct_frag6_queue *
|
||||||
fq_find(u32 id, struct in6_addr *src, struct in6_addr *dst)
|
fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst)
|
||||||
{
|
{
|
||||||
struct nf_ct_frag6_queue *fq;
|
struct nf_ct_frag6_queue *fq;
|
||||||
struct hlist_node *n;
|
struct hlist_node *n;
|
||||||
|
|
|
@ -936,10 +936,8 @@ int nf_ct_port_nfattr_to_tuple(struct nfattr *tb[],
|
||||||
if (nfattr_bad_size(tb, CTA_PROTO_MAX, cta_min_proto))
|
if (nfattr_bad_size(tb, CTA_PROTO_MAX, cta_min_proto))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
t->src.u.tcp.port =
|
t->src.u.tcp.port = *(__be16 *)NFA_DATA(tb[CTA_PROTO_SRC_PORT-1]);
|
||||||
*(u_int16_t *)NFA_DATA(tb[CTA_PROTO_SRC_PORT-1]);
|
t->dst.u.tcp.port = *(__be16 *)NFA_DATA(tb[CTA_PROTO_DST_PORT-1]);
|
||||||
t->dst.u.tcp.port =
|
|
||||||
*(u_int16_t *)NFA_DATA(tb[CTA_PROTO_DST_PORT-1]);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,7 +173,7 @@ static int try_rfc959(const char *data, size_t dlen,
|
||||||
|
|
||||||
/* Grab port: number up to delimiter */
|
/* Grab port: number up to delimiter */
|
||||||
static int get_port(const char *data, int start, size_t dlen, char delim,
|
static int get_port(const char *data, int start, size_t dlen, char delim,
|
||||||
u_int16_t *port)
|
__be16 *port)
|
||||||
{
|
{
|
||||||
u_int16_t tmp_port = 0;
|
u_int16_t tmp_port = 0;
|
||||||
int i;
|
int i;
|
||||||
|
@ -502,12 +502,12 @@ static int help(struct sk_buff **pskb,
|
||||||
.u = { .tcp = { 0 }},
|
.u = { .tcp = { 0 }},
|
||||||
},
|
},
|
||||||
.dst = { .protonum = 0xFF,
|
.dst = { .protonum = 0xFF,
|
||||||
.u = { .tcp = { 0xFFFF }},
|
.u = { .tcp = { __constant_htons(0xFFFF) }},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
if (cmd.l3num == PF_INET) {
|
if (cmd.l3num == PF_INET) {
|
||||||
exp->mask.src.u3.ip = 0xFFFFFFFF;
|
exp->mask.src.u3.ip = htonl(0xFFFFFFFF);
|
||||||
exp->mask.dst.u3.ip = 0xFFFFFFFF;
|
exp->mask.dst.u3.ip = htonl(0xFFFFFFFF);
|
||||||
} else {
|
} else {
|
||||||
memset(exp->mask.src.u3.ip6, 0xFF,
|
memset(exp->mask.src.u3.ip6, 0xFF,
|
||||||
sizeof(exp->mask.src.u3.ip6));
|
sizeof(exp->mask.src.u3.ip6));
|
||||||
|
@ -588,7 +588,7 @@ static int __init nf_conntrack_ftp_init(void)
|
||||||
ftp[i][j].tuple.src.u.tcp.port = htons(ports[i]);
|
ftp[i][j].tuple.src.u.tcp.port = htons(ports[i]);
|
||||||
ftp[i][j].tuple.dst.protonum = IPPROTO_TCP;
|
ftp[i][j].tuple.dst.protonum = IPPROTO_TCP;
|
||||||
ftp[i][j].mask.src.l3num = 0xFFFF;
|
ftp[i][j].mask.src.l3num = 0xFFFF;
|
||||||
ftp[i][j].mask.src.u.tcp.port = 0xFFFF;
|
ftp[i][j].mask.src.u.tcp.port = htons(0xFFFF);
|
||||||
ftp[i][j].mask.dst.protonum = 0xFF;
|
ftp[i][j].mask.dst.protonum = 0xFF;
|
||||||
ftp[i][j].max_expected = 1;
|
ftp[i][j].max_expected = 1;
|
||||||
ftp[i][j].timeout = 5 * 60; /* 5 Minutes */
|
ftp[i][j].timeout = 5 * 60; /* 5 Minutes */
|
||||||
|
|
|
@ -113,7 +113,7 @@ ctnetlink_dump_tuples(struct sk_buff *skb,
|
||||||
static inline int
|
static inline int
|
||||||
ctnetlink_dump_status(struct sk_buff *skb, const struct nf_conn *ct)
|
ctnetlink_dump_status(struct sk_buff *skb, const struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
u_int32_t status = htonl((u_int32_t) ct->status);
|
__be32 status = htonl((u_int32_t) ct->status);
|
||||||
NFA_PUT(skb, CTA_STATUS, sizeof(status), &status);
|
NFA_PUT(skb, CTA_STATUS, sizeof(status), &status);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ static inline int
|
||||||
ctnetlink_dump_timeout(struct sk_buff *skb, const struct nf_conn *ct)
|
ctnetlink_dump_timeout(struct sk_buff *skb, const struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
long timeout_l = ct->timeout.expires - jiffies;
|
long timeout_l = ct->timeout.expires - jiffies;
|
||||||
u_int32_t timeout;
|
__be32 timeout;
|
||||||
|
|
||||||
if (timeout_l < 0)
|
if (timeout_l < 0)
|
||||||
timeout = 0;
|
timeout = 0;
|
||||||
|
@ -196,7 +196,7 @@ ctnetlink_dump_counters(struct sk_buff *skb, const struct nf_conn *ct,
|
||||||
{
|
{
|
||||||
enum ctattr_type type = dir ? CTA_COUNTERS_REPLY: CTA_COUNTERS_ORIG;
|
enum ctattr_type type = dir ? CTA_COUNTERS_REPLY: CTA_COUNTERS_ORIG;
|
||||||
struct nfattr *nest_count = NFA_NEST(skb, type);
|
struct nfattr *nest_count = NFA_NEST(skb, type);
|
||||||
u_int32_t tmp;
|
__be32 tmp;
|
||||||
|
|
||||||
tmp = htonl(ct->counters[dir].packets);
|
tmp = htonl(ct->counters[dir].packets);
|
||||||
NFA_PUT(skb, CTA_COUNTERS32_PACKETS, sizeof(u_int32_t), &tmp);
|
NFA_PUT(skb, CTA_COUNTERS32_PACKETS, sizeof(u_int32_t), &tmp);
|
||||||
|
@ -219,7 +219,7 @@ nfattr_failure:
|
||||||
static inline int
|
static inline int
|
||||||
ctnetlink_dump_mark(struct sk_buff *skb, const struct nf_conn *ct)
|
ctnetlink_dump_mark(struct sk_buff *skb, const struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
u_int32_t mark = htonl(ct->mark);
|
__be32 mark = htonl(ct->mark);
|
||||||
|
|
||||||
NFA_PUT(skb, CTA_MARK, sizeof(u_int32_t), &mark);
|
NFA_PUT(skb, CTA_MARK, sizeof(u_int32_t), &mark);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -234,7 +234,7 @@ nfattr_failure:
|
||||||
static inline int
|
static inline int
|
||||||
ctnetlink_dump_id(struct sk_buff *skb, const struct nf_conn *ct)
|
ctnetlink_dump_id(struct sk_buff *skb, const struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
u_int32_t id = htonl(ct->id);
|
__be32 id = htonl(ct->id);
|
||||||
NFA_PUT(skb, CTA_ID, sizeof(u_int32_t), &id);
|
NFA_PUT(skb, CTA_ID, sizeof(u_int32_t), &id);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ nfattr_failure:
|
||||||
static inline int
|
static inline int
|
||||||
ctnetlink_dump_use(struct sk_buff *skb, const struct nf_conn *ct)
|
ctnetlink_dump_use(struct sk_buff *skb, const struct nf_conn *ct)
|
||||||
{
|
{
|
||||||
u_int32_t use = htonl(atomic_read(&ct->ct_general.use));
|
__be32 use = htonl(atomic_read(&ct->ct_general.use));
|
||||||
|
|
||||||
NFA_PUT(skb, CTA_USE, sizeof(u_int32_t), &use);
|
NFA_PUT(skb, CTA_USE, sizeof(u_int32_t), &use);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -610,12 +610,12 @@ ctnetlink_parse_nat(struct nfattr *nat,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (tb[CTA_NAT_MINIP-1])
|
if (tb[CTA_NAT_MINIP-1])
|
||||||
range->min_ip = *(u_int32_t *)NFA_DATA(tb[CTA_NAT_MINIP-1]);
|
range->min_ip = *(__be32 *)NFA_DATA(tb[CTA_NAT_MINIP-1]);
|
||||||
|
|
||||||
if (!tb[CTA_NAT_MAXIP-1])
|
if (!tb[CTA_NAT_MAXIP-1])
|
||||||
range->max_ip = range->min_ip;
|
range->max_ip = range->min_ip;
|
||||||
else
|
else
|
||||||
range->max_ip = *(u_int32_t *)NFA_DATA(tb[CTA_NAT_MAXIP-1]);
|
range->max_ip = *(__be32 *)NFA_DATA(tb[CTA_NAT_MAXIP-1]);
|
||||||
|
|
||||||
if (range->min_ip)
|
if (range->min_ip)
|
||||||
range->flags |= IP_NAT_RANGE_MAP_IPS;
|
range->flags |= IP_NAT_RANGE_MAP_IPS;
|
||||||
|
@ -688,7 +688,7 @@ ctnetlink_del_conntrack(struct sock *ctnl, struct sk_buff *skb,
|
||||||
ct = nf_ct_tuplehash_to_ctrack(h);
|
ct = nf_ct_tuplehash_to_ctrack(h);
|
||||||
|
|
||||||
if (cda[CTA_ID-1]) {
|
if (cda[CTA_ID-1]) {
|
||||||
u_int32_t id = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_ID-1]));
|
u_int32_t id = ntohl(*(__be32 *)NFA_DATA(cda[CTA_ID-1]));
|
||||||
if (ct->id != id) {
|
if (ct->id != id) {
|
||||||
nf_ct_put(ct);
|
nf_ct_put(ct);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
@ -781,7 +781,7 @@ static inline int
|
||||||
ctnetlink_change_status(struct nf_conn *ct, struct nfattr *cda[])
|
ctnetlink_change_status(struct nf_conn *ct, struct nfattr *cda[])
|
||||||
{
|
{
|
||||||
unsigned long d;
|
unsigned long d;
|
||||||
unsigned status = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_STATUS-1]));
|
unsigned int status = ntohl(*(__be32 *)NFA_DATA(cda[CTA_STATUS-1]));
|
||||||
d = ct->status ^ status;
|
d = ct->status ^ status;
|
||||||
|
|
||||||
if (d & (IPS_EXPECTED|IPS_CONFIRMED|IPS_DYING))
|
if (d & (IPS_EXPECTED|IPS_CONFIRMED|IPS_DYING))
|
||||||
|
@ -880,7 +880,7 @@ ctnetlink_change_helper(struct nf_conn *ct, struct nfattr *cda[])
|
||||||
static inline int
|
static inline int
|
||||||
ctnetlink_change_timeout(struct nf_conn *ct, struct nfattr *cda[])
|
ctnetlink_change_timeout(struct nf_conn *ct, struct nfattr *cda[])
|
||||||
{
|
{
|
||||||
u_int32_t timeout = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_TIMEOUT-1]));
|
u_int32_t timeout = ntohl(*(__be32 *)NFA_DATA(cda[CTA_TIMEOUT-1]));
|
||||||
|
|
||||||
if (!del_timer(&ct->timeout))
|
if (!del_timer(&ct->timeout))
|
||||||
return -ETIME;
|
return -ETIME;
|
||||||
|
@ -942,7 +942,7 @@ ctnetlink_change_conntrack(struct nf_conn *ct, struct nfattr *cda[])
|
||||||
|
|
||||||
#if defined(CONFIG_NF_CONNTRACK_MARK)
|
#if defined(CONFIG_NF_CONNTRACK_MARK)
|
||||||
if (cda[CTA_MARK-1])
|
if (cda[CTA_MARK-1])
|
||||||
ct->mark = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_MARK-1]));
|
ct->mark = ntohl(*(__be32 *)NFA_DATA(cda[CTA_MARK-1]));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -963,7 +963,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
|
||||||
|
|
||||||
if (!cda[CTA_TIMEOUT-1])
|
if (!cda[CTA_TIMEOUT-1])
|
||||||
goto err;
|
goto err;
|
||||||
ct->timeout.expires = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_TIMEOUT-1]));
|
ct->timeout.expires = ntohl(*(__be32 *)NFA_DATA(cda[CTA_TIMEOUT-1]));
|
||||||
|
|
||||||
ct->timeout.expires = jiffies + ct->timeout.expires * HZ;
|
ct->timeout.expires = jiffies + ct->timeout.expires * HZ;
|
||||||
ct->status |= IPS_CONFIRMED;
|
ct->status |= IPS_CONFIRMED;
|
||||||
|
@ -982,7 +982,7 @@ ctnetlink_create_conntrack(struct nfattr *cda[],
|
||||||
|
|
||||||
#if defined(CONFIG_NF_CONNTRACK_MARK)
|
#if defined(CONFIG_NF_CONNTRACK_MARK)
|
||||||
if (cda[CTA_MARK-1])
|
if (cda[CTA_MARK-1])
|
||||||
ct->mark = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_MARK-1]));
|
ct->mark = ntohl(*(__be32 *)NFA_DATA(cda[CTA_MARK-1]));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
help = nfct_help(ct);
|
help = nfct_help(ct);
|
||||||
|
@ -1117,8 +1117,8 @@ ctnetlink_exp_dump_expect(struct sk_buff *skb,
|
||||||
const struct nf_conntrack_expect *exp)
|
const struct nf_conntrack_expect *exp)
|
||||||
{
|
{
|
||||||
struct nf_conn *master = exp->master;
|
struct nf_conn *master = exp->master;
|
||||||
u_int32_t timeout = htonl((exp->timeout.expires - jiffies) / HZ);
|
__be32 timeout = htonl((exp->timeout.expires - jiffies) / HZ);
|
||||||
u_int32_t id = htonl(exp->id);
|
__be32 id = htonl(exp->id);
|
||||||
|
|
||||||
if (ctnetlink_exp_dump_tuple(skb, &exp->tuple, CTA_EXPECT_TUPLE) < 0)
|
if (ctnetlink_exp_dump_tuple(skb, &exp->tuple, CTA_EXPECT_TUPLE) < 0)
|
||||||
goto nfattr_failure;
|
goto nfattr_failure;
|
||||||
|
@ -1296,7 +1296,7 @@ ctnetlink_get_expect(struct sock *ctnl, struct sk_buff *skb,
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
if (cda[CTA_EXPECT_ID-1]) {
|
if (cda[CTA_EXPECT_ID-1]) {
|
||||||
u_int32_t id = *(u_int32_t *)NFA_DATA(cda[CTA_EXPECT_ID-1]);
|
__be32 id = *(__be32 *)NFA_DATA(cda[CTA_EXPECT_ID-1]);
|
||||||
if (exp->id != ntohl(id)) {
|
if (exp->id != ntohl(id)) {
|
||||||
nf_conntrack_expect_put(exp);
|
nf_conntrack_expect_put(exp);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
@ -1351,8 +1351,7 @@ ctnetlink_del_expect(struct sock *ctnl, struct sk_buff *skb,
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
if (cda[CTA_EXPECT_ID-1]) {
|
if (cda[CTA_EXPECT_ID-1]) {
|
||||||
u_int32_t id =
|
__be32 id = *(__be32 *)NFA_DATA(cda[CTA_EXPECT_ID-1]);
|
||||||
*(u_int32_t *)NFA_DATA(cda[CTA_EXPECT_ID-1]);
|
|
||||||
if (exp->id != ntohl(id)) {
|
if (exp->id != ntohl(id)) {
|
||||||
nf_conntrack_expect_put(exp);
|
nf_conntrack_expect_put(exp);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
|
@ -217,7 +217,7 @@ static int sctp_print_conntrack(struct seq_file *s,
|
||||||
for (offset = dataoff + sizeof(sctp_sctphdr_t), count = 0; \
|
for (offset = dataoff + sizeof(sctp_sctphdr_t), count = 0; \
|
||||||
offset < skb->len && \
|
offset < skb->len && \
|
||||||
(sch = skb_header_pointer(skb, offset, sizeof(_sch), &_sch)); \
|
(sch = skb_header_pointer(skb, offset, sizeof(_sch), &_sch)); \
|
||||||
offset += (htons(sch->length) + 3) & ~3, count++)
|
offset += (ntohs(sch->length) + 3) & ~3, count++)
|
||||||
|
|
||||||
/* Some validity checks to make sure the chunks are fine */
|
/* Some validity checks to make sure the chunks are fine */
|
||||||
static int do_basic_checks(struct nf_conn *conntrack,
|
static int do_basic_checks(struct nf_conn *conntrack,
|
||||||
|
|
|
@ -474,8 +474,8 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
|
||||||
|
|
||||||
/* Fast path for timestamp-only option */
|
/* Fast path for timestamp-only option */
|
||||||
if (length == TCPOLEN_TSTAMP_ALIGNED*4
|
if (length == TCPOLEN_TSTAMP_ALIGNED*4
|
||||||
&& *(__u32 *)ptr ==
|
&& *(__be32 *)ptr ==
|
||||||
__constant_ntohl((TCPOPT_NOP << 24)
|
__constant_htonl((TCPOPT_NOP << 24)
|
||||||
| (TCPOPT_NOP << 16)
|
| (TCPOPT_NOP << 16)
|
||||||
| (TCPOPT_TIMESTAMP << 8)
|
| (TCPOPT_TIMESTAMP << 8)
|
||||||
| TCPOLEN_TIMESTAMP))
|
| TCPOLEN_TIMESTAMP))
|
||||||
|
@ -506,9 +506,7 @@ static void tcp_sack(const struct sk_buff *skb, unsigned int dataoff,
|
||||||
for (i = 0;
|
for (i = 0;
|
||||||
i < (opsize - TCPOLEN_SACK_BASE);
|
i < (opsize - TCPOLEN_SACK_BASE);
|
||||||
i += TCPOLEN_SACK_PERBLOCK) {
|
i += TCPOLEN_SACK_PERBLOCK) {
|
||||||
memcpy(&tmp, (__u32 *)(ptr + i) + 1,
|
tmp = ntohl(*((__be32 *)(ptr+i)+1));
|
||||||
sizeof(__u32));
|
|
||||||
tmp = ntohl(tmp);
|
|
||||||
|
|
||||||
if (after(tmp, *sack))
|
if (after(tmp, *sack))
|
||||||
*sack = tmp;
|
*sack = tmp;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче