#define net_vaPrintf(a,b,c,d,e) __net_vaPrintf(VLC_OBJECT(a),b,c,d,e)
VLC_EXPORT( int, __net_vaPrintf, ( vlc_object_t *p_this, int fd, v_socket_t *, const char *psz_fmt, va_list args ) );
-#define net_GetSockAddress(a,b,c,d) __net_GetAddress(VLC_OBJECT(a),VLC_FALSE,b,c,d)
-#define net_GetPeerAddress(a,b,c,d) __net_GetAddress(VLC_OBJECT(a),VLC_TRUE,b,c,d)
-VLC_EXPORT( int, __net_GetAddress, ( vlc_object_t *p_this, vlc_bool_t peer, int fd, char *address, int *port ) );
#if !HAVE_INET_PTON
/* only in core, so no need for C++ extern "C" */
return b_multicast;
}
+#define net_GetSockAddress(a,b,c,d) __net_GetAddress(VLC_OBJECT(a),VLC_FALSE,b,c,d)
+#define net_GetPeerAddress(a,b,c,d) __net_GetAddress(VLC_OBJECT(a),VLC_TRUE,b,c,d)
+
+static inline int __net_GetAddress( vlc_object_t *p_this, vlc_bool_t peer, int fd,
+ char *address, int *port )
+{
+ struct sockaddr_storage addr;
+ socklen_t addrlen = sizeof( addr );
+ int val;
+
+ val = peer ? getpeername( fd, (struct sockaddr *)&addr, &addrlen )
+ : getsockname( fd, (struct sockaddr *)&addr, &addrlen );
+
+ if (val)
+ {
+#if defined(WIN32) || defined (UNDER_CE)
+ msg_Err( p_this, "socket address error : %d", WSAGetLastError( ) );
+#else
+ msg_Err( p_this, "socket address error : %s", strerror( errno ) );
+#endif
+ return val;
+ }
+
+ val = vlc_getnameinfo( (struct sockaddr *)&addr, addrlen,
+ address, NI_MAXNUMERICHOST, port, NI_NUMERICHOST );
+ if( val )
+ {
+ msg_Err( p_this, "socket address error : %s",
+ vlc_gai_strerror( val ) );
+ }
+ return 0;
+}
+
#endif
int (*ACL_LoadFile_inner) (vlc_acl_t *p_acl, const char *path);
int (*ACL_AddNet_inner) (vlc_acl_t *p_acl, const char *psz_ip, int i_len, vlc_bool_t b_allow);
void (*ACL_Destroy_inner) (vlc_acl_t *p_acl);
- int (*__net_GetAddress_inner) (vlc_object_t *p_this, vlc_bool_t peer, int fd, char *address, int *port);
};
# if defined (__PLUGIN__)
# define aout_FiltersCreatePipeline (p_symbols)->aout_FiltersCreatePipeline_inner
# define ACL_LoadFile (p_symbols)->ACL_LoadFile_inner
# define ACL_AddNet (p_symbols)->ACL_AddNet_inner
# define ACL_Destroy (p_symbols)->ACL_Destroy_inner
-# define __net_GetAddress (p_symbols)->__net_GetAddress_inner
# elif defined (HAVE_DYNAMIC_PLUGINS) && !defined (__BUILTIN__)
/******************************************************************
* STORE_SYMBOLS: store VLC APIs into p_symbols for plugin access.
((p_symbols)->ACL_LoadFile_inner) = ACL_LoadFile; \
((p_symbols)->ACL_AddNet_inner) = ACL_AddNet; \
((p_symbols)->ACL_Destroy_inner) = ACL_Destroy; \
- ((p_symbols)->__net_GetAddress_inner) = __net_GetAddress; \
(p_symbols)->net_ConvertIPv4_deprecated = NULL; \
# endif /* __PLUGIN__ */
return VLC_SUCCESS;
}
-int __net_GetAddress( vlc_object_t *p_this, vlc_bool_t peer, int fd,
- char *address, int *port )
-{
- struct sockaddr_storage addr;
- socklen_t addrlen = sizeof( addr );
- int val;
-
- val = peer ? getpeername( fd, (struct sockaddr *)&addr, &addrlen )
- : getsockname( fd, (struct sockaddr *)&addr, &addrlen );
-
- if (val)
- {
-#if defined(WIN32) || defined (UNDER_CE)
- msg_Err( p_this, "socket address error : %d", WSAGetLastError( ) );
-#else
- msg_Err( p_this, "socket address error : %s", strerror( errno ) );
-#endif
- return val;
- }
-
- val = vlc_getnameinfo( (struct sockaddr *)&addr, addrlen,
- address, NI_MAXNUMERICHOST, port, NI_NUMERICHOST );
- if( val )
- {
- msg_Err( p_this, "socket address error : %s",
- vlc_gai_strerror( val ) );
- }
- return 0;
-}
-
/*****************************************************************************
* inet_pton replacement for obsolete and/or crap operating systems
*****************************************************************************/