Commit 89c5691c authored by Parav Pandit's avatar Parav Pandit Committed by Jason Gunthorpe

RDMA/core: Let protocol specific function typecast sockaddr structure

Current code typecasts destination address using extra variable but uses
source address as is.

Even though the compiler optimizes such code well, just let each protocol
specific function typecast for src and dest both and have symmetric code.
Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
Reviewed-by: default avatarDaniel Jurgens <danielj@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent f89b7dfa
...@@ -372,11 +372,15 @@ static int fetch_ha(const struct dst_entry *dst, struct rdma_dev_addr *dev_addr, ...@@ -372,11 +372,15 @@ static int fetch_ha(const struct dst_entry *dst, struct rdma_dev_addr *dev_addr,
return dst_fetch_ha(dst, dev_addr, daddr); return dst_fetch_ha(dst, dev_addr, daddr);
} }
static int addr4_resolve(struct sockaddr_in *src_in, static int addr4_resolve(struct sockaddr *src_sock,
const struct sockaddr_in *dst_in, const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr, struct rdma_dev_addr *addr,
struct rtable **prt) struct rtable **prt)
{ {
struct sockaddr_in *src_in = (struct sockaddr_in *)src_sock;
const struct sockaddr_in *dst_in =
(const struct sockaddr_in *)dst_sock;
__be32 src_ip = src_in->sin_addr.s_addr; __be32 src_ip = src_in->sin_addr.s_addr;
__be32 dst_ip = dst_in->sin_addr.s_addr; __be32 dst_ip = dst_in->sin_addr.s_addr;
struct rtable *rt; struct rtable *rt;
...@@ -408,11 +412,14 @@ static int addr4_resolve(struct sockaddr_in *src_in, ...@@ -408,11 +412,14 @@ static int addr4_resolve(struct sockaddr_in *src_in,
} }
#if IS_ENABLED(CONFIG_IPV6) #if IS_ENABLED(CONFIG_IPV6)
static int addr6_resolve(struct sockaddr_in6 *src_in, static int addr6_resolve(struct sockaddr *src_sock,
const struct sockaddr_in6 *dst_in, const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr, struct rdma_dev_addr *addr,
struct dst_entry **pdst) struct dst_entry **pdst)
{ {
struct sockaddr_in6 *src_in = (struct sockaddr_in6 *)src_sock;
const struct sockaddr_in6 *dst_in =
(const struct sockaddr_in6 *)dst_sock;
struct flowi6 fl6; struct flowi6 fl6;
struct dst_entry *dst; struct dst_entry *dst;
struct rt6_info *rt; struct rt6_info *rt;
...@@ -445,8 +452,8 @@ static int addr6_resolve(struct sockaddr_in6 *src_in, ...@@ -445,8 +452,8 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
return 0; return 0;
} }
#else #else
static int addr6_resolve(struct sockaddr_in6 *src_in, static int addr6_resolve(struct sockaddr *src_sock,
const struct sockaddr_in6 *dst_in, const struct sockaddr *dst_sock,
struct rdma_dev_addr *addr, struct rdma_dev_addr *addr,
struct dst_entry **pdst) struct dst_entry **pdst)
{ {
...@@ -496,11 +503,8 @@ static int addr_resolve(struct sockaddr *src_in, ...@@ -496,11 +503,8 @@ static int addr_resolve(struct sockaddr *src_in,
if (src_in->sa_family == AF_INET) { if (src_in->sa_family == AF_INET) {
struct rtable *rt = NULL; struct rtable *rt = NULL;
const struct sockaddr_in *dst_in4 =
(const struct sockaddr_in *)dst_in;
ret = addr4_resolve((struct sockaddr_in *)src_in, ret = addr4_resolve(src_in, dst_in, addr, &rt);
dst_in4, addr, &rt);
if (ret) if (ret)
return ret; return ret;
...@@ -516,12 +520,7 @@ static int addr_resolve(struct sockaddr *src_in, ...@@ -516,12 +520,7 @@ static int addr_resolve(struct sockaddr *src_in,
ip_rt_put(rt); ip_rt_put(rt);
} else { } else {
const struct sockaddr_in6 *dst_in6 = ret = addr6_resolve(src_in, dst_in, addr, &dst);
(const struct sockaddr_in6 *)dst_in;
ret = addr6_resolve((struct sockaddr_in6 *)src_in,
dst_in6, addr,
&dst);
if (ret) if (ret)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment