Fix windows bssid matching

This commit is contained in:
世界
2026-04-19 23:45:12 +08:00
parent b3606e33a6
commit 3124cdd661
3 changed files with 23 additions and 1 deletions

View File

@@ -1,6 +1,9 @@
package adapter package adapter
import ( import (
"encoding/hex"
"net"
"strings"
"time" "time"
C "github.com/sagernet/sing-box/constant" C "github.com/sagernet/sing-box/constant"
@@ -51,6 +54,24 @@ type WIFIState struct {
BSSID string BSSID string
} }
func NormalizeWIFIBSSID(bssid string) string {
bssid = strings.TrimSpace(bssid)
if bssid == "" {
return ""
}
parsed, err := net.ParseMAC(bssid)
if err == nil && len(parsed) == 6 {
return parsed.String()
}
if len(bssid) == 12 {
decoded, err := hex.DecodeString(bssid)
if err == nil {
return net.HardwareAddr(decoded).String()
}
}
return bssid
}
type NetworkInterface struct { type NetworkInterface struct {
control.Interface control.Interface
Type C.InterfaceType Type C.InterfaceType

View File

@@ -424,6 +424,7 @@ func (r *NetworkManager) WIFIState() adapter.WIFIState {
} }
func (r *NetworkManager) onWIFIStateChanged(state adapter.WIFIState) { func (r *NetworkManager) onWIFIStateChanged(state adapter.WIFIState) {
state.BSSID = adapter.NormalizeWIFIBSSID(state.BSSID)
r.wifiStateMutex.Lock() r.wifiStateMutex.Lock()
if state != r.wifiState { if state != r.wifiState {
r.wifiState = state r.wifiState = state

View File

@@ -18,7 +18,7 @@ type WIFIBSSIDItem struct {
func NewWIFIBSSIDItem(networkManager adapter.NetworkManager, bssidList []string) *WIFIBSSIDItem { func NewWIFIBSSIDItem(networkManager adapter.NetworkManager, bssidList []string) *WIFIBSSIDItem {
bssidMap := make(map[string]bool) bssidMap := make(map[string]bool)
for _, bssid := range bssidList { for _, bssid := range bssidList {
bssidMap[bssid] = true bssidMap[adapter.NormalizeWIFIBSSID(bssid)] = true
} }
return &WIFIBSSIDItem{ return &WIFIBSSIDItem{
bssidList, bssidList,