This commit is contained in:
JackDoan
2025-11-07 19:53:16 -06:00
parent e7176bca01
commit 9b29a3fe14
2 changed files with 18 additions and 1 deletions

View File

@@ -309,8 +309,16 @@ func (t *tun) Write(b []byte) (int, error) {
NumBuffers: 0,
}
//use just tun
//vnethdrBuf := make([]byte, virtio.NetHdrSize+14+len(b)) //todo WHY
//if err := hdr.Encode(vnethdrBuf); err != nil {
// //return fmt.Errorf("encode vnethdr: %w", err)
//}
//copy(vnethdrBuf[virtio.NetHdrSize:], b)
//return unix.Write(t.fd, vnethdrBuf)
//end
err := t.vdev.TransmitPacket(hdr, b)
//err := t.vdev.TransmitPacket2(b)
if err != nil {
return 0, err
}

View File

@@ -80,6 +80,13 @@ func NewDevice(options ...Option) (_ *Device, err error) {
// Advertise the supported features. This isn't much for now.
// TODO: Add feature options and implement proper feature negotiation.
getFeatures, err := vhost.GetFeatures(dev.controlFD)
if err != nil {
return nil, fmt.Errorf("get features: %w", err)
}
if getFeatures == 0 {
}
//const funky = virtio.Feature(1 << 27)
//features := virtio.FeatureVersion1 | funky // | todo virtio.FeatureNetMergeRXBuffers
features := virtio.FeatureVersion1 | virtio.FeatureNetMergeRXBuffers
@@ -179,6 +186,8 @@ func (dev *Device) TransmitPacket(vnethdr virtio.NetHdr, packet []byte) error {
if err := vnethdr.Encode(vnethdrBuf); err != nil {
return fmt.Errorf("encode vnethdr: %w", err)
}
vnethdrBuf[virtio.NetHdrSize+14-2] = 0x86
vnethdrBuf[virtio.NetHdrSize+14-1] = 0xdd //todo ipv6 ethertype
outBuffers := [][]byte{vnethdrBuf, packet}
//outBuffers := [][]byte{packet}