summaryrefslogtreecommitdiff
path: root/include/socket_if.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/socket_if.h')
-rw-r--r--include/socket_if.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/include/socket_if.h b/include/socket_if.h
new file mode 100644
index 0000000..54cfa5f
--- /dev/null
+++ b/include/socket_if.h
@@ -0,0 +1,97 @@
+#ifndef SOCKETIF_H
+#define SOCKETIF_H
+
+/* Revsision 20220608
+ * - removed obsolete socket_local4() and socket_remote4()
+ * Revision 20210828, Erwin Hoffmann
+ * - added socket_accept4()
+ * Revision 20210226, Erwin Hoffmann
+ * - removed dependency on ipv4socket (loose coupling)
+ * - only single socket_tcp() and
+ * - single socket_udp() function serving both IPv4 + IPv6
+ * Revision 20181125, Erwin Hoffmann
+ * - switched to 'uint_t.h'
+ * - changed 'socket_tcp' --> 'socket_tcp4', 'socket_udp' --> 'socket_udp4'
+ * - added 'socket_ip6optionskill'
+ * - reordered and included backword compatible IPv6 calls
+ * - commented multicast socket declarations
+ * - enlarged usage for ipv4socket -> dual bind IPv4/IPv6
+*/
+
+#define __APPLE_USE_RFC_3542 /* MacOS Anycast support */
+
+#include "uint_t.h"
+
+/* IPv4 only */
+extern int socket_accept4(int,char [4],uint16 *);
+extern int socket_bind4(int,const char [4],uint16);
+extern int socket_bind4_reuse(int,const char [4],uint16);
+extern int socket_connect4(int,const char [4],uint16);
+extern int socket_send4(int,const char *,unsigned int,const char [4],uint16);
+extern int socket_broadcast(int,const char *,unsigned int,uint16);
+
+/* Backward compatibility */
+#define socket_local4 socket_local
+#define socket_remote4 socket_remote
+
+/* IPv6 only */
+extern int socket_bind6(int,const char [16],uint16,uint32);
+extern int socket_bind6_reuse(int,const char [16],uint16,uint32);
+extern int socket_connect6(int,const char [16],uint16,uint32);
+extern int socket_send6(int,const char *,unsigned int,const char [16],uint16,uint32);
+extern const char* socket_getifname(uint32);
+extern uint32 socket_getifidx(const char *);
+extern int socket_ip6optionskill(int);
+extern int socket_ip6anycast(int);
+
+/* Common IPv4 & IPv6 */
+extern int socket_accept(int,char [16],uint16 *,uint32 *);
+extern int socket_bind(int,const char [16],uint16,uint32);
+extern int socket_bind_reuse(int,const char [16],uint16,uint32);
+extern int socket_connect(int,const char [16],uint16,uint32);
+extern int socket_connected(int);
+extern int socket_listen(int,int);
+extern int socket_local(int,char [16],uint16 *,uint32 *);
+extern int socket_recv(int,char *,unsigned int,char [16],uint16 *,uint32 *);
+extern int socket_remote(int,char [16],uint16 *,uint32 *);
+extern int socket_send(int,const char *,unsigned int,const char [16],uint16,uint32);
+extern void socket_tryreservein(int,int);
+extern int socket_ipoptionskill(int);
+extern int socket_dualstack(int);
+extern int socket_nodualstack(int);
+
+/* Backward compatibility */
+#define socket_accept6 socket_accept
+#define socket_local6 socket_local
+#define socket_recv6 socket_recv
+#define socket_remote6 socket_remote
+
+/* TCP */
+extern int socket_tcp4(void);
+extern int socket_tcp6(void);
+extern int socket_tcp(void);
+extern int socket_tcpnodelay(int);
+
+/* UDP */
+extern int socket_udp4(void);
+extern int socket_udp6(void);
+extern int socket_udp(void);
+
+/*********** For future use ***********************************/
+/* enable sending udp packets to the broadcast address */
+// extern int socket_broadcast(int);
+/* join a multicast group on the given interface */
+// extern int socket_mcjoin4(int,char *,char *);
+// extern int socket_mcjoin6(int,char *,int);
+/* leave a multicast group on the given interface */
+// extern int socket_mcleave4(int,char *);
+// extern int socket_mcleave6(int,char *);
+/* set multicast TTL/hop count for outgoing packets */
+// extern int socket_mcttl4(int,char);
+// extern int socket_mcttl6(int,char);
+/* enable multicast loopback */
+// extern int socket_mcloop4(int,char);
+// extern int socket_mcloop6(int,char);
+/**************************************************************/
+
+#endif