Hello!
On 03/07/2017 05:51 PM, [email protected] wrote:
From: Gao Feng <[email protected]>
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 <[email protected]>
---
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