fix use of addroute/delroute
Signed-off-by: liyi <liyi25@xiaomi.com>
This commit is contained in:
parent
1bf462e1c1
commit
7035546422
@ -258,9 +258,10 @@ int main(int argc, FAR char *argv[])
|
|||||||
FAR char *iobuffer = NULL;
|
FAR char *iobuffer = NULL;
|
||||||
struct sockaddr_in6 host;
|
struct sockaddr_in6 host;
|
||||||
#ifdef CONFIG_NET_ROUTE
|
#ifdef CONFIG_NET_ROUTE
|
||||||
struct sockaddr_in6 target;
|
struct sockaddr_storage target;
|
||||||
struct sockaddr_in6 router;
|
struct sockaddr_storage router;
|
||||||
struct sockaddr_in6 netmask;
|
struct sockaddr_storage netmask;
|
||||||
|
FAR struct sockaddr_in6 *v6_addr;
|
||||||
#endif
|
#endif
|
||||||
struct ipv6_mreq mrec;
|
struct ipv6_mreq mrec;
|
||||||
int nsec;
|
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 */
|
/* Set up a routing table entry for the address of the multicast group */
|
||||||
|
|
||||||
memset(&target, 0, sizeof(struct sockaddr_in6));
|
memset(&target, 0, sizeof(target));
|
||||||
target.sin6_family = AF_INET6;
|
v6_addr = (FAR struct sockaddr_in6 *)⌖
|
||||||
target.sin6_port = HTONS(0x4321);
|
v6_addr->sin6_family = AF_INET6;
|
||||||
memcpy(target.sin6_addr.s6_addr16, g_grp_addr, sizeof(struct in6_addr));
|
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));
|
memset(&netmask, 0, sizeof(netmask));
|
||||||
netmask.sin6_family = AF_INET6;
|
v6_addr = (FAR struct sockaddr_in6 *)&netmask;
|
||||||
netmask.sin6_port = HTONS(0x4321);
|
v6_addr->sin6_family = AF_INET6;
|
||||||
memset(netmask.sin6_addr.s6_addr16, 0xff, sizeof(struct in6_addr));
|
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));
|
memset(&router, 0, sizeof(router));
|
||||||
router.sin6_family = AF_INET6;
|
v6_addr = (FAR struct sockaddr_in6 *)&router;
|
||||||
router.sin6_port = HTONS(0x4321);
|
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)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: netlib_get_ipv6addr() failed: %d\n", ret);
|
fprintf(stderr, "ERROR: netlib_get_ipv6addr() failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ret = addroute(sockfd,
|
ret = addroute(sockfd, &target, &netmask, &router);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask,
|
|
||||||
(FAR struct sockaddr_storage *)&router);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: addroute() failed: %d\n", errno);
|
fprintf(stderr, "ERROR: addroute() failed: %d\n", errno);
|
||||||
@ -405,9 +406,7 @@ int main(int argc, FAR char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = delroute(sockfd,
|
ret = delroute(sockfd, &target, &netmask);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "ERROR: delroute() failed: %d\n", errno);
|
fprintf(stderr, "ERROR: delroute() failed: %d\n", errno);
|
||||||
|
@ -66,18 +66,21 @@ int netlib_set_dripv4addr(FAR const char *ifname,
|
|||||||
int ret = ERROR;
|
int ret = ERROR;
|
||||||
|
|
||||||
#ifdef CONFIG_NET_ROUTE
|
#ifdef CONFIG_NET_ROUTE
|
||||||
struct sockaddr_in target;
|
FAR struct sockaddr_in *v4_addr;
|
||||||
struct sockaddr_in netmask;
|
struct sockaddr_storage target;
|
||||||
struct sockaddr_in router;
|
struct sockaddr_storage netmask;
|
||||||
|
struct sockaddr_storage router;
|
||||||
|
|
||||||
memset(&target, 0, sizeof(target));
|
memset(&target, 0, sizeof(target));
|
||||||
target.sin_family = AF_INET;
|
target.ss_family = AF_INET;
|
||||||
|
|
||||||
memset(&netmask, 0, sizeof(netmask));
|
memset(&netmask, 0, sizeof(netmask));
|
||||||
netmask.sin_family = AF_INET;
|
netmask.ss_family = AF_INET;
|
||||||
|
|
||||||
router.sin_addr = *addr;
|
memset(&router, 0, sizeof(router));
|
||||||
router.sin_family = AF_INET;
|
v4_addr = (FAR struct sockaddr_in *)&router;
|
||||||
|
v4_addr->sin_family = AF_INET;
|
||||||
|
v4_addr->sin_addr = *addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ifname && addr)
|
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 */
|
/* This call fails if no default route exists, but it's OK */
|
||||||
|
|
||||||
delroute(sockfd,
|
delroute(sockfd, &target, &netmask);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask);
|
|
||||||
|
|
||||||
/* Then add the new default route */
|
/* Then add the new default route */
|
||||||
|
|
||||||
ret = addroute(sockfd,
|
ret = addroute(sockfd, &target, &netmask, &router);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask,
|
|
||||||
(FAR struct sockaddr_storage *)&router);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -99,6 +99,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
struct sockaddr_in6 ipv6;
|
struct sockaddr_in6 ipv6;
|
||||||
#endif
|
#endif
|
||||||
|
struct sockaddr_storage ipx;
|
||||||
} target;
|
} target;
|
||||||
|
|
||||||
union
|
union
|
||||||
@ -109,6 +110,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
struct sockaddr_in6 ipv6;
|
struct sockaddr_in6 ipv6;
|
||||||
#endif
|
#endif
|
||||||
|
struct sockaddr_storage ipx;
|
||||||
} netmask;
|
} netmask;
|
||||||
|
|
||||||
union
|
union
|
||||||
@ -119,6 +121,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
struct sockaddr_in6 ipv6;
|
struct sockaddr_in6 ipv6;
|
||||||
#endif
|
#endif
|
||||||
|
struct sockaddr_storage ipx;
|
||||||
} router;
|
} router;
|
||||||
|
|
||||||
union
|
union
|
||||||
@ -430,10 +433,7 @@ int cmd_addroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
|
|
||||||
/* Then add the route */
|
/* Then add the route */
|
||||||
|
|
||||||
ret = addroute(sockfd,
|
ret = addroute(sockfd, &target.ipx, &netmask.ipx, &router.ipx);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask,
|
|
||||||
(FAR struct sockaddr_storage *)&router);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "addroute", NSH_ERRNO);
|
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
|
#ifdef CONFIG_NET_IPv6
|
||||||
struct sockaddr_in6 ipv6;
|
struct sockaddr_in6 ipv6;
|
||||||
#endif
|
#endif
|
||||||
|
struct sockaddr_storage ipx;
|
||||||
} target;
|
} target;
|
||||||
|
|
||||||
union
|
union
|
||||||
@ -478,6 +479,7 @@ int cmd_delroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
#ifdef CONFIG_NET_IPv6
|
#ifdef CONFIG_NET_IPv6
|
||||||
struct sockaddr_in6 ipv6;
|
struct sockaddr_in6 ipv6;
|
||||||
#endif
|
#endif
|
||||||
|
struct sockaddr_storage ipx;
|
||||||
} netmask;
|
} netmask;
|
||||||
|
|
||||||
union
|
union
|
||||||
@ -673,9 +675,7 @@ int cmd_delroute(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
|
|||||||
|
|
||||||
/* Then delete the route */
|
/* Then delete the route */
|
||||||
|
|
||||||
ret = delroute(sockfd,
|
ret = delroute(sockfd, &target.ipx, &netmask.ipx);
|
||||||
(FAR struct sockaddr_storage *)&target,
|
|
||||||
(FAR struct sockaddr_storage *)&netmask);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "delroute", NSH_ERRNO);
|
nsh_error(vtbl, g_fmtcmdfailed, argv[0], "delroute", NSH_ERRNO);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user