21 #ifndef _GROUPSOCK_HELPER_HH
22 #define _GROUPSOCK_HELPER_HH
24 #ifndef _NET_ADDRESS_HH
33 int socket,
unsigned char* buffer,
unsigned bufferSize,
34 struct sockaddr_storage& fromAddress );
37 int socket,
struct sockaddr_storage
const& addressAndPort,
39 unsigned char* buffer,
unsigned bufferSize);
42 int socket,
struct sockaddr_storage
const& addressAndPort,
43 unsigned char* buffer,
unsigned bufferSize);
51 int socket,
unsigned requestedSize);
53 int socket,
unsigned requestedSize);
55 int socket,
unsigned requestedSize);
57 int socket,
unsigned requestedSize);
65 struct sockaddr_storage
const& groupAddress);
67 struct sockaddr_storage
const& groupAddress);
71 struct sockaddr_storage
const& groupAddress,
72 struct sockaddr_storage
const& sourceFilterAddr);
74 struct sockaddr_storage
const& groupAddress,
75 struct sockaddr_storage
const& sourceFilterAddr);
99 #ifdef HAVE_SOCKADDR_LEN
100 #define SET_SOCKADDR_SIN_LEN(var) var.sin_len = sizeof var
101 #define SET_SOCKADDR_SIN6_LEN(var) var.sin6_len = sizeof var
103 #define SET_SOCKADDR_SIN_LEN(var)
104 #define SET_SOCKADDR_SIN6_LEN(var)
107 #define MAKE_SOCKADDR_IN(var,adr,prt) \
108 struct sockaddr_in var;\
109 var.sin_family = AF_INET;\
110 var.sin_addr.s_addr = (adr);\
111 var.sin_port = (prt);\
112 SET_SOCKADDR_SIN_LEN(var);
113 #define MAKE_SOCKADDR_IN6(var,prt) \
114 struct sockaddr_in6 var;\
115 memset(&var, 0, sizeof var);\
116 var.sin6_family = AF_INET6;\
117 var.sin6_port = (prt);\
118 SET_SOCKADDR_SIN6_LEN(var);
148 #if (defined(__WIN32__) || defined(_WIN32)) && !defined(__MINGW32__)
150 extern int gettimeofday(
struct timeval*,
int*);
152 #include <sys/time.h>
unsigned setSendBufferTo(UsageEnvironment &env, int socket, unsigned requestedSize)
ipv4AddressBits chooseRandomIPv4SSMAddress(UsageEnvironment &env)
Boolean makeSocketNonBlocking(int sock)
Boolean socketJoinGroup(UsageEnvironment &env, int socket, struct sockaddr_storage const &groupAddress)
Boolean weHaveAnIPv6Address(UsageEnvironment &env)
Boolean writeSocket(UsageEnvironment &env, int socket, struct sockaddr_storage const &addressAndPort, u_int8_t ttlArg, unsigned char *buffer, unsigned bufferSize)
unsigned getReceiveBufferSize(UsageEnvironment &env, int socket)
Boolean socketLeaveGroup(UsageEnvironment &, int socket, struct sockaddr_storage const &groupAddress)
Boolean setSocketKeepAlive(int sock)
Boolean socketLeaveGroupSSM(UsageEnvironment &, int socket, struct sockaddr_storage const &groupAddress, struct sockaddr_storage const &sourceFilterAddr)
int setupStreamSocket(UsageEnvironment &env, Port port, int domain, Boolean makeNonBlocking=True, Boolean setKeepAlive=False)
ipv4AddressBits SendingInterfaceAddr
unsigned setReceiveBufferTo(UsageEnvironment &env, int socket, unsigned requestedSize)
Boolean weHaveAnIPv4Address(UsageEnvironment &env)
Boolean makeSocketBlocking(int sock, unsigned writeTimeoutInMilliseconds=0)
int setupDatagramSocket(UsageEnvironment &env, Port port, int domain)
_groupsockPriv * groupsockPriv(UsageEnvironment &env)
unsigned increaseReceiveBufferTo(UsageEnvironment &env, int socket, unsigned requestedSize)
ipv4AddressBits ourIPv4Address(UsageEnvironment &env)
int readSocket(UsageEnvironment &env, int socket, unsigned char *buffer, unsigned bufferSize, struct sockaddr_storage &fromAddress)
void reclaimGroupsockPriv(UsageEnvironment &env)
Boolean weHaveAnIPAddress(UsageEnvironment &env)
Boolean socketJoinGroupSSM(UsageEnvironment &env, int socket, struct sockaddr_storage const &groupAddress, struct sockaddr_storage const &sourceFilterAddr)
ipv6AddressBits const & ourIPv6Address(UsageEnvironment &env)
char const * timestampString()
Boolean getSourcePort(UsageEnvironment &env, int socket, int domain, Port &port)
void ignoreSigPipeOnSocket(int socketNum)
ipv4AddressBits ReceivingInterfaceAddr
unsigned increaseSendBufferTo(UsageEnvironment &env, int socket, unsigned requestedSize)
unsigned getSendBufferSize(UsageEnvironment &env, int socket)
u_int32_t ipv4AddressBits
u_int8_t ipv6AddressBits[16]
NoReuse(UsageEnvironment &env)