[NETFILTER]: nf_queue: move list_head/skb/id to struct nf_info

Move common fields for queue management to struct nf_info and rename it
to struct nf_queue_entry. The avoids one allocation/free per packet and
simplifies the code a bit.

Alternatively we could add some private room at the tail, but since
all current users use identical structs this seems easier.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Patrick McHardy
2007-12-05 01:26:33 -08:00
committed by David S. Miller
parent 7a6c6653b3
commit 02f014d888
8 changed files with 132 additions and 190 deletions

View File

@ -123,11 +123,12 @@ struct ip_rt_info {
u_int8_t tos;
};
static void nf_ip_saveroute(const struct sk_buff *skb, struct nf_info *info)
static void nf_ip_saveroute(const struct sk_buff *skb,
struct nf_queue_entry *entry)
{
struct ip_rt_info *rt_info = nf_info_reroute(info);
struct ip_rt_info *rt_info = nf_queue_entry_reroute(entry);
if (info->hook == NF_INET_LOCAL_OUT) {
if (entry->hook == NF_INET_LOCAL_OUT) {
const struct iphdr *iph = ip_hdr(skb);
rt_info->tos = iph->tos;
@ -136,11 +137,12 @@ static void nf_ip_saveroute(const struct sk_buff *skb, struct nf_info *info)
}
}
static int nf_ip_reroute(struct sk_buff *skb, const struct nf_info *info)
static int nf_ip_reroute(struct sk_buff *skb,
const struct nf_queue_entry *entry)
{
const struct ip_rt_info *rt_info = nf_info_reroute(info);
const struct ip_rt_info *rt_info = nf_queue_entry_reroute(entry);
if (info->hook == NF_INET_LOCAL_OUT) {
if (entry->hook == NF_INET_LOCAL_OUT) {
const struct iphdr *iph = ip_hdr(skb);
if (!(iph->tos == rt_info->tos