+++ /dev/null
-commit 7e7dfca6b2824e5a14c5b011a4e05aac89d85231
-Author: Iurii Egorov <ye@amnezia.org>
-Date: Fri Nov 15 12:54:46 2024 +0300
-
- Fix get_random_u8() absence in older kernels
-
- Signed-off-by: Iurii Egorov <ye@amnezia.org>
-
-diff --git a/src/netlink.c b/src/netlink.c
-index 5043bb3..29049ba 100644
---- a/src/netlink.c
-+++ b/src/netlink.c
-@@ -232,7 +232,7 @@ static inline int parse_ipv6_prefix(const char *prefix_str, struct ipv6_prefix *
- static inline int generate_ipv6_address_with_prefix(const struct ipv6_prefix *prefix, u8 *addr)
- {
- int prefix_bytes, prefix_bits;
-- u8 mask;
-+ u8 mask, random_byte;
-
- if (!prefix || !addr)
- return -EINVAL;
-@@ -246,9 +246,10 @@ static inline int generate_ipv6_address_with_prefix(const struct ipv6_prefix *pr
- get_random_bytes(addr + prefix_bytes, 16 - prefix_bytes);
-
- if (prefix_bits != 0) {
-+ get_random_bytes(&random_byte, sizeof(random_byte));
- mask = (u8)(0xFF << (8 - prefix_bits));
- addr[prefix_bytes] &= mask;
-- addr[prefix_bytes] |= get_random_u8() & ~mask;
-+ addr[prefix_bytes] |= random_byte & ~mask;
- }
- }
-
-diff --git a/src/patches/007-random-bytes-fix.patch b/src/patches/007-random-bytes-fix.patch
-new file mode 100644
-index 0000000..d898a79
---- /dev/null
-+++ b/src/patches/007-random-bytes-fix.patch
-@@ -0,0 +1,25 @@
-+diff --git netlink.c netlink.c
-+index 5043bb3..29049ba 100644
-+--- netlink.c
-++++ netlink.c
-+@@ -232,7 +232,7 @@ static inline int parse_ipv6_prefix(const char *prefix_str, struct ipv6_prefix *
-+ static inline int generate_ipv6_address_with_prefix(const struct ipv6_prefix *prefix, u8 *addr)
-+ {
-+ int prefix_bytes, prefix_bits;
-+- u8 mask;
-++ u8 mask, random_byte;
-+
-+ if (!prefix || !addr)
-+ return -EINVAL;
-+@@ -246,9 +246,10 @@ static inline int generate_ipv6_address_with_prefix(const struct ipv6_prefix *pr
-+ get_random_bytes(addr + prefix_bytes, 16 - prefix_bytes);
-+
-+ if (prefix_bits != 0) {
-++ get_random_bytes(&random_byte, sizeof(random_byte));
-+ mask = (u8)(0xFF << (8 - prefix_bits));
-+ addr[prefix_bytes] &= mask;
-+- addr[prefix_bytes] |= get_random_u8() & ~mask;
-++ addr[prefix_bytes] |= random_byte & ~mask;
-+ }
-+ }
-+