]> arthur.barton.de Git - netatalk.git/blob - include/atalk/cnid_private.h
Support for using $u username variable in AFP volume definitions
[netatalk.git] / include / atalk / cnid_private.h
1 /*
2  *  Common defines for cnid
3  */
4
5 #ifndef _ATALK_CNID_PRIVATE_H
6 #define _ATALK_CNID_PRIVATE_H 1
7
8 #define CNID_OFS                 0
9 #define CNID_LEN                 4
10  
11 #define CNID_DEV_OFS             CNID_LEN
12 #define CNID_DEV_LEN             8
13  
14 #define CNID_INO_OFS             (CNID_DEV_OFS + CNID_DEV_LEN)
15 #define CNID_INO_LEN             8
16  
17 #define CNID_DEVINO_OFS          CNID_LEN
18 #define CNID_DEVINO_LEN          (CNID_DEV_LEN + CNID_INO_LEN)
19  
20 #define CNID_TYPE_OFS            (CNID_DEVINO_OFS + CNID_DEVINO_LEN)
21 #define CNID_TYPE_LEN            4
22  
23 #define CNID_DID_OFS             (CNID_TYPE_OFS + CNID_TYPE_LEN)
24 #define CNID_DID_LEN             CNID_LEN
25  
26 #define CNID_NAME_OFS            (CNID_DID_OFS + CNID_DID_LEN)
27 #define CNID_HEADER_LEN          (CNID_NAME_OFS)
28
29 #define CNIDFLAG_ROOTINFO_RO     (1 << 0)
30 #define CNIDFLAG_DB_RO           (1 << 1)
31
32 /* special key/data pair we use to store current cnid and database stamp in cnid2.db */
33
34 #define ROOTINFO_KEY    "\0\0\0\0"
35 #define ROOTINFO_KEYLEN 4
36
37 /* 
38    Rootinfo data, fields as they are used by normal entries for CNIDs (for reference):
39    4 bytes: CNID 
40    8 bytes: dev
41    8 bytes: inode
42    4 bytes: is a file/directory (type)
43    4 bytes: DID
44    x bytes: name
45
46    Contents in Rootinfo entry:
47    4 bytes: 0
48    8 bytes: db stamp: struct stat.st_ctime of database file
49    8 bytes: unused
50    4 bytes: last used CNID
51    4 bytes: version as htonl(uint32_t)
52    9 bytes: name "RootInfo"
53 */
54 #define ROOTINFO_DATA    "\0\0\0\0" \
55                          "\0\0\0\0\0\0\0\0" \
56                          "\0\0\0\0\0\0\0\0" \
57                          "\0\0\0\0" \
58                          "\0\0\0\0" \
59                          "RootInfo"
60 #define ROOTINFO_DATALEN (3*4 + 2*8 + 9)
61
62 /* 
63  * CNID version history:
64  * 0: up to Netatalk 2.1.x
65  * 1: starting with 2.2, additional name index, used in cnid_find
66  */
67 #define CNID_VERSION_0               0
68 #define CNID_VERSION_1               1
69 #define CNID_VERSION_UNINTIALIZED_DB UINT32_MAX
70
71 /* Current CNID version */
72 #define CNID_VERSION CNID_VERSION_1
73
74 #endif