ofproto: Get enough headroom in fail-open when connected to controller.
authorBen Pfaff <blp@nicira.com>
Wed, 1 Sep 2010 17:17:40 +0000 (10:17 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 1 Sep 2010 19:55:50 +0000 (12:55 -0700)
Since commit 750638bb "ofproto: Avoid ofpbuf_clone() for OFPAT_CONTROLLER
common case," send_packet_in() needs at least DPIF_RECV_MSG_PADDING bytes
of headroom, which ofpbuf_clone() doesn't supply.  This commit should fix
that.

This fixes an assertion failure in ofpbuf_prealloc_headroom() via
send_packet_in().

Reported-by: Justin Pettit <jpettit@nicira.com>
ofproto/ofproto.c

index adc52827c8846d5aa6142896930809c9407b03ba..844083d8bf3a6ea07c60ee400499efe1d4750f3b 100644 (file)
@@ -4154,7 +4154,8 @@ handle_odp_miss_msg(struct ofproto *p, struct ofpbuf *packet)
          *
          * See the top-level comment in fail-open.c for more information.
          */
-        send_packet_in(p, ofpbuf_clone(packet));
+        send_packet_in(p, ofpbuf_clone_with_headroom(packet,
+                                                     DPIF_RECV_MSG_PADDING));
     }
 
     ofpbuf_pull(packet, sizeof *msg);