introduce abstraction for packet i/o

This commit is contained in:
Matthias Radestock committed 2014-08-20 11:18:12 +01:00
1 parent 5b7666a850
commit cb2cdc90cc
4 files changed
+78 -33

No files matched your search

+2 -3
View File
@@ -4,7 +4,6 @@ import (
"bytes"
"code.google.com/p/gopacket"
"code.google.com/p/gopacket/layers"
"code.google.com/p/gopacket/pcap"
"log"
"net"
)
@@ -19,7 +18,7 @@ func (dec *EthernetDecoder) DecodeLayers(data []byte) error {
return dec.parser.DecodeLayers(data, &dec.decoded)
}
func (dec *EthernetDecoder) CheckFrameTooBigFunc(handle *pcap.Handle) func(error) error {
func (dec *EthernetDecoder) CheckFrameTooBigFunc(po PacketSink) func(error) error {
return func(err error) error {
if ftbe, ok := err.(FrameTooBigError); ok {
// we know: 1. ip is valid, 2. it was ip and DF was set
@@ -28,7 +27,7 @@ func (dec *EthernetDecoder) CheckFrameTooBigFunc(handle *pcap.Handle) func(error
return err
}
log.Printf("Injecting ICMP 3,4 (%v -> %v): PMTU= %v\n", dec.ip.DstIP, dec.ip.SrcIP, ftbe.PMTU)
return handle.WritePacketData(icmpFrame)
return po.WritePacket(icmpFrame)
} else {
return err
}