diff --git a/src/io/piethernet.cpp b/src/io/piethernet.cpp index 0861e913..635748bf 100755 --- a/src/io/piethernet.cpp +++ b/src/io/piethernet.cpp @@ -28,6 +28,8 @@ # else # include # endif +# define ip_mreqn ip_mreq +# define imr_address imr_interface #endif #ifdef WINDOWS # include @@ -341,13 +343,7 @@ bool PIEthernet::joinMulticastGroup(const PIString & group) { if (!params[Broadcast]) ;//piCoutObj << "Warning: \"Broadcast\" parameter not set, \"joinMulticastGroup(\"" << group << "\")\" may be useless!"; parseAddress(path(), &ip_, &port_); - struct -#ifndef QNX - ip_mreqn -#else - ip_mreq -#endif - mreq; + struct ip_mreqn mreq; memset(&mreq, 0, sizeof(mreq)); #ifdef LINUX //mreq.imr_address.s_addr = INADDR_ANY; @@ -355,16 +351,8 @@ bool PIEthernet::joinMulticastGroup(const PIString & group) { const PIEthernet::Interface * ci = il.getByAddress(ip_); if (ci != 0) mreq.imr_ifindex = ci->index;*/ #endif - in_addr_t addr; - if (params[PIEthernet::Broadcast]) addr = INADDR_ANY; - else addr = inet_addr(ip_.dataAscii()); - mreq. -#ifndef QNX - imr_address -#else - imr_interface -#endif - .s_addr = addr; + if (params[PIEthernet::Broadcast]) mreq.imr_address.s_addr = INADDR_ANY; + else mreq.imr_address.s_addr = inet_addr(ip_.dataAscii()); /*#ifndef WINDOWS PIEthernet::InterfaceList il = interfaces(); const PIEthernet::Interface * ci = il.getByAddress(ip_); @@ -407,24 +395,10 @@ bool PIEthernet::leaveMulticastGroup(const PIString & group) { PIFlags params = parameters(); /// TODO windows parseAddress(path(), &ip_, &port_); - struct -#ifndef QNX - ip_mreqn -#else - ip_mreq -#endif - mreq; + struct ip_mreqn mreq; memset(&mreq, 0, sizeof(mreq)); - in_addr_t addr; - if (params[PIEthernet::Broadcast]) addr = INADDR_ANY; - else addr = inet_addr(ip_.dataAscii()); - mreq. -#ifndef QNX - imr_address -#else - imr_interface -#endif - .s_addr = addr; + if (params[PIEthernet::Broadcast]) mreq.imr_address.s_addr = INADDR_ANY; + else mreq.imr_address.s_addr = inet_addr(ip_.dataAscii()); mreq.imr_multiaddr.s_addr = inet_addr(group.dataAscii()); if (ethSetsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq)) == -1) { piCoutObj << "Can`t leave multicast group " << group << ", " << ethErrorString();