Hi, Currently when using the real mac address for carp(4) interface, all packets are treated as their receive inteface is carp. This causes some problems.
For example, IPv6 ndp doesn't work on an interface which is used for carpdev. Because it is assumed that reply packets are received with the same interface which is used to send out the request. ok? When realmac is used for carp(4), don't pass the packets through the interface since they are for the real interface. Index: sys/netinet/ip_carp.c =================================================================== RCS file: /disk/cvs/openbsd/src/sys/netinet/ip_carp.c,v retrieving revision 1.345 diff -u -p -r1.345 ip_carp.c --- sys/netinet/ip_carp.c 21 May 2020 05:24:59 -0000 1.345 +++ sys/netinet/ip_carp.c 22 Jul 2020 09:52:20 -0000 @@ -1418,6 +1418,14 @@ carp_input(struct ifnet *ifp0, struct mb } m_tag_prepend(m, mtag); } + + /* + * When carp is using realmac, since the matched MAC + * address is for the real interface, the packets are + * not for the carp interface. + */ + if (sc->sc_realmac) + sc = NULL; break; } }