diff options
author | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-17 00:26:52 +0200 |
---|---|---|
committer | Duncan Mac-Vicar P <dmacvicar@suse.de> | 2016-05-17 00:26:52 +0200 |
commit | 991d27783c90aec9e92bbf91e4d48e87f5897090 (patch) | |
tree | 29ee03ee7b2a91d63415abe0a17035b89fb9b23a /libvirt/utils.go | |
parent | 61227d660a95759bb80aa33dfe8fd1893b49d6f1 (diff) | |
download | terraform-provider-libvirt-991d27783c90aec9e92bbf91e4d48e87f5897090.tar terraform-provider-libvirt-991d27783c90aec9e92bbf91e4d48e87f5897090.tar.gz |
support for ip and connection information in libvirt.domain
Diffstat (limited to 'libvirt/utils.go')
-rw-r--r-- | libvirt/utils.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libvirt/utils.go b/libvirt/utils.go index 3dc8e17e..ee64d07b 100644 --- a/libvirt/utils.go +++ b/libvirt/utils.go @@ -1,6 +1,7 @@ package libvirt import ( + "crypto/rand" "fmt" "time" ) @@ -35,3 +36,18 @@ func WaitForSuccess(errorMessage string, f func() error) error { } } } + +func RandomMACAddress() (string, error) { + buf := make([]byte, 6) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + // set local bit and unicast + buf[0] = (buf[0] | 2) & 0xfe + // Set the local bit + buf[0] |= 2 + + return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]), nil +} |