diff options
author | David S. Miller <davem@davemloft.net> | 2012-01-27 18:01:08 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-01-27 21:00:07 -0500 |
commit | 0ec88662041e172acf33d7a15a2020841ee82afb (patch) | |
tree | 2d8d0103e050a9ad08932b369ad52eb3e7f1ab25 /net/ipv4/ip_gre.c | |
parent | f5e261e626eb3fe07adf484aaad2ecfc757feba3 (diff) |
ipv4: ip_gre: Convert to dst_neigh_lookup()
The conversion is very similar to that made to ipv6's SIT code.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/ip_gre.c')
-rw-r--r-- | net/ipv4/ip_gre.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c index 05f7419ed7c5..bf9541648b96 100644 --- a/net/ipv4/ip_gre.c +++ b/net/ipv4/ip_gre.c | |||
@@ -730,10 +730,12 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev | |||
730 | } | 730 | } |
731 | #if IS_ENABLED(CONFIG_IPV6) | 731 | #if IS_ENABLED(CONFIG_IPV6) |
732 | else if (skb->protocol == htons(ETH_P_IPV6)) { | 732 | else if (skb->protocol == htons(ETH_P_IPV6)) { |
733 | struct neighbour *neigh = dst_get_neighbour_noref(skb_dst(skb)); | ||
734 | const struct in6_addr *addr6; | 733 | const struct in6_addr *addr6; |
734 | struct neighbour *neigh; | ||
735 | bool do_tx_error_icmp; | ||
735 | int addr_type; | 736 | int addr_type; |
736 | 737 | ||
738 | neigh = dst_neigh_lookup(skb_dst(skb), &ipv6_hdr(skb)->daddr); | ||
737 | if (neigh == NULL) | 739 | if (neigh == NULL) |
738 | goto tx_error; | 740 | goto tx_error; |
739 | 741 | ||
@@ -746,9 +748,14 @@ static netdev_tx_t ipgre_tunnel_xmit(struct sk_buff *skb, struct net_device *dev | |||
746 | } | 748 | } |
747 | 749 | ||
748 | if ((addr_type & IPV6_ADDR_COMPATv4) == 0) | 750 | if ((addr_type & IPV6_ADDR_COMPATv4) == 0) |
751 | do_tx_error_icmp = true; | ||
752 | else { | ||
753 | do_tx_error_icmp = false; | ||
754 | dst = addr6->s6_addr32[3]; | ||
755 | } | ||
756 | neigh_release(neigh); | ||
757 | if (do_tx_error_icmp) | ||
749 | goto tx_error_icmp; | 758 | goto tx_error_icmp; |
750 | |||
751 | dst = addr6->s6_addr32[3]; | ||
752 | } | 759 | } |
753 | #endif | 760 | #endif |
754 | else | 761 | else |