From: "Yang, Yi" <yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Eric Garver <e@erig.me>
Cc: dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
jbenc-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH net-next v2] openvswitch: enable NSH support
Date: Tue, 15 Aug 2017 08:39:41 +0800 [thread overview]
Message-ID: <20170815003940.GA86193@cran64.bj.intel.com> (raw)
In-Reply-To: <20170814160914.GC27729@dev-rhel7>
On Tue, Aug 15, 2017 at 12:09:14AM +0800, Eric Garver wrote:
> On Thu, Aug 10, 2017 at 09:21:15PM +0800, Yi Yang wrote:
>
> Hi Yi,
>
> In general I'd like to echo Jiri's comments on the netlink attributes.
> I'd like to see the metadata separate.
>
> I have a few other comments below.
>
> Thanks.
> Eric.
>
> [..]
Thanks Eric, I'm doing this and it is almost done, there is still an
issue to fix.
> > +{
> > + return 4 * (ntohs(nsh->ver_flags_len) & NSH_LEN_MASK) >> NSH_LEN_SHIFT;
>
> This is doing the multiplication before the shift. It works only because
> the shift is 0.
>
Thank you for catching this, the right one:
((ntohs(nsh->ver_flags_len) & NSH_LEN_MASK) >> NSH_LEN_SHIFT) << 2
> > +static int push_nsh(struct sk_buff *skb, struct sw_flow_key *key,
> > + const struct ovs_action_push_nsh *oapn)
> > +{
> > + struct nsh_hdr *nsh;
> > + size_t length = NSH_BASE_HDR_LEN + oapn->mdlen;
> > + u8 next_proto;
> > +
> > + if (key->mac_proto == MAC_PROTO_ETHERNET) {
> > + next_proto = NSH_P_ETHERNET;
> > + } else {
> > + switch (ntohs(skb->protocol)) {
> > + case ETH_P_IP:
> > + next_proto = NSH_P_IPV4;
> > + break;
> > + case ETH_P_IPV6:
> > + next_proto = NSH_P_IPV6;
> > + break;
> > + case ETH_P_NSH:
> > + next_proto = NSH_P_NSH;
> > + break;
> > + default:
> > + return -ENOTSUPP;
> > + }
> > + }
> > +
> >
>
> I believe you need to validate that oapn->mdlen is a multiple of 4.
>
I'll add this check.
> > + switch (nsh->md_type) {
> > + case NSH_M_TYPE1:
> > + nsh->md1 = *(struct nsh_md1_ctx *)oapn->metadata;
> > + break;
> > + case NSH_M_TYPE2: {
> > + /* The MD2 metadata in oapn is already padded to 4 bytes. */
> > + size_t len = DIV_ROUND_UP(oapn->mdlen, 4) * 4;
> > +
> > + memcpy(nsh->md2, oapn->metadata, len);
>
> I don't see any validation of oapn->mdlen. Normally this happens in
> __ovs_nla_copy_actions(). It will be made easier if you add a separate
> MD attribute as Jiri has suggested.
>
Got it, will include this in next version.
prev parent reply other threads:[~2017-08-15 0:39 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-10 13:21 [PATCH net-next v2] openvswitch: enable NSH support Yi Yang
[not found] ` <1502371275-52446-1-git-send-email-yi.y.yang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-08-11 8:24 ` Jiri Benc
2017-08-11 8:47 ` Yang, Yi
2017-08-11 9:10 ` Jiri Benc
2017-08-11 9:24 ` Yang, Yi Y
2017-08-11 9:44 ` Jiri Benc
2017-08-11 9:54 ` Yang, Yi
2017-08-11 10:09 ` Jan Scheurich
[not found] ` <CFF8EF42F1132E4CBE2BF0AB6C21C58D7273679A-hqolJogE5njKJFWPz4pdheaU1rCVNFv4@public.gmane.org>
2017-08-11 10:22 ` Jiri Benc
2017-08-13 21:13 ` Jan Scheurich
[not found] ` <CFF8EF42F1132E4CBE2BF0AB6C21C58D72736EAE-hqolJogE5njKJFWPz4pdheaU1rCVNFv4@public.gmane.org>
2017-08-14 7:51 ` Jiri Benc
2017-08-14 10:35 ` Jan Scheurich
[not found] ` <CFF8EF42F1132E4CBE2BF0AB6C21C58D727373EA-hqolJogE5njKJFWPz4pdheaU1rCVNFv4@public.gmane.org>
2017-08-14 10:47 ` Jiri Benc
2017-08-14 11:08 ` Jan Scheurich
2017-08-11 10:35 ` Jiri Pirko
2017-08-14 16:09 ` Eric Garver
2017-08-15 0:39 ` Yang, Yi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170815003940.GA86193@cran64.bj.intel.com \
--to=yi.y.yang-ral2jqcrhueavxtiumwx3w@public.gmane.org \
--cc=dev-yBygre7rU0TnMu66kgdUjQ@public.gmane.org \
--cc=e@erig.me \
--cc=jbenc-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.