diff --git a/src/neigh.c b/src/neigh.c
index cc99ae2e026e6ee0fb0e1d8ac4b2c65b04d79630..fe05a51d2b74d84b55b7e8da0c48cc9c1ef7d29f 100644
--- a/src/neigh.c
+++ b/src/neigh.c
@@ -493,14 +493,20 @@ static void neigh_probing_timer_run(atimer_t *t)
 	getcurrtime(&now);
 
 	list_for_each_entry(x, &e->iplist, list) {
+		char mifname[16] = {0};
 		char cmd[256] = {0};
 		char ipbuf[46] = {0};
+		int mifindex = 0;
 
 		if (x->ip.family != AF_INET)
 			continue;
 
 		inet_ntop(x->ip.family, &x->ip.addr, ipbuf, sizeof(ipbuf));
-		snprintf(cmd, 255, "arping -q -I %s -c 1 -w 1 -f %s &", e->ifname, ipbuf);
+		mifindex = if_isbridge_interface(e->ifname);
+		if (mifindex > 0 && if_indextoname(mifindex, mifname))
+			snprintf(cmd, 255, "arping -q -I %s -c 1 -w 1 -f %s &", mifname, ipbuf);
+		else
+			snprintf(cmd, 255, "arping -q -I %s -c 1 -w 1 -f %s &", e->ifname, ipbuf);
 		dbg("[%jd.%jd]  %s\n", (uintmax_t)now.tv_sec, (uintmax_t)now.tv_usec, cmd);
 		runCmd(cmd); /* Flawfinder: ignore */
 	}