Bug #120 asks us to use the true MAC addresses of LAN local remote hosts, since some programs need this information. These commits introduces this for ARP, NDP, UDP, TCP and ICMP. --- v3: Updated according to feedback from Stefano and David: - Made the ARP/NDP lookup call filter out the requested address by itself, qualified by the index if the template interface - Moved the flow specific MAC address from struct flowside to struct flow_common. v4: - Updated according to feedback from David and Stefan - Added a cache table for ARP/NDP table contents v5: - Updated according to feedback from David and Stefan - Added cache table entries to FIFO/LRU queue - New criteria for when to consult ARP/NDP v6: - Simplified and merged mac cache table commits - Other changes after feedback from David. Jon Maloy (8): netlink: add function to extract MAC addresses from NDP/ARP table fwd: Added cache table for ARP/NDP contents arp/ndp: respond with true MAC address of LAN local remote hosts flow: add MAC address of LAN local remote hosts to flow udp: forward external source MAC address through tap interface tcp: forward external source MAC address through tap interface tap: change signature of function tap_push_l2h() icmp: let icmp use mac address from flowside structure arp.c | 9 ++- conf.c | 1 + flow.c | 2 + flow.h | 2 + fwd.c | 184 +++++++++++++++++++++++++++++++++++++++++++++++-- fwd.h | 6 ++ icmp.c | 8 ++- inany.c | 1 + ndp.c | 10 ++- netlink.c | 82 ++++++++++++++++++++++ netlink.h | 2 + passt.c | 9 ++- passt.h | 3 +- pasta.c | 2 +- tap.c | 24 ++++--- tap.h | 7 +- tcp.c | 18 +++-- tcp.h | 2 +- tcp_buf.c | 37 +++++----- tcp_internal.h | 4 +- tcp_vu.c | 5 +- udp.c | 57 +++++++++------ udp.h | 2 +- util.c | 12 ++++ util.h | 1 + 25 files changed, 407 insertions(+), 83 deletions(-) -- 2.50.1