netdev-linux: Fix strict aliasing warnings.
[openvswitch] / lib / dpif-netdev.c
index 29f3cc98c3429bc594d2cffb2c517627be009ff5..82d7d74132e53b627e1764135dd65174ef587f24 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011 Nicira Networks.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -109,7 +109,7 @@ struct dp_netdev_flow {
 
     /* Actions. */
     struct nlattr *actions;
-    unsigned int actions_len;
+    size_t actions_len;
 };
 
 /* Interface to netdev-based datapath. */
@@ -142,7 +142,7 @@ static int dp_netdev_output_control(struct dp_netdev *, const struct ofpbuf *,
 static int dp_netdev_execute_actions(struct dp_netdev *,
                                      struct ofpbuf *, struct flow *,
                                      const struct nlattr *actions,
-                                     unsigned int actions_len);
+                                     size_t actions_len);
 
 static struct dpif_class dpif_dummy_class;
 
@@ -621,7 +621,7 @@ dpif_netdev_flow_get(const struct dpif *dpif, struct odp_flow flows[], int n)
 
 static int
 dpif_netdev_validate_actions(const struct nlattr *actions,
-                             unsigned int actions_len, bool *mutates)
+                             size_t actions_len, bool *mutates)
 {
     const struct nlattr *a;
     unsigned int left;
@@ -801,7 +801,7 @@ dpif_netdev_flow_list(const struct dpif *dpif, struct odp_flow flows[], int n)
 
 static int
 dpif_netdev_execute(struct dpif *dpif,
-                    const struct nlattr *actions, unsigned int actions_len,
+                    const struct nlattr *actions, size_t actions_len,
                     const struct ofpbuf *packet)
 {
     struct dp_netdev *dp = get_dp_netdev(dpif);
@@ -966,7 +966,7 @@ dp_netdev_run(void)
             if (!error) {
                 dp_netdev_port_input(dp, port, &packet);
             } else if (error != EAGAIN && error != EOPNOTSUPP) {
-                struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
+                static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
                 VLOG_ERR_RL(&rl, "error receiving data from %s: %s",
                             netdev_get_name(port->netdev), strerror(error));
             }
@@ -1060,7 +1060,7 @@ is_ip(const struct ofpbuf *packet, const struct flow *key)
 }
 
 static void
-dp_netdev_set_nw_addr(struct ofpbuf *packet, struct flow *key,
+dp_netdev_set_nw_addr(struct ofpbuf *packet, const struct flow *key,
                       const struct nlattr *a)
 {
     if (is_ip(packet, key)) {
@@ -1088,7 +1088,8 @@ dp_netdev_set_nw_addr(struct ofpbuf *packet, struct flow *key,
 }
 
 static void
-dp_netdev_set_nw_tos(struct ofpbuf *packet, struct flow *key, uint8_t nw_tos)
+dp_netdev_set_nw_tos(struct ofpbuf *packet, const struct flow *key,
+                     uint8_t nw_tos)
 {
     if (is_ip(packet, key)) {
         struct ip_header *nh = packet->l3;
@@ -1104,7 +1105,7 @@ dp_netdev_set_nw_tos(struct ofpbuf *packet, struct flow *key, uint8_t nw_tos)
 }
 
 static void
-dp_netdev_set_tp_port(struct ofpbuf *packet, struct flow *key,
+dp_netdev_set_tp_port(struct ofpbuf *packet, const struct flow *key,
                       const struct nlattr *a)
 {
        if (is_ip(packet, key)) {
@@ -1197,7 +1198,7 @@ static int
 dp_netdev_execute_actions(struct dp_netdev *dp,
                           struct ofpbuf *packet, struct flow *key,
                           const struct nlattr *actions,
-                          unsigned int actions_len)
+                          size_t actions_len)
 {
     const struct nlattr *a;
     unsigned int left;