Move DF indication into LogFrame

This commit is contained in:
David Wragg committed 2015-06-12 16:11:32 +01:00
1 parent 2fa5cda2c7
commit b77abf480b
3 files changed
+19 -18

No files matched your search

+4
View File
@@ -74,3 +74,7 @@ func (dec *EthernetDecoder) IsSpecial() bool {
return dec.Eth.Length == 0 && dec.Eth.EthernetType == layers.EthernetTypeLLC &&
bytes.Equal(zeroMAC, dec.Eth.SrcMAC) && bytes.Equal(zeroMAC, dec.Eth.DstMAC)
}
func (dec *EthernetDecoder) DF() bool {
return len(dec.decoded) == 2 && (dec.IP.Flags&layers.IPv4DontFragment != 0)
}
+5 -14
View File
@@ -2,7 +2,6 @@ package router
import (
"bytes"
"code.google.com/p/gopacket/layers"
"encoding/binary"
"fmt"
"io"
@@ -155,12 +154,9 @@ func (router *Router) handleCapturedPacket(frameData []byte, dec *EthernetDecode
if found && dstPeer == router.Ourself.Peer {
return
}
df := decodedLen == 2 && (dec.IP.Flags&layers.IPv4DontFragment != 0)
if df {
router.LogFrame("Forwarding DF", frameData, dec)
} else {
router.LogFrame("Forwarding", frameData, dec)
}
df := dec.DF()
router.LogFrame("Forwarding", frameData, dec)
// at this point we are handing over the frame to forwarders, so
// we need to make a copy of it in order to prevent the next
// capture from overwriting the data
@@ -300,16 +296,11 @@ func (router *Router) handleUDPPacketFunc(relayConn *LocalConnection, dec *Ether
return
}
df := decodedLen == 2 && (dec.IP.Flags&layers.IPv4DontFragment != 0)
df := dec.DF()
if dstPeer != router.Ourself.Peer {
// it's not for us, we're just relaying it
if df {
router.LogFrame("Relaying DF", frame, dec)
} else {
router.LogFrame("Relaying", frame, dec)
}
router.LogFrame("Relaying", frame, dec)
err := router.Ourself.Relay(srcPeer, dstPeer, df, frame, dec)
if ftbe, ok := err.(FrameTooBigError); ok {
err = dec.sendICMPFragNeeded(ftbe.EPMTU, func(icmpFrame []byte) error {
+10 -4
View File
@@ -172,11 +172,17 @@ func logFrameFunc(debug bool) weave.LogFrameFunc {
}
return func(prefix string, frame []byte, dec *weave.EthernetDecoder) {
h := fmt.Sprintf("%x", sha256.Sum256(frame))
if dec == nil {
log.Println(prefix, len(frame), "bytes (", h, ")")
} else {
log.Println(prefix, len(frame), "bytes (", h, "):", dec.Eth.SrcMAC, "->", dec.Eth.DstMAC)
parts := []interface{}{prefix, len(frame), "bytes (", h, ")"}
if dec != nil {
parts = append(parts, dec.Eth.SrcMAC, "->", dec.Eth.DstMAC)
if dec.DF() {
parts = append(parts, "(DF)")
}
}
log.Println(parts...)
}
}