Problem:
========
Received LACP/CFM/BFD/STP/LLDP slow protocols' packets are not captured in
ovs-tcpdump.

Fix:
====
Add mirror support for slow protocols.

Signed-off-by: Manohar K C
<[email protected]>
CC: Jan Scheurich <[email protected]>

---
 ofproto/ofproto-dpif-xlate.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c
index 5641724..a31d8b9 100644
--- a/ofproto/ofproto-dpif-xlate.c
+++ b/ofproto/ofproto-dpif-xlate.c
@@ -3165,11 +3165,13 @@ process_special(struct xlate_ctx *ctx, const struct 
xport *xport)
         slow = 0;
     } else if (xport->cfm && cfm_should_process_flow(xport->cfm, flow, wc)) {
         if (packet) {
+            mirror_ingress_packet(ctx);
             cfm_process_heartbeat(xport->cfm, packet);
         }
         slow = SLOW_CFM;
     } else if (xport->bfd && bfd_should_process_flow(xport->bfd, flow, wc)) {
         if (packet) {
+            mirror_ingress_packet(ctx);
             bfd_process_packet(xport->bfd, flow, packet);
             /* If POLL received, immediately sends FINAL back. */
             if (bfd_should_send_packet(xport->bfd)) {
@@ -3180,12 +3182,14 @@ process_special(struct xlate_ctx *ctx, const struct 
xport *xport)
     } else if (xport->xbundle && xport->xbundle->lacp
                && flow->dl_type == htons(ETH_TYPE_LACP)) {
         if (packet) {
+            mirror_ingress_packet(ctx);
             lacp_process_packet(xport->xbundle->lacp, xport->ofport, packet);
         }
         slow = SLOW_LACP;
     } else if ((xbridge->stp || xbridge->rstp) &&
                stp_should_process_flow(flow, wc)) {
         if (packet) {
+            mirror_ingress_packet(ctx);
             xbridge->stp
                 ? stp_process_packet(xport, packet)
                 : rstp_process_packet(xport, packet);
@@ -3193,6 +3197,7 @@ process_special(struct xlate_ctx *ctx, const struct xport 
*xport)
         slow = SLOW_STP;
     } else if (xport->lldp && lldp_should_process_flow(xport->lldp, flow)) {
         if (packet) {
+            mirror_ingress_packet(ctx);

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to