diff options
author | 2015-03-28 19:13:25 +0100 | |
---|---|---|
committer | 2015-03-31 13:28:33 -0400 | |
commit | e9997c2938b23d792528da1597b3aea9b0f2a324 (patch) | |
tree | c2e767997eb357c7b48e4711c336a89ddcc730ce /drivers/net/ipvlan/ipvlan.h | |
parent | ipvlan: do not use rcu operations for address list (diff) | |
download | linux-e9997c2938b23d792528da1597b3aea9b0f2a324.tar.gz linux-e9997c2938b23d792528da1597b3aea9b0f2a324.tar.bz2 linux-e9997c2938b23d792528da1597b3aea9b0f2a324.zip |
ipvlan: fix check for IP addresses in control path
When an ipvlan interface is down, its addresses are not on the hash list.
Fix checks for existence of addresses not to depend on the hash list, walk
through all interface addresses instead.
Signed-off-by: Jiri Benc <jbenc@redhat.com>
Acked-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ipvlan/ipvlan.h')
-rw-r--r-- | drivers/net/ipvlan/ipvlan.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ipvlan/ipvlan.h b/drivers/net/ipvlan/ipvlan.h index 924ea98bd531..54549a6223dd 100644 --- a/drivers/net/ipvlan/ipvlan.h +++ b/drivers/net/ipvlan/ipvlan.h @@ -114,7 +114,9 @@ unsigned int ipvlan_mac_hash(const unsigned char *addr); rx_handler_result_t ipvlan_handle_frame(struct sk_buff **pskb); int ipvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev); void ipvlan_ht_addr_add(struct ipvl_dev *ipvlan, struct ipvl_addr *addr); -bool ipvlan_addr_busy(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6); +struct ipvl_addr *ipvlan_find_addr(const struct ipvl_dev *ipvlan, + const void *iaddr, bool is_v6); +bool ipvlan_addr_busy(struct ipvl_port *port, void *iaddr, bool is_v6); struct ipvl_addr *ipvlan_ht_addr_lookup(const struct ipvl_port *port, const void *iaddr, bool is_v6); void ipvlan_ht_addr_del(struct ipvl_addr *addr, bool sync); |