On Fri, Jun 5, 2020 at 4:12 PM Simon Horman <[email protected]> wrote: > > On Thu, Jun 04, 2020 at 08:31:08PM +0800, [email protected] wrote: > > From: Tonghao Zhang <[email protected]> > > > > This patch allows to install arp rules to tc dp. > > In the future, arp will be offloaded to hardware to > > be processed. So OvS enable this now. > > > > $ ovs-appctl dpctl/add-flow 'recirc_id(0),in_port(3),eth(),\ > > eth_type(0x0806),arp(op=2,tha=00:50:56:e1:4b:ab,tip=10.255.1.116)' 2 > > > > $ ovs-appctl dpctl/dump-flows > > ... arp(tip=10.255.1.116,op=2,tha=00:50:56:e1:4b:ab) ... > > > > $ tc filter show dev <ethx> ingress > > ... > > eth_type arp > > arp_tip 10.255.1.116 > > arp_op reply > > arp_tha 00:50:56:e1:4b:ab > > not_in_hw > > action order 1: mirred (Egress Redirect to device <ethy>) stolen > > ... > > > > Cc: Simon Horman <[email protected]> > > Cc: Paul Blakey <[email protected]> > > Cc: Roi Dayan <[email protected]> > > Cc: Ben Pfaff <[email protected]> > > Cc: William Tu <[email protected]> > > Cc: Ilya Maximets <[email protected]> > > Signed-off-by: Tonghao Zhang <[email protected]> > > Thanks for your patch, mostly it looks good to me. > > Travis-CI flagged a minor problem, as described below. > Could you take a look into it and consider posting v2? Yes, I tested it on my host, but not found the build error. and run the "make check" I will fix it using the Travis-CI. Thanks for your reviews. > ... > > > diff --git a/lib/odp-util.c b/lib/odp-util.c > > index 72601dc6ba2b..c630b830ecd0 100644 > > --- a/lib/odp-util.c > > +++ b/lib/odp-util.c > > @@ -7993,7 +7993,8 @@ get_arp_key(const struct flow *flow, struct > > ovs_key_arp *arp) > > > > arp->arp_sip = flow->nw_src; > > arp->arp_tip = flow->nw_dst; > > - arp->arp_op = htons(flow->nw_proto); > > + arp->arp_op = flow->nw_proto == UINT8_MAX ? > > + UINT16_MAX: htons(flow->nw_proto); > > This appears to cause a build error. > > https://travis-ci.org/github/horms2/ovs/jobs/694632844#L2809 > > lib/odp-util.c:7997:36: error: restricted ovs_be16 degrades to integer > lib/odp-util.c:7996:17: error: incorrect type in assignment (different base > types) > lib/odp-util.c:7996:17: expected restricted ovs_be16 [usertype] arp_op > lib/odp-util.c:7996:17: got int > > Perhaps using OVS_BE16_MAX instead of UINT16_MAX is a good approach here. > > Also, there should be a space both before and after ':'. > E.g. > > arp->arp_op = flow->nw_proto == UINT8_MAX ? > OVS_BE16_MAX : htons(flow->nw_proto); > > > arp->arp_sha = flow->arp_sha; > > arp->arp_tha = flow->arp_tha; > > } > > ...
-- Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
