Whamcloud - gitweb
LU-8769 lnet: removal of obsolete LNDs
[fs/lustre-release.git] / lustre / utils / gss / lsupport.h
1 /*
2  * GPL HEADER START
3  *
4  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 only,
8  * as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License version 2 for more details (a copy is included
14  * in the LICENSE file that accompanied this code).
15  *
16  * You should have received a copy of the GNU General Public License
17  * version 2 along with this program; if not, write to the
18  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 021110-1307, USA
20  *
21  * GPL HEADER END
22  */
23 /*
24  * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
25  * Use is subject to license terms.
26  *
27  * Copyright (c) 2014, Intel Corporation.
28  */
29 /*
30  * This file is part of Lustre, http://www.lustre.org/
31  * Lustre is a trademark of Sun Microsystems, Inc.
32  *
33  * lustre/utils/gss/lsupport.h
34  */
35
36 #ifndef __LSUPPORT_H__
37 #define __LSUPPORT_H__
38
39 #include <assert.h>
40 #include <unistd.h>
41 #include <stdint.h>
42
43 #include <lnet/types.h>
44
45 #define GSSD_CLI        (0)
46 #define GSSD_SVC        (1)
47
48 void gssd_init_unique(int type);
49 void gssd_exit_unique(int type);
50
51 /*
52  * copied from lustre source
53  */
54
55 #define LUSTRE_GSS_SVC_MGS      0
56 #define LUSTRE_GSS_SVC_MDS      1
57 #define LUSTRE_GSS_SVC_OSS      2
58
59 #define LUSTRE_GSS_SVC_MASK     0x0000FFFF
60 #define LUSTRE_GSS_MECH_MASK    0xFFFF0000
61 #define LUSTRE_GSS_MECH_SHIFT   16
62
63 extern const char * lustre_svc_name[];
64
65 enum lgss_mech {
66         LGSS_MECH_KRB5  = 0,
67         LGSS_MECH_NULL  = 1,
68         LGSS_MECH_SK    = 2,
69 };
70
71 enum {
72         /* sec part flags */
73         LGSS_ROOT_CRED_ROOT     = 0x01,
74         LGSS_ROOT_CRED_MDT      = 0x02,
75         LGSS_ROOT_CRED_OST      = 0x04,
76         /* service type flags */
77         LGSS_SVC_NULL           = 0x10,
78         LGSS_SVC_AUTH           = 0x20,
79         LGSS_SVC_INTG           = 0x40,
80         LGSS_SVC_PRIV           = 0x80,
81         /* Number of sec part flags */
82         LGSS_ROOT_CRED_NR       = 3,
83 };
84
85 struct lgssd_upcall_data {
86         uint32_t        seq;
87         uint32_t        uid;
88         uint32_t        gid;
89         uint32_t        svc;
90         uint64_t        nid;
91         char            obd[64];
92 };
93
94 #define GSSD_INTERFACE_VERSION          GSSD_INTERFACE_VERSION_V2
95 #define GSSD_INTERFACE_VERSION_V2       (2)
96 #define GSSD_INTERFACE_VERSION_V1       (1)
97
98 struct lgssd_ioctl_param {
99         int             version;        /* in   */
100         int             secid;          /* in   */
101         char           *uuid;           /* in   */
102         int             lustre_svc;     /* in   */
103         uid_t           uid;            /* in   */
104         gid_t           gid;            /* in   */
105         long            send_token_size;/* in   */
106         char           *send_token;     /* in   */
107         long            reply_buf_size; /* in   */
108         char           *reply_buf;      /* in   */
109         long            status;         /* out  */
110         long            reply_length;   /* out  */
111 };
112
113 #define GSSD_DEFAULT_GETHOSTNAME_EX     "/etc/lustre/nid2hostname"
114 #define MAPPING_DATABASE_FILE           "/etc/lustre/idmap.conf"
115
116 int lnet_nid2hostname(lnet_nid_t nid, char *buf, int buflen);
117 void cleanup_mapping(void);
118 int lookup_mapping(char *princ, lnet_nid_t nid, uid_t *uid);
119
120 #endif /* __LSUPPORT_H__ */