Something went wrong. Try again.
forked from tailscale/tailscale
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637// Copyright (c) Tailscale Inc & contributors// SPDX-License-Identifier: BSD-3-Clause
//go:build linux
package prober
import ( "fmt" "net/netip"
"github.com/tailscale/netlink" "go4.org/netipx")
const tunName = "derpprobe"
func configureTUN(addr netip.Prefix, tunname string) error { link, err := netlink.LinkByName(tunname) if err != nil { return fmt.Errorf("failed to look up link %q: %w", tunname, err) }
// We need to bring the TUN device up before assigning an address. This // allows the OS to automatically create a route for it. Otherwise, we'd // have to manually create the route. if err := netlink.LinkSetUp(link); err != nil { return fmt.Errorf("failed to bring tun %q up: %w", tunname, err) }
if err := netlink.AddrReplace(link, &netlink.Addr{IPNet: netipx.PrefixIPNet(addr)}); err != nil { return fmt.Errorf("failed to add address: %w", err) }
return nil}