def METHOD_NAME(eth_mac_src: bytes, psrc: str, gw_ip: str, vlan: str) -> dpkt.arp.ARP:
    pkt = dpkt.arp.ARP(
        sha=eth_mac_src,
        spa=socket.inet_aton(psrc),
        tha=b'\x00' * 6,
        tpa=socket.inet_aton(gw_ip),
        op=dpkt.arp.ARP_OP_REQUEST,
    )
    if vlan.isdigit():
        pkt = dpkt.ethernet.VLANtag8021Q(
            id=int(vlan), data=bytes(pkt), type=dpkt.ethernet.ETH_TYPE_ARP,
        )
        t = dpkt.ethernet.ETH_TYPE_8021Q
    else:
        t = dpkt.ethernet.ETH_TYPE_ARP
    pkt = dpkt.ethernet.Ethernet(
        dst=b'\xff' * 6, src=eth_mac_src, data=bytes(pkt), type=t,
    )
    return pkt