Já chválím za ten rp_filter - bez jeho vypnutí to nefunguje, pokud mám víc síťovek ve stejném IP segmentu. :-)
Jsem to zkusil pustit. Funguje to a data dojdou zpět do recvfrom(). Pokud binduji konkrétní iface a client IP, tak by měla být shoda toho IP a iface, datagram musí přijít tím bindnutým ifacem a navíc musí být vypnutý rp_filter pro daný iface (zkrátka musí souhlasit na příchozím daná IP a iface). Pokud jako odchozí IP dám jinou, než odpovídá na vynucený iface, tak ono to odejde přes bindnutý iface se zadanou IP, ale vlivem ARP a forward tabulky ve switchi se odpověď vrátí často jiným ifacem a je smůla (pokud se vrátí tím předepsaným, tak se data také doručí do recvfrom()). Je to celkem striktní v případě unicast provozu.