X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fodp-util.c;h=798e42540a7dd1b6199965810979f519bff1fb9f;hb=fb8c93473efacd67a50117d0f2a3084f2d96ceca;hp=67d1b3ee7951eaeb9d7710fbb050606f13c87893;hpb=659586efcf6f9539282da9447007897907c41112;p=openvswitch diff --git a/lib/odp-util.c b/lib/odp-util.c index 67d1b3ee..798e4254 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -30,13 +30,10 @@ union odp_action * odp_actions_add(struct odp_actions *actions, uint16_t type) { union odp_action *a; - if (actions->n_actions < MAX_ODP_ACTIONS) { - a = &actions->actions[actions->n_actions++]; - } else { - COVERAGE_INC(odp_overflow); - actions->n_actions = MAX_ODP_ACTIONS + 1; - a = &actions->actions[MAX_ODP_ACTIONS - 1]; - } + size_t idx; + + idx = actions->n_actions++ & (MAX_ODP_ACTIONS - 1); + a = &actions->actions[idx]; memset(a, 0, sizeof *a); a->type = type; return a; @@ -92,6 +89,15 @@ format_odp_action(struct ds *ds, const union odp_action *a) case ODPAT_SET_TP_DST: ds_put_format(ds, "set_tp_dst(%"PRIu16")", ntohs(a->tp_port.tp_port)); break; + case ODPAT_SET_PRIORITY: + ds_put_format(ds, "set_priority(0x%"PRIx32")", a->priority.priority); + break; + case ODPAT_POP_PRIORITY: + ds_put_cstr(ds, "pop_priority"); + break; + case ODPAT_DROP_SPOOFED_ARP: + ds_put_cstr(ds, "drop_spoofed_arp"); + break; default: ds_put_format(ds, "***bad action 0x%"PRIx16"***", a->type); break;