git://git.onelab.eu
/
sliver-openvswitch.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge remote-tracking branch 'ovs-dev/master'
[sliver-openvswitch.git]
/
lib
/
meta-flow.c
diff --git
a/lib/meta-flow.c
b/lib/meta-flow.c
index
c0925e8
..
b37f781
100644
(file)
--- a/
lib/meta-flow.c
+++ b/
lib/meta-flow.c
@@
-41,13
+41,15
@@
VLOG_DEFINE_THIS_MODULE(meta_flow);
sizeof ((union mf_value *)0)->MEMBER, \
8 * sizeof ((union mf_value *)0)->MEMBER
sizeof ((union mf_value *)0)->MEMBER, \
8 * sizeof ((union mf_value *)0)->MEMBER
-static const struct mf_field mf_fields[MFF_N_IDS] = {
+extern const struct mf_field mf_fields[MFF_N_IDS]; /* Silence a warning. */
+
+const struct mf_field mf_fields[MFF_N_IDS] = {
/* ## -------- ## */
/* ## metadata ## */
/* ## -------- ## */
{
/* ## -------- ## */
/* ## metadata ## */
/* ## -------- ## */
{
- MFF_TUN_ID, "tun_id",
NULL
,
+ MFF_TUN_ID, "tun_id",
"tunnel_id"
,
MF_FIELD_SIZES(be64),
MFM_FULLY,
MFS_HEXADECIMAL,
MF_FIELD_SIZES(be64),
MFM_FULLY,
MFS_HEXADECIMAL,
@@
-409,7
+411,7
@@
static const struct mf_field mf_fields[MFF_N_IDS] = {
},
{
},
{
- MFF_IP_PROTO, "nw_proto",
NULL
,
+ MFF_IP_PROTO, "nw_proto",
"ip_proto"
,
MF_FIELD_SIZES(u8),
MFM_NONE,
MFS_DECIMAL,
MF_FIELD_SIZES(u8),
MFM_NONE,
MFS_DECIMAL,
@@
-431,8
+433,8
@@
static const struct mf_field mf_fields[MFF_N_IDS] = {
OFPUTIL_P_ANY, /* Will be shifted for OXM. */
OFPUTIL_P_NONE,
}, {
OFPUTIL_P_ANY, /* Will be shifted for OXM. */
OFPUTIL_P_NONE,
}, {
- MFF_IP_DSCP_SHIFTED, "
nw_tos_shifted
", NULL,
-
MF_FIELD_SIZES(u8)
,
+ MFF_IP_DSCP_SHIFTED, "
ip_dscp
", NULL,
+
1, 6
,
MFM_NONE,
MFS_DECIMAL,
MFP_IP_ANY,
MFM_NONE,
MFS_DECIMAL,
MFP_IP_ANY,
@@
-442,7
+444,7
@@
static const struct mf_field mf_fields[MFF_N_IDS] = {
OFPUTIL_P_ANY, /* Will be shifted for non-OXM. */
OFPUTIL_P_NONE,
}, {
OFPUTIL_P_ANY, /* Will be shifted for non-OXM. */
OFPUTIL_P_NONE,
}, {
- MFF_IP_ECN, "nw_ecn",
NULL
,
+ MFF_IP_ECN, "nw_ecn",
"ip_ecn"
,
1, 2,
MFM_NONE,
MFS_DECIMAL,
1, 2,
MFM_NONE,
MFS_DECIMAL,
@@
-728,14
+730,6
@@
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
const struct mf_field *mf_from_nxm_header__(uint32_t header);
static void nxm_init(void);
const struct mf_field *mf_from_nxm_header__(uint32_t header);
static void nxm_init(void);
-/* Returns the field with the given 'id'. */
-const struct mf_field *
-mf_from_id(enum mf_field_id id)
-{
- ovs_assert((unsigned int) id < MFF_N_IDS);
- return &mf_fields[id];
-}
-
/* Returns the field with the given 'name', or a null pointer if no field has
* that name. */
const struct mf_field *
/* Returns the field with the given 'name', or a null pointer if no field has
* that name. */
const struct mf_field *
@@
-2379,15
+2373,15
@@
mf_from_ethernet_string(const struct mf_field *mf, const char *s,
ovs_assert(mf->n_bytes == ETH_ADDR_LEN);
n = -1;
ovs_assert(mf->n_bytes == ETH_ADDR_LEN);
n = -1;
- if (
sscanf(s, ETH_ADDR_SCAN_FMT"%n", ETH_ADDR_SCAN_ARGS(mac), &n) > 0
+ if (
ovs_scan(s, ETH_ADDR_SCAN_FMT"%n", ETH_ADDR_SCAN_ARGS(mac), &n)
&& n == strlen(s)) {
memset(mask, 0xff, ETH_ADDR_LEN);
return NULL;
}
n = -1;
&& n == strlen(s)) {
memset(mask, 0xff, ETH_ADDR_LEN);
return NULL;
}
n = -1;
- if (
sscanf
(s, ETH_ADDR_SCAN_FMT"/"ETH_ADDR_SCAN_FMT"%n",
- ETH_ADDR_SCAN_ARGS(mac), ETH_ADDR_SCAN_ARGS(mask), &n) > 0
+ if (
ovs_scan
(s, ETH_ADDR_SCAN_FMT"/"ETH_ADDR_SCAN_FMT"%n",
+ ETH_ADDR_SCAN_ARGS(mac), ETH_ADDR_SCAN_ARGS(mask), &n)
&& n == strlen(s)) {
return NULL;
}
&& n == strlen(s)) {
return NULL;
}
@@
-2403,11
+2397,10
@@
mf_from_ipv4_string(const struct mf_field *mf, const char *s,
ovs_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
) {
+ if (
ovs_scan
(s, IP_SCAN_FMT"/"IP_SCAN_FMT,
+
IP_SCAN_ARGS(ip), IP_SCAN_ARGS(mask))
) {
/* OK. */
/* OK. */
- } else if (sscanf(s, IP_SCAN_FMT"/%d",
- IP_SCAN_ARGS(ip), &prefix) == IP_SCAN_COUNT + 1) {
+ } else if (ovs_scan(s, IP_SCAN_FMT"/%d", IP_SCAN_ARGS(ip), &prefix)) {
if (prefix <= 0 || prefix > 32) {
return xasprintf("%s: network prefix bits not between 1 and "
"32", s);
if (prefix <= 0 || prefix > 32) {
return xasprintf("%s: network prefix bits not between 1 and "
"32", s);
@@
-2416,7
+2409,7
@@
mf_from_ipv4_string(const struct mf_field *mf, const char *s,
} else {
*mask = htonl(((1u << prefix) - 1) << (32 - prefix));
}
} else {
*mask = htonl(((1u << prefix) - 1) << (32 - prefix));
}
- } else if (
sscanf(s, IP_SCAN_FMT, IP_SCAN_ARGS(ip)) == IP_SCAN_COUNT
) {
+ } else if (
ovs_scan(s, IP_SCAN_FMT, IP_SCAN_ARGS(ip))
) {
*mask = OVS_BE32_MAX;
} else {
return xasprintf("%s: invalid IP address", s);
*mask = OVS_BE32_MAX;
} else {
return xasprintf("%s: invalid IP address", s);
@@
-2554,9
+2547,8
@@
parse_flow_tun_flags(const char *s_, const char *(*bit_to_string)(uint32_t),
int name_len;
unsigned long long int flags;
uint32_t bit;
int name_len;
unsigned long long int flags;
uint32_t bit;
- int n0;
- if (
sscanf(name, "%lli%n", &flags, &n0) > 0 && n0 > 0
) {
+ if (
ovs_scan(name, "%lli", &flags)
) {
result |= flags;
continue;
}
result |= flags;
continue;
}
@@
-2600,7
+2592,7
@@
mf_from_tun_flags_string(const char *s, ovs_be16 *valuep, ovs_be16 *maskp)
}
return xasprintf("%s: unknown tunnel flags (valid flags are \"df\", "
}
return xasprintf("%s: unknown tunnel flags (valid flags are \"df\", "
- "\"csum\", \"key\"", s);
+ "\"csum\", \"key\"
)
", s);
}
/* Parses 's', a string value for field 'mf', into 'value' and 'mask'. Returns
}
/* Parses 's', a string value for field 'mf', into 'value' and 'mask'. Returns
@@
-2947,9
+2939,9
@@
mf_parse_subfield__(struct mf_subfield *sf, const char **sp)
}
s += name_len;
}
s += name_len;
- if (
sscanf(s, "[%d..%d]", &start, &end) == 2
) {
+ if (
ovs_scan(s, "[%d..%d]", &start, &end)
) {
/* Nothing to do. */
/* Nothing to do. */
- } else if (
sscanf(s, "[%d]", &start) == 1
) {
+ } else if (
ovs_scan(s, "[%d]", &start)
) {
end = start;
} else if (!strncmp(s, "[]", 2)) {
start = 0;
end = start;
} else if (!strncmp(s, "[]", 2)) {
start = 0;