Skip to content

Commit

Permalink
chore: reset tunName in macos when it isn't startWith "utun"
Browse files Browse the repository at this point in the history
  • Loading branch information
wwqgtxx committed Feb 19, 2023
1 parent 527fc27 commit 1a1e334
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion listener/sing_tun/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,26 @@ func CalculateInterfaceName(name string) (tunName string) {
return
}

func checkTunName(tunName string) (ok bool) {
defer func() {
if !ok {
log.Warnln("[TUN] Unsupported tunName(%s) in %s, force regenerate by ourselves.", tunName, runtime.GOOS)
}
}()
if runtime.GOOS == "darwin" {
if len(tunName) <= 4 {
return false
}
if tunName[:4] == "utun" {
return false
}
if _, parseErr := strconv.ParseInt(tunName[4:], 10, 16); parseErr != nil {
return false
}
}
return true
}

func New(options LC.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapter, additions ...inbound.Addition) (l *Listener, err error) {
if len(additions) == 0 {
additions = []inbound.Addition{
Expand All @@ -75,7 +95,7 @@ func New(options LC.Tun, tcpIn chan<- C.ConnContext, udpIn chan<- C.PacketAdapte
}
}
tunName := options.Device
if tunName == "" {
if tunName == "" || !checkTunName(tunName) {
tunName = CalculateInterfaceName(InterfaceName)
options.Device = tunName
}
Expand Down

0 comments on commit 1a1e334

Please sign in to comment.