netdev-dpdk: fix mbuf leaks
[cascardo/ovs.git] / datapath-windows / include / OvsDpInterfaceExt.h
index e9faecc..e235376 100644 (file)
 
 #define OVS_IOCTL_DEVICE_TYPE 45000
 
-/* We used Direct I/O (zero copy) for the buffers. */
 #define OVS_IOCTL_START   0x100
+/* We used Direct I/O (zero copy) for the buffers. */
+/* Non-Netlink-based IOCTLs. */
+#define OVS_IOCTL_GET_PID \
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x0, METHOD_BUFFERED,\
+              FILE_WRITE_ACCESS)
+/* Netlink-based IOCTLs. */
 #define OVS_IOCTL_READ \
-    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x0, METHOD_OUT_DIRECT,\
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x1, METHOD_OUT_DIRECT,\
               FILE_READ_ACCESS)
 #define OVS_IOCTL_READ_EVENT \
-    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x1, METHOD_OUT_DIRECT, \
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x2, METHOD_OUT_DIRECT, \
               FILE_READ_ACCESS)
 #define OVS_IOCTL_READ_PACKET \
-    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x2, METHOD_OUT_DIRECT, \
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x3, METHOD_OUT_DIRECT, \
               FILE_READ_ACCESS)
 #define OVS_IOCTL_WRITE \
-    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x3, METHOD_IN_DIRECT,\
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x4, METHOD_IN_DIRECT,\
               FILE_READ_ACCESS)
 #define OVS_IOCTL_TRANSACT \
-    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x4, METHOD_OUT_DIRECT,\
+    CTL_CODE (OVS_IOCTL_DEVICE_TYPE, OVS_IOCTL_START + 0x5, METHOD_OUT_DIRECT,\
               FILE_WRITE_ACCESS)
 
 /*
 
 /* Commands available under the OVS_WIN_CONTROL_FAMILY. */
 enum ovs_win_control_cmd {
-    OVS_CTRL_CMD_WIN_GET_PID,
     OVS_CTRL_CMD_WIN_PEND_REQ,
+    OVS_CTRL_CMD_WIN_PEND_PACKET_REQ,
     OVS_CTRL_CMD_MC_SUBSCRIBE_REQ,
+    OVS_CTRL_CMD_PACKET_SUBSCRIBE_REQ,
 
     /* This command is logically belong to the Vport family */
-    OVS_CTRL_CMD_EVENT_NOTIFY
+    OVS_CTRL_CMD_EVENT_NOTIFY,
+    OVS_CTRL_CMD_READ_NOTIFY
 };
 
 /* NL Attributes for joining/unjoining an MC group */
 enum ovs_nl_mcast_attr {
-    OVS_NL_ATTR_MCAST_GRP,   /* (UINT32) Join an MC group */
-    OVS_NL_ATTR_MCAST_JOIN,  /* (UINT8) 1/0 - Join/Unjoin */
+    OVS_NL_ATTR_MCAST_GRP,        /* (UINT32) Join an MC group */
+    OVS_NL_ATTR_MCAST_JOIN,       /* (UINT8) 1/0 - Join/Unjoin */
+    OVS_NL_ATTR_PACKET_SUBSCRIBE, /* (UNINT8): 1/0 - subscribe/unsubscribe */
+    OVS_NL_ATTR_PACKET_PID,       /* (UNINT32) netlink PID to receive upcalls */
     __OVS_NL_ATTR_CTRL_MAX
 };
 #define OVS_WIN_CONTROL_ATTR_MAX (__OVS_NL_ATTR_CTRL_MAX - 1)
@@ -103,8 +112,6 @@ enum ovs_win_netdev_cmd {
     OVS_WIN_NETDEV_CMD_GET,     /* information about the netdev. */
 };
 
-#define OVS_WIN_NETDEV_ATTR_MAX (__OVS_WIN_NETDEV_ATTR_MAX - 1)
-
 /**
  * For every vport on the datapath, there is a corresponding netdev.  General
  * network device attributes of a vport that are not specific to OVS, such as
@@ -141,12 +148,11 @@ enum ovs_win_netdev_attr {
     OVS_WIN_NETDEV_ATTR_IF_FLAGS,    /* Interface flags o the vport. */
     __OVS_WIN_NETDEV_ATTR_MAX
 };
+#define OVS_WIN_NETDEV_ATTR_MAX (__OVS_WIN_NETDEV_ATTR_MAX - 1)
 
 #define OVS_WIN_NETDEV_IFF_UP                   (1 << 0)
 #define OVS_WIN_NETDEV_IFF_PROMISC              (1 << 1)
 
-#define OVS_WIN_NETDEV_ATTR_MAX (__OVS_WIN_NETDEV_ATTR_MAX - 1)
-
 typedef struct ovs_dp_stats OVS_DP_STATS;
 typedef enum ovs_vport_type OVS_VPORT_TYPE;