When trying to use virtio-net-vpnkit, you receive the error: ``` Assertion failed: (sizeof("VERSION_SHA1") == sizeof(init_msg.commit) + 1), function vpnkit_connect, file /private/tmp/docker-machine-driver-xhyve-20161208-25683-18fih1b/gopath/src/github.com/zchee/docker-machine-driver-xhyve/vendor/github.com/zchee/libhyperkit/pci_virtio_net_vpnkit.c, line 303. ``` Looking at the mentioned line you find the [offending code](https://github.com/zchee/libhyperkit/blob/master/pci_virtio_net_vpnkit.c#L303): ``` /* msg.commit is not NULL terminated */ assert(sizeof("VERSION_SHA1") == sizeof(init_msg.commit) + 1); memcpy(&init_msg.commit, "VERSION_SHA1", sizeof(init_msg.commit)); ``` VERSION_SHA1 should be unqouted and pointed to an actual commit sha1, so the sizeof assert validates. The VERSION_SHA1 value is even being defined in [xhyve.go](https://github.com/zchee/libhyperkit/blob/master/xhyve.go#L5) but as go drops quotes when passing the option to the compiler [(BUG),](https://github.com/golang/go/issues/12281) the C code breaks because VERSION_SHA1 does not resolve to a string, but to a weird identifier: `assert(sizeof(2db2b2c60799918dafb3d95368e935c3f620911d) == sizeof(init_msg.commit) + 1);` Instead of the expected: `assert(sizeof("2db2b2c60799918dafb3d95368e935c3f620911d") == sizeof(init_msg.commit) + 1);` In docker/hyperkit, that value gets passed from the [Makefile](https://github.com/docker/hyperkit/commit/e21b1b24d9ee2603e59c3eab9ca42140c5deb61f#diff-b67911656ef5d18c4ae36cb6741b7965R113) but we do not have one available here to workaround the Go bug. Maybe one solution would be to hardcode it in pci_virtio_net_vpnkit.c (or even better, an include file somewhere else) while still allowing customization: ``` #ifndef VERSION_SHA1 #define VERSION_SHA1 "2db2b2c60799918dafb3d95368e935c3f620911d" #endif ```