diff mbox

[net-next,2/2] net: Eliminate duplicated codes by creating one new function in_dev_select_addr

Message ID 1488898279-18930-1-git-send-email-fgao@ikuai8.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

高峰 March 7, 2017, 2:51 p.m. UTC
From: Gao Feng <fgao@ikuai8.com>

There are two duplicated loop codes which used to select right
address in current codes. Now eliminate these codes by creating
one new function in_dev_select_addr.

Signed-off-by: Gao Feng <fgao@ikuai8.com>
---
 net/ipv4/devinet.c | 34 +++++++++++++++++++---------------
 1 file changed, 19 insertions(+), 15 deletions(-)

Comments

Sergei Shtylyov March 7, 2017, 3:46 p.m. UTC | #1
Hello!

On 03/07/2017 05:51 PM, fgao@ikuai8.com wrote:

> From: Gao Feng <fgao@ikuai8.com>
>
> There are two duplicated loop codes which used to select right

    Just "loops".

> address in current codes. Now eliminate these codes by creating
> one new function in_dev_select_addr.
>
> Signed-off-by: Gao Feng <fgao@ikuai8.com>
> ---
>  net/ipv4/devinet.c | 34 +++++++++++++++++++---------------
>  1 file changed, 19 insertions(+), 15 deletions(-)
>
> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
> index 1a9e550..d0964c5 100644
> --- a/net/ipv4/devinet.c
> +++ b/net/ipv4/devinet.c
> @@ -1191,6 +1191,19 @@ static int inet_gifconf(struct net_device *dev, char __user *buf, int len)
>  	return done;
>  }
>
> +static __be32 in_dev_select_addr(const struct in_device *in_dev,
> +				 int scope)
> +{
> +	for_primary_ifa(in_dev) {
> +		if (ifa->ifa_scope != RT_SCOPE_LINK &&
> +		    ifa->ifa_scope <= scope) {
> +			return ifa->ifa_local;
> +		}

    Could drop the useless {} here, while at it.

> +	} endfor_ifa(in_dev);
> +
> +	return 0;
> +}
> +
>  __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
>  {
>  	__be32 addr = 0;
[...]

MBR, Sergei
Feng Gao March 10, 2017, 1:36 a.m. UTC | #2
Hi Sergei,

On Tue, Mar 7, 2017 at 11:46 PM, Sergei Shtylyov
<sergei.shtylyov@cogentembedded.com> wrote:
> Hello!
>
> On 03/07/2017 05:51 PM, fgao@ikuai8.com wrote:
>
>> From: Gao Feng <fgao@ikuai8.com>
>>
>> There are two duplicated loop codes which used to select right
>
>
>    Just "loops".
>
>> address in current codes. Now eliminate these codes by creating
>> one new function in_dev_select_addr.
>>
>> Signed-off-by: Gao Feng <fgao@ikuai8.com>
>> ---
>>  net/ipv4/devinet.c | 34 +++++++++++++++++++---------------
>>  1 file changed, 19 insertions(+), 15 deletions(-)
>>
>> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
>> index 1a9e550..d0964c5 100644
>> --- a/net/ipv4/devinet.c
>> +++ b/net/ipv4/devinet.c
>> @@ -1191,6 +1191,19 @@ static int inet_gifconf(struct net_device *dev,
>> char __user *buf, int len)
>>         return done;
>>  }
>>
>> +static __be32 in_dev_select_addr(const struct in_device *in_dev,
>> +                                int scope)
>> +{
>> +       for_primary_ifa(in_dev) {
>> +               if (ifa->ifa_scope != RT_SCOPE_LINK &&
>> +                   ifa->ifa_scope <= scope) {
>> +                       return ifa->ifa_local;
>> +               }
>
>
>    Could drop the useless {} here, while at it.

Thanks, I would correct it in v2 patch.

The checkpatch.pl ignores this issue when I checked this patch.
It seems one bug of checkpatch.pl

Regards
Feng

>
>> +       } endfor_ifa(in_dev);
>> +
>> +       return 0;
>> +}
>> +
>>  __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int
>> scope)
>>  {
>>         __be32 addr = 0;
>
> [...]
>
> MBR, Sergei
>
diff mbox

Patch

diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 1a9e550..d0964c5 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -1191,6 +1191,19 @@  static int inet_gifconf(struct net_device *dev, char __user *buf, int len)
 	return done;
 }
 
+static __be32 in_dev_select_addr(const struct in_device *in_dev,
+				 int scope)
+{
+	for_primary_ifa(in_dev) {
+		if (ifa->ifa_scope != RT_SCOPE_LINK &&
+		    ifa->ifa_scope <= scope) {
+			return ifa->ifa_local;
+		}
+	} endfor_ifa(in_dev);
+
+	return 0;
+}
+
 __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
 {
 	__be32 addr = 0;
@@ -1229,13 +1242,9 @@  __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
 		if (dev) {
 			in_dev = __in_dev_get_rcu(dev);
 			if (in_dev) {
-				for_primary_ifa(in_dev) {
-					if (ifa->ifa_scope != RT_SCOPE_LINK &&
-					    ifa->ifa_scope <= scope) {
-						addr = ifa->ifa_local;
-						goto out_unlock;
-					}
-				} endfor_ifa(in_dev);
+				addr = in_dev_select_addr(in_dev, scope);
+				if (addr)
+					goto out_unlock;
 			}
 		}
 
@@ -1250,14 +1259,9 @@  __be32 inet_select_addr(const struct net_device *dev, __be32 dst, int scope)
 			in_dev = __in_dev_get_rcu(dev);
 			if (!in_dev)
 				continue;
-
-			for_primary_ifa(in_dev) {
-				if (ifa->ifa_scope != RT_SCOPE_LINK &&
-				    ifa->ifa_scope <= scope) {
-					addr = ifa->ifa_local;
-					goto out_unlock;
-				}
-			} endfor_ifa(in_dev);
+			addr = in_dev_select_addr(in_dev, scope);
+			if (addr)
+				goto out_unlock;
 		}
 	}
 out_unlock: