Hello,

These patches fix how ovs-vswitchd handles and answers messages on an
OpenFlow connection.

Patches 1 to 3 fix handle_flow_monitor_request().  A request that
deletes or modifies a monitor which an earlier entry of the same
request created freed it while it was still in the list the handler
uses afterwards, and an error in a request was answered from the buffer
position the decoder had already moved past instead of the request
header.  Patch 1 makes the OpenFlow 1.4 decoder set the table id of a
delete, which the test of patch 2 relies on.

Patch 4 stops vconn and rconn from sending a message longer than the
OpenFlow maximum of 65535 bytes, which went out with a wrapped length
field (a packet-in of a large packet) and desynchronised the
connection.

Each patch adds a test.  With AddressSanitizer, the tests of patches 2
and 3 fail on the current code; the test of patch 4 fails without it.

Please apply the patches as they are (git am), so that they keep their
author; change anything you like in review.  The patches are attached.

Alejandro Pacheco (4):
  ofp-monitor: Set the table id of decoded OpenFlow 1.4 deletes.
  ofproto: Forget destroyed flow monitors within one request.
  ofproto: Send flow monitor request errors with the request header.
  vconn: Refuse to send messages longer than the OpenFlow maximum.

 lib/ofp-monitor.c     |   2 +
 lib/rconn.c           |  21 ++++++--
 lib/vconn.c           |  18 ++++++-
 ofproto/ofproto.c     |  20 ++++++-
 tests/ofproto-dpif.at |  27 ++++++++++
 tests/ofproto.at      | 122 ++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 203 insertions(+), 7 deletions(-)

--
Alejandro Pacheco
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to