/* Generated by ./xlat/gen.sh from ./xlat/bpf_commands.in; do not edit. */
#if !(defined(BPF_MAP_CREATE) || (defined(HAVE_DECL_BPF_MAP_CREATE) && HAVE_DECL_BPF_MAP_CREATE))
# define BPF_MAP_CREATE 0
#endif
#if !(defined(BPF_MAP_LOOKUP_ELEM) || (defined(HAVE_DECL_BPF_MAP_LOOKUP_ELEM) && HAVE_DECL_BPF_MAP_LOOKUP_ELEM))
# define BPF_MAP_LOOKUP_ELEM 1
#endif
#if !(defined(BPF_MAP_UPDATE_ELEM) || (defined(HAVE_DECL_BPF_MAP_UPDATE_ELEM) && HAVE_DECL_BPF_MAP_UPDATE_ELEM))
# define BPF_MAP_UPDATE_ELEM 2
#endif
#if !(defined(BPF_MAP_DELETE_ELEM) || (defined(HAVE_DECL_BPF_MAP_DELETE_ELEM) && HAVE_DECL_BPF_MAP_DELETE_ELEM))
# define BPF_MAP_DELETE_ELEM 3
#endif
#if !(defined(BPF_MAP_GET_NEXT_KEY) || (defined(HAVE_DECL_BPF_MAP_GET_NEXT_KEY) && HAVE_DECL_BPF_MAP_GET_NEXT_KEY))
# define BPF_MAP_GET_NEXT_KEY 4
#endif
#if !(defined(BPF_PROG_LOAD) || (defined(HAVE_DECL_BPF_PROG_LOAD) && HAVE_DECL_BPF_PROG_LOAD))
# define BPF_PROG_LOAD 5
#endif
#if !(defined(BPF_OBJ_PIN) || (defined(HAVE_DECL_BPF_OBJ_PIN) && HAVE_DECL_BPF_OBJ_PIN))
# define BPF_OBJ_PIN 6
#endif
#if !(defined(BPF_OBJ_GET) || (defined(HAVE_DECL_BPF_OBJ_GET) && HAVE_DECL_BPF_OBJ_GET))
# define BPF_OBJ_GET 7
#endif
#if !(defined(BPF_PROG_ATTACH) || (defined(HAVE_DECL_BPF_PROG_ATTACH) && HAVE_DECL_BPF_PROG_ATTACH))
# define BPF_PROG_ATTACH 8
#endif
#if !(defined(BPF_PROG_DETACH) || (defined(HAVE_DECL_BPF_PROG_DETACH) && HAVE_DECL_BPF_PROG_DETACH))
# define BPF_PROG_DETACH 9
#endif
#if !(defined(BPF_PROG_TEST_RUN) || (defined(HAVE_DECL_BPF_PROG_TEST_RUN) && HAVE_DECL_BPF_PROG_TEST_RUN))
# define BPF_PROG_TEST_RUN 10
#endif
#if !(defined(BPF_PROG_GET_NEXT_ID) || (defined(HAVE_DECL_BPF_PROG_GET_NEXT_ID) && HAVE_DECL_BPF_PROG_GET_NEXT_ID))
# define BPF_PROG_GET_NEXT_ID 11
#endif
#if !(defined(BPF_MAP_GET_NEXT_ID) || (defined(HAVE_DECL_BPF_MAP_GET_NEXT_ID) && HAVE_DECL_BPF_MAP_GET_NEXT_ID))
# define BPF_MAP_GET_NEXT_ID 12
#endif
#if !(defined(BPF_PROG_GET_FD_BY_ID) || (defined(HAVE_DECL_BPF_PROG_GET_FD_BY_ID) && HAVE_DECL_BPF_PROG_GET_FD_BY_ID))
# define BPF_PROG_GET_FD_BY_ID 13
#endif
#if !(defined(BPF_MAP_GET_FD_BY_ID) || (defined(HAVE_DECL_BPF_MAP_GET_FD_BY_ID) && HAVE_DECL_BPF_MAP_GET_FD_BY_ID))
# define BPF_MAP_GET_FD_BY_ID 14
#endif
#if !(defined(BPF_OBJ_GET_INFO_BY_FD) || (defined(HAVE_DECL_BPF_OBJ_GET_INFO_BY_FD) && HAVE_DECL_BPF_OBJ_GET_INFO_BY_FD))
# define BPF_OBJ_GET_INFO_BY_FD 15
#endif

#ifdef IN_MPERS

# error static const struct xlat bpf_commands in mpers mode

#else

static
const struct xlat bpf_commands[] = {
 XLAT(BPF_MAP_CREATE),
 XLAT(BPF_MAP_LOOKUP_ELEM),
 XLAT(BPF_MAP_UPDATE_ELEM),
 XLAT(BPF_MAP_DELETE_ELEM),
 XLAT(BPF_MAP_GET_NEXT_KEY),
 XLAT(BPF_PROG_LOAD),
 XLAT(BPF_OBJ_PIN),
 XLAT(BPF_OBJ_GET),
 XLAT(BPF_PROG_ATTACH),
 XLAT(BPF_PROG_DETACH),
 XLAT(BPF_PROG_TEST_RUN),
 XLAT(BPF_PROG_GET_NEXT_ID),
 XLAT(BPF_MAP_GET_NEXT_ID),
 XLAT(BPF_PROG_GET_FD_BY_ID),
 XLAT(BPF_MAP_GET_FD_BY_ID),
 XLAT(BPF_OBJ_GET_INFO_BY_FD),
 XLAT_END
};

#endif /* !IN_MPERS */
