MACVLAN interface gives error DEVICE_CLAIM_FAILED

Hi. I'm trying to assign my router multiple WAN IP addresses using MACVLAN interfaces (to bypass a per-MAC-address limit). I tried creating a macvlan device and a corresponding interface, but when I try to bring the interface up, it gives an error DEVICE_CLAIM_FAILED:

root@OpenWrt:~# ifup mac0
root@OpenWrt:~# ifstatus mac0
{
        "up": false,
        "pending": false,
        "available": true,
        "autostart": true,
        "dynamic": false,
        "proto": "dhcp",
        "device": "eth1mac0",
        "data": {

        },
        "errors": [
                {
                        "subsystem": "interface",
                        "code": "DEVICE_CLAIM_FAILED"
                }
        ]
}

I've already installed the macvlan kernel module. I can manually create an interface using ip link add mac0 link eth1 type macvlan, it's just ifup that doesn't work.
Here's the relevant part of /etc/config/network:

config device
        option name 'eth1'
        option macaddr '...'

config interface 'wan'
        option proto 'dhcp'
        option device 'eth1'

config interface 'wan6'
        option proto 'dhcpv6'
        option device 'eth1'
        option reqaddress 'try'
        option reqprefix 'auto'

config device
        option type 'macvlan'
        option ifname 'eth1'
        option mode 'vepa'
        option name 'eth1mac0'
        option macaddr '...'

config interface 'mac0'
        option proto 'dhcp'
        option device 'eth1mac0'

and my board:

{
        "kernel": "5.15.150",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 4",
        "model": "GL.iNet GL-MT6000",
        "board_name": "glinet,gl-mt6000",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "23.05.3",
                "revision": "r23809-234f1a2efa",
                "target": "mediatek/filogic",
                "description": "OpenWrt 23.05.3 r23809-234f1a2efa"
        }
}

Does anyone know what might be causing this, or if not what a good next step might be in debugging?