close pcap properly and implement ProtectedDialContext

This commit is contained in:
eddc005 2024-05-07 21:50:06 +01:00
parent f01b79e625
commit abd7725fed

View File

@ -19,6 +19,8 @@ type pcapPacketIO struct {
lastTime *time.Time lastTime *time.Time
ioCancel context.CancelFunc ioCancel context.CancelFunc
config PcapPacketIOConfig config PcapPacketIOConfig
dialer *net.Dialer
} }
type PcapPacketIOConfig struct { type PcapPacketIOConfig struct {
@ -38,6 +40,7 @@ func NewPcapPacketIO(config PcapPacketIOConfig) (PacketIO, error) {
lastTime: nil, lastTime: nil,
ioCancel: nil, ioCancel: nil,
config: config, config: config,
dialer: &net.Dialer{},
}, nil }, nil
} }
@ -70,8 +73,9 @@ func (p *pcapPacketIO) Register(ctx context.Context, cb PacketCallback) error {
return nil return nil
} }
// A normal dialer is sufficient as pcap IO does not mess up with the networking
func (p *pcapPacketIO) ProtectedDialContext(ctx context.Context, network, address string) (net.Conn, error) { func (p *pcapPacketIO) ProtectedDialContext(ctx context.Context, network, address string) (net.Conn, error) {
return nil, nil return p.dialer.DialContext(ctx, network, address)
} }
func (p *pcapPacketIO) SetVerdict(pkt Packet, v Verdict, newPacket []byte) error { func (p *pcapPacketIO) SetVerdict(pkt Packet, v Verdict, newPacket []byte) error {
@ -84,6 +88,7 @@ func (p *pcapPacketIO) SetCancelFunc(cancelFunc context.CancelFunc) error {
} }
func (p *pcapPacketIO) Close() error { func (p *pcapPacketIO) Close() error {
p.pcap.Close()
return nil return nil
} }