2
0

virtio.go 675 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package packet
  2. import (
  3. "github.com/slackhq/nebula/util/virtio"
  4. )
  5. type VirtIOPacket struct {
  6. Payload []byte
  7. Header virtio.NetHdr
  8. Chains []uint16
  9. ChainRefs [][]byte
  10. // OfferDescriptorChains(chains []uint16, kick bool) error
  11. }
  12. func NewVIO() *VirtIOPacket {
  13. out := new(VirtIOPacket)
  14. out.Payload = nil
  15. out.ChainRefs = make([][]byte, 0, 4)
  16. out.Chains = make([]uint16, 0, 8)
  17. return out
  18. }
  19. func (v *VirtIOPacket) Reset() {
  20. v.Payload = nil
  21. v.ChainRefs = v.ChainRefs[:0]
  22. v.Chains = v.Chains[:0]
  23. }
  24. type VirtIOTXPacket struct {
  25. VirtIOPacket
  26. }
  27. func NewVIOTX(isV4 bool) *VirtIOTXPacket {
  28. out := new(VirtIOTXPacket)
  29. out.VirtIOPacket = *NewVIO()
  30. return out
  31. }