39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
From 5f355301b7cafbb51b036ad1e5af38e79d4330d6 Mon Sep 17 00:00:00 2001
|
|
From: Hangbin Liu <liuhangbin@gmail.com>
|
|
Date: Fri, 11 Jan 2019 09:57:10 +0800
|
|
Subject: [PATCH 3/6] teamd: lw: arp_ping: only check arp reply message
|
|
|
|
Currently we check both arp request and reply message for arp_ping link
|
|
watch. But if we enabled validate_active and validate_inactive at the
|
|
same time, we will receive the other slave's arp request as the switch
|
|
broadcasts arp request message. i.e. slave1 receives arp request from
|
|
slave2 and vice versa.
|
|
|
|
Then the arp check will pass even the target is unreachable. Fix it by
|
|
only check arp reply message.
|
|
|
|
Reported-by: LiLiang <liali@redhat.com>
|
|
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
|
|
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
|
|
---
|
|
teamd/teamd_lw_arp_ping.c | 3 ++-
|
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/teamd/teamd_lw_arp_ping.c b/teamd/teamd_lw_arp_ping.c
|
|
index 01cd6e1..81806f0 100644
|
|
--- a/teamd/teamd_lw_arp_ping.c
|
|
+++ b/teamd/teamd_lw_arp_ping.c
|
|
@@ -336,7 +336,8 @@ static int lw_ap_receive(struct lw_psr_port_priv *psr_ppriv)
|
|
if (ap.ah.ar_hrd != htons(ll_my.sll_hatype) ||
|
|
ap.ah.ar_pro != htons(ETH_P_IP) ||
|
|
ap.ah.ar_hln != ll_my.sll_halen ||
|
|
- ap.ah.ar_pln != 4) {
|
|
+ ap.ah.ar_pln != 4 ||
|
|
+ ap.ah.ar_op != htons(ARPOP_REPLY)) {
|
|
return 0;
|
|
}
|
|
|
|
--
|
|
2.18.1
|
|
|