1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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
|