isc_boolean_t isc_sockaddr_ismulticast(isc_sockaddr_t *sockaddr) { isc_netaddr_t netaddr; isc_netaddr_fromsockaddr(&netaddr, sockaddr); return (isc_netaddr_ismulticast(&netaddr)); }
isc_boolean_t isc_sockaddr_ismulticast(const isc_sockaddr_t *sockaddr) { isc_netaddr_t netaddr; if (sockaddr->type.sa.sa_family == AF_INET || sockaddr->type.sa.sa_family == AF_INET6) { isc_netaddr_fromsockaddr(&netaddr, sockaddr); return (isc_netaddr_ismulticast(&netaddr)); } return (ISC_FALSE); }
test_result_t netaddr_multicast (void) { isc_netaddr_t na; unsigned int n_fail; t_addr_t *addr; unsigned int i; isc_result_t result; isc_boolean_t tf; n_fail = 0; for (i = 0; i < NADDRS; i++) { addr = &addrs[i]; result = to_netaddr (addr, &na); if (result != ISC_R_SUCCESS) { printf ("I:to_netaddr() returned %s on item %u\n", isc_result_totext (result), i); return (UNKNOWN); } tf = isc_netaddr_ismulticast (&na); if (tf == addr->is_multicast) { printf ("I:%s is%s multicast (PASSED)\n", (addr->addr), (tf ? "" : " not")); } else { printf ("I:%s is%s multicast (FAILED)\n", (addr->addr), (tf ? "" : " not")); n_fail++; } } if (n_fail > 0) return (FAILED); return (PASSED); }