mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
Merge pull request #21321 from yuwata/ether-addr-fix-local
ether-addr-util: fix ether_addr_is_local()
This commit is contained in:
commit
b01ee585c9
@ -102,7 +102,11 @@ static inline bool ether_addr_is_unicast(const struct ether_addr *addr) {
|
||||
static inline bool ether_addr_is_local(const struct ether_addr *addr) {
|
||||
/* Determine if the Ethernet address is locally-assigned one (IEEE 802) */
|
||||
assert(addr);
|
||||
return !FLAGS_SET(addr->ether_addr_octet[0], 0x02);
|
||||
return FLAGS_SET(addr->ether_addr_octet[0], 0x02);
|
||||
}
|
||||
|
||||
static inline bool ether_addr_is_global(const struct ether_addr *addr) {
|
||||
return !ether_addr_is_local(addr);
|
||||
}
|
||||
|
||||
extern const struct hash_ops ether_addr_hash_ops;
|
||||
|
@ -4,6 +4,36 @@
|
||||
#include "string-util.h"
|
||||
#include "tests.h"
|
||||
|
||||
static void test_ether_addr_helpers(void) {
|
||||
struct ether_addr a;
|
||||
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
a = ETHER_ADDR_NULL;
|
||||
assert_se(ether_addr_is_null(&a));
|
||||
assert_se(!ether_addr_is_broadcast(&a));
|
||||
assert_se(!ether_addr_is_multicast(&a));
|
||||
assert_se(ether_addr_is_unicast(&a));
|
||||
assert_se(!ether_addr_is_local(&a));
|
||||
assert_se(ether_addr_is_global(&a));
|
||||
|
||||
memset(a.ether_addr_octet, 0xff, sizeof(a));
|
||||
assert_se(!ether_addr_is_null(&a));
|
||||
assert_se(ether_addr_is_broadcast(&a));
|
||||
assert_se(ether_addr_is_multicast(&a));
|
||||
assert_se(!ether_addr_is_unicast(&a));
|
||||
assert_se(ether_addr_is_local(&a));
|
||||
assert_se(!ether_addr_is_global(&a));
|
||||
|
||||
a = (struct ether_addr) { { 0x01, 0x23, 0x34, 0x56, 0x78, 0x9a } };
|
||||
assert_se(!ether_addr_is_null(&a));
|
||||
assert_se(!ether_addr_is_broadcast(&a));
|
||||
assert_se(ether_addr_is_multicast(&a));
|
||||
assert_se(!ether_addr_is_unicast(&a));
|
||||
assert_se(!ether_addr_is_local(&a));
|
||||
assert_se(ether_addr_is_global(&a));
|
||||
}
|
||||
|
||||
#define INFINIBAD_ADDR_1 ((const struct hw_addr_data){ .length = 20, .infiniband = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20} })
|
||||
|
||||
static void test_HW_ADDR_TO_STRING(void) {
|
||||
@ -138,6 +168,7 @@ static void test_parse_hw_addr(void) {
|
||||
int main(int argc, char *argv[]) {
|
||||
test_setup_logging(LOG_INFO);
|
||||
|
||||
test_ether_addr_helpers();
|
||||
test_HW_ADDR_TO_STRING();
|
||||
test_parse_hw_addr();
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user