X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fofp-util.c;h=803b0333d5dcc30f43497335f4446839736cd692;hb=daff3353a0dcb6db7c1468e442f95ae22d335e88;hp=00f9ce8bf124db73e5934522b9328a1880d0ad6a;hpb=38f2e36072c9065cae3d4fbab4a70e4f502706cd;p=sliver-openvswitch.git diff --git a/lib/ofp-util.c b/lib/ofp-util.c index 00f9ce8bf..803b0333d 100644 --- a/lib/ofp-util.c +++ b/lib/ofp-util.c @@ -21,6 +21,7 @@ #include #include #include "autopath.h" +#include "bundle.h" #include "byte-order.h" #include "classifier.h" #include "dynamic-string.h" @@ -1944,8 +1945,8 @@ make_echo_reply(const struct ofp_header *rq) /* Checks that 'port' is a valid output port for the OFPAT_OUTPUT action, given * that the switch will never have more than 'max_ports' ports. Returns 0 if * 'port' is valid, otherwise an ofp_mkerr() return code. */ -static int -check_output_port(uint16_t port, int max_ports) +int +ofputil_check_output_port(uint16_t port, int max_ports) { switch (port) { case OFPP_IN_PORT: @@ -1994,7 +1995,8 @@ validate_actions(const union ofp_action *actions, size_t n_actions, error = 0; switch ((enum ofputil_action_code) code) { case OFPUTIL_OFPAT_OUTPUT: - error = check_output_port(ntohs(a->output.port), max_ports); + error = ofputil_check_output_port(ntohs(a->output.port), + max_ports); break; case OFPUTIL_OFPAT_SET_VLAN_VID: @@ -2034,6 +2036,11 @@ validate_actions(const union ofp_action *actions, size_t n_actions, error = autopath_check((const struct nx_action_autopath *) a); break; + case OFPUTIL_NXAST_BUNDLE: + error = bundle_check((const struct nx_action_bundle *) a, + max_ports); + break; + case OFPUTIL_OFPAT_STRIP_VLAN: case OFPUTIL_OFPAT_SET_NW_SRC: case OFPUTIL_OFPAT_SET_NW_DST: @@ -2106,6 +2113,7 @@ static const struct ofputil_nxast_action nxast_actions[] = { { OFPUTIL_NXAST_SET_TUNNEL64, 24, 24 }, { OFPUTIL_NXAST_MULTIPATH, 32, 32 }, { OFPUTIL_NXAST_AUTOPATH, 24, 24 }, + { OFPUTIL_NXAST_BUNDLE, 32, UINT_MAX }, }; static int