X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fodp-util.c;h=442c939a7d5096ca59d0579176653e8a92e1c952;hb=58453fde168c5938afe445f8e22f8aa96d02083f;hp=a80016209ca96d818846a9c8680edfb22db5d5a6;hpb=58fda1dab104041fc693032475ec4662c1a52849;p=sliver-openvswitch.git diff --git a/lib/odp-util.c b/lib/odp-util.c index a80016209..442c939a7 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Nicira Networks. + * Copyright (c) 2009, 2010 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -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; @@ -55,6 +52,9 @@ format_odp_action(struct ds *ds, const union odp_action *a) case ODPAT_CONTROLLER: ds_put_format(ds, "ctl(%"PRIu32")", a->controller.arg); break; + case ODPAT_SET_TUNNEL: + ds_put_format(ds, "set_tunnel(0x%08"PRIx32")", ntohl(a->tunnel.tun_id)); + break; case ODPAT_SET_VLAN_VID: ds_put_format(ds, "set_vlan(%"PRIu16")", ntohs(a->vlan_vid.vlan_vid)); break; @@ -80,14 +80,23 @@ format_odp_action(struct ds *ds, const union odp_action *a) ds_put_format(ds, "set_nw_dst("IP_FMT")", IP_ARGS(&a->nw_addr.nw_addr)); break; + case ODPAT_SET_NW_TOS: + ds_put_format(ds, "set_nw_tos(%"PRIu8")", a->nw_tos.nw_tos); + break; case ODPAT_SET_TP_SRC: ds_put_format(ds, "set_tp_src(%"PRIu16")", ntohs(a->tp_port.tp_port)); break; 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; default: - ds_put_format(ds, "***bad action %"PRIu16"***", a->type); + ds_put_format(ds, "***bad action 0x%"PRIx16"***", a->type); break; } }