X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Ftunnel.h;h=c2680571fb6bb75dc7fc5588d7bb7fc3810a5571;hb=8432bb09305ac380451fc1bbd39336d6e2c472eb;hp=ef09162b9ca3254145170984cd17d24e657714b7;hpb=49a4902d76b9149e4fa399bde6d5cb9a91e64c07;p=openvswitch diff --git a/datapath/tunnel.h b/datapath/tunnel.h index ef09162b..c2680571 100644 --- a/datapath/tunnel.h +++ b/datapath/tunnel.h @@ -201,4 +201,25 @@ static inline void tnl_tun_key_init(struct ovs_key_ipv4_tunnel *tun_key, tun_key->tun_flags = tun_flags; } +static inline void tnl_get_param(const struct tnl_mutable_config *mutable, + const struct ovs_key_ipv4_tunnel *tun_key, + u32 *flags, __be64 *out_key) +{ + if (tun_key->ipv4_dst) { + *flags = 0; + + if (tun_key->tun_flags & OVS_TNL_F_KEY) + *flags = TNL_F_OUT_KEY_ACTION; + if (tun_key->tun_flags & OVS_TNL_F_CSUM) + *flags |= TNL_F_CSUM; + *out_key = tun_key->tun_id; + } else { + *flags = mutable->flags; + if (mutable->flags & TNL_F_OUT_KEY_ACTION) + *out_key = tun_key->tun_id; + else + *out_key = mutable->out_key; + } +} + #endif /* tunnel.h */