Commit def67753 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by David S. Miller

neigh: Move neigh_compat_output into ax25_ip.c

The only caller is now is ax25_neigh_construct so move
neigh_compat_output into ax25_ip.c make it static and rename it
ax25_neigh_output.

Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-hams@vger.kernel.org
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 21bfb8e9
...@@ -268,7 +268,6 @@ void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev); ...@@ -268,7 +268,6 @@ void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev);
int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev); int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev);
int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb); int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb);
int neigh_connected_output(struct neighbour *neigh, struct sk_buff *skb); int neigh_connected_output(struct neighbour *neigh, struct sk_buff *skb);
int neigh_compat_output(struct neighbour *neigh, struct sk_buff *skb);
int neigh_direct_output(struct neighbour *neigh, struct sk_buff *skb); int neigh_direct_output(struct neighbour *neigh, struct sk_buff *skb);
struct neighbour *neigh_event_ns(struct neigh_table *tbl, struct neighbour *neigh_event_ns(struct neigh_table *tbl,
u8 *lladdr, void *saddr, u8 *lladdr, void *saddr,
......
...@@ -216,6 +216,20 @@ static int ax25_rebuild_header(struct sk_buff *skb) ...@@ -216,6 +216,20 @@ static int ax25_rebuild_header(struct sk_buff *skb)
return 1; return 1;
} }
static int ax25_neigh_output(struct neighbour *neigh, struct sk_buff *skb)
{
struct net_device *dev = skb->dev;
__skb_pull(skb, skb_network_offset(skb));
if (dev_hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL,
skb->len) < 0 &&
dev_rebuild_header(skb))
return 0;
return dev_queue_xmit(skb);
}
int ax25_neigh_construct(struct neighbour *neigh) int ax25_neigh_construct(struct neighbour *neigh)
{ {
/* This trouble could be saved if ax25 would right a proper /* This trouble could be saved if ax25 would right a proper
...@@ -227,8 +241,8 @@ int ax25_neigh_construct(struct neighbour *neigh) ...@@ -227,8 +241,8 @@ int ax25_neigh_construct(struct neighbour *neigh)
return -EINVAL; return -EINVAL;
priv->ops = *neigh->ops; priv->ops = *neigh->ops;
priv->ops.output = neigh_compat_output; priv->ops.output = ax25_neigh_output;
priv->ops.connected_output = neigh_compat_output; priv->ops.connected_output = ax25_neigh_output;
return 0; return 0;
} }
......
...@@ -1280,26 +1280,6 @@ static void neigh_hh_init(struct neighbour *n, struct dst_entry *dst) ...@@ -1280,26 +1280,6 @@ static void neigh_hh_init(struct neighbour *n, struct dst_entry *dst)
write_unlock_bh(&n->lock); write_unlock_bh(&n->lock);
} }
/* This function can be used in contexts, where only old dev_queue_xmit
* worked, f.e. if you want to override normal output path (eql, shaper),
* but resolution is not made yet.
*/
int neigh_compat_output(struct neighbour *neigh, struct sk_buff *skb)
{
struct net_device *dev = skb->dev;
__skb_pull(skb, skb_network_offset(skb));
if (dev_hard_header(skb, dev, ntohs(skb->protocol), NULL, NULL,
skb->len) < 0 &&
dev_rebuild_header(skb))
return 0;
return dev_queue_xmit(skb);
}
EXPORT_SYMBOL(neigh_compat_output);
/* Slow and careful. */ /* Slow and careful. */
int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb) int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment