/* Generated by ./xlat/gen.sh from ./xlat/keyctl_commands.in; do not edit. */
#if !(defined(KEYCTL_GET_KEYRING_ID) || (defined(HAVE_DECL_KEYCTL_GET_KEYRING_ID) && HAVE_DECL_KEYCTL_GET_KEYRING_ID))
# define KEYCTL_GET_KEYRING_ID 0
#endif
#if !(defined(KEYCTL_JOIN_SESSION_KEYRING) || (defined(HAVE_DECL_KEYCTL_JOIN_SESSION_KEYRING) && HAVE_DECL_KEYCTL_JOIN_SESSION_KEYRING))
# define KEYCTL_JOIN_SESSION_KEYRING 1
#endif
#if !(defined(KEYCTL_UPDATE) || (defined(HAVE_DECL_KEYCTL_UPDATE) && HAVE_DECL_KEYCTL_UPDATE))
# define KEYCTL_UPDATE 2
#endif
#if !(defined(KEYCTL_REVOKE) || (defined(HAVE_DECL_KEYCTL_REVOKE) && HAVE_DECL_KEYCTL_REVOKE))
# define KEYCTL_REVOKE 3
#endif
#if !(defined(KEYCTL_CHOWN) || (defined(HAVE_DECL_KEYCTL_CHOWN) && HAVE_DECL_KEYCTL_CHOWN))
# define KEYCTL_CHOWN 4
#endif
#if !(defined(KEYCTL_SETPERM) || (defined(HAVE_DECL_KEYCTL_SETPERM) && HAVE_DECL_KEYCTL_SETPERM))
# define KEYCTL_SETPERM 5
#endif
#if !(defined(KEYCTL_DESCRIBE) || (defined(HAVE_DECL_KEYCTL_DESCRIBE) && HAVE_DECL_KEYCTL_DESCRIBE))
# define KEYCTL_DESCRIBE 6
#endif
#if !(defined(KEYCTL_CLEAR) || (defined(HAVE_DECL_KEYCTL_CLEAR) && HAVE_DECL_KEYCTL_CLEAR))
# define KEYCTL_CLEAR 7
#endif
#if !(defined(KEYCTL_LINK) || (defined(HAVE_DECL_KEYCTL_LINK) && HAVE_DECL_KEYCTL_LINK))
# define KEYCTL_LINK 8
#endif
#if !(defined(KEYCTL_UNLINK) || (defined(HAVE_DECL_KEYCTL_UNLINK) && HAVE_DECL_KEYCTL_UNLINK))
# define KEYCTL_UNLINK 9
#endif
#if !(defined(KEYCTL_SEARCH) || (defined(HAVE_DECL_KEYCTL_SEARCH) && HAVE_DECL_KEYCTL_SEARCH))
# define KEYCTL_SEARCH 10
#endif
#if !(defined(KEYCTL_READ) || (defined(HAVE_DECL_KEYCTL_READ) && HAVE_DECL_KEYCTL_READ))
# define KEYCTL_READ 11
#endif
#if !(defined(KEYCTL_INSTANTIATE) || (defined(HAVE_DECL_KEYCTL_INSTANTIATE) && HAVE_DECL_KEYCTL_INSTANTIATE))
# define KEYCTL_INSTANTIATE 12
#endif
#if !(defined(KEYCTL_NEGATE) || (defined(HAVE_DECL_KEYCTL_NEGATE) && HAVE_DECL_KEYCTL_NEGATE))
# define KEYCTL_NEGATE 13
#endif
#if !(defined(KEYCTL_SET_REQKEY_KEYRING) || (defined(HAVE_DECL_KEYCTL_SET_REQKEY_KEYRING) && HAVE_DECL_KEYCTL_SET_REQKEY_KEYRING))
# define KEYCTL_SET_REQKEY_KEYRING 14
#endif
#if !(defined(KEYCTL_SET_TIMEOUT) || (defined(HAVE_DECL_KEYCTL_SET_TIMEOUT) && HAVE_DECL_KEYCTL_SET_TIMEOUT))
# define KEYCTL_SET_TIMEOUT 15
#endif
#if !(defined(KEYCTL_ASSUME_AUTHORITY) || (defined(HAVE_DECL_KEYCTL_ASSUME_AUTHORITY) && HAVE_DECL_KEYCTL_ASSUME_AUTHORITY))
# define KEYCTL_ASSUME_AUTHORITY 16
#endif
#if !(defined(KEYCTL_GET_SECURITY) || (defined(HAVE_DECL_KEYCTL_GET_SECURITY) && HAVE_DECL_KEYCTL_GET_SECURITY))
# define KEYCTL_GET_SECURITY 17
#endif
#if !(defined(KEYCTL_SESSION_TO_PARENT) || (defined(HAVE_DECL_KEYCTL_SESSION_TO_PARENT) && HAVE_DECL_KEYCTL_SESSION_TO_PARENT))
# define KEYCTL_SESSION_TO_PARENT 18
#endif
#if !(defined(KEYCTL_REJECT) || (defined(HAVE_DECL_KEYCTL_REJECT) && HAVE_DECL_KEYCTL_REJECT))
# define KEYCTL_REJECT 19
#endif
#if !(defined(KEYCTL_INSTANTIATE_IOV) || (defined(HAVE_DECL_KEYCTL_INSTANTIATE_IOV) && HAVE_DECL_KEYCTL_INSTANTIATE_IOV))
# define KEYCTL_INSTANTIATE_IOV 20
#endif
#if !(defined(KEYCTL_INVALIDATE) || (defined(HAVE_DECL_KEYCTL_INVALIDATE) && HAVE_DECL_KEYCTL_INVALIDATE))
# define KEYCTL_INVALIDATE 21
#endif
#if !(defined(KEYCTL_GET_PERSISTENT) || (defined(HAVE_DECL_KEYCTL_GET_PERSISTENT) && HAVE_DECL_KEYCTL_GET_PERSISTENT))
# define KEYCTL_GET_PERSISTENT 22
#endif
#if !(defined(KEYCTL_DH_COMPUTE) || (defined(HAVE_DECL_KEYCTL_DH_COMPUTE) && HAVE_DECL_KEYCTL_DH_COMPUTE))
# define KEYCTL_DH_COMPUTE 23
#endif

#ifdef IN_MPERS

# error static const struct xlat keyctl_commands in mpers mode

#else

static
const struct xlat keyctl_commands[] = {
 XLAT(KEYCTL_GET_KEYRING_ID),
 XLAT(KEYCTL_JOIN_SESSION_KEYRING),
 XLAT(KEYCTL_UPDATE),
 XLAT(KEYCTL_REVOKE),
 XLAT(KEYCTL_CHOWN),
 XLAT(KEYCTL_SETPERM),
 XLAT(KEYCTL_DESCRIBE),
 XLAT(KEYCTL_CLEAR),
 XLAT(KEYCTL_LINK),
 XLAT(KEYCTL_UNLINK),
 XLAT(KEYCTL_SEARCH),
 XLAT(KEYCTL_READ),
 XLAT(KEYCTL_INSTANTIATE),
 XLAT(KEYCTL_NEGATE),
 XLAT(KEYCTL_SET_REQKEY_KEYRING),
 XLAT(KEYCTL_SET_TIMEOUT),
 XLAT(KEYCTL_ASSUME_AUTHORITY),
 XLAT(KEYCTL_GET_SECURITY),
 XLAT(KEYCTL_SESSION_TO_PARENT),
 XLAT(KEYCTL_REJECT),
 XLAT(KEYCTL_INSTANTIATE_IOV),
 XLAT(KEYCTL_INVALIDATE),
 XLAT(KEYCTL_GET_PERSISTENT),
 XLAT(KEYCTL_DH_COMPUTE),
 XLAT_END
};

#endif /* !IN_MPERS */
