#include <vlc_network.h>
#ifdef WIN32
-# if defined(UNDER_CE)
-# undef IP_MULTICAST_TTL
-# define IP_MULTICAST_TTL 3
-# undef IP_ADD_MEMBERSHIP
-# define IP_ADD_MEMBERSHIP 5
-# endif
# define EAFNOSUPPORT WSAEAFNOSUPPORT
#else
# include <unistd.h>
int i_protocol );
/* */
-static int net_SetupDgramSocket( vlc_object_t *p_obj, int fd, const struct addrinfo *ptr )
+static int net_SetupDgramSocket (vlc_object_t *p_obj, int fd,
+ const struct addrinfo *ptr)
{
#ifdef SO_REUSEPORT
setsockopt (fd, SOL_SOCKET, SO_REUSEPORT, &(int){ 1 }, sizeof (int));
(void *)&(int){ 0x80000 }, sizeof (int));
#endif
-#if defined (WIN32) || defined (UNDER_CE)
+#if defined (WIN32)
if (net_SockAddrIsMulticast (ptr->ai_addr, ptr->ai_addrlen)
&& (sizeof (struct sockaddr_storage) >= ptr->ai_addrlen))
{
static int net_ListenSingle (vlc_object_t *obj, const char *host, int port,
int protocol)
{
- struct addrinfo hints, *res;
-
- memset (&hints, 0, sizeof( hints ));
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_protocol = protocol;
- hints.ai_flags = AI_PASSIVE;
+ struct addrinfo hints = {
+ .ai_socktype = SOCK_DGRAM,
+ .ai_protocol = protocol,
+ .ai_flags = AI_PASSIVE | AI_NUMERICSERV | AI_IDN,
+ }, *res;
if (host && !*host)
host = NULL;
msg_Dbg (obj, "net: opening %s datagram port %d",
host ? host : "any", port);
- int val = vlc_getaddrinfo (obj, host, port, &hints, &res);
+ int val = vlc_getaddrinfo (host, port, &hints, &res);
if (val)
{
msg_Err (obj, "Cannot resolve %s port %d : %s", host, port,
#ifdef IPV6_MULTICAST_IF
case AF_INET6:
if (setsockopt (fd, SOL_IPV6, IPV6_MULTICAST_IF,
- &scope, sizeof (scope) == 0))
+ &scope, sizeof (scope)) == 0)
return 0;
#endif
int net_ConnectDgram( vlc_object_t *p_this, const char *psz_host, int i_port,
int i_hlim, int proto )
{
- struct addrinfo hints, *res, *ptr;
- int i_val, i_handle = -1;
+ struct addrinfo hints = {
+ .ai_socktype = SOCK_DGRAM,
+ .ai_protocol = proto,
+ .ai_flags = AI_NUMERICSERV | AI_IDN,
+ }, *res;
+ int i_handle = -1;
bool b_unreach = false;
if( i_hlim < 0 )
i_hlim = var_InheritInteger( p_this, "ttl" );
- memset( &hints, 0, sizeof( hints ) );
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_protocol = proto;
-
msg_Dbg( p_this, "net: connecting to [%s]:%d", psz_host, i_port );
- i_val = vlc_getaddrinfo( p_this, psz_host, i_port, &hints, &res );
- if( i_val )
+ int val = vlc_getaddrinfo (psz_host, i_port, &hints, &res);
+ if (val)
{
- msg_Err( p_this, "cannot resolve [%s]:%d : %s", psz_host, i_port,
- gai_strerror( i_val ) );
+ msg_Err (p_this, "cannot resolve [%s]:%d : %s", psz_host, i_port,
+ gai_strerror (val));
return -1;
}
- for( ptr = res; ptr != NULL; ptr = ptr->ai_next )
+ for (struct addrinfo *ptr = res; ptr != NULL; ptr = ptr->ai_next)
{
char *str;
int fd = net_Socket (p_this, ptr->ai_family, ptr->ai_socktype,
break;
}
-#if defined( WIN32 ) || defined( UNDER_CE )
+#if defined( WIN32 )
if( WSAGetLastError () == WSAENETUNREACH )
#else
if( errno == ENETUNREACH )
msg_Dbg (obj, "net: connecting to [%s]:%d from [%s]:%d",
psz_server, i_server, psz_bind, i_bind);
- struct addrinfo hints, *loc, *rem;
- int val;
-
- memset (&hints, 0, sizeof (hints));
- hints.ai_socktype = SOCK_DGRAM;
- hints.ai_protocol = protocol;
+ struct addrinfo hints = {
+ .ai_socktype = SOCK_DGRAM,
+ .ai_protocol = protocol,
+ .ai_flags = AI_NUMERICSERV | AI_IDN,
+ }, *loc, *rem;
- val = vlc_getaddrinfo (obj, psz_server, i_server, &hints, &rem);
+ int val = vlc_getaddrinfo (psz_server, i_server, &hints, &rem);
if (val)
{
msg_Err (obj, "cannot resolve %s port %d : %s", psz_bind, i_bind,
return -1;
}
- hints.ai_flags = AI_PASSIVE;
- val = vlc_getaddrinfo (obj, psz_bind, i_bind, &hints, &loc);
+ hints.ai_flags |= AI_PASSIVE;
+ val = vlc_getaddrinfo (psz_bind, i_bind, &hints, &loc);
if (val)
{
msg_Err (obj, "cannot resolve %s port %d : %s", psz_bind, i_bind,