mirror of
https://github.com/netbirdio/netbird.git
synced 2025-02-02 19:39:17 +01:00
split systemops for operating systems and add linux
This commit is contained in:
parent
64adaeb276
commit
1ced2462c1
@ -7,10 +7,27 @@ import (
|
|||||||
"net/netip"
|
"net/netip"
|
||||||
"os"
|
"os"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"unsafe"
|
||||||
|
|
||||||
"github.com/vishvananda/netlink"
|
"github.com/vishvananda/netlink"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Pulled from http://man7.org/linux/man-pages/man7/rtnetlink.7.html
|
||||||
|
// See the section on RTM_NEWROUTE, specifically 'struct rtmsg'.
|
||||||
|
type routeInfoInMemory struct {
|
||||||
|
Family byte
|
||||||
|
DstLen byte
|
||||||
|
SrcLen byte
|
||||||
|
TOS byte
|
||||||
|
|
||||||
|
Table byte
|
||||||
|
Protocol byte
|
||||||
|
Scope byte
|
||||||
|
Type byte
|
||||||
|
|
||||||
|
Flags uint32
|
||||||
|
}
|
||||||
|
|
||||||
const ipv4ForwardingPath = "/proc/sys/net/ipv4/ip_forward"
|
const ipv4ForwardingPath = "/proc/sys/net/ipv4/ip_forward"
|
||||||
|
|
||||||
func addToRouteTable(prefix netip.Prefix, addr string) error {
|
func addToRouteTable(prefix netip.Prefix, addr string) error {
|
||||||
@ -65,11 +82,11 @@ func removeFromRouteTable(prefix netip.Prefix) error {
|
|||||||
func existsInRouteTable(prefix netip.Prefix) (bool, error) {
|
func existsInRouteTable(prefix netip.Prefix) (bool, error) {
|
||||||
tab, err := syscall.NetlinkRIB(syscall.RTM_GETROUTE, syscall.AF_UNSPEC)
|
tab, err := syscall.NetlinkRIB(syscall.RTM_GETROUTE, syscall.AF_UNSPEC)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return true, err
|
||||||
}
|
}
|
||||||
msgs, err := syscall.ParseNetlinkMessage(tab)
|
msgs, err := syscall.ParseNetlinkMessage(tab)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return true, err
|
||||||
}
|
}
|
||||||
loop:
|
loop:
|
||||||
for _, m := range msgs {
|
for _, m := range msgs {
|
||||||
|
Loading…
Reference in New Issue
Block a user