Have you looked at the code in odp-util.c that prints these
structures, e.g. format_odp_key_attr()?
On Tue, Feb 24, 2015 at 05:00:31PM +0000, Chetan Bali wrote:
> Hi Ben,
>
> Thanks for the quick response. Please find the code snippet below:
>
> This below function is called from flow_put in dpif class code.
>
> uint8_t dpif_tunnel_parse_actions(s_action_t *action_list, const struct
> nlattr *actions, size_t actions_len, struct flow_tnl *tun_param)
> {
> if(OVS_LIKELY(NULL != actions))
> {
> NL_ATTR_FOR_EACH_UNSAFE(a, len, actions, actions_len)
> {
> switch (nl_attr_type(a))
> {
> case OVS_ACTION_ATTR_SET:
> VLOG_INFO("Action type is ACTION_SET \n");
> action_list[num_action].action_type =
> ACTION_SET_IPV4_TUNNEL;
> if (nla_type(nla_data(a)) == OVS_KEY_ATTR_TUNNEL)
> {
> tun_param = nla_data(nla_data(a));
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL TUN_ID :
> %u\n",tun_param->tun_id);
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL SRC_ADRR :
> %x\n",ntohl(tun_param->ipv4_src));
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL SRC_DST :
> %x\n",ntohl(tun_param->ipv4_dst));
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL TUN_FLAG :
> %u\n",tun_param->tun_flags);
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL TOS :
> %u\n",tun_param->ipv4_tos);
> VLOG_INFO(" OVS_ACTION_ATTR_TUNNEL TTL :
> %u\n",tun_param->ipv4_ttl);
> }
>
> We are not getting correct values of tun_id, tun_src, tun_dst, tun_ttl, etc.
>
> It will be great if you could help us here.
>
> Thanks
> Chetan Bali
>
> -----Original Message-----
> From: Ben Pfaff [mailto:[email protected]]
> Sent: 24 February 2015 22:15
> To: Chetan Bali
> Cc: [email protected]; [email protected]; Mohit Malik
> Subject: Re: [ovs-discuss] query related to GRE encapsulation
>
> On Tue, Feb 24, 2015 at 01:33:29PM +0000, Chetan Bali wrote:
> > I am configuring gre-port in my ovs bridge, for establishing
> > gre-tunnel between 2 machines. I am trying to parse the tunnelling key
> > params sent by OVS while adding flow, when it sets action as
> > OVS_ACTION_ATTR_SET. I am parsing the tun-key attributes in dpif-linux.c in
> > exact manner as ovs does, i.e., nla_data(nla_data(action)) where action is
> > in "nlattr" type. Tun-key params that I am trying to fetch are as per
> > struct "ovs_key_ipv4_tunnel" i.e., struct ovs_key_ipv4_tunnel {
> > __be64 tun_id;
> > __be32 ipv4_src;
> > __be32 ipv4_dst;
> > __be16 tun_flags;
> > u8 ipv4_tos;
> > u8 ipv4_ttl;
> > };
> > The problem is that, while parsing I am getting incorrect tun-key params,
> > whereas I can see by putting prints that openvswitchd.ko is getting correct
> > tun-key params.
>
> I guess you're doing something wrong. Show us your code?
> "DISCLAIMER: This message is proprietary to Aricent and is intended solely
> for the use of the individual to whom it is addressed. It may contain
> privileged or confidential information and should not be circulated or used
> for any purpose other than for what it is intended. If you have received this
> message in error, please notify the originator immediately. If you are not
> the intended recipient, you are notified that you are strictly prohibited
> from using, copying, altering, or disclosing the contents of this message.
> Aricent accepts no responsibility for loss or damage arising from the use of
> the information transmitted by this email including damage from virus."
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev