mirror of
https://github.com/rkonfj/peerguard.git
synced 2024-08-11 11:00:25 +08:00
netlink: move func AddRoute/DelRoute
This commit is contained in:
parent
7f6c78b763
commit
948522a2bb
@ -25,20 +25,6 @@ func SetupLink(ifName, cidr string) error {
|
||||
return AddRoute(ifName, ipnet, nil)
|
||||
}
|
||||
|
||||
func AddRoute(ifName string, to *net.IPNet, _ net.IP) error {
|
||||
if to.IP.To4() == nil { // ipv6
|
||||
return exec.Command("route", "-qn", "add", "-inet6", to.String(), "-iface", ifName).Run()
|
||||
}
|
||||
return exec.Command("route", "-qn", "add", "-inet", to.String(), "-iface", ifName).Run()
|
||||
}
|
||||
|
||||
func DelRoute(_ string, to *net.IPNet, _ net.IP) error {
|
||||
if to.IP.To4() == nil { // ipv6
|
||||
return exec.Command("route", "-qn", "delete", "-inet6", to.String()).Run()
|
||||
}
|
||||
return exec.Command("route", "-qn", "delete", "-inet", to.String()).Run()
|
||||
}
|
||||
|
||||
func LinkByIndex(index int) (*Link, error) {
|
||||
return nil, errors.ErrUnsupported
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ package netlink
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
)
|
||||
|
||||
func SetupLink(string, string) error {
|
||||
@ -12,16 +11,6 @@ func SetupLink(string, string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddRoute(string, *net.IPNet, net.IP) error {
|
||||
// noop
|
||||
return nil
|
||||
}
|
||||
|
||||
func DelRoute(string, *net.IPNet, net.IP) error {
|
||||
// noop
|
||||
return nil
|
||||
}
|
||||
|
||||
func LinkByIndex(index int) (*Link, error) {
|
||||
return nil, errors.ErrUnsupported
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ package netlink
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/vishvananda/netlink"
|
||||
)
|
||||
@ -35,20 +34,6 @@ func SetupLink(ifName, cidr string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddRoute(_ string, to *net.IPNet, via net.IP) error {
|
||||
return netlink.RouteAdd(&netlink.Route{
|
||||
Dst: to,
|
||||
Gw: via,
|
||||
})
|
||||
}
|
||||
|
||||
func DelRoute(_ string, to *net.IPNet, via net.IP) error {
|
||||
return netlink.RouteDel(&netlink.Route{
|
||||
Dst: to,
|
||||
Gw: via,
|
||||
})
|
||||
}
|
||||
|
||||
func LinkByIndex(index int) (*Link, error) {
|
||||
l, err := netlink.LinkByIndex(index)
|
||||
if err != nil {
|
||||
|
@ -25,22 +25,6 @@ func SetupLink(ifName, cidr string) error {
|
||||
return exec.Command("netsh", "interface", "ipv4", "set", "address", ifName, "static", ip.String(), addrMask).Run()
|
||||
}
|
||||
|
||||
func AddRoute(ifName string, to *net.IPNet, via net.IP) error {
|
||||
if via.To4() == nil { // ipv6
|
||||
return exec.Command("netsh", "interface", "ipv6", "add", "route", to.String(), ifName, via.String()).Run()
|
||||
}
|
||||
// ipv4
|
||||
addrMask := fmt.Sprintf("%d.%d.%d.%d", to.Mask[0], to.Mask[1], to.Mask[2], to.Mask[3])
|
||||
return exec.Command("route", "add", to.IP.String(), "mask", addrMask, via.String()).Run()
|
||||
}
|
||||
|
||||
func DelRoute(ifName string, to *net.IPNet, via net.IP) error {
|
||||
if via.To4() == nil { // ipv6
|
||||
return exec.Command("netsh", "interface", "ipv6", "delete", "route", to.String(), ifName, via.String()).Run()
|
||||
}
|
||||
return exec.Command("route", "delete", to.IP.String()).Run()
|
||||
}
|
||||
|
||||
func LinkByIndex(index int) (*Link, error) {
|
||||
luid, err := winipcfg.LUIDFromIndex(uint32(index))
|
||||
if err != nil {
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"log/slog"
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
"slices"
|
||||
"syscall"
|
||||
|
||||
@ -88,3 +89,17 @@ func runRouteMsgReadLoop(fd int, ch chan<- RouteUpdate) error {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func AddRoute(ifName string, to *net.IPNet, _ net.IP) error {
|
||||
if to.IP.To4() == nil { // ipv6
|
||||
return exec.Command("route", "-qn", "add", "-inet6", to.String(), "-iface", ifName).Run()
|
||||
}
|
||||
return exec.Command("route", "-qn", "add", "-inet", to.String(), "-iface", ifName).Run()
|
||||
}
|
||||
|
||||
func DelRoute(_ string, to *net.IPNet, _ net.IP) error {
|
||||
if to.IP.To4() == nil { // ipv6
|
||||
return exec.Command("route", "-qn", "delete", "-inet6", to.String()).Run()
|
||||
}
|
||||
return exec.Command("route", "-qn", "delete", "-inet", to.String()).Run()
|
||||
}
|
||||
|
@ -5,8 +5,18 @@ package netlink
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net"
|
||||
)
|
||||
|
||||
func RouteSubscribe(ctx context.Context, ch chan<- RouteUpdate) error {
|
||||
return errors.ErrUnsupported
|
||||
}
|
||||
func AddRoute(string, *net.IPNet, net.IP) error {
|
||||
// noop
|
||||
return errors.ErrUnsupported
|
||||
}
|
||||
|
||||
func DelRoute(string, *net.IPNet, net.IP) error {
|
||||
// noop
|
||||
return errors.ErrUnsupported
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package netlink
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
"net"
|
||||
"slices"
|
||||
|
||||
"github.com/vishvananda/netlink"
|
||||
@ -43,3 +44,17 @@ func RouteSubscribe(ctx context.Context, ch chan<- RouteUpdate) error {
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
|
||||
func AddRoute(_ string, to *net.IPNet, via net.IP) error {
|
||||
return netlink.RouteAdd(&netlink.Route{
|
||||
Dst: to,
|
||||
Gw: via,
|
||||
})
|
||||
}
|
||||
|
||||
func DelRoute(_ string, to *net.IPNet, via net.IP) error {
|
||||
return netlink.RouteDel(&netlink.Route{
|
||||
Dst: to,
|
||||
Gw: via,
|
||||
})
|
||||
}
|
||||
|
@ -2,7 +2,9 @@ package netlink
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"os/exec"
|
||||
|
||||
"golang.zx2c4.com/wireguard/windows/tunnel/winipcfg"
|
||||
)
|
||||
@ -26,3 +28,18 @@ func RouteSubscribe(ctx context.Context, ch chan<- RouteUpdate) error {
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
func AddRoute(ifName string, to *net.IPNet, via net.IP) error {
|
||||
if via.To4() == nil { // ipv6
|
||||
return exec.Command("netsh", "interface", "ipv6", "add", "route", to.String(), ifName, via.String()).Run()
|
||||
}
|
||||
// ipv4
|
||||
addrMask := fmt.Sprintf("%d.%d.%d.%d", to.Mask[0], to.Mask[1], to.Mask[2], to.Mask[3])
|
||||
return exec.Command("route", "add", to.IP.String(), "mask", addrMask, via.String()).Run()
|
||||
}
|
||||
|
||||
func DelRoute(ifName string, to *net.IPNet, via net.IP) error {
|
||||
if via.To4() == nil { // ipv6
|
||||
return exec.Command("netsh", "interface", "ipv6", "delete", "route", to.String(), ifName, via.String()).Run()
|
||||
}
|
||||
return exec.Command("route", "delete", to.IP.String()).Run()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user