From ab182259ed24ebe2027a2ac7a3b8629da43e5a89 Mon Sep 17 00:00:00 2001 From: Valient Gough Date: Thu, 24 Feb 2011 21:45:18 -0800 Subject: [PATCH] datapath: call tnl_ops only after setting options Calling methods in tnl_ops should be done only after initializing the tunnel configuration options. This patch moves the hdr_len call after the output key setup. Signed-off-by: Valient Gough Signed-off-by: Jesse Gross --- datapath/tunnel.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/datapath/tunnel.c b/datapath/tunnel.c index a0d9fd95..f1711f1f 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -1369,12 +1369,6 @@ static int tnl_set_config(struct nlattr *options, const struct tnl_ops *tnl_ops, if (a[ODP_TUNNEL_ATTR_TTL]) mutable->ttl = nla_get_u8(a[ODP_TUNNEL_ATTR_TTL]); - mutable->tunnel_hlen = tnl_ops->hdr_len(mutable); - if (mutable->tunnel_hlen < 0) - return mutable->tunnel_hlen; - - mutable->tunnel_hlen += sizeof(struct iphdr); - mutable->tunnel_type = tnl_ops->tunnel_type; if (!a[ODP_TUNNEL_ATTR_IN_KEY]) { mutable->tunnel_type |= TNL_T_KEY_MATCH; @@ -1389,6 +1383,12 @@ static int tnl_set_config(struct nlattr *options, const struct tnl_ops *tnl_ops, else mutable->out_key = nla_get_be64(a[ODP_TUNNEL_ATTR_OUT_KEY]); + mutable->tunnel_hlen = tnl_ops->hdr_len(mutable); + if (mutable->tunnel_hlen < 0) + return mutable->tunnel_hlen; + + mutable->tunnel_hlen += sizeof(struct iphdr); + old_vport = tnl_find_port(mutable->saddr, mutable->daddr, mutable->in_key, mutable->tunnel_type, &old_mutable); -- 2.30.2