vlib_packet_template_get_packet (vm,
&im->ip4_arp_request_packet_template,
&bi0);
+ b0 = vlib_get_buffer (vm, bi0);
+
+ /* copy the persistent fields from the original */
+ clib_memcpy_fast (b0->opaque2, p0->opaque2, sizeof (p0->opaque2));
/* Seems we're out of buffers */
if (PREDICT_FALSE (!h0))
p0->error = node->errors[IP4_ARP_ERROR_REQUEST_SENT];
vlib_buffer_copy_trace_flag (vm, p0, bi0);
- b0 = vlib_get_buffer (vm, bi0);
VLIB_BUFFER_TRACE_TRAJECTORY_INIT (b0);
vnet_buffer (b0)->sw_if_index[VLIB_TX] = sw_if_index0;
adj0->sub_type.midchain.fixup_func
(vm, adj0, b[0], adj0->sub_type.midchain.fixup_data);
adj1->sub_type.midchain.fixup_func
- (vm, adj1, b[1], adj0->sub_type.midchain.fixup_data);
+ (vm, adj1, b[1], adj1->sub_type.midchain.fixup_data);
}
if (is_mcast)
adj0->rewrite_header.dst_mcast_offset,
&ip0->dst_address.as_u32, (u8 *) ip0);
vnet_ip_mcast_fixup_header (IP4_MCAST_ADDR_MASK,
- adj0->rewrite_header.dst_mcast_offset,
+ adj1->rewrite_header.dst_mcast_offset,
&ip1->dst_address.as_u32, (u8 *) ip1);
}