Skip to content

Commit 52e3b7e

Browse files
committed
netstack/icmp: m rmv logs & split conditionals
1 parent e3ee482 commit 52e3b7e

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

intra/netstack/icmpecho.go

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,7 @@ func (r *icmpResponder) handle(b buffer.Buffer) (handled bool) {
6767

6868
inSize := b.Size()
6969
if inSize <= minICMPPacketSize {
70-
if settings.Debug {
71-
log.V("icmp: responder: packet too small: %d", inSize)
72-
}
70+
// too verbose: log.VV("icmp: responder: packet too small: %d", inSize)
7371
// Too small to be a valid ICMP echo request.
7472
return
7573
}
@@ -81,7 +79,9 @@ func (r *icmpResponder) handle(b buffer.Buffer) (handled bool) {
8179
// flatten is expensive, so we avoid it if possible
8280
n, err := b.ReadToWriter(&w, expectedICMPPacketSize)
8381

84-
logeif(err)("icmp: responder: read to writer (sz: %d / %d); h? %t, err? %v", n, w.Len(), h != nil, err)
82+
if settings.Debug {
83+
logeif(err)("icmp: responder: read to writer (sz: %d / %d / %d); h? %t, err? %v", n, w.Len(), inSize, h != nil, err)
84+
}
8585
if err != nil || n == 0 || h == nil || w.Len() == 0 {
8686
return
8787
}
@@ -91,9 +91,10 @@ func (r *icmpResponder) handle(b buffer.Buffer) (handled bool) {
9191

9292
// Only echo requests are handled; other ICMP packets are dropped to avoid
9393
// feeding them back into netstack.
94-
if (parsed.IPProto != wire.ICMPv4 && parsed.IPProto != wire.ICMPv6) || !parsed.IsEchoRequest() {
94+
if parsed.IPProto != wire.ICMPv4 && parsed.IPProto != wire.ICMPv6 {
9595
if settings.Debug {
96-
log.V("icmp: responder: unsupported proto: %d", parsed.IPProto)
96+
log.VV("icmp: responder: unsupported proto: %d / echo: %t; content: %x",
97+
parsed.IPProto, parsed.IsEchoRequest(), parsed.Buffer())
9798
}
9899
wire.Pool.Put(parsed)
99100
return
@@ -104,21 +105,30 @@ func (r *icmpResponder) handle(b buffer.Buffer) (handled bool) {
104105
dst := parsed.Dst
105106
has := parsed.HasTransportData()
106107

107-
logwv(!has)("icmp: responder: echo request ipv%d; %s => %s; ok? %t", parsed.IPVersion, src, dst, has)
108+
logwv(!has)("icmp: responder: request ipv%d; %s => %s; ok? %t", parsed.IPVersion, src, dst, has)
108109

109110
if !has {
110111
wire.Pool.Put(parsed)
111112
return
112113
}
113114

114-
if inSize > expectedICMPPacketSize {
115+
if inSize > int64(w.Len()) {
115116
// There is more data beyond the minimum ICMP echo request.
116117
// Reconstruct the full packet.
117118
w.Reset()
118119
b.ReadToWriter(&w, inSize)
119120
parsed.Decode(w.Copy())
120121
}
121122

123+
if !parsed.IsEchoRequest() {
124+
if settings.Debug {
125+
log.VV("icmp: responder: not echo request ipv%d; %s => %s; type: %d",
126+
parsed.IPVersion, src, dst, parsed.IPProto)
127+
}
128+
wire.Pool.Put(parsed)
129+
return
130+
}
131+
122132
// Process asynchronously to avoid blocking the dispatcher loop.
123133
core.Go("icmp.responder", func() {
124134
r.process(h, parsed, src, dst)

0 commit comments

Comments
 (0)