To wrap up this thread, here are the steps to set the eth0 MAC address and enable ALLMULTI (allmulticast) reception for a network managed by systemd-networkd. One configuration file interacts with systemd-networkd, the other with udev, since the systemd-networkd does not have a key=value to set the link flags.
Create local systemd and udev configuration files that set the eth0 interface MAC address and enable ALLMULTI for DECnet prior to starting IP on the interface.
$this->bbcode_second_pass_code('', '# cat >/etc/systemd/network/00-eth0-decnet-mac-address.link <<EOF
# Set the eth0 MAC address for DECnet host address 54.148
[Match]
MACAddress=f0:ad:4e:01:fd:c6
[Link]
MACAddress=aa:00:04:00:94:d8
EOF
')
$this->bbcode_second_pass_code('', '# cat >/etc/udev/rules.d/85-net-set-flags.rules <<EOF
# Set ALLMULTI (flags|=0x200) for DECnet on eth0
SUBSYSTEM=="net", ACTION=="add", KERNEL=="eth*", ATTR{address}=="f0:ad:4e:01:fd:c6", ATTR{flags}="0x1203"
EOF')
I learned the hard way that the default systemd-networkd.link rule cannot be overridden with a file name that starts with an alphabetic character -- they all collate after the default rule's name, /usr/lib/systemd/network/99-default.link. I wish this were made clearer on the
https://wiki.archlinux.org/index.php/Systemd-networkd web page.
Larry Baker
US Geological Survey