feat: netlink rcv/snd buffer config options

This commit is contained in:
Toby 2024-02-28 17:45:24 -08:00
parent 5d2d874089
commit 50cc94889f
5 changed files with 32 additions and 6 deletions

View File

@ -70,6 +70,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml ```yaml
io: io:
queueSize: 1024 queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # FORWARD チェーンで OpenGFW を実行したい場合は false に設定する local: true # FORWARD チェーンで OpenGFW を実行したい場合は false に設定する
workers: workers:

View File

@ -74,6 +74,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml ```yaml
io: io:
queueSize: 1024 queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # set to false if you want to run OpenGFW on FORWARD chain local: true # set to false if you want to run OpenGFW on FORWARD chain
workers: workers:

View File

@ -70,6 +70,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml ```yaml
io: io:
queueSize: 1024 queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # 如果需要在 FORWARD 链上运行 OpenGFW请设置为 false local: true # 如果需要在 FORWARD 链上运行 OpenGFW请设置为 false
workers: workers:

View File

@ -169,6 +169,8 @@ type cliConfig struct {
type cliConfigIO struct { type cliConfigIO struct {
QueueSize uint32 `mapstructure:"queueSize"` QueueSize uint32 `mapstructure:"queueSize"`
ReadBuffer int `mapstructure:"rcvBuf"`
WriteBuffer int `mapstructure:"sndBuf"`
Local bool `mapstructure:"local"` Local bool `mapstructure:"local"`
} }
@ -193,6 +195,8 @@ func (c *cliConfig) fillLogger(config *engine.Config) error {
func (c *cliConfig) fillIO(config *engine.Config) error { func (c *cliConfig) fillIO(config *engine.Config) error {
nfio, err := io.NewNFQueuePacketIO(io.NFQueuePacketIOConfig{ nfio, err := io.NewNFQueuePacketIO(io.NFQueuePacketIOConfig{
QueueSize: c.IO.QueueSize, QueueSize: c.IO.QueueSize,
ReadBuffer: c.IO.ReadBuffer,
WriteBuffer: c.IO.WriteBuffer,
Local: c.IO.Local, Local: c.IO.Local,
}) })
if err != nil { if err != nil {

View File

@ -98,6 +98,8 @@ type nfqueuePacketIO struct {
type NFQueuePacketIOConfig struct { type NFQueuePacketIOConfig struct {
QueueSize uint32 QueueSize uint32
ReadBuffer int
WriteBuffer int
Local bool Local bool
} }
@ -128,6 +130,20 @@ func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if config.ReadBuffer > 0 {
err = n.Con.SetReadBuffer(config.ReadBuffer)
if err != nil {
_ = n.Close()
return nil, err
}
}
if config.WriteBuffer > 0 {
err = n.Con.SetWriteBuffer(config.WriteBuffer)
if err != nil {
_ = n.Close()
return nil, err
}
}
return &nfqueuePacketIO{ return &nfqueuePacketIO{
n: n, n: n,
local: config.Local, local: config.Local,