With the diff I just sent all the ARP regression tests suddenly pass.
But I did not fix anything! This is because the actual proxy ARP test
is incomplete.
Diff below fixes it by adding *two* different entries for a given IP.
One is "published" and should be returned when an echo request is
received, the other one is for internal use.
This test will now fail if a kernel with ART is used. This will be
addressed shortly.
ok?
Index: Makefile
===================================================================
RCS file: /cvs/src/regress/sys/netinet/arp/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- Makefile 4 Dec 2015 23:43:04 -0000 1.3
+++ Makefile 21 Mar 2016 13:21:43 -0000
@@ -31,6 +31,7 @@ LOCAL_IF ?=
LOCAL_MAC ?=
REMOTE_MAC ?=
FAKE_MAC ?= 12:34:56:78:9a:bc
+PROXY_MAC ?= 00:90:27:bb:cc:dd
REMOTE_SSH ?=
LOCAL_ADDR ?= 10.188.70.17
@@ -271,9 +272,11 @@ TARGETS += arp-proxy
run-regress-arp-proxy: addr.py
@echo '\n======== $@ ========'
@echo Send ARP Request for fake address that is proxied
+ ssh -t ${REMOTE_SSH} ${SUDO} arp -s ${FAKE_ADDR} ${PROXY_MAC}
ssh -t ${REMOTE_SSH} ${SUDO} arp -s ${FAKE_ADDR} ${FAKE_MAC} pub
${SUDO} ${PYTHON}arp_proxy.py
ssh ${REMOTE_SSH} ${SUDO} arp -an >arp.log
+ ssh -t ${REMOTE_SSH} ${SUDO} arp -d ${FAKE_ADDR}
ssh -t ${REMOTE_SSH} ${SUDO} arp -d ${FAKE_ADDR}
grep '^${FAKE_ADDR} .* ${FAKE_MAC} .* static * p$$' arp.log
Index: README
===================================================================
RCS file: /cvs/src/regress/sys/netinet/arp/README,v
retrieving revision 1.2
diff -u -p -r1.2 README
--- README 23 Dec 2015 14:27:50 -0000 1.2
+++ README 21 Mar 2016 13:20:44 -0000
@@ -50,6 +50,7 @@ LOCAL_IF=tap0
LOCAL_MAC=fe:e1:ba:d0:d5:6d
REMOTE_MAC=70:5f:ca:21:8d:70
FAKE_MAC=12:34:56:78:9a:bc
+PROXY_MAC=00:90:27:bb:cc:dd
REMOTE_SSH=q70
LOCAL_ADDR=10.188.70.17