You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/08/27 15:50:50 UTC
[incubator-nuttx-apps] branch master updated: fix use of addroute/delroute
This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push:
new 703554642 fix use of addroute/delroute
703554642 is described below
commit 70355464227909a2df79b46b1370b7df5e15d004
Author: liyi <li...@xiaomi.com>
AuthorDate: Fri Aug 26 16:13:56 2022 +0800
fix use of addroute/delroute
Signed-off-by: liyi <li...@xiaomi.com>
---
examples/mld/mld_main.c | 43 +++++++++++++++++-----------------
netutils/netlib/netlib_setdripv4addr.c | 26 ++++++++++----------
nshlib/nsh_routecmds.c | 14 +++++------
3 files changed, 40 insertions(+), 43 deletions(-)
diff --git a/examples/mld/mld_main.c b/examples/mld/mld_main.c
index dd7a894f9..30411df2b 100644
--- a/examples/mld/mld_main.c
+++ b/examples/mld/mld_main.c
@@ -258,9 +258,10 @@ int main(int argc, FAR char *argv[])
FAR char *iobuffer = NULL;
struct sockaddr_in6 host;
#ifdef CONFIG_NET_ROUTE
- struct sockaddr_in6 target;
- struct sockaddr_in6 router;
- struct sockaddr_in6 netmask;
+ struct sockaddr_storage target;
+ struct sockaddr_storage router;
+ struct sockaddr_storage netmask;
+ FAR struct sockaddr_in6 *v6_addr;
#endif
struct ipv6_mreq mrec;
int nsec;
@@ -359,31 +360,31 @@ int main(int argc, FAR char *argv[])
/* Set up a routing table entry for the address of the multicast group */
- memset(&target, 0, sizeof(struct sockaddr_in6));
- target.sin6_family = AF_INET6;
- target.sin6_port = HTONS(0x4321);
- memcpy(target.sin6_addr.s6_addr16, g_grp_addr, sizeof(struct in6_addr));
+ memset(&target, 0, sizeof(target));
+ v6_addr = (FAR struct sockaddr_in6 *)⌖
+ v6_addr->sin6_family = AF_INET6;
+ v6_addr->sin6_port = HTONS(0x4321);
+ memcpy(v6_addr->sin6_addr.s6_addr16, g_grp_addr, sizeof(struct in6_addr));
- memset(&netmask, 0, sizeof(struct sockaddr_in6));
- netmask.sin6_family = AF_INET6;
- netmask.sin6_port = HTONS(0x4321);
- memset(netmask.sin6_addr.s6_addr16, 0xff, sizeof(struct in6_addr));
+ memset(&netmask, 0, sizeof(netmask));
+ v6_addr = (FAR struct sockaddr_in6 *)&netmask;
+ v6_addr->sin6_family = AF_INET6;
+ v6_addr->sin6_port = HTONS(0x4321);
+ memset(v6_addr->sin6_addr.s6_addr16, 0xff, sizeof(struct in6_addr));
- memset(&router, 0, sizeof(struct sockaddr_in6));
- router.sin6_family = AF_INET6;
- router.sin6_port = HTONS(0x4321);
+ memset(&router, 0, sizeof(router));
+ v6_addr = (FAR struct sockaddr_in6 *)&router;
+ v6_addr->sin6_family = AF_INET6;
+ v6_addr->sin6_port = HTONS(0x4321);
- ret = netlib_get_ipv6addr("eth0", &router.sin6_addr);
+ ret = netlib_get_ipv6addr("eth0", &v6_addr->sin6_addr);
if (ret < 0)
{
fprintf(stderr, "ERROR: netlib_get_ipv6addr() failed: %d\n", ret);
}
else
{
- ret = addroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask,
- (FAR struct sockaddr_storage *)&router);
+ ret = addroute(sockfd, &target, &netmask, &router);
if (ret < 0)
{
fprintf(stderr, "ERROR: addroute() failed: %d\n", errno);
@@ -405,9 +406,7 @@ int main(int argc, FAR char *argv[])
}
}
- ret = delroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask);
+ ret = delroute(sockfd, &target, &netmask);
if (ret < 0)
{
fprintf(stderr, "ERROR: delroute() failed: %d\n", errno);
diff --git a/netutils/netlib/netlib_setdripv4addr.c b/netutils/netlib/netlib_setdripv4addr.c
index f04dba417..c11b1847e 100644
--- a/netutils/netlib/netlib_setdripv4addr.c
+++ b/netutils/netlib/netlib_setdripv4addr.c
@@ -66,18 +66,21 @@ int netlib_set_dripv4addr(FAR const char *ifname,
int ret = ERROR;
#ifdef CONFIG_NET_ROUTE
- struct sockaddr_in target;
- struct sockaddr_in netmask;
- struct sockaddr_in router;
+ FAR struct sockaddr_in *v4_addr;
+ struct sockaddr_storage target;
+ struct sockaddr_storage netmask;
+ struct sockaddr_storage router;
memset(&target, 0, sizeof(target));
- target.sin_family = AF_INET;
+ target.ss_family = AF_INET;
memset(&netmask, 0, sizeof(netmask));
- netmask.sin_family = AF_INET;
+ netmask.ss_family = AF_INET;
- router.sin_addr = *addr;
- router.sin_family = AF_INET;
+ memset(&router, 0, sizeof(router));
+ v4_addr = (FAR struct sockaddr_in *)&router;
+ v4_addr->sin_family = AF_INET;
+ v4_addr->sin_addr = *addr;
#endif
if (ifname && addr)
@@ -108,16 +111,11 @@ int netlib_set_dripv4addr(FAR const char *ifname,
/* This call fails if no default route exists, but it's OK */
- delroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask);
+ delroute(sockfd, &target, &netmask);
/* Then add the new default route */
- ret = addroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask,
- (FAR struct sockaddr_storage *)&router);
+ ret = addroute(sockfd, &target, &netmask, &router);
}
#endif
diff --git a/nshlib/nsh_routecmds.c b/nshlib/nsh_routecmds.c
index 61b95589c..f2dc7d75b 100644
--- a/nshlib/nsh_routecmds.c
+++ b/nshlib/nsh_routecmds.c
@@ -99,6 +99,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_IPv6
struct sockaddr_in6 ipv6;
#endif
+ struct sockaddr_storage ipx;
} target;
union
@@ -109,6 +110,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_IPv6
struct sockaddr_in6 ipv6;
#endif
+ struct sockaddr_storage ipx;
} netmask;
union
@@ -119,6 +121,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_IPv6
struct sockaddr_in6 ipv6;
#endif
+ struct sockaddr_storage ipx;
} router;
union
@@ -430,10 +433,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
/* Then add the route */
- ret = addroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask,
- (FAR struct sockaddr_storage *)&router);
+ ret = addroute(sockfd, &target.ipx, &netmask.ipx, &router.ipx);
if (ret < 0)
{
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "addroute", NSH_ERRNO);
@@ -468,6 +468,7 @@ int cmd_delroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_IPv6
struct sockaddr_in6 ipv6;
#endif
+ struct sockaddr_storage ipx;
} target;
union
@@ -478,6 +479,7 @@ int cmd_delroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
#ifdef CONFIG_NET_IPv6
struct sockaddr_in6 ipv6;
#endif
+ struct sockaddr_storage ipx;
} netmask;
union
@@ -673,9 +675,7 @@ int cmd_delroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
/* Then delete the route */
- ret = delroute(sockfd,
- (FAR struct sockaddr_storage *)&target,
- (FAR struct sockaddr_storage *)&netmask);
+ ret = delroute(sockfd, &target.ipx, &netmask.ipx);
if (ret < 0)
{
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "delroute", NSH_ERRNO);