本文整理汇总了Golang中github.com/google/gopacket.SerializeBuffer类的典型用法代码示例。如果您正苦于以下问题:Golang SerializeBuffer类的具体用法?Golang SerializeBuffer怎么用?Golang SerializeBuffer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SerializeBuffer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: serializeOtherGatewayVector
func (d *DRCP) serializeOtherGatewayVector(b gopacket.SerializeBuffer) error {
// ignore assumed that there are less than 3 portals
if d.OtherGatewayVector.TlvTypeLength.GetTlv() == 0 {
return nil
}
if d.OtherGatewayVector.TlvTypeLength.GetTlv() != DRCPTLVTypeOtherGatewayVector {
return fmt.Errorf("Error in Serialize to for DRCP Other Gateway Vector TLV incorrect %d", d.OtherGatewayVector.TlvTypeLength.GetTlv())
}
if (DRCPTlvTypeLength(d.OtherGatewayVector.TlvTypeLength.GetLength()) == DRCPTLVOtherGatewayVectorLength_1 &&
len(d.OtherGatewayVector.Vector) != 0) ||
(DRCPTlvTypeLength(d.OtherGatewayVector.TlvTypeLength.GetLength()) == DRCPTLVOtherGatewayVectorLength_2 &&
len(d.OtherGatewayVector.Vector) != 512) {
return fmt.Errorf("Error in Serialize to for DRCP Other Gateway Vector Length incorrect %d", d.OtherGatewayVector.TlvTypeLength.GetLength())
}
bytes, err := b.AppendBytes(int(d.OtherGatewayVector.TlvTypeLength.GetLength()) + 2)
if err != nil {
fmt.Println("Error in Serialize Other Gateway Vector for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.OtherGatewayVector.TlvTypeLength))
binary.BigEndian.PutUint32(bytes[2:], d.OtherGatewayVector.Sequence)
for i, j := uint16(6), uint16(0); j < d.OtherGatewayVector.TlvTypeLength.GetLength()-4; i, j = i+1, j+1 {
bytes[i] = byte(d.OtherGatewayVector.Vector[j])
}
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:31,代码来源:drcp.go
示例2: serialize3PPortConversationVector2
func (d *DRCP) serialize3PPortConversationVector2(b gopacket.SerializeBuffer) error {
// optional
if d.ThreePortalPortConversationVector2.TlvTypeLength.GetTlv() == DRCPTlvTypeLength(0) {
return nil
}
if d.ThreePortalPortConversationVector2.TlvTypeLength.GetTlv() != DRCPTLV3PPortConversationVector2 {
return fmt.Errorf("Error in Serialize to for DRCP 3P Port Conversation Vector 2 TLV incorrect %d", d.ThreePortalPortConversationVector2.TlvTypeLength.GetTlv())
}
if DRCPTlvTypeLength(d.ThreePortalPortConversationVector2.TlvTypeLength.GetLength()) != DRCPTLV3PPortConversationVector2Length {
return fmt.Errorf("Error in Serialize to for DRCP 3P Port Conversation Vector 2 Length incorrect %d", d.ThreePortalPortConversationVector2.TlvTypeLength.GetLength())
}
bytes, err := b.AppendBytes(int(d.ThreePortalPortConversationVector2.TlvTypeLength.GetLength()) + 2)
if err != nil {
fmt.Println("Error in Serialize 3P Port Conversation Vector 2 for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.ThreePortalPortConversationVector2.TlvTypeLength))
for i, j := uint16(2), uint16(0); j < d.ThreePortalPortConversationVector2.TlvTypeLength.GetLength(); i, j = i+1, j+1 {
bytes[i] = byte(d.ThreePortalPortConversationVector2.Vector[j])
}
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:28,代码来源:drcp.go
示例3: serializeOtherPortsInfo
func (d *DRCP) serializeOtherPortsInfo(b gopacket.SerializeBuffer) error {
// ignore assumed that there are less than 3 portals
if d.OtherPortsInfo.TlvTypeLength.GetTlv() == 0 {
return nil
}
if d.OtherPortsInfo.TlvTypeLength.GetTlv() != DRCPTLVTypeOtherPortsInfo {
return fmt.Errorf("Error in Serialize to for DRCP Other Ports Info TLV incorrect %d", d.OtherPortsInfo.TlvTypeLength.GetTlv())
}
if math.Mod(float64(d.OtherPortsInfo.TlvTypeLength.GetLength()), 4) != 0 {
return fmt.Errorf("Error in Serialize to for DRCP Other Ports Info Length incorrect %d", d.OtherPortsInfo.TlvTypeLength.GetLength())
}
bytes, err := b.AppendBytes(int(d.OtherPortsInfo.TlvTypeLength.GetLength()) + 2)
if err != nil {
fmt.Println("Error in Serialize Other Ports Info for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.OtherPortsInfo.TlvTypeLength))
binary.BigEndian.PutUint16(bytes[2:], d.OtherPortsInfo.AdminAggKey)
binary.BigEndian.PutUint16(bytes[4:], d.OtherPortsInfo.OperPartnerAggKey)
for i, j := uint16(6), uint16(0); j < (d.OtherPortsInfo.TlvTypeLength.GetLength()-4)/4; i, j = i+4, j+1 {
binary.BigEndian.PutUint32(bytes[i:], d.OtherPortsInfo.NeighborPorts[j])
}
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:30,代码来源:drcp.go
示例4: serializeNeighborGatewayVector
func (d *DRCP) serializeNeighborGatewayVector(b gopacket.SerializeBuffer) error {
// optional
if d.NeighborGatewayVector.TlvTypeLength.GetTlv() == 0 {
return nil
}
if d.NeighborGatewayVector.TlvTypeLength.GetTlv() != DRCPTLVTypeNeighborGatewayVector {
return fmt.Errorf("Error in Serialize to for DRCP Neighbor Gateway Vector TLV incorrect %d", d.NeighborGatewayVector.TlvTypeLength.GetTlv())
}
if DRCPTlvTypeLength(d.NeighborGatewayVector.TlvTypeLength.GetLength()) != DRCPTLVNeighborGatewayVectorLength {
return fmt.Errorf("Error in Serialize to for DRCP Neighbor Gateway Vector TLV Length incorrect %d", d.NeighborGatewayVector.TlvTypeLength.GetLength())
}
bytes, err := b.AppendBytes(int(d.NeighborGatewayVector.TlvTypeLength.GetLength()) + 2)
if err != nil {
fmt.Println("Error in Serialize Neighbor Gateway Vector for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.NeighborGatewayVector.TlvTypeLength))
binary.BigEndian.PutUint32(bytes[2:], d.NeighborGatewayVector.Sequence)
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:26,代码来源:drcp.go
示例5: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (i *IPv6Destination) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
var bytes []byte
var err error
o := make([]*ipv6HeaderTLVOption, 0, len(i.Options))
for _, v := range i.Options {
o = append(o, (*ipv6HeaderTLVOption)(v))
}
l := serializeIPv6HeaderTLVOptions(nil, o, opts.FixLengths)
bytes, err = b.PrependBytes(l)
if err != nil {
return err
}
serializeIPv6HeaderTLVOptions(bytes, o, opts.FixLengths)
length := len(bytes) + 2
if length%8 != 0 {
return fmt.Errorf("IPv6Destination actual length must be multiple of 8")
}
bytes, err = b.PrependBytes(2)
if err != nil {
return err
}
bytes[0] = uint8(i.NextHeader)
if opts.FixLengths {
i.HeaderLength = uint8((length / 8) - 1)
}
bytes[1] = uint8(i.HeaderLength)
return nil
}
开发者ID:hgGeorg,项目名称:mongo,代码行数:34,代码来源:ip6.go
示例6: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (eth *VxlanEthernet) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
if len(eth.DstMAC) != 6 {
return fmt.Errorf("invalid dst MAC: %v", eth.DstMAC)
}
if len(eth.SrcMAC) != 6 {
return fmt.Errorf("invalid src MAC: %v", eth.SrcMAC)
}
payload := b.Bytes()
bytes, err := b.PrependBytes(14)
if err != nil {
return err
}
copy(bytes, eth.DstMAC)
copy(bytes[6:], eth.SrcMAC)
if eth.Length != 0 || eth.EthernetType == EthernetTypeLLC {
if opts.FixLengths {
eth.Length = uint16(len(payload))
}
if eth.EthernetType != EthernetTypeLLC {
return fmt.Errorf("ethernet type %v not compatible with length value %v", eth.EthernetType, eth.Length)
} else if eth.Length > 0x0600 {
return fmt.Errorf("invalid ethernet length %v", eth.Length)
}
binary.BigEndian.PutUint16(bytes[12:], eth.Length)
} else {
binary.BigEndian.PutUint16(bytes[12:], uint16(eth.EthernetType))
}
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:32,代码来源:vxlan.go
示例7: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (arp *ARP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
size := 8 + len(arp.SourceHwAddress) + len(arp.SourceProtAddress) + len(arp.DstHwAddress) + len(arp.DstProtAddress)
bytes, err := b.PrependBytes(size)
if err != nil {
return err
}
if opts.FixLengths {
if len(arp.SourceHwAddress) != len(arp.DstHwAddress) {
return fmt.Errorf("mismatched hardware address sizes")
}
arp.HwAddressSize = uint8(len(arp.SourceHwAddress))
if len(arp.SourceProtAddress) != len(arp.DstProtAddress) {
return fmt.Errorf("mismatched prot address sizes")
}
arp.ProtAddressSize = uint8(len(arp.SourceProtAddress))
}
binary.BigEndian.PutUint16(bytes, uint16(arp.AddrType))
binary.BigEndian.PutUint16(bytes[2:], uint16(arp.Protocol))
bytes[4] = arp.HwAddressSize
bytes[5] = arp.ProtAddressSize
binary.BigEndian.PutUint16(bytes[6:], arp.Operation)
start := 8
for _, addr := range [][]byte{
arp.SourceHwAddress,
arp.SourceProtAddress,
arp.DstHwAddress,
arp.DstProtAddress,
} {
copy(bytes[start:], addr)
start += len(addr)
}
return nil
}
开发者ID:hgGeorg,项目名称:mongo,代码行数:36,代码来源:arp.go
示例8: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (i *IPv6Destination) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
optionLength := 0
for _, opt := range i.Options {
l, err := opt.serializeTo(b, opts.FixLengths)
if err != nil {
return err
}
optionLength += l
}
bytes, err := b.PrependBytes(2)
if err != nil {
return err
}
bytes[0] = uint8(i.NextHeader)
if opts.FixLengths {
if optionLength <= 0 {
return fmt.Errorf("cannot serialize empty IPv6Destination")
}
length := optionLength + 2
if length%8 != 0 {
return fmt.Errorf("IPv6Destination actual length must be multiple of 8 (check TLV alignment)")
}
i.HeaderLength = uint8((length / 8) - 1)
}
bytes[1] = i.HeaderLength
return nil
}
开发者ID:read-later,项目名称:gopacket,代码行数:30,代码来源:ip6.go
示例9: SerializeTo
// SerializeTo is for gopacket.SerializableLayer.
func (sc SCTPData) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
length := 16 + len(sc.PayloadData)
bytes, err := b.PrependBytes(roundUpToNearest4(length))
if err != nil {
return err
}
bytes[0] = uint8(sc.Type)
flags := uint8(0)
if sc.Unordered {
flags |= 0x4
}
if sc.BeginFragment {
flags |= 0x2
}
if sc.EndFragment {
flags |= 0x1
}
bytes[1] = flags
binary.BigEndian.PutUint16(bytes[2:4], uint16(length))
binary.BigEndian.PutUint32(bytes[4:8], sc.TSN)
binary.BigEndian.PutUint16(bytes[8:10], sc.StreamId)
binary.BigEndian.PutUint16(bytes[10:12], sc.StreamSequence)
binary.BigEndian.PutUint32(bytes[12:16], sc.PayloadProtocol)
copy(bytes[16:], sc.PayloadData)
return nil
}
开发者ID:CNDonny,项目名称:scope,代码行数:27,代码来源:sctp.go
示例10: serializePortalInfo
func (d *DRCP) serializePortalInfo(b gopacket.SerializeBuffer) error {
if d.PortalInfo.TlvTypeLength.GetTlv() != DRCPTLVTypePortalInfo {
return fmt.Errorf("Error in Serialize to for DRCP PortalInfo TLV incorrect %d", d.PortalInfo.TlvTypeLength.GetTlv())
}
bytes, err := b.AppendBytes(int(DRCPTLVPortalInfoLength) + 2)
if err != nil {
fmt.Println("Error in Serialize to PortalInfo for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.PortalInfo.TlvTypeLength))
binary.BigEndian.PutUint16(bytes[2:], d.PortalInfo.AggPriority)
bytes[4] = byte(d.PortalInfo.AggId[0])
bytes[5] = byte(d.PortalInfo.AggId[1])
bytes[6] = byte(d.PortalInfo.AggId[2])
bytes[7] = byte(d.PortalInfo.AggId[3])
bytes[8] = byte(d.PortalInfo.AggId[4])
bytes[9] = byte(d.PortalInfo.AggId[5])
binary.BigEndian.PutUint16(bytes[10:], d.PortalInfo.PortalPriority)
bytes[12] = byte(d.PortalInfo.PortalAddr[0])
bytes[13] = byte(d.PortalInfo.PortalAddr[1])
bytes[14] = byte(d.PortalInfo.PortalAddr[2])
bytes[15] = byte(d.PortalInfo.PortalAddr[3])
bytes[16] = byte(d.PortalInfo.PortalAddr[4])
bytes[17] = byte(d.PortalInfo.PortalAddr[5])
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:28,代码来源:drcp.go
示例11: SerializeTo
func (m *TomMessageSystemTime) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) (err error) {
defer errs.PassE(&err)
errs.CheckE(m.TomMessageCommon.SerializeTo(b, opts))
buf, err := b.AppendBytes(4)
errs.CheckE(err)
binary.LittleEndian.PutUint32(buf, m.Second)
return
}
开发者ID:ikravets,项目名称:ev,代码行数:8,代码来源:tom.go
示例12: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (s *SlowProtocol) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
bytes, err := b.PrependBytes(1)
if err != nil {
return err
}
bytes[0] = uint8(s.SubType)
return nil
}
开发者ID:cysheen,项目名称:gopacket,代码行数:11,代码来源:slowprotocol.go
示例13: SerializeTo
func (m *IttoMessageBaseReference) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) (err error) {
defer errs.PassE(&err)
errs.CheckE(m.IttoMessageCommon.SerializeTo(b, opts))
buf, err := b.AppendBytes(8)
errs.CheckE(err)
binary.BigEndian.PutUint64(buf, m.BaseRefNum)
return
}
开发者ID:ikravets,项目名称:ev,代码行数:8,代码来源:itto.go
示例14: putSerializeBuffer
func putSerializeBuffer(buf gopacket.SerializeBuffer) {
if buf == nil {
return
}
buf.Clear()
serializeBufferPool.Put(buf)
}
开发者ID:fd,项目名称:switchboard,代码行数:8,代码来源:serialize_buffer_pool.go
示例15: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
func (l *Loopback) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
bytes, err := b.PrependBytes(4)
if err != nil {
return err
}
binary.LittleEndian.PutUint32(bytes, uint32(l.Family))
return nil
}
开发者ID:nplanel,项目名称:gopacket,代码行数:10,代码来源:loopback.go
示例16: SerializeTo
// SerializeTo is for gopacket.SerializableLayer.
func (s SCTPUnknownChunkType) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
bytes, err := b.PrependBytes(s.ActualLength)
if err != nil {
return err
}
copy(bytes, s.bytes)
return nil
}
开发者ID:cdshann,项目名称:minimega,代码行数:9,代码来源:sctp.go
示例17: serializePortalConfigInfo
func (d *DRCP) serializePortalConfigInfo(b gopacket.SerializeBuffer) error {
if d.PortalConfigInfo.TlvTypeLength.GetTlv() != DRCPTLVTypePortalConfigInfo {
return fmt.Errorf("Error in Serialize to for DRCP PortalConfigInfo TLV incorrect %d", d.PortalConfigInfo.TlvTypeLength.GetTlv())
}
bytes, err := b.AppendBytes(int(DRCPTLVPortalConfigurationInfoLength) + 2)
if err != nil {
fmt.Println("Error in Serialize PortalConfigInfo for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.PortalConfigInfo.TlvTypeLength))
bytes[2] = byte(d.PortalConfigInfo.TopologyState)
binary.BigEndian.PutUint16(bytes[3:], d.PortalConfigInfo.OperAggKey)
bytes[5] = byte(d.PortalConfigInfo.PortAlgorithm[0])
bytes[6] = byte(d.PortalConfigInfo.PortAlgorithm[1])
bytes[7] = byte(d.PortalConfigInfo.PortAlgorithm[2])
bytes[8] = byte(d.PortalConfigInfo.PortAlgorithm[3])
bytes[9] = byte(d.PortalConfigInfo.GatewayAlgorithm[0])
bytes[10] = byte(d.PortalConfigInfo.GatewayAlgorithm[1])
bytes[11] = byte(d.PortalConfigInfo.GatewayAlgorithm[2])
bytes[12] = byte(d.PortalConfigInfo.GatewayAlgorithm[3])
bytes[13] = byte(d.PortalConfigInfo.PortDigest[0])
bytes[14] = byte(d.PortalConfigInfo.PortDigest[1])
bytes[15] = byte(d.PortalConfigInfo.PortDigest[2])
bytes[16] = byte(d.PortalConfigInfo.PortDigest[3])
bytes[17] = byte(d.PortalConfigInfo.PortDigest[4])
bytes[18] = byte(d.PortalConfigInfo.PortDigest[5])
bytes[19] = byte(d.PortalConfigInfo.PortDigest[6])
bytes[20] = byte(d.PortalConfigInfo.PortDigest[7])
bytes[21] = byte(d.PortalConfigInfo.PortDigest[8])
bytes[22] = byte(d.PortalConfigInfo.PortDigest[9])
bytes[23] = byte(d.PortalConfigInfo.PortDigest[10])
bytes[24] = byte(d.PortalConfigInfo.PortDigest[11])
bytes[25] = byte(d.PortalConfigInfo.PortDigest[12])
bytes[26] = byte(d.PortalConfigInfo.PortDigest[13])
bytes[27] = byte(d.PortalConfigInfo.PortDigest[14])
bytes[28] = byte(d.PortalConfigInfo.PortDigest[15])
bytes[29] = byte(d.PortalConfigInfo.GatewayDigest[0])
bytes[30] = byte(d.PortalConfigInfo.GatewayDigest[1])
bytes[31] = byte(d.PortalConfigInfo.GatewayDigest[2])
bytes[32] = byte(d.PortalConfigInfo.GatewayDigest[3])
bytes[33] = byte(d.PortalConfigInfo.GatewayDigest[4])
bytes[34] = byte(d.PortalConfigInfo.GatewayDigest[5])
bytes[35] = byte(d.PortalConfigInfo.GatewayDigest[6])
bytes[36] = byte(d.PortalConfigInfo.GatewayDigest[7])
bytes[37] = byte(d.PortalConfigInfo.GatewayDigest[8])
bytes[38] = byte(d.PortalConfigInfo.GatewayDigest[9])
bytes[39] = byte(d.PortalConfigInfo.GatewayDigest[10])
bytes[40] = byte(d.PortalConfigInfo.GatewayDigest[11])
bytes[41] = byte(d.PortalConfigInfo.GatewayDigest[12])
bytes[42] = byte(d.PortalConfigInfo.GatewayDigest[13])
bytes[43] = byte(d.PortalConfigInfo.GatewayDigest[14])
bytes[44] = byte(d.PortalConfigInfo.GatewayDigest[15])
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:57,代码来源:drcp.go
示例18: serializeNetworkIPLSharingEncapsulation
func (d *DRCP) serializeNetworkIPLSharingEncapsulation(b gopacket.SerializeBuffer) error {
// optional
if d.NetworkIPLEncapsulation.TlvTypeLength.GetTlv() == DRCPTlvTypeLength(0) {
return nil
}
if d.NetworkIPLEncapsulation.TlvTypeLength.GetTlv() != DRCPTLVNetworkIPLSharingEncapsulation {
return fmt.Errorf("Error in Serialize to for DRCP Network/IPL Sharing Encapsulation TLV incorrect %d", d.NetworkIPLEncapsulation.TlvTypeLength.GetTlv())
}
if DRCPTlvTypeLength(d.NetworkIPLEncapsulation.TlvTypeLength.GetLength()) != DRCPTLVNetworkIPLSharingEncapsulationLength {
return fmt.Errorf("Error in Serialize to for DRCP Network/IPL Sharing Encapsulation Length incorrect %d", d.NetworkIPLEncapsulation.TlvTypeLength.GetLength())
}
bytes, err := b.AppendBytes(int(d.NetworkIPLEncapsulation.TlvTypeLength.GetLength()) + 2)
if err != nil {
fmt.Println("Error in Serialize Network/IPL Sharing Method for DRCP")
return err
}
binary.BigEndian.PutUint16(bytes[0:], uint16(d.NetworkIPLEncapsulation.TlvTypeLength))
bytes[2] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[0])
bytes[3] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[1])
bytes[4] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[2])
bytes[5] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[3])
bytes[6] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[4])
bytes[7] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[5])
bytes[8] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[6])
bytes[9] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[7])
bytes[10] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[8])
bytes[11] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[9])
bytes[12] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[10])
bytes[13] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[11])
bytes[14] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[12])
bytes[15] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[13])
bytes[16] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[14])
bytes[17] = byte(d.NetworkIPLEncapsulation.IplEncapDigest[15])
bytes[18] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[0])
bytes[19] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[1])
bytes[20] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[2])
bytes[21] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[3])
bytes[22] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[4])
bytes[23] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[5])
bytes[24] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[6])
bytes[25] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[7])
bytes[26] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[8])
bytes[27] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[9])
bytes[28] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[10])
bytes[29] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[11])
bytes[30] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[12])
bytes[31] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[13])
bytes[32] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[14])
bytes[33] = byte(d.NetworkIPLEncapsulation.NetEncapDigest[15])
return nil
}
开发者ID:ccordes-snaproute,项目名称:gopacket,代码行数:57,代码来源:drcp.go
示例19: SerializeTo
func (m *MoldUDP64) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) (err error) {
defer errs.PassE(&err)
bytes, err := b.PrependBytes(20)
errs.CheckE(err)
copy(bytes[0:10], m.Session[0:10])
binary.BigEndian.PutUint64(bytes[10:18], m.SequenceNumber)
binary.BigEndian.PutUint16(bytes[18:20], m.MessageCount)
return
}
开发者ID:ikravets,项目名称:ev,代码行数:9,代码来源:moldudp64.go
示例20: SerializeTo
// SerializeTo writes the serialized form of this layer into the
// SerializationBuffer, implementing gopacket.SerializableLayer.
// See the docs for gopacket.SerializableLayer for more info.
func (t *TCP) SerializeTo(b gopacket.SerializeBuffer, opts gopacket.SerializeOptions) error {
var optionLength int
for _, o := range t.Options {
switch o.OptionType {
case 0, 1:
optionLength += 1
default:
optionLength += 2 + len(o.OptionData)
}
}
if opts.FixLengths {
if rem := optionLength % 4; rem != 0 {
t.Padding = lotsOfZeros[:4-rem]
}
t.DataOffset = uint8((len(t.Padding) + optionLength + 20) / 4)
}
bytes, err := b.PrependBytes(20 + optionLength + len(t.Padding))
if err != nil {
return err
}
binary.BigEndian.PutUint16(bytes, uint16(t.SrcPort))
binary.BigEndian.PutUint16(bytes[2:], uint16(t.DstPort))
binary.BigEndian.PutUint32(bytes[4:], t.Seq)
binary.BigEndian.PutUint32(bytes[8:], t.Ack)
binary.BigEndian.PutUint16(bytes[12:], t.flagsAndOffset())
binary.BigEndian.PutUint16(bytes[14:], t.Window)
binary.BigEndian.PutUint16(bytes[18:], t.Urgent)
start := 20
for _, o := range t.Options {
bytes[start] = byte(o.OptionType)
switch o.OptionType {
case 0, 1:
start++
default:
if opts.FixLengths {
o.OptionLength = uint8(len(o.OptionData) + 2)
}
bytes[start+1] = o.OptionLength
copy(bytes[start+2:start+len(o.OptionData)+2], o.OptionData)
start += int(o.OptionLength)
}
}
copy(bytes[start:], t.Padding)
if opts.ComputeChecksums {
// zero out checksum bytes in current serialization.
bytes[16] = 0
bytes[17] = 0
csum, err := t.computeChecksum(b.Bytes(), IPProtocolTCP)
if err != nil {
return err
}
t.Checksum = csum
}
binary.BigEndian.PutUint16(bytes[16:], t.Checksum)
return nil
}
开发者ID:cdshann,项目名称:minimega,代码行数:59,代码来源:tcp.go
注:本文中的github.com/google/gopacket.SerializeBuffer类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论