Makefile.am: Clean flake8-check too.
[cascardo/ovs.git] / lib / netlink-protocol.h
index 77f5c89..8938055 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2010, 2011, 2014 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #ifdef HAVE_NETLINK
 #include <linux/netlink.h>
 #include <linux/genetlink.h>
+
 #else
 #define NETLINK_GENERIC         16
 
-struct sockaddr_nl {
-    sa_family_t nl_family;
-    unsigned short int nl_pad;
-    uint32_t nl_pid;
-    uint32_t nl_groups;
-};
-BUILD_ASSERT_DECL(sizeof(struct sockaddr_nl) == 12);
-
 /* nlmsg_flags bits. */
 #define NLM_F_REQUEST           0x001
 #define NLM_F_MULTI             0x002
@@ -55,7 +48,9 @@ BUILD_ASSERT_DECL(sizeof(struct sockaddr_nl) == 12);
 
 #define NLM_F_ROOT              0x100
 #define NLM_F_MATCH             0x200
+#define NLM_F_EXCL              0x200
 #define NLM_F_ATOMIC            0x400
+#define NLM_F_CREATE            0x400
 #define NLM_F_DUMP              (NLM_F_ROOT | NLM_F_MATCH)
 
 /* nlmsg_type values. */
@@ -66,6 +61,8 @@ BUILD_ASSERT_DECL(sizeof(struct sockaddr_nl) == 12);
 
 #define NLMSG_MIN_TYPE          0x10
 
+#define MAX_LINKS               32
+
 struct nlmsghdr {
     uint32_t nlmsg_len;
     uint16_t nlmsg_type;
@@ -86,10 +83,6 @@ struct nlmsgerr
 };
 BUILD_ASSERT_DECL(sizeof(struct nlmsgerr) == 20);
 
-#define NETLINK_ADD_MEMBERSHIP  1
-#define NETLINK_DROP_MEMBERSHIP 2
-#define NETLINK_PKTINFO         3
-
 struct genlmsghdr {
     uint8_t cmd;
     uint8_t version;
@@ -150,4 +143,36 @@ enum {
 #define CTRL_ATTR_OP_MAX (__CTRL_ATTR_OP_MAX - 1)
 #endif  /* !HAVE_NETLINK */
 
+/* These were introduced all together in 2.6.24. */
+#ifndef NLA_TYPE_MASK
+#define NLA_F_NESTED        (1 << 15)
+#define NLA_F_NET_BYTEORDER (1 << 14)
+#define NLA_TYPE_MASK       ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
+#endif
+
+/* These were introduced all together in 2.6.14.  (We want our programs to
+ * support the newer kernel features even if compiled with older headers.) */
+#ifndef NETLINK_ADD_MEMBERSHIP
+#define NETLINK_ADD_MEMBERSHIP 1
+#define NETLINK_DROP_MEMBERSHIP 2
+#endif
+
+/* These were introduced all together in 2.6.23.  (We want our programs to
+ * support the newer kernel features even if compiled with older headers.) */
+#ifndef CTRL_ATTR_MCAST_GRP_MAX
+
+#undef CTRL_ATTR_MAX
+#define CTRL_ATTR_MAX 7
+#define CTRL_ATTR_MCAST_GROUPS 7
+
+enum {
+    CTRL_ATTR_MCAST_GRP_UNSPEC,
+    CTRL_ATTR_MCAST_GRP_NAME,
+    CTRL_ATTR_MCAST_GRP_ID,
+    __CTRL_ATTR_MCAST_GRP_MAX,
+};
+
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#endif /* CTRL_ATTR_MCAST_GRP_MAX */
+
 #endif /* netlink-protocol.h */