go 操作mac
cilium 1.15.1
MAC地址的长度是48位(6个字节),表示为12个16进制数,例如00:01:02:03:04:05。
生成随机mac
package main
import (
	"crypto/rand"
	"fmt"
	"net"
)
// MAC address is an net.HardwareAddr encapsulation to force cilium to only use MAC-48.
type MAC net.HardwareAddr
// String returns the string representation of m.
func (m MAC) String() string {
	return net.HardwareAddr(m).String()
}
// GenerateRandMAC generates a random unicast and locally administered MAC address.
func GenerateRandMAC() (MAC, error) {
	buf := make([]byte, 6)
	if _, err := rand.Read(buf); err != nil {
		return nil, fmt.Errorf("Unable to retrieve 6 rnd bytes: %s", err)
	}
	// Set locally administered addresses bit and reset multicast bit
	buf[0] = (buf[0] | 0x02) & 0xfe
	return buf, nil
}
func main() {
	if mac, err := GenerateRandMAC(); err == nil {
		fmt.Println(mac)
	}
	if mac, err := GenerateRandMAC(); err == nil {
		fmt.Println(mac)
	}
}
根据ipv4地址生成mac
前面4位固定是06:06。
package main
import "fmt"
func main() {
	// ipv4地址是100.101.102.15
	fmt.Println(fmt.Sprintf("06:06:%02x:%02x:%02x:%02x", 100, 101, 102, 15))
}
 
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号