3 Commits

Author SHA1 Message Date
Haruue
234ee32687 chore: go mod tidy 2024-02-28 21:58:16 +08:00
Haruue
1852a2594d fix: engine exit when too many packets hit NFQUEUE
This is a more graceful way to disable ENOBUFS reporting than
bed34f94be
2024-02-28 21:20:08 +08:00
Haruue
bc8d15ef37 Revert "fix: engine exit when too many packets hit NFQUEUE"
This reverts commit bed34f94be.
2024-02-28 21:17:29 +08:00
2 changed files with 5 additions and 8 deletions

2
go.mod
View File

@@ -16,7 +16,6 @@ require (
github.com/stretchr/testify v1.8.4
go.uber.org/zap v1.26.0
golang.org/x/crypto v0.19.0
golang.org/x/sys v0.17.0
google.golang.org/protobuf v1.31.0
gopkg.in/yaml.v3 v3.0.1
)
@@ -44,6 +43,7 @@ require (
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/sync v0.5.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
)

View File

@@ -12,7 +12,6 @@ import (
"github.com/coreos/go-iptables/iptables"
"github.com/florianl/go-nfqueue"
"github.com/mdlayher/netlink"
"golang.org/x/sys/unix"
)
const (
@@ -128,6 +127,10 @@ func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error) {
if err != nil {
return nil, err
}
err = n.Con.SetOption(netlink.NoENOBUFS, true)
if err != nil {
return nil, fmt.Errorf("failed to set NoENOBUFS option: %w", err)
}
return &nfqueuePacketIO{
n: n,
local: config.Local,
@@ -153,12 +156,6 @@ func (n *nfqueuePacketIO) Register(ctx context.Context, cb PacketCallback) error
return okBoolToInt(cb(p, nil))
},
func(e error) int {
if opErr := (*netlink.OpError)(nil); errors.As(e, &opErr) {
if errors.Is(opErr.Err, unix.ENOBUFS) {
// Kernel buffer temporarily full, ignore
return 0
}
}
return okBoolToInt(cb(nil, e))
})
if err != nil {