~bigbes/shroud

ref: 5afb3bad1be8eb82352dde56e6836a0a8ea4ef7f shroud/internal/awgserver/tun_darwin.go -rw-r--r-- 538 bytes
5afb3bad — Eugene Blikh feat: add optional shadowsocks and outline smart dialer config 2 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//go:build darwin

package awgserver

import (
	"fmt"
	"log/slog"
	"net"
	"os/exec"
)

func setTUNAddress(tunName, address string, logger *slog.Logger) error {
	ip, _, err := net.ParseCIDR(address)
	if err != nil {
		return fmt.Errorf("parse CIDR: %w", err)
	}
	cmd := exec.Command("ifconfig", tunName, "inet", ip.String(), ip.String(), "up")
	if out, err := cmd.CombinedOutput(); err != nil {
		return fmt.Errorf("ifconfig: %s: %w", string(out), err)
	}
	logger.Info("TUN configured.", "name", tunName, "address", address)
	return nil
}