Hello! On 03/07/2017 05:51 PM, f...@ikuai8.com wrote:
From: Gao Feng <f...@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 <f...@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