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
