}
#endif
-#ifdef __x86_64__
-# ifndef __NR_memfd_create
+#ifndef __NR_memfd_create
+# if defined __x86_64__
# define __NR_memfd_create 319
-# endif
-#elif defined __arm__
-# ifndef __NR_memfd_create
+# elif defined __arm__
# define __NR_memfd_create 385
-# endif
-#elif defined _MIPS_SIM
-# ifndef __NR_memfd_create
+# elif defined _MIPS_SIM
# warning "__NR_memfd_create not yet defined for MIPS"
# define __NR_memfd_create 0xffffffff
-# endif
-#else
-# ifndef __NR_memfd_create
+# else
# define __NR_memfd_create 356
# endif
#endif
}
#endif
+#ifndef __NR_getrandom
+# if defined __x86_64__
+# define __NR_getrandom 278
+# else
+# warning "__NR_getrandom unknown for your architecture"
+# define __NR_getrandom 0xffffffff
+# endif
+#endif
+
+#if !HAVE_DECL_GETRANDOM
+static inline int getrandom(void *buffer, size_t count, unsigned flags) {
+ return syscall(__NR_getrandom, buffer, count, flags);
+}
+#endif
+
#ifndef BTRFS_IOCTL_MAGIC
#define BTRFS_IOCTL_MAGIC 0x94
#endif
#define IFLA_BOND_AD_INFO 23
#define __IFLA_BOND_MAX 24
-#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
+#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
#endif
#if !HAVE_DECL_IFLA_VLAN_PROTOCOL
#ifndef BPF_XOR
# define BPF_XOR 0xa0
#endif
+
+/* Note that LOOPBACK_IFINDEX is currently not exported by the
+ * kernel/glibc, but hardcoded internally by the kernel. However, as
+ * it is exported to userspace indirectly via rtnetlink and the
+ * ioctls, and made use of widely we define it here too, in a way that
+ * is compatible with the kernel's internal definition. */
+#ifndef LOOPBACK_IFINDEX
+#define LOOPBACK_IFINDEX 1
+#endif