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