2 * Common defines for cnid
5 #ifndef _ATALK_CNID_PRIVATE_H
6 #define _ATALK_CNID_PRIVATE_H 1
11 #define CNID_DEV_OFS CNID_LEN
12 #define CNID_DEV_LEN 8
14 #define CNID_INO_OFS (CNID_DEV_OFS + CNID_DEV_LEN)
15 #define CNID_INO_LEN 8
17 #define CNID_DEVINO_OFS CNID_LEN
18 #define CNID_DEVINO_LEN (CNID_DEV_LEN + CNID_INO_LEN)
20 #define CNID_TYPE_OFS (CNID_DEVINO_OFS + CNID_DEVINO_LEN)
21 #define CNID_TYPE_LEN 4
23 #define CNID_DID_OFS (CNID_TYPE_OFS + CNID_TYPE_LEN)
24 #define CNID_DID_LEN CNID_LEN
26 #define CNID_NAME_OFS (CNID_DID_OFS + CNID_DID_LEN)
27 #define CNID_HEADER_LEN (CNID_NAME_OFS)
29 #define CNIDFLAG_ROOTINFO_RO (1 << 0)
30 #define CNIDFLAG_DB_RO (1 << 1)
32 /* special key/data pair we use to store current cnid and database stamp in cnid2.db */
34 #define ROOTINFO_KEY "\0\0\0\0"
35 #define ROOTINFO_KEYLEN 4
38 Rootinfo data, fields as they are used by normal entries for CNIDs (for reference):
42 4 bytes: is a file/directory (type)
46 Contents in Rootinfo entry:
48 8 bytes: db stamp: struct stat.st_ctime of database file
50 4 bytes: last used CNID
51 4 bytes: version as htonl(uint32_t)
52 9 bytes: name "RootInfo"
54 #define ROOTINFO_DATA "\0\0\0\0" \
60 #define ROOTINFO_DATALEN (3*4 + 2*8 + 9)
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
67 #define CNID_VERSION_0 0
68 #define CNID_VERSION_1 1
69 #define CNID_VERSION_UNINTIALIZED_DB UINT32_MAX
71 /* Current CNID version */
72 #define CNID_VERSION CNID_VERSION_1