From b97f1e694a1c096eac2f48c6e3ca47e8a3c4693c Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 18 Feb 2020 08:30:00 +0100 Subject: sys/linux: add broadcast mac address Code in net/ethernet/eth.c does this: __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) { ... if (unlikely(!ether_addr_equal_64bits(eth->h_dest, dev->dev_addr))) { if (unlikely(is_multicast_ether_addr_64bits(eth->h_dest))) { if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast)) skb->pkt_type = PACKET_BROADCAST; else skb->pkt_type = PACKET_MULTICAST; } else { skb->pkt_type = PACKET_OTHERHOST; } } Multicast and broadcast are distinct and dev->broadcast seems to be ffffffffffff by default, so add another multicast mac address that will serve as PACKET_MULTICAST. --- sys/linux/vnet.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'sys/linux/vnet.txt') diff --git a/sys/linux/vnet.txt b/sys/linux/vnet.txt index edc38fdc5..7ad9421e7 100644 --- a/sys/linux/vnet.txt +++ b/sys/linux/vnet.txt @@ -62,6 +62,7 @@ mac_addr [ remote mac_addr_t[const[0xbb, int8]] dev mac_addr_t[netdev_addr_id] broadcast array[const[0xff, int8], 6] + multicast array[const[0xbb, int8], 6] link_local mac_addr_link_local random array[int8, 6] ] -- cgit mrf-deployment