Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/fs/smb/server/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  xattr.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *   Copyright (C) 2021 Samsung Electronics Co., Ltd.
 */


#ifndef __XATTR_H__
#define __XATTR_H__

/*
 * These are on-disk structures to store additional metadata into xattr to
 * reproduce windows filesystem semantics. And they are encoded with NDR to
 * compatible with samba's xattr meta format. The compatibility with samba
 * is important because it can lose the information(file attribute,
 * creation time, acls) about the existing files when switching between
 * ksmbd and samba.
 */


/*
 * Dos attribute flags used for what variable is valid.
 */

enum {
 XATTR_DOSINFO_ATTRIB  = 0x00000001,
 XATTR_DOSINFO_EA_SIZE  = 0x00000002,
 XATTR_DOSINFO_SIZE  = 0x00000004,
 XATTR_DOSINFO_ALLOC_SIZE = 0x00000008,
 XATTR_DOSINFO_CREATE_TIME = 0x00000010,
 XATTR_DOSINFO_CHANGE_TIME = 0x00000020,
 XATTR_DOSINFO_ITIME  = 0x00000040
};

/*
 * Dos attribute structure which is compatible with samba's one.
 * Storing it into the xattr named "DOSATTRIB" separately from inode
 * allows ksmbd to faithfully reproduce windows filesystem semantics
 * on top of a POSIX filesystem.
 */

struct xattr_dos_attrib {
 __u16 version; /* version 3 or version 4 */
 __u32 flags;  /* valid flags */
 __u32 attr;  /* Dos attribute */
 __u32 ea_size; /* EA size */
 __u64 size;
 __u64 alloc_size;
 __u64 create_time; /* File creation time */
 __u64 change_time; /* File change time */
 __u64 itime;  /* Invented/Initial time */
};

/*
 * Enumeration is used for computing posix acl hash.
 */

enum {
 SMB_ACL_TAG_INVALID = 0,
 SMB_ACL_USER,
 SMB_ACL_USER_OBJ,
 SMB_ACL_GROUP,
 SMB_ACL_GROUP_OBJ,
 SMB_ACL_OTHER,
 SMB_ACL_MASK
};

#define SMB_ACL_READ   4
#define SMB_ACL_WRITE   2
#define SMB_ACL_EXECUTE   1

struct xattr_acl_entry {
 int type;
 uid_t uid;
 gid_t gid;
 mode_t perm;
};

/*
 * xattr_smb_acl structure is used for computing posix acl hash.
 */

struct xattr_smb_acl {
 int count;
 int next;
 struct xattr_acl_entry entries[] __counted_by(count);
};

/* 64bytes hash in xattr_ntacl is computed with sha256 */
#define XATTR_SD_HASH_TYPE_SHA256 0x1
#define XATTR_SD_HASH_SIZE  64

/*
 * xattr_ntacl is used for storing ntacl and hashes.
 * Hash is used for checking valid posix acl and ntacl in xattr.
 */

struct xattr_ntacl {
 __u16 version; /* version 4*/
 void *sd_buf;
 __u32 sd_size;
 __u16 hash_type; /* hash type */
 __u8 desc[10]; /* posix_acl description */
 __u16 desc_len;
 __u64 current_time;
 __u8 hash[XATTR_SD_HASH_SIZE]; /* 64bytes hash for ntacl */
 __u8 posix_acl_hash[XATTR_SD_HASH_SIZE]; /* 64bytes hash for posix acl */
};

/* DOS ATTRIBUTE XATTR PREFIX */
#define DOS_ATTRIBUTE_PREFIX  "DOSATTRIB"
#define DOS_ATTRIBUTE_PREFIX_LEN (sizeof(DOS_ATTRIBUTE_PREFIX) - 1)
#define XATTR_NAME_DOS_ATTRIBUTE (XATTR_USER_PREFIX DOS_ATTRIBUTE_PREFIX)
#define XATTR_NAME_DOS_ATTRIBUTE_LEN \
  (sizeof(XATTR_USER_PREFIX DOS_ATTRIBUTE_PREFIX) - 1)

/* STREAM XATTR PREFIX */
#define STREAM_PREFIX   "DosStream."
#define STREAM_PREFIX_LEN  (sizeof(STREAM_PREFIX) - 1)
#define XATTR_NAME_STREAM  (XATTR_USER_PREFIX STREAM_PREFIX)
#define XATTR_NAME_STREAM_LEN  (sizeof(XATTR_NAME_STREAM) - 1)

/* SECURITY DESCRIPTOR(NTACL) XATTR PREFIX */
#define SD_PREFIX   "NTACL"
#define SD_PREFIX_LEN (sizeof(SD_PREFIX) - 1)
#define XATTR_NAME_SD (XATTR_SECURITY_PREFIX SD_PREFIX)
#define XATTR_NAME_SD_LEN \
  (sizeof(XATTR_SECURITY_PREFIX SD_PREFIX) - 1)

#endif /* __XATTR_H__ */

Messung V0.5
C=81 H=100 G=90

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.