X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ofproto%2Fofproto-dpif.c;h=7172cb216c659bc0baa0504305791935fb8f7477;hb=437d0d22ab42d4101157b48a75fa844e7039e326;hp=87a61f7e32639570c073ad09829148756c4bb4f9;hpb=d81eef1b874c3c51669fa56f57e69ba5e77ad2c5;p=sliver-openvswitch.git diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 87a61f7e3..7172cb216 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -2419,7 +2419,9 @@ bundle_send_learning_packets(struct ofbundle *bundle) learning_packet = bond_compose_learning_packet(bundle->bond, e->mac, e->vlan, &port_void); - learning_packet->private_p = port_void; + /* Temporarily use l2 as a private pointer (see below). */ + ovs_assert(learning_packet->l2 == learning_packet->data); + learning_packet->l2 = port_void; list_push_back(&packets, &learning_packet->list_node); } } @@ -2428,8 +2430,11 @@ bundle_send_learning_packets(struct ofbundle *bundle) error = n_packets = n_errors = 0; LIST_FOR_EACH (learning_packet, list_node, &packets) { int ret; + void *port_void = learning_packet->l2; - ret = ofproto_dpif_send_packet(learning_packet->private_p, learning_packet); + /* Restore l2. */ + learning_packet->l2 = learning_packet->data; + ret = ofproto_dpif_send_packet(port_void, learning_packet); if (ret) { error = ret; n_errors++;