- case ODPAT_STRIP_VLAN:
- dp_netdev_strip_vlan(packet, key);
- break;
-
- case ODPAT_SET_DL_SRC:
- dp_netdev_set_dl_src(packet, a->dl_addr.dl_addr);
- break;
-
- case ODPAT_SET_DL_DST:
- dp_netdev_set_dl_dst(packet, a->dl_addr.dl_addr);
- break;
-
- case ODPAT_SET_NW_SRC:
- case ODPAT_SET_NW_DST:
- dp_netdev_set_nw_addr(packet, key, &a->nw_addr);
- break;
-
- case ODPAT_SET_TP_SRC:
- case ODPAT_SET_TP_DST:
- dp_netdev_set_tp_port(packet, key, &a->tp_port);
- break;
- }
- }
+ case ODP_ACTION_ATTR_SET_DL_TCI:
+ dp_netdev_set_dl_tci(packet, nl_attr_get_be16(a));
+ break;
+
+ case ODP_ACTION_ATTR_STRIP_VLAN:
+ dp_netdev_strip_vlan(packet);
+ break;
+
+ case ODP_ACTION_ATTR_SET_DL_SRC:
+ dp_netdev_set_dl_src(packet, nl_attr_get_unspec(a, ETH_ADDR_LEN));
+ break;
+
+ case ODP_ACTION_ATTR_SET_DL_DST:
+ dp_netdev_set_dl_dst(packet, nl_attr_get_unspec(a, ETH_ADDR_LEN));
+ break;
+
+ case ODP_ACTION_ATTR_SET_NW_SRC:
+ case ODP_ACTION_ATTR_SET_NW_DST:
+ dp_netdev_set_nw_addr(packet, key, a);
+ break;
+
+ case ODP_ACTION_ATTR_SET_NW_TOS:
+ dp_netdev_set_nw_tos(packet, key, nl_attr_get_u8(a));
+ break;
+
+ case ODP_ACTION_ATTR_SET_TP_SRC:
+ case ODP_ACTION_ATTR_SET_TP_DST:
+ dp_netdev_set_tp_port(packet, key, a);
+ break;
+
+ case ODP_ACTION_ATTR_DROP_SPOOFED_ARP:
+ if (dp_netdev_is_spoofed_arp(packet, key)) {
+ return 0;
+ }
+ }
+ }