mirror of
https://github.com/slackhq/nebula.git
synced 2025-12-30 18:48:28 +01:00
small simplification
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user