Merge commit '10a89ef04df5669c5cdd02f786150a7ab8454e01'
authorGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Sat, 6 Jul 2013 16:57:17 +0000 (18:57 +0200)
committerGiuseppe Lettieri <g.lettieri@iet.unipi.it>
Sat, 6 Jul 2013 16:57:17 +0000 (18:57 +0200)
1  2 
Makefile.am
lib/automake.mk
lib/dpif-netdev.c
lib/dpif-provider.h
lib/dpif.c
lib/netdev-provider.h
lib/netdev.c

diff --cc Makefile.am
Simple merge
diff --cc lib/automake.mk
Simple merge
@@@ -220,13 -218,14 +225,15 @@@ create_dpif_netdev(struct dp_netdev *dp
      return &dpif->dpif;
  }
  
- static int
+ /* Choose an unused, non-zero port number and return it on success.
+  * Return ODPP_NONE on failure. */
+ static odp_port_t
  choose_port(struct dp_netdev *dp, const char *name)
  {
-     int port_no;
+     uint32_t port_no;
  
 -    if (dp->class != &dpif_netdev_class) {
 +    if (dp->class != &dpif_netdev_class && 
 +        dp->class != &dpif_planetlab_class) {
          const char *p;
          int start_no = 0;
  
@@@ -1284,99 -1186,45 +1194,53 @@@ dp_netdev_execute_actions(struct dp_net
                            const struct nlattr *actions,
                            size_t actions_len)
  {
-     const struct nlattr *a;
-     unsigned int left;
-     NL_ATTR_FOR_EACH_UNSAFE (a, left, actions, actions_len) {
-         int type = nl_attr_type(a);
-         switch ((enum ovs_action_attr) type) {
-         case OVS_ACTION_ATTR_OUTPUT:
-             dp_netdev_output_port(dp, packet, nl_attr_get_u32(a));
-             break;
-         case OVS_ACTION_ATTR_USERSPACE:
-             dp_netdev_action_userspace(dp, packet, key, a);
-             break;
-         case OVS_ACTION_ATTR_PUSH_VLAN: {
-             const struct ovs_action_push_vlan *vlan = nl_attr_get(a);
-             eth_push_vlan(packet, vlan->vlan_tci);
-             break;
-         }
-         case OVS_ACTION_ATTR_POP_VLAN:
-             eth_pop_vlan(packet);
-             break;
-         case OVS_ACTION_ATTR_PUSH_MPLS: {
-             const struct ovs_action_push_mpls *mpls = nl_attr_get(a);
-             push_mpls(packet, mpls->mpls_ethertype, mpls->mpls_lse);
-             break;
-          }
-         case OVS_ACTION_ATTR_POP_MPLS:
-             pop_mpls(packet, nl_attr_get_be16(a));
-             break;
-         case OVS_ACTION_ATTR_SET:
-             execute_set_action(packet, nl_attr_get(a));
-             break;
-         case OVS_ACTION_ATTR_SAMPLE:
-             dp_netdev_sample(dp, packet, key, a);
-             break;
-         case OVS_ACTION_ATTR_UNSPEC:
-         case __OVS_ACTION_ATTR_MAX:
-             NOT_REACHED();
-         }
-     }
+     odp_execute_actions(dp, packet, key, actions, actions_len,
+                         dp_netdev_output_port, dp_netdev_action_userspace);
  }
  
 +#define DPIF_NETDEV_CLASS_FUNCTIONS                   \
 +    dpif_netdev_enumerate,                            \
 +    dpif_netdev_port_open_type,                               \
 +    dpif_netdev_open,                                 \
 +    dpif_netdev_close,                                        \
 +    dpif_netdev_destroy,                              \
 +    dpif_netdev_run,                                  \
 +    dpif_netdev_wait,                                 \
 +    dpif_netdev_get_stats,                            \
 +    dpif_netdev_port_add,                             \
 +    dpif_netdev_port_del,                             \
 +    dpif_netdev_port_query_by_number,                 \
 +    dpif_netdev_port_query_by_name,                   \
 +    dpif_netdev_get_max_ports,                                \
 +    NULL,                       /* port_get_pid */    \
 +    dpif_netdev_port_dump_start,                      \
 +    dpif_netdev_port_dump_next,                               \
 +    dpif_netdev_port_dump_done,                               \
 +    dpif_netdev_port_poll,                            \
 +    dpif_netdev_port_poll_wait,                               \
 +    dpif_netdev_flow_get,                             \
 +    dpif_netdev_flow_put,                             \
 +    dpif_netdev_flow_del,                             \
 +    dpif_netdev_flow_flush,                           \
 +    dpif_netdev_flow_dump_start,                      \
 +    dpif_netdev_flow_dump_next,                               \
 +    dpif_netdev_flow_dump_done,                               \
 +    dpif_netdev_execute,                              \
 +    NULL,                       /* operate */         \
 +    dpif_netdev_recv_set,                             \
 +    dpif_netdev_queue_to_priority,                    \
 +    dpif_netdev_recv,                                 \
 +    dpif_netdev_recv_wait,                            \
 +    dpif_netdev_recv_purge,                           \
 +
  const struct dpif_class dpif_netdev_class = {
      "netdev",
 -    dpif_netdev_enumerate,
 -    dpif_netdev_port_open_type,
 -    dpif_netdev_open,
 -    dpif_netdev_close,
 -    dpif_netdev_destroy,
 -    dpif_netdev_run,
 -    dpif_netdev_wait,
 -    dpif_netdev_get_stats,
 -    dpif_netdev_port_add,
 -    dpif_netdev_port_del,
 -    dpif_netdev_port_query_by_number,
 -    dpif_netdev_port_query_by_name,
 -    dpif_netdev_get_max_ports,
 -    NULL,                       /* port_get_pid */
 -    dpif_netdev_port_dump_start,
 -    dpif_netdev_port_dump_next,
 -    dpif_netdev_port_dump_done,
 -    dpif_netdev_port_poll,
 -    dpif_netdev_port_poll_wait,
 -    dpif_netdev_flow_get,
 -    dpif_netdev_flow_put,
 -    dpif_netdev_flow_del,
 -    dpif_netdev_flow_flush,
 -    dpif_netdev_flow_dump_start,
 -    dpif_netdev_flow_dump_next,
 -    dpif_netdev_flow_dump_done,
 -    dpif_netdev_execute,
 -    NULL,                       /* operate */
 -    dpif_netdev_recv_set,
 -    dpif_netdev_queue_to_priority,
 -    dpif_netdev_recv,
 -    dpif_netdev_recv_wait,
 -    dpif_netdev_recv_purge,
 +    DPIF_NETDEV_CLASS_FUNCTIONS
 +};
 +
 +const struct dpif_class dpif_planetlab_class = {
 +    "planetlab",
 +    DPIF_NETDEV_CLASS_FUNCTIONS
  };
  
  static void
Simple merge
diff --cc lib/dpif.c
Simple merge
Simple merge
diff --cc lib/netdev.c
Simple merge