本文整理汇总了Golang中github.com/ghedo/go/pkt/packet.Buffer.LayerBytes方法的典型用法代码示例。如果您正苦于以下问题:Golang Buffer.LayerBytes方法的具体用法?Golang Buffer.LayerBytes怎么用?Golang Buffer.LayerBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/ghedo/go/pkt/packet.Buffer
的用法示例。
在下文中一共展示了Buffer.LayerBytes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Unpack
func (p *Packet) Unpack(buf *packet.Buffer) error {
var versclass uint8
buf.ReadN(&versclass)
p.Version = versclass >> 4
p.Class =
uint8((binary.BigEndian.Uint16(buf.LayerBytes()[0:2]) >> 4) & 0x00FF)
p.Label =
binary.BigEndian.Uint32(buf.LayerBytes()[0:4]) & 0x000FFFFF
buf.Next(3)
buf.ReadN(&p.Length)
buf.ReadN(&p.NextHdr)
buf.ReadN(&p.HopLimit)
p.SrcAddr = net.IP(buf.Next(16))
p.DstAddr = net.IP(buf.Next(16))
/* TODO: Options */
return nil
}
示例2: Pack
func (p *Packet) Pack(buf *packet.Buffer) error {
buf.WriteN(byte(p.Type))
buf.WriteN(byte(p.Code))
buf.WriteN(uint16(0x0000))
buf.WriteN(p.Id)
buf.WriteN(p.Seq)
p.Checksum = ipv4.CalculateChecksum(buf.LayerBytes(), 0)
buf.PutUint16N(2, p.Checksum)
return nil
}