File: cnid_private.h

package info (click to toggle)
netatalk 3.1.12~ds-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 14,756 kB
  • sloc: ansic: 104,976; sh: 8,247; xml: 7,394; perl: 1,936; makefile: 1,430; python: 1,342; yacc: 309; lex: 49
file content (74 lines) | stat: -rw-r--r-- 2,066 bytes parent folder | download | duplicates (3)
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
/*
 *  Common defines for cnid
 */

#ifndef _ATALK_CNID_PRIVATE_H
#define _ATALK_CNID_PRIVATE_H 1

#define CNID_OFS                 0
#define CNID_LEN                 4
 
#define CNID_DEV_OFS             CNID_LEN
#define CNID_DEV_LEN             8
 
#define CNID_INO_OFS             (CNID_DEV_OFS + CNID_DEV_LEN)
#define CNID_INO_LEN             8
 
#define CNID_DEVINO_OFS          CNID_LEN
#define CNID_DEVINO_LEN          (CNID_DEV_LEN + CNID_INO_LEN)
 
#define CNID_TYPE_OFS            (CNID_DEVINO_OFS + CNID_DEVINO_LEN)
#define CNID_TYPE_LEN            4
 
#define CNID_DID_OFS             (CNID_TYPE_OFS + CNID_TYPE_LEN)
#define CNID_DID_LEN             CNID_LEN
 
#define CNID_NAME_OFS            (CNID_DID_OFS + CNID_DID_LEN)
#define CNID_HEADER_LEN          (CNID_NAME_OFS)

#define CNIDFLAG_ROOTINFO_RO     (1 << 0)
#define CNIDFLAG_DB_RO           (1 << 1)

/* special key/data pair we use to store current cnid and database stamp in cnid2.db */

#define ROOTINFO_KEY    "\0\0\0\0"
#define ROOTINFO_KEYLEN 4

/* 
   Rootinfo data, fields as they are used by normal entries for CNIDs (for reference):
   4 bytes: CNID 
   8 bytes: dev
   8 bytes: inode
   4 bytes: is a file/directory (type)
   4 bytes: DID
   x bytes: name

   Contents in Rootinfo entry:
   4 bytes: 0
   8 bytes: db stamp: struct stat.st_ctime of database file
   8 bytes: unused
   4 bytes: last used CNID
   4 bytes: version as htonl(uint32_t)
   9 bytes: name "RootInfo"
*/
#define ROOTINFO_DATA    "\0\0\0\0" \
                         "\0\0\0\0\0\0\0\0" \
                         "\0\0\0\0\0\0\0\0" \
                         "\0\0\0\0" \
                         "\0\0\0\0" \
                         "RootInfo"
#define ROOTINFO_DATALEN (3*4 + 2*8 + 9)

/* 
 * CNID version history:
 * 0: up to Netatalk 2.1.x
 * 1: starting with 2.2, additional name index, used in cnid_find
 */
#define CNID_VERSION_0               0
#define CNID_VERSION_1               1
#define CNID_VERSION_UNINTIALIZED_DB UINT32_MAX

/* Current CNID version */
#define CNID_VERSION CNID_VERSION_1

#endif