diff --git a/dp-core/vr_datapath.c b/dp-core/vr_datapath.c index 547c35961..f73c7b64d 100644 --- a/dp-core/vr_datapath.c +++ b/dp-core/vr_datapath.c @@ -550,7 +550,7 @@ unsigned int vr_virtual_input(unsigned short vrf, struct vr_interface *vif, struct vr_packet *pkt, unsigned short vlan_id) { - struct vr_forwarding_md fmd; + struct vr_forwarding_md fmd, mfmd; vr_init_forwarding_md(&fmd); fmd.fmd_vlan = vlan_id; @@ -562,8 +562,9 @@ vr_virtual_input(unsigned short vrf, struct vr_interface *vif, } if (vif->vif_flags & VIF_FLAG_MIRROR_RX) { - fmd.fmd_dvrf = vif->vif_vrf; - vr_mirror(vif->vif_router, vif->vif_mirror_id, pkt, &fmd); + mfmd = fmd; + mfmd.fmd_dvrf = vif->vif_vrf; + vr_mirror(vif->vif_router, vif->vif_mirror_id, pkt, &mfmd); } /*