]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - include/sys/cred.h
New upstream version 0.7.2
[mirror_spl-debian.git] / include / sys / cred.h
index 6f4cde73cf0b8b9bf326b62696289e9525ea2de6..2ad7115e0a3b22c7d287686aee4c7e5696d98065 100644 (file)
@@ -6,7 +6,7 @@
  *  UCRL-CODE-235197
  *
  *  This file is part of the SPL, Solaris Porting Layer.
- *  For details, see <http://github.com/behlendorf/spl/>.
+ *  For details, see <http://zfsonlinux.org/>.
  *
  *  The SPL is free software; you can redistribute it and/or modify it
  *  under the terms of the GNU General Public License as published by the
 #include <sys/types.h>
 #include <sys/vfs.h>
 
-#ifdef HAVE_CRED_STRUCT
-
 typedef struct cred cred_t;
 
-#define kcred          ((cred_t *)(init_task.cred))
-#define CRED()         ((cred_t *)current_cred())
+#define        kcred           ((cred_t *)(init_task.cred))
+#define        CRED()          ((cred_t *)current_cred())
+
+/* Linux 4.9 API change, GROUP_AT was removed */
+#ifndef GROUP_AT
+#define        GROUP_AT(gi, i) ((gi)->gid[i])
+#endif
+
+#ifdef HAVE_KUIDGID_T
 
-#else
+#define        KUID_TO_SUID(x)         (__kuid_val(x))
+#define        KGID_TO_SGID(x)         (__kgid_val(x))
+#define        SUID_TO_KUID(x)         (KUIDT_INIT(x))
+#define        SGID_TO_KGID(x)         (KGIDT_INIT(x))
+#define        KGIDP_TO_SGIDP(x)       (&(x)->val)
 
-typedef struct task_struct cred_t;
+#else /* HAVE_KUIDGID_T */
 
-#define kcred          ((cred_t *)&init_task)
-#define CRED()         ((cred_t *)current)
+#define        KUID_TO_SUID(x)         (x)
+#define        KGID_TO_SGID(x)         (x)
+#define        SUID_TO_KUID(x)         (x)
+#define        SGID_TO_KGID(x)         (x)
+#define        KGIDP_TO_SGIDP(x)       (x)
 
-#endif /* HAVE_CRED_STRUCT */
+#endif /* HAVE_KUIDGID_T */
 
 extern void crhold(cred_t *cr);
 extern void crfree(cred_t *cr);
 extern uid_t crgetuid(const cred_t *cr);
 extern uid_t crgetruid(const cred_t *cr);
 extern uid_t crgetsuid(const cred_t *cr);
+extern uid_t crgetfsuid(const cred_t *cr);
 extern gid_t crgetgid(const cred_t *cr);
 extern gid_t crgetrgid(const cred_t *cr);
 extern gid_t crgetsgid(const cred_t *cr);
+extern gid_t crgetfsgid(const cred_t *cr);
 extern int crgetngroups(const cred_t *cr);
 extern gid_t * crgetgroups(const cred_t *cr);
 extern int groupmember(gid_t gid, const cred_t *cr);