From: Ben Pfaff <blp@nicira.com> Date: Wed, 7 Mar 2012 22:11:09 +0000 (-0800) Subject: datapath: Honor dp_ifindex, when specified, for vport lookup by name. X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=7b58d76df5d7798ae28fce292de83ff1f3cdf8a7;p=sliver-openvswitch.git datapath: Honor dp_ifindex, when specified, for vport lookup by name. When OVS_VPORT_ATTR_NAME is specified and dp_ifindex is nonzero, the logical behavior would be for the vport name lookup scope to be limited to the specified datapath, but in fact the dp_ifindex value was ignored. This commit causes the search scope to be honored. Bug #9889. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Pravin B Shelar <pshelar@nicira.com> Acked-by: Jesse Gross <jesse@nicira.com> --- diff --git a/datapath/datapath.c b/datapath/datapath.c index e9a4e1894..e8667ad0c 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -1689,6 +1689,9 @@ static struct vport *lookup_vport(struct ovs_header *ovs_header, vport = ovs_vport_locate(nla_data(a[OVS_VPORT_ATTR_NAME])); if (!vport) return ERR_PTR(-ENODEV); + if (ovs_header->dp_ifindex && + ovs_header->dp_ifindex != get_dpifindex(vport->dp)) + return ERR_PTR(-ENODEV); return vport; } else if (a[OVS_VPORT_ATTR_PORT_NO]) { u32 port_no = nla_get_u32(a[OVS_VPORT_ATTR_PORT_NO]);