1dnl # 2dnl # 2.6.38 API change 3dnl # ns_capable() was introduced 4dnl # 5AC_DEFUN([ZFS_AC_KERNEL_SRC_NS_CAPABLE], [ 6 ZFS_LINUX_TEST_SRC([ns_capable], [ 7 #include <linux/capability.h> 8 ],[ 9 ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); 10 ]) 11]) 12 13AC_DEFUN([ZFS_AC_KERNEL_NS_CAPABLE], [ 14 AC_MSG_CHECKING([whether ns_capable exists]) 15 ZFS_LINUX_TEST_RESULT([ns_capable], [ 16 AC_MSG_RESULT(yes) 17 ],[ 18 ZFS_LINUX_TEST_ERROR([ns_capable()]) 19 ]) 20]) 21 22dnl # 23dnl # 4.10 API change 24dnl # has_capability() was exported. 25dnl # 26AC_DEFUN([ZFS_AC_KERNEL_SRC_HAS_CAPABILITY], [ 27 ZFS_LINUX_TEST_SRC([has_capability], [ 28 #include <linux/capability.h> 29 ],[ 30 struct task_struct *task = NULL; 31 int cap = 0; 32 bool result __attribute__ ((unused)); 33 34 result = has_capability(task, cap); 35 ]) 36]) 37 38AC_DEFUN([ZFS_AC_KERNEL_HAS_CAPABILITY], [ 39 AC_MSG_CHECKING([whether has_capability() is available]) 40 ZFS_LINUX_TEST_RESULT_SYMBOL([has_capability], 41 [has_capability], [kernel/capability.c], [ 42 AC_MSG_RESULT(yes) 43 AC_DEFINE(HAVE_HAS_CAPABILITY, 1, [has_capability() is available]) 44 ],[ 45 AC_MSG_RESULT(no) 46 ]) 47]) 48 49dnl # 50dnl # 2.6.39 API change 51dnl # struct user_namespace was added to struct cred_t as cred->user_ns member 52dnl # 53AC_DEFUN([ZFS_AC_KERNEL_SRC_CRED_USER_NS], [ 54 ZFS_LINUX_TEST_SRC([cred_user_ns], [ 55 #include <linux/cred.h> 56 ],[ 57 struct cred cr; 58 cr.user_ns = (struct user_namespace *)NULL; 59 ]) 60]) 61 62AC_DEFUN([ZFS_AC_KERNEL_CRED_USER_NS], [ 63 AC_MSG_CHECKING([whether cred_t->user_ns exists]) 64 ZFS_LINUX_TEST_RESULT([cred_user_ns], [ 65 AC_MSG_RESULT(yes) 66 ],[ 67 ZFS_LINUX_TEST_ERROR([cred_t->user_ns()]) 68 ]) 69]) 70 71dnl # 72dnl # 3.4 API change 73dnl # kuid_has_mapping() and kgid_has_mapping() were added to distinguish 74dnl # between internal kernel uids/gids and user namespace uids/gids. 75dnl # 76AC_DEFUN([ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING], [ 77 ZFS_LINUX_TEST_SRC([kuid_has_mapping], [ 78 #include <linux/uidgid.h> 79 ],[ 80 kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); 81 kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); 82 ]) 83]) 84 85AC_DEFUN([ZFS_AC_KERNEL_KUID_HAS_MAPPING], [ 86 AC_MSG_CHECKING([whether kuid_has_mapping/kgid_has_mapping exist]) 87 ZFS_LINUX_TEST_RESULT([kuid_has_mapping], [ 88 AC_MSG_RESULT(yes) 89 ],[ 90 ZFS_LINUX_TEST_ERROR([kuid_has_mapping()]) 91 ]) 92]) 93 94AC_DEFUN([ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES], [ 95 ZFS_AC_KERNEL_SRC_NS_CAPABLE 96 ZFS_AC_KERNEL_SRC_HAS_CAPABILITY 97 ZFS_AC_KERNEL_SRC_CRED_USER_NS 98 ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING 99]) 100 101AC_DEFUN([ZFS_AC_KERNEL_USERNS_CAPABILITIES], [ 102 ZFS_AC_KERNEL_NS_CAPABLE 103 ZFS_AC_KERNEL_HAS_CAPABILITY 104 ZFS_AC_KERNEL_CRED_USER_NS 105 ZFS_AC_KERNEL_KUID_HAS_MAPPING 106]) 107