chiark / gitweb /
missing.h: add AF_VSOCK bits
authorStefan Hajnoczi <stefanha@redhat.com>
Tue, 10 Jan 2017 13:35:18 +0000 (13:35 +0000)
committerSven Eden <yamakuzure@gmx.net>
Mon, 17 Jul 2017 15:58:35 +0000 (17:58 +0200)
Ubuntu 14.04 (Trusty) kernel header packages ship without
<linux/vm_sockets.h>.  Only struct sockaddr_vm and VMADDR_CID_ANY will
be needed by elogind and they are simple enough to go in missing.h.

CentOS 7 <sys/socket.h> does not define AF_VSOCK.  Define it so the code
can compile although actual socket(2) calls may fail at runtime if the
address family isn't available.

src/basic/missing.h

index 50c9e7cd8870f0d6f6b0aa94b2f859fdffef7df6..beadd70ac1da9d32bddeb3a3395493d4aa9ccacd 100644 (file)
@@ -34,6 +34,7 @@
 #include <net/ethernet.h>
 #include <stdlib.h>
 #include <sys/resource.h>
+#include <sys/socket.h>
 #include <sys/syscall.h>
 #include <uchar.h>
 #include <unistd.h>
 #include <linux/btrfs.h>
 #endif
 
+#ifdef HAVE_LINUX_VM_SOCKETS_H
+#include <linux/vm_sockets.h>
+#else
+#define VMADDR_CID_ANY -1U
+struct sockaddr_vm {
+        unsigned short svm_family;
+        unsigned short svm_reserved1;
+        unsigned int svm_port;
+        unsigned int svm_cid;
+        unsigned char svm_zero[sizeof(struct sockaddr) -
+                               sizeof(unsigned short) -
+                               sizeof(unsigned short) -
+                               sizeof(unsigned int) -
+                               sizeof(unsigned int)];
+};
+#endif /* !HAVE_LINUX_VM_SOCKETS_H */
+
 #include "macro.h"
 
 #ifndef RLIMIT_RTTIME
@@ -1172,4 +1190,8 @@ struct ethtool_link_settings {
 #define SOL_ALG 279
 #endif
 
+#ifndef AF_VSOCK
+#define AF_VSOCK 40
+#endif
+
 #include "missing_syscall.h"