apps/netutils/netlib and apps/examples/igmp: Adapt to use the corrected, semi-standard version of struct ip_msfilter.
This commit is contained in:
parent
3a4faf944a
commit
a26a7f9767
@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* examples/igmp/igmp.c
|
||||
*
|
||||
* Copyright (C) 2010-2011 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2010-2011, 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -90,6 +90,7 @@ int igmp_main(int argc, char *argv[])
|
||||
#endif
|
||||
{
|
||||
struct in_addr addr;
|
||||
struct in_addr mcast;
|
||||
#if defined(CONFIG_EXAMPLES_IGMP_NOMAC)
|
||||
uint8_t mac[IFHWADDRLEN];
|
||||
#endif
|
||||
@ -130,11 +131,14 @@ int igmp_main(int argc, char *argv[])
|
||||
netlib_ifup("eth0");
|
||||
|
||||
/* Not much of a test for now */
|
||||
|
||||
addr.s_addr = HTONL(CONFIG_EXAMPLES_IGMP_IPADDR);
|
||||
mcast.s_addr = HTONL(CONFIG_EXAMPLES_IGMP_GRPADDR);
|
||||
|
||||
/* Join the group */
|
||||
|
||||
printf("Join group...\n");
|
||||
addr.s_addr = HTONL(CONFIG_EXAMPLES_IGMP_GRPADDR);
|
||||
ipmsfilter("eth0", &addr, MCAST_INCLUDE);
|
||||
ipmsfilter(&addr, &mcast, MCAST_INCLUDE);
|
||||
|
||||
/* Wait a while */
|
||||
|
||||
@ -144,7 +148,7 @@ int igmp_main(int argc, char *argv[])
|
||||
/* Leave the group */
|
||||
|
||||
printf("Leave group...\n");
|
||||
ipmsfilter("eth0", &addr, MCAST_EXCLUDE);
|
||||
ipmsfilter(&addr, &mcast, MCAST_EXCLUDE);
|
||||
|
||||
/* Wait a while */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
* apps/include/netutils/ipmsfilter.h
|
||||
* User interface to add/remove IP multicast address
|
||||
*
|
||||
* Copyright (C) 2009, 2011, 2015 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2009, 2011, 2015, 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -76,11 +76,10 @@ extern "C"
|
||||
*
|
||||
* Description:
|
||||
* Add or remove an IP address from a multicast filter set.
|
||||
* (See netutils/netlib/netlib_ipmsfilter.c)
|
||||
*
|
||||
* Parameters:
|
||||
* ifname The name of the interface to use, size must less than IMSFNAMSIZ
|
||||
* multiaddr Multicast group address to add/remove
|
||||
* interface The local address of the local interface to use.
|
||||
* multiaddr Multicast group address to add/remove (network byte order)
|
||||
* fmode MCAST_INCLUDE: Add multicast address
|
||||
* MCAST_EXCLUDE: Remove multicast address
|
||||
*
|
||||
@ -89,7 +88,8 @@ extern "C"
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int ipmsfilter(FAR const char *ifname, FAR const struct in_addr *multiaddr,
|
||||
int ipmsfilter(FAR const struct in_addr *interface,
|
||||
FAR const struct in_addr *multiaddr,
|
||||
uint32_t fmode);
|
||||
|
||||
#undef EXTERN
|
||||
|
@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
* netutils/netlib/netlib_setipmsfilter.c
|
||||
*
|
||||
* Copyright (C) 2010-2011 Gregory Nutt. All rights reserved.
|
||||
* Copyright (C) 2010-2011, 2018 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -70,7 +70,7 @@
|
||||
* Add or remove an IP address from a multicast filter set.
|
||||
*
|
||||
* Parameters:
|
||||
* ifname The name of the interface to use, size must less than IMSFNAMSIZ
|
||||
* interface The local address of the local interface to use.
|
||||
* multiaddr Multicast group address to add/remove (network byte order)
|
||||
* fmode MCAST_INCLUDE: Add multicast address
|
||||
* MCAST_EXCLUDE: Remove multicast address
|
||||
@ -80,13 +80,14 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int ipmsfilter(FAR const char *ifname, FAR const struct in_addr *multiaddr,
|
||||
int ipmsfilter(FAR const struct in_addr *interface,
|
||||
FAR const struct in_addr *multiaddr,
|
||||
uint32_t fmode)
|
||||
{
|
||||
int ret = ERROR;
|
||||
|
||||
ninfo("ifname: %s muliaddr: %08x fmode: %ld\n", ifname, *multiaddr, fmode);
|
||||
if (ifname && multiaddr)
|
||||
ninfo("interface: %08x muliaddr: %08x fmode: %ld\n", interface, *multiaddr, fmode);
|
||||
if (interface != NULL && multiaddr != NULL)
|
||||
{
|
||||
/* Get a socket (only so that we get access to the INET subsystem) */
|
||||
|
||||
@ -95,21 +96,29 @@ int ipmsfilter(FAR const char *ifname, FAR const struct in_addr *multiaddr,
|
||||
{
|
||||
struct ip_msfilter imsf;
|
||||
|
||||
/* Put the driver name into the request */
|
||||
|
||||
strncpy(imsf.imsf_name, ifname, IMSFNAMSIZ);
|
||||
|
||||
/* Put the new address into the request */
|
||||
/* Put the multicast group address into the request */
|
||||
|
||||
imsf.imsf_multiaddr.s_addr = multiaddr->s_addr;
|
||||
|
||||
/* Perforom the ioctl to set the MAC address */
|
||||
/* Put the address of the local interface into the request */
|
||||
|
||||
imsf.imsf_interface.s_addr = interface->s_addr;
|
||||
|
||||
/* Put the filter mode into the request */
|
||||
|
||||
imsf.imsf_fmode = fmode;
|
||||
|
||||
/* No source address */
|
||||
|
||||
imsf.imsf_numsrc = 0;
|
||||
|
||||
/* Perform the ioctl to set the MAC address */
|
||||
|
||||
ret = ioctl(sockfd, SIOCSIPMSFILTER, (unsigned long)&imsf);
|
||||
close(sockfd);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user