From 5f355301b7cafbb51b036ad1e5af38e79d4330d6 Mon Sep 17 00:00:00 2001 From: Hangbin Liu 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 Signed-off-by: Hangbin Liu Signed-off-by: Jiri Pirko --- 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