| 16 | const defaultTunName = "coder0" |
| 17 | |
| 18 | func GetNetworkingStack(_ *Tunnel, _ *StartRequest, logger slog.Logger) (NetworkStack, error) { |
| 19 | tunDev, tunName, err := tstun.New(tailnet.Logger(logger.Named("net.tun.device")), defaultTunName) |
| 20 | if err != nil { |
| 21 | return NetworkStack{}, xerrors.Errorf("create tun device: %w", err) |
| 22 | } |
| 23 | |
| 24 | wireguardMonitor, err := netmon.New(tailnet.Logger(logger.Named("net.wgmonitor"))) |
| 25 | if err != nil { |
| 26 | return NetworkStack{}, xerrors.Errorf("create wireguard monitor: %w", err) |
| 27 | } |
| 28 | |
| 29 | coderRouter, err := router.New(tailnet.Logger(logger.Named("net.router")), tunDev, wireguardMonitor) |
| 30 | if err != nil { |
| 31 | return NetworkStack{}, xerrors.Errorf("create router: %w", err) |
| 32 | } |
| 33 | |
| 34 | dnsConfigurator, err := dns.NewOSConfigurator(tailnet.Logger(logger.Named("net.dns")), tunName) |
| 35 | if err != nil { |
| 36 | return NetworkStack{}, xerrors.Errorf("create dns configurator: %w", err) |
| 37 | } |
| 38 | |
| 39 | return NetworkStack{ |
| 40 | WireguardMonitor: wireguardMonitor, |
| 41 | TUNDevice: tunDev, |
| 42 | Router: coderRouter, |
| 43 | DNSConfigurator: dnsConfigurator, |
| 44 | }, nil |
| 45 | } |