C语言 比较mac

cilium 1.15.1

把单个mac拆分成2个整数,做减法比较。

#include <stdio.h>

union macaddr {
	struct {
		__uint32_t p1;
		__uint16_t p2;
	};
	__uint8_t addr[6];
};

static __always_inline int eth_addrcmp(const union macaddr *a,
				       const union macaddr *b)
{
	int tmp;

	tmp = a->p1 - b->p1;
	if (!tmp)
		tmp = a->p2 - b->p2;

	return tmp;
}

int main() {
    unsigned char mac1[6] = {1,1,1,1,1,1};
    unsigned char mac2[6] = {1,1,1,1,1,2};

    union macaddr *macaddr1 = (union macaddr*)mac1;
    union macaddr *macaddr2 = (union macaddr*)mac2;

    printf("%d\n", eth_addrcmp(macaddr1, macaddr2));

    unsigned char mac3[6] = {1,1,1,1,1,1};
    unsigned char mac4[6] = {1,1,1,1,1,1};

    union macaddr *macaddr3 = (union macaddr*)mac3;
    union macaddr *macaddr4 = (union macaddr*)mac4;

    printf("%d\n", eth_addrcmp(macaddr3, macaddr4));

    return 0;
}

posted on 2024-06-08 11:22  王景迁  阅读(33)  评论(0)    收藏  举报

导航