]> arthur.barton.de Git - netatalk.git/blob - etc/afpd/fce_api_internal.h
959ce9ea4c9b0b67897abe84dd12aaffc4697049
[netatalk.git] / etc / afpd / fce_api_internal.h
1 /* \r
2  * File:   fce_api_internal.h\r
3  * Author: mw\r
4  *\r
5  * Created on 1. Oktober 2010, 23:48\r
6  */\r
7 \r
8 #ifndef _FCE_API_INTERNAL_H\r
9 #define _FCE_API_INTERNAL_H\r
10 \r
11 #define FCE_FILE_MODIFY     1\r
12 #define FCE_FILE_DELETE     2\r
13 #define FCE_DIR_DELETE      3\r
14 #define FCE_FILE_CREATE     4\r
15 #define FCE_DIR_CREATE      5\r
16 #define FCE_CONN_START     42\r
17 #define FCE_CONN_BROKEN    99\r
18 \r
19 \r
20 #define FCE_MAX_PATH_LEN 1024\r
21 \r
22 #define FCE_MAX_UDP_SOCKS 5     /* Allow a maximum of udp listeners for file change events */\r
23 #define FCE_MAX_IP_LEN 255      /* Man len of listener name */\r
24 #define FCE_SOCKET_RETRY_DELAY_S 600 /* Pause this time in s after socket was broken */\r
25 #define FCE_PACKET_VERSION  1\r
26 \r
27 \r
28 #define FCE_PACKET_MAGIC  "at_fcapi" /* Must fit to size of fce_packet.fce_magic */\r
29 \r
30 #define FCE_HISTORY_LEN 10  /* This is used to coalesce events */\r
31 #define MAX_COALESCE_TIME_MS 1000  /* Events oldeer than this are not coalesced */\r
32 \r
33 struct udp_entry\r
34 {\r
35     int sock;\r
36     char ip[FCE_MAX_IP_LEN];\r
37     int port;\r
38     struct sockaddr_in addr;\r
39     time_t next_try_on_error;      /* In case of error set next timestamp to retry */\r
40 };\r
41 \r
42 /* This packet goes over the network, so we want to\r
43  *  be shure about datastructs and type sizes between platforms\r
44  */\r
45 struct fce_packet\r
46 {\r
47     char magic[8];\r
48     unsigned char version;\r
49     unsigned char mode;\r
50     uint16_t len;  /* network byte order */\r
51     uint32_t event_id; /* network byte order */\r
52     char data[FCE_MAX_PATH_LEN];\r
53 };\r
54 \r
55 struct fce_history\r
56 {\r
57     unsigned char mode;\r
58         int is_dir;\r
59         char path[FCE_MAX_PATH_LEN + 1];\r
60         struct timeval tv;\r
61 };\r
62 \r
63 \r
64 #define PACKET_HDR_LEN (sizeof(struct fce_packet) - FCE_MAX_PATH_LEN)\r
65 \r
66 int fce_handle_coalescation( char *path, int is_dir, int mode );\r
67 void fce_initialize_history();\r
68 \r
69 \r
70 #endif  /* _FCE_API_INTERNAL_H */\r
71 \r