]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ether-addr-util: split out logic to mark MAC addresses as random
authorLennart Poettering <lennart@poettering.net>
Mon, 18 Dec 2023 13:47:47 +0000 (14:47 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 19 Dec 2023 02:48:05 +0000 (11:48 +0900)
src/basic/ether-addr-util.c
src/basic/ether-addr-util.h
src/nspawn/nspawn-network.c

index 0a6a54f8f139dded22de9ac299e9d81320a24e3d..12c256a474e9bb177525d0a3b7f40c2df7099738 100644 (file)
@@ -270,3 +270,11 @@ int parse_ether_addr(const char *s, struct ether_addr *ret) {
         *ret = a.ether;
         return 0;
 }
+
+void ether_addr_mark_random(struct ether_addr *addr) {
+        assert(addr);
+
+        /* see eth_random_addr in the kernel */
+        addr->ether_addr_octet[0] &= 0xfe;        /* clear multicast bit */
+        addr->ether_addr_octet[0] |= 0x02;        /* set local assignment bit (IEEE802) */
+}
index 83ed77d634513d189c30ac84542013833298fd6d..187e4ef5830a47a01acfd715d6013b596dbbdf31 100644 (file)
@@ -113,3 +113,5 @@ static inline bool ether_addr_is_global(const struct ether_addr *addr) {
 
 extern const struct hash_ops ether_addr_hash_ops;
 extern const struct hash_ops ether_addr_hash_ops_free;
+
+void ether_addr_mark_random(struct ether_addr *addr);
index c661f1d9e0b271268a2c1be4e4ce3aa648b4a9ad..369d8742b60f0be1da0a9041d2ea29b4171ed0ea 100644 (file)
@@ -95,9 +95,7 @@ static int generate_mac(
         assert_cc(ETH_ALEN <= sizeof(result));
         memcpy(mac->ether_addr_octet, &result, ETH_ALEN);
 
-        /* see eth_random_addr in the kernel */
-        mac->ether_addr_octet[0] &= 0xfe;        /* clear multicast bit */
-        mac->ether_addr_octet[0] |= 0x02;        /* set local assignment bit (IEEE802) */
+        ether_addr_mark_random(mac);
 
         return 0;
 }