8611c80fa208a443568cba7a607e1a4929294c3d
[swifty.git] / src / lib_swift.h
1 #ifndef _LIB_SWIFT_
2 #define _LIB_SWIFT_
3
4 #define SWIFT_PORT              8080
5 #define PACKET_SIZE             4*1024
6 #define MAX_IPs                 10
7
8 #define DIE(s) \
9         do { \
10                 printf("%s:%d: ", __func__, __LINE__); \
11                 perror(s); \
12                 exit(EXIT_FAILURE); \
13         } while (0) \
14
15 #define CHECK(x) \
16         do { \
17                 if (!(x)) { \
18                         printf("%s:%d: ", __func__, __LINE__); \
19                         perror(#x); \
20                         exit(EXIT_FAILURE); \
21                 } \
22         } while (0) \
23
24 #ifdef DEBUG
25 #define Dprintf(msg,...) printf("[%s]:%d" msg, __FILE__, __LINE__, ##__VA_ARGS__)
26 #else
27 #define Dprintf(msg,...)                /* do nothing */
28 #endif
29
30 typedef struct swift {
31         int socketListener;
32         struct sockaddr_in socketListenerAddr;
33 } *Swift;
34
35 struct swift_addr {
36         unsigned short N;                                       // e.g. number of s_addr
37         unsigned long s_addr[MAX_IPs];          // i.p. ip list
38 };
39
40 typedef struct sockSwiftaddr {
41         short                           sin_family;             // e.g. AF_INET
42     unsigned short              sin_port;               // e.g. htons(3490)
43     struct swift_addr   sin_addr;               // see struct swift_addr, below
44 } *SockSwiftaddr;
45
46 struct listsockaddr {
47         unsigned short N;
48         struct sockaddr_in sa[MAX_IPs];
49 };      
50
51 Swift socketSwift();
52 void closeSwift(Swift);
53
54
55 int recvfromSwift (Swift, void *, size_t, int, struct sockSwiftaddr *, socklen_t *);
56 int bindSwift(Swift, const struct sockSwiftaddr *, socklen_t);
57
58 #endif