Создайте новый слой gopacket - PullRequest
       44

Создайте новый слой gopacket

0 голосов
/ 10 января 2019

Я бы хотел пометить свой Ethernet-пакет слоем Dot1Q. Я хочу вставить его между EthernetLayer и IPv4Layer / ARP и т. Д. Это код, который я пробовал, но я не знаю, что не так:

sls := []gopacket.SerializableLayer{}
for _, layer := range packet.Layers() {
    sl, ok := layer.(gopacket.SerializableLayer)
    if !ok {
        log.Printf("layer %s is not serializable", layer.LayerType().String())
    }
    sls = append(sls, sl)
    if !tagged && layer.LayerType() == layers.LayerTypeEthernet {
        vlan := &layers.Dot1Q{
            VLANIdentifier: vid,
            Type: layers.EthernetTypeDot1Q,
        }
        sls = append(sls, vlan.(gopacket.SerializableLayer))
    }
}

Я получаю следующую ошибку:

invalid type assertion: vlan.(gopacket.SerializableLayer) (non-interface type *layers.Dot1Q on left)
...