diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-06-17 11:31:16 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2016-06-17 11:31:16 +0200 |
commit | fbb8c27761964f3ee87f859bfbb57db75849cd1a (patch) | |
tree | 6ec5ed2a72e5e2205614ec96678c62aee3c869c4 /mcastseed/src/msock.h | |
download | eficast-fbb8c27761964f3ee87f859bfbb57db75849cd1a.tar.gz eficast-fbb8c27761964f3ee87f859bfbb57db75849cd1a.tar.bz2 eficast-fbb8c27761964f3ee87f859bfbb57db75849cd1a.zip |
Initial import : make-boot-image.sh operationnal. Dumb mcastseed.
Diffstat (limited to 'mcastseed/src/msock.h')
-rw-r--r-- | mcastseed/src/msock.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/mcastseed/src/msock.h b/mcastseed/src/msock.h new file mode 100644 index 0000000..07e1fad --- /dev/null +++ b/mcastseed/src/msock.h @@ -0,0 +1,74 @@ +/* + msock.h - multicast socket creation routines + + (C) 2016 Christian Beier <dontmind@sdf.org> + +*/ + + +#ifndef MSOCK_H +#define MSOCK_H + +/* this is for windows compat */ +#define SOCKET int + +#ifdef __MINGW32__ +#undef SOCKET +#undef socklen_t +#define WINVER 0x0501 +#include <ws2tcpip.h> +#define EWOULDBLOCK WSAEWOULDBLOCK +#define close closesocket +#define socklen_t int +typedef unsigned int in_addr_t; +#else +#include <sys/socket.h> +#include <netinet/in.h> +#include <sys/un.h> +#include <netinet/tcp.h> +#include <arpa/inet.h> +#include <netdb.h> +#endif + +/* Define IPV6_ADD_MEMBERSHIP for FreeBSD and Mac OS X */ +#ifndef IPV6_ADD_MEMBERSHIP +#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP +#endif + + + +/** + Creates a socket suitable for sending multicast datagrams via sendto(). + + On success, a socket is returned and multicastAddr set with the right info for sendto() calls. + On error, -1 is returned. +*/ +SOCKET mcast_send_socket(char* multicastIP, char* multicastPort, int multicastTTL, struct addrinfo **multicastAddr); + +/** + Creates a socket suitable for receiving multicast datagrams via recvfrom(). Also sets socket recv buffer. + + On success, returns socket. + On fail, returns -1. + */ +SOCKET mcast_recv_socket(char* multicastIP, char* multicastPort, int multicastRecvBufSize); + +/** + Creates a TCP socket that connects to serverIP:serverPort. + Meant to give feedback to a mcast sender. + + On success, returns socket. + On error, -1 is returned. + */ +SOCKET ucast_client_socket(char* serverIP, char* serverPort); + +/** + Creates a TCP socket that binds locally serverPort. + Meant to receive feedback to a mcast sender. + + On success, returns socket. + On error, -1 is returned. + */ +SOCKET ucast_server_socket(char* serverPort, int maxPendingConnections); + +#endif |