[ovs-dev] [PATCH 1/2] odp-util: refector erspan option parsing.
William Tu
u9012063 at gmail.com
Fri May 25 13:28:48 UTC 2018
Instead of memcpy to a local stack, parse the erspan
metadata in memory.
Suggested-by: Ben Pfaff <blp at ovn.org>
Signed-off-by: William Tu <u9012063 at gmail.com>
---
lib/odp-util.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/lib/odp-util.c b/lib/odp-util.c
index 105ac809073e..5e858f0f9797 100644
--- a/lib/odp-util.c
+++ b/lib/odp-util.c
@@ -2781,17 +2781,14 @@ odp_tun_key_from_attr__(const struct nlattr *attr, bool is_mask,
tun_metadata_from_geneve_nlattr(a, is_mask, tun);
break;
case OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS: {
- int attr_len = nl_attr_get_size(a);
- struct erspan_metadata opts;
+ const struct erspan_metadata *opts = nl_attr_get(a);
- memcpy(&opts, nl_attr_get(a), attr_len);
-
- tun->erspan_ver = opts.version;
+ tun->erspan_ver = opts->version;
if (tun->erspan_ver == 1) {
- tun->erspan_idx = ntohl(opts.u.index);
+ tun->erspan_idx = ntohl(opts->u.index);
} else if (tun->erspan_ver == 2) {
- tun->erspan_dir = opts.u.md2.dir;
- tun->erspan_hwid = get_hwid(&opts.u.md2);
+ tun->erspan_dir = opts->u.md2.dir;
+ tun->erspan_hwid = get_hwid(&opts->u.md2);
} else {
VLOG_WARN("%s invalid erspan version\n", __func__);
}
--
2.7.4
More information about the dev
mailing list