small simplification

This commit is contained in:
JackDoan
2025-12-15 14:23:48 -06:00
parent 174ee003b5
commit 43d26d4fe5
5 changed files with 4 additions and 14 deletions

View File

@@ -352,7 +352,7 @@ func (f *Interface) listenIn(reader overlay.TunDev, queueNum int) {
now := time.Now() now := time.Now()
for i, pkt := range packets[:n] { for i, pkt := range packets[:n] {
outPackets[i].OutLen = -1 outPackets[i].ReadyToSend = false
f.consumeInsidePacket(pkt.Payload, fwPacket, nb, outPackets[i], queueNum, conntrackCache.Get(f.l), now) f.consumeInsidePacket(pkt.Payload, fwPacket, nb, outPackets[i], queueNum, conntrackCache.Get(f.l), now)
reader.RecycleRxSeg(pkt, i == (n-1), queueNum) //todo handle err? reader.RecycleRxSeg(pkt, i == (n-1), queueNum) //todo handle err?
pkt.Reset() pkt.Reset()

View File

@@ -181,9 +181,7 @@ func (f *Interface) readOutsidePacketsMany(packets []*packet.Packet, out []*pack
} }
} }
//todo per-segment!
for segment := range pkt.Segments() { for segment := range pkt.Segments() {
err := h.Parse(segment) err := h.Parse(segment)
if err != nil { if err != nil {
// Hole punch packets are 0 or 1 byte big, so lets ignore printing those errors // Hole punch packets are 0 or 1 byte big, so lets ignore printing those errors
@@ -208,7 +206,6 @@ func (f *Interface) readOutsidePacketsMany(packets []*packet.Packet, out []*pack
switch h.Type { switch h.Type {
case header.Message: case header.Message:
// TODO handleEncrypted sends directly to addr on error. Handle this in the tunneling case.
if !f.handleEncrypted(ci, via, h) { if !f.handleEncrypted(ci, via, h) {
return return
} }
@@ -676,7 +673,6 @@ func (f *Interface) decryptToTunDelayWrite(hostinfo *HostInfo, messageCounter ui
} }
f.connectionManager.In(hostinfo) f.connectionManager.In(hostinfo)
pkt.OutLen += len(inSegment)
out.Segments[seg] = out.Segments[seg][:len(out.SegmentHeaders[seg])+len(out.SegmentPayloads[seg])] out.Segments[seg] = out.Segments[seg][:len(out.SegmentHeaders[seg])+len(out.SegmentPayloads[seg])]
return true return true
} }

View File

@@ -271,9 +271,6 @@ func (dev *Device) TransmitPackets(pkts []*packet.OutPacket) error {
return nil return nil
} }
// TODO: Make above methods cancelable by taking a context.Context argument?
// TODO: Implement zero-copy variants to transmit and receive packets?
// processChains processes as many chains as needed to create one packet. The number of processed chains is returned. // processChains processes as many chains as needed to create one packet. The number of processed chains is returned.
func (dev *Device) processChains(pkt *packet.VirtIOPacket, chains []virtqueue.UsedElement) (int, error) { func (dev *Device) processChains(pkt *packet.VirtIOPacket, chains []virtqueue.UsedElement) (int, error) {
//read first element to see how many descriptors we need: //read first element to see how many descriptors we need:

View File

@@ -19,9 +19,7 @@ type Packet struct {
Name []byte Name []byte
SegSize int SegSize int
//todo should this hold out as well? ReadyToSend bool
OutLen int
wasSegmented bool wasSegmented bool
isV4 bool isV4 bool
} }
@@ -71,7 +69,6 @@ func (p *Packet) updateCtrl(ctrlLen int) {
// Update sets a Packet into "just received, not processed" state // Update sets a Packet into "just received, not processed" state
func (p *Packet) Update(ctrlLen int) { func (p *Packet) Update(ctrlLen int) {
p.OutLen = -1
p.updateCtrl(ctrlLen) p.updateCtrl(ctrlLen)
} }

View File

@@ -220,8 +220,8 @@ func (u *StdConn) Prep(pkt *packet.Packet, addr netip.AddrPort) error {
if err != nil { if err != nil {
return err return err
} }
pkt.ReadyToSend = true
pkt.Name = pkt.Name[:nl] pkt.Name = pkt.Name[:nl]
pkt.OutLen = len(pkt.Payload)
return nil return nil
} }
@@ -239,7 +239,7 @@ func (u *StdConn) WriteBatch(pkts []*packet.Packet) (int, error) {
//segmenting := false //segmenting := false
idx := 0 idx := 0
for _, pkt := range pkts { for _, pkt := range pkts {
if len(pkt.Payload) == 0 || pkt.OutLen == -1 { if !pkt.ReadyToSend || len(pkt.Payload) == 0 {
sent++ sent++
continue continue
} }