30 lines
629 B
Go
30 lines
629 B
Go
package wireguard
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/qdm12/gluetun/internal/netlink"
|
|
)
|
|
|
|
func (w *Wireguard) addRule(rulePriority, firewallMark, family int) (
|
|
cleanup func() error, err error) {
|
|
rule := netlink.NewRule()
|
|
rule.Invert = true
|
|
rule.Priority = rulePriority
|
|
rule.Mark = firewallMark
|
|
rule.Table = firewallMark
|
|
rule.Family = family
|
|
if err := w.netlink.RuleAdd(rule); err != nil {
|
|
return nil, fmt.Errorf("adding rule %s: %w", rule, err)
|
|
}
|
|
|
|
cleanup = func() error {
|
|
err := w.netlink.RuleDel(rule)
|
|
if err != nil {
|
|
return fmt.Errorf("deleting rule %s: %w", rule, err)
|
|
}
|
|
return nil
|
|
}
|
|
return cleanup, nil
|
|
}
|