public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
* [PATCH v13 00/10] Use true MAC address of LAN local remote hosts
@ 2025-10-12 19:33 Jon Maloy
  2025-10-12 19:33 ` [PATCH v13 01/10] netlink: add subscription on changes in NDP/ARP table Jon Maloy
                   ` (9 more replies)
  0 siblings, 10 replies; 17+ messages in thread
From: Jon Maloy @ 2025-10-12 19:33 UTC (permalink / raw)
  To: sbrivio, dgibson, david, jmaloy, passt-dev


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.
v7: - Fixes in patch #2 based on feedback from David
      and Stefano.
v8: - Redesigned netlink and cache table part to be based
      on a subscription model.
v8: - Small fix to patch #2 so that we cover the case
      when a MAC addess for a host has changed.
    - Added a commit where we send a gratuitous ARP/
      unsolicitated NA to the guest when a new host is
      added to the neighbour cache table.
v10: - Some fixes after feedback from David Gibson
     - Reordered: Moved patch #9 to position #3.
     - Added synchronization step between ARP/NDP
       table contents and the neigbour table at
       initialization. This reduces the number of
       "false" ARP/NDP replies drastically, but not
       completly. 
     - (Next step could be to scan over the flow table
       and update affeced entries when we receive
       a MAC address update.)
v11: - Corrected the gratuitous ARP implementation to use
       the "ARP Announcement" model instead of the
       "Gratuitous ARP reply" model.
v12: - Updated based on feedback from David and Stefano
     - Added special handling of default GW and loopback
       addresses.
v13: - Updated based on discussion with David and Stefano
     - Conceptually moved to only considering guest-side
       visible addresss. A lot of things became simpler
       and clearer through this change. Thank you, David.
     - Introduced a 'permanent' flag in the special
       entries representing addessed mapping to own host
       and conditionally the guest gw. This flag indicates
       those entries cannot be altered by possible remote hosts
       shadowed by these addresses. Suggested by Stefano.
     - Reordered patch ##4 and 5, since #5 cannot work
       correctly for NDP unsolicited NA until #4 is in place.
     - Added a new commit #2 to get later access to the flag
       no_map_gw. It was wrong to call fwd_neigh_table_init()
       from inside conf(), it has to be done in main() after
       random_init() and tap_backend_init().

Jon Maloy (10):
  netlink: add subscription on changes in NDP/ARP table
  passt: add no_map_gw flag to struct ctx
  fwd: Add cache table for ARP/NDP contents
  arp/ndp: respond with true MAC address of LAN local remote hosts
  arp/ndp: send ARP announcement / unsolicited NA when neigbour entry
    added
  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          |  50 ++++++++++-
 arp.h          |   2 +
 conf.c         |  10 +--
 epoll_type.h   |   2 +
 flow.c         |   2 +
 flow.h         |   2 +
 fwd.c          | 232 +++++++++++++++++++++++++++++++++++++++++++++++++
 fwd.h          |   7 ++
 icmp.c         |   8 +-
 inany.c        |   1 +
 ndp.c          |  16 +++-
 ndp.h          |   1 +
 netlink.c      | 218 +++++++++++++++++++++++++++++++++++++++++++++-
 netlink.h      |   4 +
 passt.c        |  17 ++--
 passt.h        |   4 +-
 pasta.c        |   2 +-
 tap.c          |  24 ++---
 tap.h          |   7 +-
 tcp.c          |  20 ++++-
 tcp.h          |   2 +-
 tcp_buf.c      |  37 ++++----
 tcp_internal.h |   4 +-
 tcp_vu.c       |   5 +-
 udp.c          |  57 +++++++-----
 udp.h          |   2 +-
 util.h         |   2 +
 27 files changed, 650 insertions(+), 88 deletions(-)

-- 
2.50.1


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-10-14  5:04 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-12 19:33 [PATCH v13 00/10] Use true MAC address of LAN local remote hosts Jon Maloy
2025-10-12 19:33 ` [PATCH v13 01/10] netlink: add subscription on changes in NDP/ARP table Jon Maloy
2025-10-14  4:39   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 02/10] passt: add no_map_gw flag to struct ctx Jon Maloy
2025-10-14  4:42   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 03/10] fwd: Add cache table for ARP/NDP contents Jon Maloy
2025-10-14  4:55   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 04/10] arp/ndp: respond with true MAC address of LAN local remote hosts Jon Maloy
2025-10-14  4:57   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 05/10] arp/ndp: send ARP announcement / unsolicited NA when neigbour entry added Jon Maloy
2025-10-14  5:01   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 06/10] flow: add MAC address of LAN local remote hosts to flow Jon Maloy
2025-10-14  5:02   ` David Gibson
2025-10-12 19:33 ` [PATCH v13 07/10] udp: forward external source MAC address through tap interface Jon Maloy
2025-10-12 19:33 ` [PATCH v13 08/10] tcp: " Jon Maloy
2025-10-12 19:33 ` [PATCH v13 09/10] tap: change signature of function tap_push_l2h() Jon Maloy
2025-10-12 19:33 ` [PATCH v13 10/10] icmp: let icmp use mac address from flowside structure Jon Maloy

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).