gomanuf icon indicating copy to clipboard operation
gomanuf copied to clipboard

OUI conversion is unstable, such as: 8C:1C:DA:45:E7:B6

Open Guo-HT opened this issue 2 years ago • 1 comments

现象:某些带有指定前缀长度(非24)匹配的MAC地址会有匹配不稳定的情况;

解决方法如下: Search函数在搜索时需要先对d的key做排序,然后按序检索

func Search(mac string) (result string) {
	defer func() {
		if r := recover(); r != nil {
			result = ""
		}
	}()
	s := strings.Split(strings.ToUpper(mac), ":")
	bint := b2uint64(s)
	
	var keyFirstFloor []int
	for b := range d {
		keyFirstFloor = append(keyFirstFloor, b)
	}
	sort.Sort(sort.Reverse(sort.IntSlice(keyFirstFloor)))

	for _, b := range keyFirstFloor {
		k := 48 - b
		bint = (bint >> uint8(k)) << uint8(k)
		if _, ok := d[b].(map[uint64]string)[bint]; ok {
			return d[b].(map[uint64]string)[bint]
		}
	}
	return ""
}

Guo-HT avatar Jan 16 '24 12:01 Guo-HT

👍🏻

timest avatar Apr 06 '24 04:04 timest