From 55b6bd1c01be167f0fcea2ec181d644e24c31454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Thu, 7 Oct 2010 07:58:56 +0000 Subject: [PATCH] Convert ff_is_multicast_address to take a struct sockaddr parameter Not all users of this function will have a full struct sockaddr_storage available, and casting other sockaddrs to sockaddr_storage is wrong, while any sockaddr can be cast to a base sockaddr. Originally committed as revision 25388 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/network.h | 6 +++--- libavformat/udp.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libavformat/network.h b/libavformat/network.h index 1ad7319649..d6aee93121 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -162,13 +162,13 @@ const char *ff_gai_strerror(int ecode); #define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff) #endif -static inline int ff_is_multicast_address(struct sockaddr_storage *addr) +static inline int ff_is_multicast_address(struct sockaddr *addr) { - if (addr->ss_family == AF_INET) { + if (addr->sa_family == AF_INET) { return IN_MULTICAST(ntohl(((struct sockaddr_in *)addr)->sin_addr.s_addr)); } #if HAVE_STRUCT_SOCKADDR_IN6 - if (addr->ss_family == AF_INET6) { + if (addr->sa_family == AF_INET6) { return IN6_IS_ADDR_MULTICAST(&((struct sockaddr_in6 *)addr)->sin6_addr); } #endif diff --git a/libavformat/udp.c b/libavformat/udp.c index bfb9b77495..2a4a885600 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -254,7 +254,7 @@ int udp_set_remote_url(URLContext *h, const char *uri) if (s->dest_addr_len < 0) { return AVERROR(EIO); } - s->is_multicast = ff_is_multicast_address(&s->dest_addr); + s->is_multicast = ff_is_multicast_address((struct sockaddr*) &s->dest_addr); return 0; }