From d1fbabaef3a0672ac223628f93e7d0fc67d2a3ea Mon Sep 17 00:00:00 2001 From: Vincent Loeng <173226116+Vincent-Loeng@users.noreply.github.com.> Date: Tue, 27 May 2025 22:09:46 +0800 Subject: [PATCH] Add fib_index option for FreeBSD --- option/tun.go | 1 + protocol/tun/inbound.go | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/option/tun.go b/option/tun.go index 9263dd16..48bebf65 100644 --- a/option/tun.go +++ b/option/tun.go @@ -17,6 +17,7 @@ type TunInboundOptions struct { AutoRoute bool `json:"auto_route,omitempty"` IPRoute2TableIndex int `json:"iproute2_table_index,omitempty"` IPRoute2RuleIndex int `json:"iproute2_rule_index,omitempty"` + FIBIndex int `json:"fib_index,omitempty"` AutoRedirect bool `json:"auto_redirect,omitempty"` AutoRedirectInputMark FwMark `json:"auto_redirect_input_mark,omitempty"` AutoRedirectOutputMark FwMark `json:"auto_redirect_output_mark,omitempty"` diff --git a/protocol/tun/inbound.go b/protocol/tun/inbound.go index 7c80ebba..459405d1 100644 --- a/protocol/tun/inbound.go +++ b/protocol/tun/inbound.go @@ -164,6 +164,10 @@ func NewInbound(ctx context.Context, router adapter.Router, logger log.ContextLo if ruleIndex == 0 { ruleIndex = tun.DefaultIPRoute2RuleIndex } + fibIndex := options.FIBIndex + if fibIndex == 0 { + fibIndex = tun.DefaultFIBIndex + } inputMark := uint32(options.AutoRedirectInputMark) if inputMark == 0 { inputMark = tun.DefaultAutoRedirectInputMark @@ -188,6 +192,7 @@ func NewInbound(ctx context.Context, router adapter.Router, logger log.ContextLo AutoRoute: options.AutoRoute, IPRoute2TableIndex: tableIndex, IPRoute2RuleIndex: ruleIndex, + FIBIndex: fibIndex, AutoRedirectInputMark: inputMark, AutoRedirectOutputMark: outputMark, StrictRoute: options.StrictRoute,