mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 19:29:37 +00:00
ipvlan: Add new func ipvlan_is_valid_dev instead of duplicated codes
There are multiple duplicated condition checks in the current codes, so I add the new func ipvlan_is_valid_dev instead of the duplicated codes to check if the netdev is real ipvlan dev. Signed-off-by: Gao Feng <gfree.wind@vip.163.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0653cb2e1d
commit
5e51fe6f44
1 changed files with 17 additions and 16 deletions
|
@ -850,6 +850,19 @@ static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr)
|
|||
return ipvlan_del_addr(ipvlan, ip6_addr, true);
|
||||
}
|
||||
|
||||
static bool ipvlan_is_valid_dev(const struct net_device *dev)
|
||||
{
|
||||
struct ipvl_dev *ipvlan = netdev_priv(dev);
|
||||
|
||||
if (!netif_is_ipvlan(dev))
|
||||
return false;
|
||||
|
||||
if (!ipvlan || !ipvlan->port)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int ipvlan_addr6_event(struct notifier_block *unused,
|
||||
unsigned long event, void *ptr)
|
||||
{
|
||||
|
@ -857,10 +870,7 @@ static int ipvlan_addr6_event(struct notifier_block *unused,
|
|||
struct net_device *dev = (struct net_device *)if6->idev->dev;
|
||||
struct ipvl_dev *ipvlan = netdev_priv(dev);
|
||||
|
||||
if (!netif_is_ipvlan(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!ipvlan || !ipvlan->port)
|
||||
if (!ipvlan_is_valid_dev(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
switch (event) {
|
||||
|
@ -888,10 +898,7 @@ static int ipvlan_addr6_validator_event(struct notifier_block *unused,
|
|||
if (in_softirq())
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!netif_is_ipvlan(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!ipvlan || !ipvlan->port)
|
||||
if (!ipvlan_is_valid_dev(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
switch (event) {
|
||||
|
@ -932,10 +939,7 @@ static int ipvlan_addr4_event(struct notifier_block *unused,
|
|||
struct ipvl_dev *ipvlan = netdev_priv(dev);
|
||||
struct in_addr ip4_addr;
|
||||
|
||||
if (!netif_is_ipvlan(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!ipvlan || !ipvlan->port)
|
||||
if (!ipvlan_is_valid_dev(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
switch (event) {
|
||||
|
@ -961,10 +965,7 @@ static int ipvlan_addr4_validator_event(struct notifier_block *unused,
|
|||
struct net_device *dev = (struct net_device *)ivi->ivi_dev->dev;
|
||||
struct ipvl_dev *ipvlan = netdev_priv(dev);
|
||||
|
||||
if (!netif_is_ipvlan(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (!ipvlan || !ipvlan->port)
|
||||
if (!ipvlan_is_valid_dev(dev))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
switch (event) {
|
||||
|
|
Loading…
Reference in a new issue