dpif-linux: Avoid unaligned accesses to vport stats sent by the datapath.
[sliver-openvswitch.git] / lib / dpif-linux.h
index 3a2c816..a9f8bfe 100644 (file)
@@ -32,14 +32,17 @@ struct dpif_linux_vport {
     uint32_t port_no;                      /* UINT32_MAX if unknown. */
     enum ovs_vport_type type;
 
-    /* Attributes. */
+    /* Attributes.
+     *
+     * The 'stats' member points to 64-bit data that might only be aligned on
+     * 32-bit boundaries, so use get_unaligned_u64() to access its values.
+     */
     const char *name;                      /* OVS_VPORT_ATTR_NAME. */
-    const struct rtnl_link_stats64 *stats; /* OVS_VPORT_ATTR_STATS. */
+    const uint32_t *upcall_pid;            /* OVS_VPORT_ATTR_UPCALL_PID. */
+    const struct ovs_vport_stats *stats;   /* OVS_VPORT_ATTR_STATS. */
     const uint8_t *address;                /* OVS_VPORT_ATTR_ADDRESS. */
-    int mtu;                               /* OVS_VPORT_ATTR_MTU. */
     const struct nlattr *options;          /* OVS_VPORT_ATTR_OPTIONS. */
     size_t options_len;
-    int ifindex;                           /* OVS_VPORT_ATTR_IFINDEX. */
 };
 
 void dpif_linux_vport_init(struct dpif_linux_vport *);