mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-16 11:39:57 +00:00
30 lines
934 B
Go
30 lines
934 B
Go
//go:build !linux || android
|
|
|
|
package firewall
|
|
|
|
import (
|
|
"fmt"
|
|
"runtime"
|
|
|
|
firewall "github.com/netbirdio/netbird/client/firewall/manager"
|
|
"github.com/netbirdio/netbird/client/firewall/uspfilter"
|
|
nftypes "github.com/netbirdio/netbird/client/internal/netflow/types"
|
|
"github.com/netbirdio/netbird/client/internal/statemanager"
|
|
)
|
|
|
|
// NewFirewall creates a firewall manager instance
|
|
func NewFirewall(iface IFaceMapper, _ *statemanager.Manager, flowLogger nftypes.FlowLogger, disableServerRoutes bool, mtu uint16) (firewall.Manager, error) {
|
|
if !iface.IsUserspaceBind() {
|
|
return nil, fmt.Errorf("not implemented for this OS: %s", runtime.GOOS)
|
|
}
|
|
|
|
// use userspace packet filtering firewall
|
|
return uspfilter.Create(uspfilter.Config{
|
|
IFace: iface,
|
|
DisableServerRoutes: disableServerRoutes,
|
|
FlowLogger: flowLogger,
|
|
MTU: mtu,
|
|
InterfaceAllower: interfaceAllower(iface, mtu),
|
|
})
|
|
}
|