diff options
Diffstat (limited to 'net/decnet/dn_route.c')
-rw-r--r-- | net/decnet/dn_route.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index fceb86ca0116..3b6400d17dc2 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c | |||
@@ -705,6 +705,14 @@ out: | |||
705 | return NET_RX_DROP; | 705 | return NET_RX_DROP; |
706 | } | 706 | } |
707 | 707 | ||
708 | static int dn_to_neigh_output(struct sk_buff *skb) | ||
709 | { | ||
710 | struct dst_entry *dst = skb_dst(skb); | ||
711 | struct neighbour *n = dst->neighbour; | ||
712 | |||
713 | return n->output(n, skb); | ||
714 | } | ||
715 | |||
708 | static int dn_output(struct sk_buff *skb) | 716 | static int dn_output(struct sk_buff *skb) |
709 | { | 717 | { |
710 | struct dst_entry *dst = skb_dst(skb); | 718 | struct dst_entry *dst = skb_dst(skb); |
@@ -733,7 +741,7 @@ static int dn_output(struct sk_buff *skb) | |||
733 | cb->hops = 0; | 741 | cb->hops = 0; |
734 | 742 | ||
735 | return NF_HOOK(NFPROTO_DECNET, NF_DN_LOCAL_OUT, skb, NULL, dev, | 743 | return NF_HOOK(NFPROTO_DECNET, NF_DN_LOCAL_OUT, skb, NULL, dev, |
736 | neigh->output); | 744 | dn_to_neigh_output); |
737 | 745 | ||
738 | error: | 746 | error: |
739 | if (net_ratelimit()) | 747 | if (net_ratelimit()) |
@@ -750,7 +758,6 @@ static int dn_forward(struct sk_buff *skb) | |||
750 | struct dst_entry *dst = skb_dst(skb); | 758 | struct dst_entry *dst = skb_dst(skb); |
751 | struct dn_dev *dn_db = rcu_dereference(dst->dev->dn_ptr); | 759 | struct dn_dev *dn_db = rcu_dereference(dst->dev->dn_ptr); |
752 | struct dn_route *rt; | 760 | struct dn_route *rt; |
753 | struct neighbour *neigh = dst->neighbour; | ||
754 | int header_len; | 761 | int header_len; |
755 | #ifdef CONFIG_NETFILTER | 762 | #ifdef CONFIG_NETFILTER |
756 | struct net_device *dev = skb->dev; | 763 | struct net_device *dev = skb->dev; |
@@ -783,7 +790,7 @@ static int dn_forward(struct sk_buff *skb) | |||
783 | cb->rt_flags |= DN_RT_F_IE; | 790 | cb->rt_flags |= DN_RT_F_IE; |
784 | 791 | ||
785 | return NF_HOOK(NFPROTO_DECNET, NF_DN_FORWARD, skb, dev, skb->dev, | 792 | return NF_HOOK(NFPROTO_DECNET, NF_DN_FORWARD, skb, dev, skb->dev, |
786 | neigh->output); | 793 | dn_to_neigh_output); |
787 | 794 | ||
788 | drop: | 795 | drop: |
789 | kfree_skb(skb); | 796 | kfree_skb(skb); |