summaryrefslogtreecommitdiff
path: root/libvirt/utils.go
diff options
context:
space:
mode:
authorDuncan Mac-Vicar P <dmacvicar@suse.de>2016-05-17 00:26:52 +0200
committerDuncan Mac-Vicar P <dmacvicar@suse.de>2016-05-17 00:26:52 +0200
commit991d27783c90aec9e92bbf91e4d48e87f5897090 (patch)
tree29ee03ee7b2a91d63415abe0a17035b89fb9b23a /libvirt/utils.go
parent61227d660a95759bb80aa33dfe8fd1893b49d6f1 (diff)
downloadterraform-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.go16
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
+}