|
@@ -1094,47 +1094,47 @@ static void cma_save_ib_info(struct sockaddr *src_addr,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void cma_save_ip4_info(struct sockaddr *src_addr,
|
|
|
- struct sockaddr *dst_addr,
|
|
|
+static void cma_save_ip4_info(struct sockaddr_in *src_addr,
|
|
|
+ struct sockaddr_in *dst_addr,
|
|
|
struct cma_hdr *hdr,
|
|
|
__be16 local_port)
|
|
|
{
|
|
|
- struct sockaddr_in *ip4;
|
|
|
-
|
|
|
if (src_addr) {
|
|
|
- ip4 = (struct sockaddr_in *)src_addr;
|
|
|
- ip4->sin_family = AF_INET;
|
|
|
- ip4->sin_addr.s_addr = hdr->dst_addr.ip4.addr;
|
|
|
- ip4->sin_port = local_port;
|
|
|
+ *src_addr = (struct sockaddr_in) {
|
|
|
+ .sin_family = AF_INET,
|
|
|
+ .sin_addr.s_addr = hdr->dst_addr.ip4.addr,
|
|
|
+ .sin_port = local_port,
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
if (dst_addr) {
|
|
|
- ip4 = (struct sockaddr_in *)dst_addr;
|
|
|
- ip4->sin_family = AF_INET;
|
|
|
- ip4->sin_addr.s_addr = hdr->src_addr.ip4.addr;
|
|
|
- ip4->sin_port = hdr->port;
|
|
|
+ *dst_addr = (struct sockaddr_in) {
|
|
|
+ .sin_family = AF_INET,
|
|
|
+ .sin_addr.s_addr = hdr->src_addr.ip4.addr,
|
|
|
+ .sin_port = hdr->port,
|
|
|
+ };
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void cma_save_ip6_info(struct sockaddr *src_addr,
|
|
|
- struct sockaddr *dst_addr,
|
|
|
+static void cma_save_ip6_info(struct sockaddr_in6 *src_addr,
|
|
|
+ struct sockaddr_in6 *dst_addr,
|
|
|
struct cma_hdr *hdr,
|
|
|
__be16 local_port)
|
|
|
{
|
|
|
- struct sockaddr_in6 *ip6;
|
|
|
-
|
|
|
if (src_addr) {
|
|
|
- ip6 = (struct sockaddr_in6 *)src_addr;
|
|
|
- ip6->sin6_family = AF_INET6;
|
|
|
- ip6->sin6_addr = hdr->dst_addr.ip6;
|
|
|
- ip6->sin6_port = local_port;
|
|
|
+ *src_addr = (struct sockaddr_in6) {
|
|
|
+ .sin6_family = AF_INET6,
|
|
|
+ .sin6_addr = hdr->dst_addr.ip6,
|
|
|
+ .sin6_port = local_port,
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
if (dst_addr) {
|
|
|
- ip6 = (struct sockaddr_in6 *)dst_addr;
|
|
|
- ip6->sin6_family = AF_INET6;
|
|
|
- ip6->sin6_addr = hdr->src_addr.ip6;
|
|
|
- ip6->sin6_port = hdr->port;
|
|
|
+ *dst_addr = (struct sockaddr_in6) {
|
|
|
+ .sin6_family = AF_INET6,
|
|
|
+ .sin6_addr = hdr->src_addr.ip6,
|
|
|
+ .sin6_port = hdr->port,
|
|
|
+ };
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1159,10 +1159,12 @@ static int cma_save_ip_info(struct sockaddr *src_addr,
|
|
|
|
|
|
switch (cma_get_ip_ver(hdr)) {
|
|
|
case 4:
|
|
|
- cma_save_ip4_info(src_addr, dst_addr, hdr, port);
|
|
|
+ cma_save_ip4_info((struct sockaddr_in *)src_addr,
|
|
|
+ (struct sockaddr_in *)dst_addr, hdr, port);
|
|
|
break;
|
|
|
case 6:
|
|
|
- cma_save_ip6_info(src_addr, dst_addr, hdr, port);
|
|
|
+ cma_save_ip6_info((struct sockaddr_in6 *)src_addr,
|
|
|
+ (struct sockaddr_in6 *)dst_addr, hdr, port);
|
|
|
break;
|
|
|
default:
|
|
|
return -EAFNOSUPPORT;
|