[ovs-dev] Threaded userspace datapath
Ed Maste
carpeddiem at gmail.com
Wed Aug 15 14:01:01 UTC 2012
On 14 August 2012 21:21, Ed Maste <emaste at freebsd.org> wrote:
>> There may be some confusion about numbering. OpenFlow says that the
>> port number of the "local port" is 65534 (OFPP_LOCAL). The datapaths,
>> on the other hand, use port number 0 for the "local port". There is
>> supposed to be translation going on at the interface between the
>> datapath and the OpenFlow implementation, but mistakes can creep in,
>> especially in new code.
>
> Indeed this is the case here - I compared the key for the packet being
> looked up and the otherwise-matching entry in the hash, and see 0 vs
> 65534 for the port.
>
> -Ed
This fixes it for me, but I'm not certain this is the right place to
do the translation:
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 60fae5f..7112149 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -1011,7 +1011,7 @@ dp_netdev_port_input(struct dp_netdev *dp,
struct dp_netdev_port *port,
if (packet->size < ETH_HEADER_LEN) {
return;
}
- flow_extract(packet, 0, 0, port->port_no, &key);
+ flow_extract(packet, 0, 0, ofp_port_to_odp_port(port->port_no), &key);
flow = dp_netdev_lookup_flow(dp, &key);
if (flow) {
dp_netdev_flow_used(flow, &key, packet);
More information about the dev
mailing list