projects/linux·blob master · refs

39 lines · 1.2 KiB

1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * DOS share management for lockd.
4 *
5 * Copyright (C) 1996, Olaf Kirch <[email protected]>
6 */
7
8#ifndef _LOCKD_SHARE_H
9#define _LOCKD_SHARE_H
10
11#include <linux/bits.h>
12
13/* Synthetic svid for lockowner lookup during share operations */
14#define LOCKD_SHARE_SVID (~(u32)0)
15
16/* One bit per (access, deny) pair; index = (access << 2) | deny */
17#define LOCKD_FSH_BIT(a, d) BIT(((a) << 2) | (d))
18
19/*
20 * DOS share for a specific file
21 */
22struct lockd_share {
23 struct lockd_share * s_next; /* linked list */
24 struct nlm_host * s_host; /* client host */
25 struct nlm_file * s_file; /* shared file */
26 struct xdr_netobj s_owner; /* owner handle */
27 u32 s_access; /* access mode */
28 u32 s_mode; /* deny mode */
29 u16 s_access_deny_bmap; /* held (access, deny) pairs */
30};
31
32__be32 nlmsvc_share_file(struct nlm_host *host, struct nlm_file *file,
33 struct xdr_netobj *oh, u32 access, u32 mode);
34__be32 nlmsvc_unshare_file(struct nlm_host *host, struct nlm_file *file,
35 struct xdr_netobj *oh, u32 access, u32 mode);
36void nlmsvc_traverse_shares(struct nlm_host *, struct nlm_file *,
37 nlm_host_match_fn_t);
38
39#endif /* _LOCKD_SHARE_H */