summaryrefslogtreecommitdiff
path: root/mcastseed/src/msock.h
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2016-06-17 11:31:16 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2016-06-17 11:31:16 +0200
commitfbb8c27761964f3ee87f859bfbb57db75849cd1a (patch)
tree6ec5ed2a72e5e2205614ec96678c62aee3c869c4 /mcastseed/src/msock.h
downloadeficast-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.h74
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