Skip to content

Commit

Permalink
Merge pull request #85 from apernet/wip-buf
Browse files Browse the repository at this point in the history
feat: netlink rcv/snd buffer config options
  • Loading branch information
tobyxdd authored Feb 29, 2024
2 parents 5d2d874 + 50cc948 commit 1dce827
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 6 deletions.
2 changes: 2 additions & 0 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml
io:
queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # FORWARD チェーンで OpenGFW を実行したい場合は false に設定する

workers:
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml
io:
queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # set to false if you want to run OpenGFW on FORWARD chain

workers:
Expand Down
2 changes: 2 additions & 0 deletions README.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ opkg install kmod-nft-queue kmod-nf-conntrack-netlink
```yaml
io:
queueSize: 1024
rcvBuf: 4194304
sndBuf: 4194304
local: true # 如果需要在 FORWARD 链上运行 OpenGFW,请设置为 false

workers:
Expand Down
12 changes: 8 additions & 4 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,10 @@ type cliConfig struct {
}

type cliConfigIO struct {
QueueSize uint32 `mapstructure:"queueSize"`
Local bool `mapstructure:"local"`
QueueSize uint32 `mapstructure:"queueSize"`
ReadBuffer int `mapstructure:"rcvBuf"`
WriteBuffer int `mapstructure:"sndBuf"`
Local bool `mapstructure:"local"`
}

type cliConfigWorkers struct {
Expand All @@ -192,8 +194,10 @@ func (c *cliConfig) fillLogger(config *engine.Config) error {

func (c *cliConfig) fillIO(config *engine.Config) error {
nfio, err := io.NewNFQueuePacketIO(io.NFQueuePacketIOConfig{
QueueSize: c.IO.QueueSize,
Local: c.IO.Local,
QueueSize: c.IO.QueueSize,
ReadBuffer: c.IO.ReadBuffer,
WriteBuffer: c.IO.WriteBuffer,
Local: c.IO.Local,
})
if err != nil {
return configError{Field: "io", Err: err}
Expand Down
20 changes: 18 additions & 2 deletions io/nfqueue.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,10 @@ type nfqueuePacketIO struct {
}

type NFQueuePacketIOConfig struct {
QueueSize uint32
Local bool
QueueSize uint32
ReadBuffer int
WriteBuffer int
Local bool
}

func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error) {
Expand Down Expand Up @@ -128,6 +130,20 @@ func NewNFQueuePacketIO(config NFQueuePacketIOConfig) (PacketIO, error) {
if err != nil {
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{
n: n,
local: config.Local,
Expand Down

0 comments on commit 1dce827

Please sign in to comment.