X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fmeta-flow.c;h=b53465c74d577b4bdaf08355ed14a99e84360f72;hb=a15fce8efcd159d729ad4749a6c3a1b7dbb36571;hp=e38e158756950d49a80d1d62ba5673a913a4d2ed;hpb=bedde04cf1adfe8bde736f7bbec95ea7e4f04d20;p=sliver-openvswitch.git diff --git a/lib/meta-flow.c b/lib/meta-flow.c index e38e15875..b53465c74 100644 --- a/lib/meta-flow.c +++ b/lib/meta-flow.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012 Nicira, Inc. + * Copyright (c) 2011, 2012, 2013 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ #include "meta-flow.h" -#include #include #include #include @@ -543,7 +542,7 @@ const struct mf_field *mf_from_nxm_header__(uint32_t header); const struct mf_field * mf_from_id(enum mf_field_id id) { - assert((unsigned int) id < MFF_N_IDS); + ovs_assert((unsigned int) id < MFF_N_IDS); return &mf_fields[id]; } @@ -583,7 +582,7 @@ static void nxm_init_add_field(const struct mf_field *mf, uint32_t header) { if (header) { - assert(!mf_from_nxm_header__(header)); + ovs_assert(!mf_from_nxm_header__(header)); add_nxm_field(header, mf); if (mf->maskable != MFM_NONE) { add_nxm_field(NXM_MAKE_WILD_HEADER(header), mf); @@ -761,13 +760,6 @@ mf_is_mask_valid(const struct mf_field *mf, const union mf_value *mask) NOT_REACHED(); } -static bool -is_ip_any(const struct flow *flow) -{ - return (flow->dl_type == htons(ETH_TYPE_IP) || - flow->dl_type == htons(ETH_TYPE_IPV6)); -} - static bool is_icmpv4(const struct flow *flow) { @@ -1453,6 +1445,7 @@ mf_set_wild(const struct mf_field *mf, struct match *match) case MFF_METADATA: match_set_metadata_masked(match, htonll(0), htonll(0)); + break; case MFF_IN_PORT: match->flow.in_port = 0; @@ -1936,7 +1929,7 @@ mf_from_ethernet_string(const struct mf_field *mf, const char *s, uint8_t mac[ETH_ADDR_LEN], uint8_t mask[ETH_ADDR_LEN]) { - assert(mf->n_bytes == ETH_ADDR_LEN); + ovs_assert(mf->n_bytes == ETH_ADDR_LEN); switch (sscanf(s, ETH_ADDR_SCAN_FMT"/"ETH_ADDR_SCAN_FMT, ETH_ADDR_SCAN_ARGS(mac), ETH_ADDR_SCAN_ARGS(mask))){ @@ -1958,7 +1951,7 @@ mf_from_ipv4_string(const struct mf_field *mf, const char *s, { int prefix; - assert(mf->n_bytes == sizeof *ip); + ovs_assert(mf->n_bytes == sizeof *ip); if (sscanf(s, IP_SCAN_FMT"/"IP_SCAN_FMT, IP_SCAN_ARGS(ip), IP_SCAN_ARGS(mask)) == IP_SCAN_COUNT * 2) { @@ -1990,7 +1983,7 @@ mf_from_ipv6_string(const struct mf_field *mf, const char *s, const char *name, *netmask; int retval; - assert(mf->n_bytes == sizeof *value); + ovs_assert(mf->n_bytes == sizeof *value); name = strtok_r(str, "/", &save_ptr); retval = name ? lookup_ipv6(name, value) : EINVAL; @@ -2028,7 +2021,7 @@ mf_from_ofp_port_string(const struct mf_field *mf, const char *s, { uint16_t port; - assert(mf->n_bytes == sizeof(ovs_be16)); + ovs_assert(mf->n_bytes == sizeof(ovs_be16)); if (*s == '-') { return xasprintf("%s: negative values not supported for %s", s, mf->name); @@ -2183,7 +2176,7 @@ mf_parse(const struct mf_field *mf, const char *s, return mf_from_frag_string(s, &value->u8, &mask->u8); case MFS_TNL_FLAGS: - assert(mf->n_bytes == sizeof(ovs_be16)); + ovs_assert(mf->n_bytes == sizeof(ovs_be16)); return mf_from_tun_flags_string(s, &value->be16, &mask->be16); } NOT_REACHED(); @@ -2215,7 +2208,7 @@ mf_format_integer_string(const struct mf_field *mf, const uint8_t *valuep, unsigned long long int integer; int i; - assert(mf->n_bytes <= 8); + ovs_assert(mf->n_bytes <= 8); integer = 0; for (i = 0; i < mf->n_bytes; i++) { @@ -2243,15 +2236,12 @@ mf_format_integer_string(const struct mf_field *mf, const uint8_t *valuep, } static void -mf_format_frag_string(const uint8_t *valuep, const uint8_t *maskp, - struct ds *s) +mf_format_frag_string(uint8_t value, uint8_t mask, struct ds *s) { const struct frag_handling *h; - uint8_t value = *valuep; - uint8_t mask = *maskp; - value &= mask; mask &= FLOW_NW_FRAG_MASK; + value &= mask; for (h = all_frags; h < &all_frags[ARRAY_SIZE(all_frags)]; h++) { if (value == h->value && mask == h->mask) { @@ -2310,7 +2300,7 @@ mf_format(const struct mf_field *mf, break; case MFS_FRAG: - mf_format_frag_string(&value->u8, &mask->u8, s); + mf_format_frag_string(value->u8, mask ? mask->u8 : UINT8_MAX, s); break; case MFS_TNL_FLAGS: