geneve_nl2info() calls ipv6_addr_type() to check if the remote
IPv6 address is link-local.
Then, it also calls ipv6_addr_is_multicast() for the same address.
Let's not call ipv6_addr_is_multicast() and reuse ipv6_addr_type().
Note that addr_type will be reused in the next patch, thus it is
not defined inside the if-block.
Signed-off-by: Kuniyuki Iwashima <kuniyu@google.com>
---
drivers/net/geneve.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index e8ff03ed87dc..16b5f9e13859 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -1898,6 +1898,7 @@ static int geneve_nl2info(struct nlattr *tb[], struct nlattr *data[],
struct geneve_config *cfg, bool changelink)
{
struct ip_tunnel_info *info = &cfg->info;
+ int addr_type;
int attrtype;
if (data[IFLA_GENEVE_REMOTE] && data[IFLA_GENEVE_REMOTE6]) {@@ -1933,13 +1934,13 @@ static int geneve_nl2info(struct nlattr *tb[], struct nlattr *data[],
info->key.u.ipv6.dst =
nla_get_in6_addr(data[IFLA_GENEVE_REMOTE6]);
- if (ipv6_addr_type(&info->key.u.ipv6.dst) &
- IPV6_ADDR_LINKLOCAL) {
+ addr_type = ipv6_addr_type(&info->key.u.ipv6.dst);
+ if (addr_type & IPV6_ADDR_LINKLOCAL) {
NL_SET_ERR_MSG_ATTR(extack, data[IFLA_GENEVE_REMOTE6],
"Remote IPv6 address cannot be link-local");
return -EINVAL;
}
- if (ipv6_addr_is_multicast(&info->key.u.ipv6.dst)) {
+ if (addr_type & IPV6_ADDR_MULTICAST) {
NL_SET_ERR_MSG_ATTR(extack, data[IFLA_GENEVE_REMOTE6],
"Remote IPv6 address cannot be Multicast");
return -EINVAL;--
2.54.0.746.g67dd491aae-goog