From: Gao Feng <gfree.w...@vip.163.com>

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.w...@vip.163.com>
---
 drivers/net/ipvlan/ipvlan_main.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index 30cb803..2469df1 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -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) {
-- 
1.9.1


Reply via email to