func init() { layers.MPLSPayloadDecoder = gopacket.DecodeFunc(decodeMPLS) layers.EthernetTypeMetadata[ethernetTypeDot1QSTag] = layers.EthernetTypeMetadata[layers.EthernetTypeDot1Q] layers.EthernetTypeMetadata[ethernetTypeDot1QITag] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodePBB), Name: "PBB", LayerType: LayerTypePBB, } layers.EthernetTypeMetadata[ethernetTypeLwapp] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodeLwapp), Name: "Lwapp", LayerType: LayerTypeLwapp, } }
func decodeSCTPEmptyLayer(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPEmptyLayer{ SCTPChunk: decodeSCTPChunk(data), } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPChunkTypeUnknown(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPUnknownChunkType{SCTPChunk: decodeSCTPChunk(data)} sc.bytes = data[:sc.ActualLength] p.AddLayer(sc) p.SetErrorLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPShutdown(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPShutdown{ SCTPChunk: decodeSCTPChunk(data), CumulativeTSNAck: binary.BigEndian.Uint32(data[4:8]), } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPCookieEcho(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPCookieEcho{ SCTPChunk: decodeSCTPChunk(data), } sc.Cookie = data[4:sc.Length] p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPEmptyLayer(data []byte, p gopacket.PacketBuilder) error { chunk, err := decodeSCTPChunk(data) if err != nil { return err } sc := &SCTPEmptyLayer{ SCTPChunk: chunk, } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeEthernetCTP(data []byte, p gopacket.PacketBuilder) error { c := &EthernetCTP{ SkipCount: binary.LittleEndian.Uint16(data[:2]), BaseLayer: BaseLayer{data[:2], data[2:]}, } if c.SkipCount%2 != 0 { return fmt.Errorf("EthernetCTP skip count is odd: %d", c.SkipCount) } p.AddLayer(c) return p.NextDecoder(gopacket.DecodeFunc(decodeEthernetCTPFromFunctionType)) }
func decodeSCTPHeartbeat(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPHeartbeat{ SCTPChunk: decodeSCTPChunk(data), } paramData := data[4:sc.Length] for len(paramData) > 0 { p := SCTPHeartbeatParameter(decodeSCTPParameter(paramData)) paramData = paramData[p.ActualLength:] sc.Parameters = append(sc.Parameters, p) } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeMPLS(data []byte, p gopacket.PacketBuilder) error { decoded := binary.BigEndian.Uint32(data[:4]) mpls := &MPLS{ Label: decoded >> 12, TrafficClass: uint8(decoded>>9) & 0x7, StackBottom: decoded&0x100 != 0, TTL: uint8(decoded), BaseLayer: BaseLayer{data[:4], data[4:]}, } p.AddLayer(mpls) if mpls.StackBottom { return p.NextDecoder(MPLSPayloadDecoder) } return p.NextDecoder(gopacket.DecodeFunc(decodeMPLS)) }
func decodeSCTPData(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPData{ SCTPChunk: decodeSCTPChunk(data), Unordered: data[1]&0x4 != 0, BeginFragment: data[1]&0x2 != 0, EndFragment: data[1]&0x1 != 0, TSN: binary.BigEndian.Uint32(data[4:8]), StreamId: binary.BigEndian.Uint16(data[8:10]), StreamSequence: binary.BigEndian.Uint16(data[10:12]), PayloadProtocol: binary.BigEndian.Uint32(data[12:16]), } // Length is the length in bytes of the data, INCLUDING the 16-byte header. sc.PayloadData = data[16:sc.Length] p.AddLayer(sc) p.SetApplicationLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPInit(data []byte, p gopacket.PacketBuilder) error { sc := &SCTPInit{ SCTPChunk: decodeSCTPChunk(data), InitiateTag: binary.BigEndian.Uint32(data[4:8]), AdvertisedReceiverWindowCredit: binary.BigEndian.Uint32(data[8:12]), OutboundStreams: binary.BigEndian.Uint16(data[12:14]), InboundStreams: binary.BigEndian.Uint16(data[14:16]), InitialTSN: binary.BigEndian.Uint32(data[16:20]), } paramData := data[20:sc.ActualLength] for len(paramData) > 0 { p := SCTPInitParameter(decodeSCTPParameter(paramData)) paramData = paramData[p.ActualLength:] sc.Parameters = append(sc.Parameters, p) } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeSCTPError(data []byte, p gopacket.PacketBuilder) error { // remarkably similar to decodeSCTPHeartbeat ;) chunk, err := decodeSCTPChunk(data) if err != nil { return err } sc := &SCTPError{ SCTPChunk: chunk, } paramData := data[4:sc.Length] for len(paramData) > 0 { p := SCTPErrorParameter(decodeSCTPParameter(paramData)) paramData = paramData[p.ActualLength:] sc.Parameters = append(sc.Parameters, p) } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
func decodeCiscoDiscovery(data []byte, p gopacket.PacketBuilder) error { c := &CiscoDiscovery{ Version: data[0], TTL: data[1], Checksum: binary.BigEndian.Uint16(data[2:4]), } if c.Version != 1 && c.Version != 2 { return fmt.Errorf("Invalid CiscoDiscovery version number %d", c.Version) } var err error c.Values, err = decodeCiscoDiscoveryTLVs(data[4:]) if err != nil { return err } c.Contents = data[0:4] c.Payload = data[4:] p.AddLayer(c) return p.NextDecoder(gopacket.DecodeFunc(decodeCiscoDiscoveryInfo)) }
func decodeSCTPSack(data []byte, p gopacket.PacketBuilder) error { chunk, err := decodeSCTPChunk(data) if err != nil { return err } sc := &SCTPSack{ SCTPChunk: chunk, CumulativeTSNAck: binary.BigEndian.Uint32(data[4:8]), AdvertisedReceiverWindowCredit: binary.BigEndian.Uint32(data[8:12]), NumGapACKs: binary.BigEndian.Uint16(data[12:14]), NumDuplicateTSNs: binary.BigEndian.Uint16(data[14:16]), } // We maximize gapAcks and dupTSNs here so we're not allocating tons // of memory based on a user-controlable field. Our maximums are not exact, // but should give us sane defaults... we'll still hit slice boundaries and // fail if the user-supplied values are too high (in the for loops below), but // the amount of memory we'll have allocated because of that should be small // (< sc.ActualLength) gapAcks := sc.SCTPChunk.ActualLength / 2 dupTSNs := (sc.SCTPChunk.ActualLength - gapAcks*2) / 4 if gapAcks > int(sc.NumGapACKs) { gapAcks = int(sc.NumGapACKs) } if dupTSNs > int(sc.NumDuplicateTSNs) { dupTSNs = int(sc.NumDuplicateTSNs) } sc.GapACKs = make([]uint16, 0, gapAcks) sc.DuplicateTSNs = make([]uint32, 0, dupTSNs) bytesRemaining := data[16:] for i := 0; i < int(sc.NumGapACKs); i++ { sc.GapACKs = append(sc.GapACKs, binary.BigEndian.Uint16(bytesRemaining[:2])) bytesRemaining = bytesRemaining[2:] } for i := 0; i < int(sc.NumDuplicateTSNs); i++ { sc.DuplicateTSNs = append(sc.DuplicateTSNs, binary.BigEndian.Uint32(bytesRemaining[:4])) bytesRemaining = bytesRemaining[4:] } p.AddLayer(sc) return p.NextDecoder(gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix)) }
// decodeEthernetCTPFromFunctionType reads in the first 2 bytes to determine the EthernetCTP // layer type to decode next, then decodes based on that. func decodeEthernetCTPFromFunctionType(data []byte, p gopacket.PacketBuilder) error { function := EthernetCTPFunction(binary.LittleEndian.Uint16(data[:2])) switch function { case EthernetCTPFunctionReply: reply := &EthernetCTPReply{ Function: function, ReceiptNumber: binary.LittleEndian.Uint16(data[2:4]), Data: data[4:], BaseLayer: BaseLayer{data, nil}, } p.AddLayer(reply) p.SetApplicationLayer(reply) return nil case EthernetCTPFunctionForwardData: forward := &EthernetCTPForwardData{ Function: function, ForwardAddress: data[2:8], BaseLayer: BaseLayer{data[:8], data[8:]}, } p.AddLayer(forward) return p.NextDecoder(gopacket.DecodeFunc(decodeEthernetCTPFromFunctionType)) } return fmt.Errorf("Unknown EthernetCTP function type %v", function) }
func init() { LayerTypeMoldUDP64MessageBlock = gopacket.RegisterLayerType(10001, gopacket.LayerTypeMetadata{"MoldUDP64MessageBlock", gopacket.DecodeFunc(decodeMoldUDP64MessageBlock)}) LayerTypeMoldUDP64MessageBlockChained = gopacket.RegisterLayerType(10003, gopacket.LayerTypeMetadata{"MoldUDP64MessageBlockChained", gopacket.DecodeFunc(decodeMoldUDP64MessageBlockChained)}) MoldUDP64LayerFactory = packet.NewSingleDecodingLayerFactory( LayerTypeMoldUDP64, func() gopacket.DecodingLayer { return &MoldUDP64{} }, ) MoldUDP64MessageBlockLayerFactory = packet.NewSingleDecodingLayerFactory( LayerTypeMoldUDP64MessageBlock, func() gopacket.DecodingLayer { return &MoldUDP64MessageBlock{} }, ) }
// Copyright (c) Ilia Kravets, 2015. All rights reserved. PROVIDED "AS IS" // WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. See LICENSE file for details. package miax import ( "encoding/binary" "time" "github.com/google/gopacket" "github.com/ikravets/errs" "my/ev/packet" ) var LayerTypeTom = gopacket.RegisterLayerType(11002, gopacket.LayerTypeMetadata{"Tom", gopacket.DecodeFunc(decodeTom)}) func decodeTom(data []byte, p gopacket.PacketBuilder) error { tomMessageType := TomMessageType(data[0]) return tomMessageType.Decode(data, p) } /************************************************************************/ type TomSide struct { Price packet.Price Size int PriorityCustomerSize int Condition byte Side packet.MarketSide // inferred from message type }
func init() { LayerTypeMachTop = gopacket.RegisterLayerType(11000, gopacket.LayerTypeMetadata{"MachTop", gopacket.DecodeFunc(decodeMach)}) LayerTypeMach = gopacket.RegisterLayerType(11001, gopacket.LayerTypeMetadata{"Mach", gopacket.DecodeFunc(decodeMach)}) MachTopLayerFactory = packet.NewSingleDecodingLayerFactory( LayerTypeMachTop, func() gopacket.DecodingLayer { return &MachTop{} }, ) MachLayerFactory = packet.NewSingleDecodingLayerFactory( LayerTypeMach, func() gopacket.DecodingLayer { return &Mach{} }, ) }
// LayerType returns gopacket.LayerTypeSCTP func (s *SCTP) LayerType() gopacket.LayerType { return LayerTypeSCTP } func decodeSCTP(data []byte, p gopacket.PacketBuilder) error { sctp := &SCTP{} err := sctp.DecodeFromBytes(data, p) p.AddLayer(sctp) p.SetTransportLayer(sctp) if err != nil { return err } return p.NextDecoder(sctpChunkTypePrefixDecoder) } var sctpChunkTypePrefixDecoder = gopacket.DecodeFunc(decodeWithSCTPChunkTypePrefix) // TransportFlow returns a flow based on the source and destination SCTP port. func (s *SCTP) TransportFlow() gopacket.Flow { return gopacket.NewFlow(EndpointSCTPPort, s.sPort, s.dPort) } func decodeWithSCTPChunkTypePrefix(data []byte, p gopacket.PacketBuilder) error { chunkType := SCTPChunkType(data[0]) return chunkType.Decode(data, p) } // SerializeTo is for gopacket.SerializableLayer. func (s SCTP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error { bytes, err := b.PrependBytes(12) if err != nil {
package bats import ( "encoding/binary" "errors" "github.com/google/gopacket" "github.com/ikravets/errs" "my/ev/packet" ) /************************************************************************/ var LayerTypePitch = gopacket.RegisterLayerType(12001, gopacket.LayerTypeMetadata{"Pitch", gopacket.DecodeFunc(decodePitch)}) func decodePitch(data []byte, p gopacket.PacketBuilder) error { if len(data) < 2 { return errors.New("message to short") } pitchMessageType := PitchMessageType(data[1]) return pitchMessageType.Decode(data, p) } /************************************************************************/ type PitchMessageType uint8 func (a PitchMessageType) Decode(data []byte, p gopacket.PacketBuilder) error { layer := PitchMessageTypeMetadata[a].CreateLayer() if err := layer.DecodeFromBytes(data, p); err != nil {
// by Kelly Lauren-Summer Becker-Neuding <*****@*****.**>, 2015 package packet import ( "encoding/binary" "fmt" "strconv" "github.com/google/gopacket" "github.com/google/gopacket/layers" ) // LayerTypeUDP is a extensible UDP packet LayerType var LayerTypeUDP = gopacket.RegisterLayerType(1045, gopacket.LayerTypeMetadata{ Name: "UDP", Decoder: gopacket.DecodeFunc(decodeUDP), }) // Replace the UDP Packet handler with out new custom one. func init() { layers.IPProtocolMetadata[layers.IPProtocolUDP] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodeUDP), Name: "UDP", LayerType: LayerTypeUDP, } } // UDP is the layer for UDP headers. type UDP struct { layers.BaseLayer SrcPort, DstPort UDPPort Length uint16
// Replace the UDP Packet handler with out new custom one. func init() { layers.IPProtocolMetadata[layers.IPProtocolUDP] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodeUDP), Name: "UDP", LayerType: LayerTypeUDP, } }
"encoding/binary" "errors" "github.com/google/gopacket" "github.com/google/gopacket/layers" "github.com/ikravets/errs" "my/ev/packet" ) var EndpointMoldUDP64SessionMetadata = gopacket.EndpointTypeMetadata{"MoldUDP64", func(b []byte) string { return string(b[:10]) }} var EndpointMoldUDP64Session = gopacket.RegisterEndpointType(10000, EndpointMoldUDP64SessionMetadata) var LayerTypeMoldUDP64 = gopacket.RegisterLayerType(10000, gopacket.LayerTypeMetadata{"MoldUDP64", gopacket.DecodeFunc(decodeMoldUDP64)}) // must initialize in init() to avoid false detection of potential initialization loop var LayerTypeMoldUDP64MessageBlock gopacket.LayerType var LayerTypeMoldUDP64MessageBlockChained gopacket.LayerType var MoldUDP64LayerFactory, MoldUDP64MessageBlockLayerFactory packet.DecodingLayerFactory func init() { LayerTypeMoldUDP64MessageBlock = gopacket.RegisterLayerType(10001, gopacket.LayerTypeMetadata{"MoldUDP64MessageBlock", gopacket.DecodeFunc(decodeMoldUDP64MessageBlock)}) LayerTypeMoldUDP64MessageBlockChained = gopacket.RegisterLayerType(10003, gopacket.LayerTypeMetadata{"MoldUDP64MessageBlockChained", gopacket.DecodeFunc(decodeMoldUDP64MessageBlockChained)}) MoldUDP64LayerFactory = packet.NewSingleDecodingLayerFactory( LayerTypeMoldUDP64, func() gopacket.DecodingLayer { return &MoldUDP64{} },
func init() { // Here we link up all enumerations with their respective names and decoders. for i := 0; i < 65536; i++ { EthernetTypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode ethernet type %d", i)), Name: fmt.Sprintf("UnknownEthernetType(%d)", i), } PPPTypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode PPP type %d", i)), Name: fmt.Sprintf("UnknownPPPType(%d)", i), } } for i := 0; i < 256; i++ { IPProtocolMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode IP protocol %d", i)), Name: fmt.Sprintf("UnknownIPProtocol(%d)", i), } SCTPChunkTypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode SCTP chunk type %d", i)), Name: fmt.Sprintf("UnknownSCTPChunkType(%d)", i), } PPPoECodeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode PPPoE code %d", i)), Name: fmt.Sprintf("UnknownPPPoECode(%d)", i), } LinkTypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode link type %d", i)), Name: fmt.Sprintf("UnknownLinkType(%d)", i), } FDDIFrameControlMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode FDDI frame control %d", i)), Name: fmt.Sprintf("UnknownFDDIFrameControl(%d)", i), } EAPOLTypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode EAPOL type %d", i)), Name: fmt.Sprintf("UnknownEAPOLType(%d)", i), } ProtocolFamilyMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode protocol family %d", i)), Name: fmt.Sprintf("UnknownProtocolFamily(%d)", i), } Dot11TypeMetadata[i] = EnumMetadata{ DecodeWith: errorFunc(fmt.Sprintf("Unable to decode Dot11 type %d", i)), Name: fmt.Sprintf("UnknownDot11Type(%d)", i), } } EthernetTypeMetadata[EthernetTypeLLC] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLLC), Name: "LLC", LayerType: LayerTypeLLC} EthernetTypeMetadata[EthernetTypeIPv4] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4), Name: "IPv4", LayerType: LayerTypeIPv4} EthernetTypeMetadata[EthernetTypeIPv6] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} EthernetTypeMetadata[EthernetTypeARP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeARP), Name: "ARP", LayerType: LayerTypeARP} EthernetTypeMetadata[EthernetTypeDot1Q] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot1Q), Name: "Dot1Q", LayerType: LayerTypeDot1Q} EthernetTypeMetadata[EthernetTypePPPoEDiscovery] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePPPoE), Name: "PPPoEDiscovery", LayerType: LayerTypePPPoE} EthernetTypeMetadata[EthernetTypePPPoESession] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePPPoE), Name: "PPPoESession", LayerType: LayerTypePPPoE} EthernetTypeMetadata[EthernetTypeEthernetCTP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEthernetCTP), Name: "EthernetCTP", LayerType: LayerTypeEthernetCTP} EthernetTypeMetadata[EthernetTypeCiscoDiscovery] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeCiscoDiscovery), Name: "CiscoDiscovery", LayerType: LayerTypeCiscoDiscovery} EthernetTypeMetadata[EthernetTypeNortelDiscovery] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeNortelDiscovery), Name: "NortelDiscovery", LayerType: LayerTypeNortelDiscovery} EthernetTypeMetadata[EthernetTypeLinkLayerDiscovery] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLinkLayerDiscovery), Name: "LinkLayerDiscovery", LayerType: LayerTypeLinkLayerDiscovery} EthernetTypeMetadata[EthernetTypeMPLSUnicast] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeMPLS), Name: "MPLSUnicast", LayerType: LayerTypeMPLS} EthernetTypeMetadata[EthernetTypeMPLSMulticast] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeMPLS), Name: "MPLSMulticast", LayerType: LayerTypeMPLS} EthernetTypeMetadata[EthernetTypeEAPOL] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEAPOL), Name: "EAPOL", LayerType: LayerTypeEAPOL} EthernetTypeMetadata[EthernetTypeQinQ] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot1Q), Name: "Dot1Q", LayerType: LayerTypeDot1Q} EthernetTypeMetadata[EthernetTypeTransparentEthernetBridging] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEthernet), Name: "TransparentEthernetBridging", LayerType: LayerTypeEthernet} IPProtocolMetadata[IPProtocolIPv4] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4), Name: "IPv4", LayerType: LayerTypeIPv4} IPProtocolMetadata[IPProtocolTCP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeTCP), Name: "TCP", LayerType: LayerTypeTCP} IPProtocolMetadata[IPProtocolUDP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUDP), Name: "UDP", LayerType: LayerTypeUDP} IPProtocolMetadata[IPProtocolICMPv4] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeICMPv4), Name: "ICMPv4", LayerType: LayerTypeICMPv4} IPProtocolMetadata[IPProtocolICMPv6] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeICMPv6), Name: "ICMPv6", LayerType: LayerTypeICMPv6} IPProtocolMetadata[IPProtocolSCTP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTP), Name: "SCTP", LayerType: LayerTypeSCTP} IPProtocolMetadata[IPProtocolIPv6] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} IPProtocolMetadata[IPProtocolIPIP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4), Name: "IPv4", LayerType: LayerTypeIPv4} IPProtocolMetadata[IPProtocolEtherIP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEtherIP), Name: "EtherIP", LayerType: LayerTypeEtherIP} IPProtocolMetadata[IPProtocolRUDP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeRUDP), Name: "RUDP", LayerType: LayerTypeRUDP} IPProtocolMetadata[IPProtocolGRE] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeGRE), Name: "GRE", LayerType: LayerTypeGRE} IPProtocolMetadata[IPProtocolIPv6HopByHop] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6HopByHop), Name: "IPv6HopByHop", LayerType: LayerTypeIPv6HopByHop} IPProtocolMetadata[IPProtocolIPv6Routing] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6Routing), Name: "IPv6Routing", LayerType: LayerTypeIPv6Routing} IPProtocolMetadata[IPProtocolIPv6Fragment] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6Fragment), Name: "IPv6Fragment", LayerType: LayerTypeIPv6Fragment} IPProtocolMetadata[IPProtocolIPv6Destination] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6Destination), Name: "IPv6Destination", LayerType: LayerTypeIPv6Destination} IPProtocolMetadata[IPProtocolAH] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPSecAH), Name: "IPSecAH", LayerType: LayerTypeIPSecAH} IPProtocolMetadata[IPProtocolESP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPSecESP), Name: "IPSecESP", LayerType: LayerTypeIPSecESP} IPProtocolMetadata[IPProtocolUDPLite] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUDPLite), Name: "UDPLite", LayerType: LayerTypeUDPLite} IPProtocolMetadata[IPProtocolMPLSInIP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeMPLS), Name: "MPLS", LayerType: LayerTypeMPLS} IPProtocolMetadata[IPProtocolNoNextHeader] = EnumMetadata{DecodeWith: gopacket.DecodePayload, Name: "NoNextHeader", LayerType: gopacket.LayerTypePayload} IPProtocolMetadata[IPProtocolIGMP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIGMP), Name: "IGMP", LayerType: LayerTypeIGMP} SCTPChunkTypeMetadata[SCTPChunkTypeData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPData), Name: "Data"} SCTPChunkTypeMetadata[SCTPChunkTypeInit] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPInit), Name: "Init"} SCTPChunkTypeMetadata[SCTPChunkTypeInitAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPInit), Name: "InitAck"} SCTPChunkTypeMetadata[SCTPChunkTypeSack] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPSack), Name: "Sack"} SCTPChunkTypeMetadata[SCTPChunkTypeHeartbeat] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPHeartbeat), Name: "Heartbeat"} SCTPChunkTypeMetadata[SCTPChunkTypeHeartbeatAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPHeartbeat), Name: "HeartbeatAck"} SCTPChunkTypeMetadata[SCTPChunkTypeAbort] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPError), Name: "Abort"} SCTPChunkTypeMetadata[SCTPChunkTypeError] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPError), Name: "Error"} SCTPChunkTypeMetadata[SCTPChunkTypeShutdown] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPShutdown), Name: "Shutdown"} SCTPChunkTypeMetadata[SCTPChunkTypeShutdownAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPShutdownAck), Name: "ShutdownAck"} SCTPChunkTypeMetadata[SCTPChunkTypeCookieEcho] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPCookieEcho), Name: "CookieEcho"} SCTPChunkTypeMetadata[SCTPChunkTypeCookieAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPEmptyLayer), Name: "CookieAck"} SCTPChunkTypeMetadata[SCTPChunkTypeShutdownComplete] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeSCTPEmptyLayer), Name: "ShutdownComplete"} PPPTypeMetadata[PPPTypeIPv4] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4), Name: "IPv4"} PPPTypeMetadata[PPPTypeIPv6] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6"} PPPTypeMetadata[PPPTypeMPLSUnicast] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeMPLS), Name: "MPLSUnicast"} PPPTypeMetadata[PPPTypeMPLSMulticast] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeMPLS), Name: "MPLSMulticast"} PPPoECodeMetadata[PPPoECodeSession] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePPP), Name: "PPP"} LinkTypeMetadata[LinkTypeEthernet] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEthernet), Name: "Ethernet"} LinkTypeMetadata[LinkTypePPP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePPP), Name: "PPP"} LinkTypeMetadata[LinkTypeFDDI] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeFDDI), Name: "FDDI"} LinkTypeMetadata[LinkTypeNull] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLoopback), Name: "Null"} LinkTypeMetadata[LinkTypeLoop] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLoopback), Name: "Loop"} LinkTypeMetadata[LinkTypeRaw] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4or6), Name: "Raw"} LinkTypeMetadata[LinkTypePFLog] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePFLog), Name: "PFLog"} LinkTypeMetadata[LinkTypeIEEE80211Radio] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeRadioTap), Name: "RadioTap"} LinkTypeMetadata[LinkTypeLinuxUSB] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUSB), Name: "USB"} LinkTypeMetadata[LinkTypeLinuxSLL] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLinuxSLL), Name: "Linux SLL"} LinkTypeMetadata[LinkTypePrismHeader] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodePrismHeader), Name: "Prism"} FDDIFrameControlMetadata[FDDIFrameControlLLC] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeLLC), Name: "LLC"} EAPOLTypeMetadata[EAPOLTypeEAP] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeEAP), Name: "EAP", LayerType: LayerTypeEAP} ProtocolFamilyMetadata[ProtocolFamilyIPv4] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv4), Name: "IPv4", LayerType: LayerTypeIPv4} ProtocolFamilyMetadata[ProtocolFamilyIPv6BSD] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} ProtocolFamilyMetadata[ProtocolFamilyIPv6FreeBSD] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} ProtocolFamilyMetadata[ProtocolFamilyIPv6Darwin] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} ProtocolFamilyMetadata[ProtocolFamilyIPv6Linux] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeIPv6), Name: "IPv6", LayerType: LayerTypeIPv6} Dot11TypeMetadata[Dot11TypeMgmtAssociationReq] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtAssociationReq), Name: "MgmtAssociationReq", LayerType: LayerTypeDot11MgmtAssociationReq} Dot11TypeMetadata[Dot11TypeMgmtAssociationResp] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtAssociationResp), Name: "MgmtAssociationResp", LayerType: LayerTypeDot11MgmtAssociationResp} Dot11TypeMetadata[Dot11TypeMgmtReassociationReq] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtReassociationReq), Name: "MgmtReassociationReq", LayerType: LayerTypeDot11MgmtReassociationReq} Dot11TypeMetadata[Dot11TypeMgmtReassociationResp] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtReassociationResp), Name: "MgmtReassociationResp", LayerType: LayerTypeDot11MgmtReassociationResp} Dot11TypeMetadata[Dot11TypeMgmtProbeReq] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtProbeReq), Name: "MgmtProbeReq", LayerType: LayerTypeDot11MgmtProbeReq} Dot11TypeMetadata[Dot11TypeMgmtProbeResp] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtProbeResp), Name: "MgmtProbeResp", LayerType: LayerTypeDot11MgmtProbeResp} Dot11TypeMetadata[Dot11TypeMgmtMeasurementPilot] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtMeasurementPilot), Name: "MgmtMeasurementPilot", LayerType: LayerTypeDot11MgmtMeasurementPilot} Dot11TypeMetadata[Dot11TypeMgmtBeacon] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtBeacon), Name: "MgmtBeacon", LayerType: LayerTypeDot11MgmtBeacon} Dot11TypeMetadata[Dot11TypeMgmtATIM] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtATIM), Name: "MgmtATIM", LayerType: LayerTypeDot11MgmtATIM} Dot11TypeMetadata[Dot11TypeMgmtDisassociation] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtDisassociation), Name: "MgmtDisassociation", LayerType: LayerTypeDot11MgmtDisassociation} Dot11TypeMetadata[Dot11TypeMgmtAuthentication] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtAuthentication), Name: "MgmtAuthentication", LayerType: LayerTypeDot11MgmtAuthentication} Dot11TypeMetadata[Dot11TypeMgmtDeauthentication] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtDeauthentication), Name: "MgmtDeauthentication", LayerType: LayerTypeDot11MgmtDeauthentication} Dot11TypeMetadata[Dot11TypeMgmtAction] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtAction), Name: "MgmtAction", LayerType: LayerTypeDot11MgmtAction} Dot11TypeMetadata[Dot11TypeMgmtActionNoAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11MgmtActionNoAck), Name: "MgmtActionNoAck", LayerType: LayerTypeDot11MgmtActionNoAck} Dot11TypeMetadata[Dot11TypeCtrlWrapper] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11Ctrl), Name: "CtrlWrapper", LayerType: LayerTypeDot11Ctrl} Dot11TypeMetadata[Dot11TypeCtrlBlockAckReq] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlBlockAckReq), Name: "CtrlBlockAckReq", LayerType: LayerTypeDot11CtrlBlockAckReq} Dot11TypeMetadata[Dot11TypeCtrlBlockAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlBlockAck), Name: "CtrlBlockAck", LayerType: LayerTypeDot11CtrlBlockAck} Dot11TypeMetadata[Dot11TypeCtrlPowersavePoll] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlPowersavePoll), Name: "CtrlPowersavePoll", LayerType: LayerTypeDot11CtrlPowersavePoll} Dot11TypeMetadata[Dot11TypeCtrlRTS] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlRTS), Name: "CtrlRTS", LayerType: LayerTypeDot11CtrlRTS} Dot11TypeMetadata[Dot11TypeCtrlCTS] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlCTS), Name: "CtrlCTS", LayerType: LayerTypeDot11CtrlCTS} Dot11TypeMetadata[Dot11TypeCtrlAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlAck), Name: "CtrlAck", LayerType: LayerTypeDot11CtrlAck} Dot11TypeMetadata[Dot11TypeCtrlCFEnd] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlCFEnd), Name: "CtrlCFEnd", LayerType: LayerTypeDot11CtrlCFEnd} Dot11TypeMetadata[Dot11TypeCtrlCFEndAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11CtrlCFEndAck), Name: "CtrlCFEndAck", LayerType: LayerTypeDot11CtrlCFEndAck} Dot11TypeMetadata[Dot11TypeData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11Data), Name: "Data", LayerType: LayerTypeDot11Data} Dot11TypeMetadata[Dot11TypeDataCFAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFAck), Name: "DataCFAck", LayerType: LayerTypeDot11DataCFAck} Dot11TypeMetadata[Dot11TypeDataCFPoll] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFPoll), Name: "DataCFPoll", LayerType: LayerTypeDot11DataCFPoll} Dot11TypeMetadata[Dot11TypeDataCFAckPoll] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFAckPoll), Name: "DataCFAckPoll", LayerType: LayerTypeDot11DataCFAckPoll} Dot11TypeMetadata[Dot11TypeDataNull] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataNull), Name: "DataNull", LayerType: LayerTypeDot11DataNull} Dot11TypeMetadata[Dot11TypeDataCFAckNoData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFAckNoData), Name: "DataCFAckNoData", LayerType: LayerTypeDot11DataCFAckNoData} Dot11TypeMetadata[Dot11TypeDataCFPollNoData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFPollNoData), Name: "DataCFPollNoData", LayerType: LayerTypeDot11DataCFPollNoData} Dot11TypeMetadata[Dot11TypeDataCFAckPollNoData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataCFAckPollNoData), Name: "DataCFAckPollNoData", LayerType: LayerTypeDot11DataCFAckPollNoData} Dot11TypeMetadata[Dot11TypeDataQOSData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSData), Name: "DataQOSData", LayerType: LayerTypeDot11DataQOSData} Dot11TypeMetadata[Dot11TypeDataQOSDataCFAck] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSDataCFAck), Name: "DataQOSDataCFAck", LayerType: LayerTypeDot11DataQOSDataCFAck} Dot11TypeMetadata[Dot11TypeDataQOSDataCFPoll] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSDataCFPoll), Name: "DataQOSDataCFPoll", LayerType: LayerTypeDot11DataQOSDataCFPoll} Dot11TypeMetadata[Dot11TypeDataQOSDataCFAckPoll] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSDataCFAckPoll), Name: "DataQOSDataCFAckPoll", LayerType: LayerTypeDot11DataQOSDataCFAckPoll} Dot11TypeMetadata[Dot11TypeDataQOSNull] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSNull), Name: "DataQOSNull", LayerType: LayerTypeDot11DataQOSNull} Dot11TypeMetadata[Dot11TypeDataQOSCFPollNoData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSCFPollNoData), Name: "DataQOSCFPollNoData", LayerType: LayerTypeDot11DataQOSCFPollNoData} Dot11TypeMetadata[Dot11TypeDataQOSCFAckPollNoData] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeDot11DataQOSCFAckPollNoData), Name: "DataQOSCFAckPollNoData", LayerType: LayerTypeDot11DataQOSCFAckPollNoData} USBTypeMetadata[USBTransportTypeInterrupt] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUSBInterrupt), Name: "Interrupt", LayerType: LayerTypeUSBInterrupt} USBTypeMetadata[USBTransportTypeControl] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUSBControl), Name: "Control", LayerType: LayerTypeUSBControl} USBTypeMetadata[USBTransportTypeBulk] = EnumMetadata{DecodeWith: gopacket.DecodeFunc(decodeUSBBulk), Name: "Bulk", LayerType: LayerTypeUSBBulk} }
layers.MPLSPayloadDecoder = gopacket.DecodeFunc(decodeMPLS) layers.EthernetTypeMetadata[ethernetTypeDot1QSTag] = layers.EthernetTypeMetadata[layers.EthernetTypeDot1Q] layers.EthernetTypeMetadata[ethernetTypeDot1QITag] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodePBB), Name: "PBB", LayerType: LayerTypePBB, } layers.EthernetTypeMetadata[ethernetTypeLwapp] = layers.EnumMetadata{ DecodeWith: gopacket.DecodeFunc(decodeLwapp), Name: "Lwapp", LayerType: LayerTypeLwapp, } } var ( LayerTypePBB = gopacket.RegisterLayerType(500, gopacket.LayerTypeMetadata{"PBB", gopacket.DecodeFunc(decodePBB)}) LayerTypeLwapp = gopacket.RegisterLayerType(501, gopacket.LayerTypeMetadata{"Lwapp", gopacket.DecodeFunc(decodeLwapp)}) LayerTypeLwappControl = gopacket.RegisterLayerType(502, gopacket.LayerTypeMetadata{"LwappControl", gopacket.DecodeFunc(decodeLwappControl)}) LayerTypeCapwapControl = gopacket.RegisterLayerType(503, gopacket.LayerTypeMetadata{"CapwapControl", gopacket.DecodeFunc(decodeCapwapControl)}) LayerTypeCapwapData = gopacket.RegisterLayerType(504, gopacket.LayerTypeMetadata{"CapwapData", gopacket.DecodeFunc(decodeCapwapData)}) LayerTypeCapwapControlHeader = gopacket.RegisterLayerType(505, gopacket.LayerTypeMetadata{"CapwapControlHeader", gopacket.DecodeFunc(decodeCapwapControlHeader)}) LayerTypeCapwapDataKeepAlive = gopacket.RegisterLayerType(506, gopacket.LayerTypeMetadata{"CapwapDataKeepAlive", gopacket.DecodeFunc(decodeCapwapDataKeepAlive)}) LayerTypeDot11NoFCS = gopacket.RegisterLayerType(507, gopacket.LayerTypeMetadata{"Dot11NoFCS", gopacket.DecodeFunc(decodeDot11NoFCS)}) ) func decodeMPLS(data []byte, p gopacket.PacketBuilder) error { g := layers.ProtocolGuessingDecoder{} if err := g.Decode(data, p); err != nil { return gopacket.DecodePayload.Decode(data, p) } return nil
* KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * */ package flow import ( "github.com/google/gopacket" "github.com/google/gopacket/layers" ) // Create a layer type, should be unique and high, so it doesn't conflict, // giving it a name and a decoder to use. var LayerTypeInGRE = gopacket.RegisterLayerType(55555, gopacket.LayerTypeMetadata{Name: "LayerTypeInGRE", Decoder: gopacket.DecodeFunc(decodeInGRELayer)}) type InGRELayer struct { StrangeHeader []byte payload []byte } func (m InGRELayer) LayerType() gopacket.LayerType { return LayerTypeInGRE } func (m InGRELayer) LayerContents() []byte { return m.StrangeHeader } func (m InGRELayer) LayerPayload() []byte {
// errorFunc returns a decoder that spits out a specific error message. func errorFunc(msg string) gopacket.Decoder { var e = errors.New(msg) return gopacket.DecodeFunc(func([]byte, gopacket.PacketBuilder) error { return e }) }
package nasdaq import ( "bytes" "encoding/binary" "fmt" "time" "github.com/google/gopacket" "github.com/ikravets/errs" "my/ev/packet" ) var LayerTypeItto = gopacket.RegisterLayerType(10002, gopacket.LayerTypeMetadata{"Itto", gopacket.DecodeFunc(decodeItto)}) func decodeItto(data []byte, p gopacket.PacketBuilder) error { ittoMessageType := IttoMessageType(data[0]) return ittoMessageType.Decode(data, p) } /************************************************************************/ type OrderSide struct { Side packet.MarketSide RefNumD packet.OrderId Price packet.Price Size int } type ReplaceOrderSide struct {
// Copyright 2012 Google, gopacket.LayerTypeMetadata{Inc. All rights reserved}. // // Use of this source code is governed by a BSD-style license // that can be found in the LICENSE file in the root of the source // tree. package layers import ( "github.com/google/gopacket" ) var ( LayerTypeARP = gopacket.RegisterLayerType(10, gopacket.LayerTypeMetadata{Name: "ARP", Decoder: gopacket.DecodeFunc(decodeARP)}) LayerTypeCiscoDiscovery = gopacket.RegisterLayerType(11, gopacket.LayerTypeMetadata{Name: "CiscoDiscovery", Decoder: gopacket.DecodeFunc(decodeCiscoDiscovery)}) LayerTypeEthernetCTP = gopacket.RegisterLayerType(12, gopacket.LayerTypeMetadata{Name: "EthernetCTP", Decoder: gopacket.DecodeFunc(decodeEthernetCTP)}) LayerTypeEthernetCTPForwardData = gopacket.RegisterLayerType(13, gopacket.LayerTypeMetadata{Name: "EthernetCTPForwardData", Decoder: nil}) LayerTypeEthernetCTPReply = gopacket.RegisterLayerType(14, gopacket.LayerTypeMetadata{Name: "EthernetCTPReply", Decoder: nil}) LayerTypeDot1Q = gopacket.RegisterLayerType(15, gopacket.LayerTypeMetadata{Name: "Dot1Q", Decoder: gopacket.DecodeFunc(decodeDot1Q)}) LayerTypeEtherIP = gopacket.RegisterLayerType(16, gopacket.LayerTypeMetadata{Name: "EtherIP", Decoder: gopacket.DecodeFunc(decodeEtherIP)}) LayerTypeEthernet = gopacket.RegisterLayerType(17, gopacket.LayerTypeMetadata{Name: "Ethernet", Decoder: gopacket.DecodeFunc(decodeEthernet)}) LayerTypeGRE = gopacket.RegisterLayerType(18, gopacket.LayerTypeMetadata{Name: "GRE", Decoder: gopacket.DecodeFunc(decodeGRE)}) LayerTypeICMPv4 = gopacket.RegisterLayerType(19, gopacket.LayerTypeMetadata{Name: "ICMPv4", Decoder: gopacket.DecodeFunc(decodeICMPv4)}) LayerTypeIPv4 = gopacket.RegisterLayerType(20, gopacket.LayerTypeMetadata{Name: "IPv4", Decoder: gopacket.DecodeFunc(decodeIPv4)}) LayerTypeIPv6 = gopacket.RegisterLayerType(21, gopacket.LayerTypeMetadata{Name: "IPv6", Decoder: gopacket.DecodeFunc(decodeIPv6)}) LayerTypeLLC = gopacket.RegisterLayerType(22, gopacket.LayerTypeMetadata{Name: "LLC", Decoder: gopacket.DecodeFunc(decodeLLC)}) LayerTypeSNAP = gopacket.RegisterLayerType(23, gopacket.LayerTypeMetadata{Name: "SNAP", Decoder: gopacket.DecodeFunc(decodeSNAP)}) LayerTypeMPLS = gopacket.RegisterLayerType(24, gopacket.LayerTypeMetadata{Name: "MPLS", Decoder: gopacket.DecodeFunc(decodeMPLS)}) LayerTypePPP = gopacket.RegisterLayerType(25, gopacket.LayerTypeMetadata{Name: "PPP", Decoder: gopacket.DecodeFunc(decodePPP)}) LayerTypePPPoE = gopacket.RegisterLayerType(26, gopacket.LayerTypeMetadata{Name: "PPPoE", Decoder: gopacket.DecodeFunc(decodePPPoE)}) LayerTypeRUDP = gopacket.RegisterLayerType(27, gopacket.LayerTypeMetadata{Name: "RUDP", Decoder: gopacket.DecodeFunc(decodeRUDP)})
// Create custom layer structure type CustomLayer struct { // This layer just has two bytes at the front SomeByte byte AnotherByte byte restOfData []byte } // Register the layer type so we can use it // The first argument is an ID. Use negative // or 2000+ for custom layers. It must be unique var CustomLayerType = gopacket.RegisterLayerType( 2001, gopacket.LayerTypeMetadata{ "CustomLayerType", gopacket.DecodeFunc(decodeCustomLayer), }, ) // When we inquire about the type, what type of layer should // we say it is? We want it to return our custom layer type func (l CustomLayer) LayerType() gopacket.LayerType { return CustomLayerType } // LayerContents returns the information that our layer // provides. In this case it is a header layer so // we return the header information func (l CustomLayer) LayerContents() []byte { return []byte{l.SomeByte, l.AnotherByte} }