From b0e2eed667264e575169535ebffbe51cb556b7d1 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 10 Apr 2008 08:52:38 +0000 Subject: [PATCH] - fixed more Darwin stuff: basic SEMS stuff work on Mac OS X now :-) git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@878 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- core/AmRtpStream.cpp | 5 +++++ core/AmUtils.h | 14 -------------- core/sems.cpp | 6 +++--- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/core/AmRtpStream.cpp b/core/AmRtpStream.cpp index cc791655..e77658fb 100644 --- a/core/AmRtpStream.cpp +++ b/core/AmRtpStream.cpp @@ -367,9 +367,14 @@ void AmRtpStream::setRAddr(const string& addr, unsigned short port) memcpy(&r_saddr,&ss,sizeof(struct sockaddr_storage)); set_port_v6(&r_saddr,port); + #else struct sockaddr_in sa; memset (&sa, 0, sizeof (sa)); + +#ifdef BSD44SOCKETS + sa.sin_len = sizeof(sockaddr_in); +#endif sa.sin_family = AF_INET; sa.sin_port = htons(port); diff --git a/core/AmUtils.h b/core/AmUtils.h index 66d79df7..46e5c5e7 100644 --- a/core/AmUtils.h +++ b/core/AmUtils.h @@ -286,20 +286,6 @@ std::vector explode(string s, string e); /** add a directory to an environement variable */ void add_env_path(const char* name, const string& path); -#ifdef SUPPORT_IPV6 -#ifdef SIN6_LEN -#define SOCKADDR_LEN(soc_address) ((struct sockaddr *)&soc_address)->sa_len -#else -#ifndef SA_LEN -#define SA_LEN(x) (((x)->sa_family == AF_INET6)?sizeof(struct sockaddr_in6): \ - (((x)->sa_family == AF_INET)?sizeof(struct sockaddr_in):sizeof(struct sockaddr))) -#endif -#define SOCKADDR_LEN(soc_address) SA_LEN((struct sockaddr *)&soc_address) -#endif /* SIN6_LEN */ -#else -#define SOCKADDR_LEN(soc_address) sizeof(soc_address) -#endif /* SUPPORT_IPV6 */ - #endif // Local Variables: diff --git a/core/sems.cpp b/core/sems.cpp index e459727d..e5610a0c 100644 --- a/core/sems.cpp +++ b/core/sems.cpp @@ -436,7 +436,7 @@ static void getInterfaceList(int sd, std::vector >& if_ exit(-1); } -#ifdef __linux__ +#if !defined(BSD44SOCKETS) int n_dev = ifc.ifc_len / sizeof(struct ifreq); for(int i=0; i >& if_ inet_ntoa(sa->sin_addr))); } } -#else +#else // defined(BSD44SOCKETS) struct ifreq* p_ifr = ifc.ifc_req; while((char*)p_ifr - (char*)ifc.ifc_req < ifc.ifc_len){ @@ -455,7 +455,7 @@ static void getInterfaceList(int sd, std::vector >& if_ inet_ntoa(sa->sin_addr))); } - p_ifr = (struct ifreq*)(((char*)p_ifr) + IFNAMSIZ + SOCKADDR_LEN(p_ifr->ifr_addr)); + p_ifr = (struct ifreq*)(((char*)p_ifr) + IFNAMSIZ + p_ifr->ifr_addr.sa_len); } #endif }