diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2024-08-21 14:20:14 +1000 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-08-21 12:00:28 +0200 |
commit | 90e83d50a9bdeb0697843fc9917c3070b69d5c7d (patch) | |
tree | 3cb31d19ff1c3897ebd34874e4e74090bfdda221 /passt.h | |
parent | 356de97e432e21e8711b94b06a53b1e16dadd913 (diff) | |
download | passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar.gz passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar.bz2 passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar.lz passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar.xz passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.tar.zst passt-90e83d50a9bdeb0697843fc9917c3070b69d5c7d.zip |
Don't take "our" MAC address from the host
When sending frames to the guest over the tap link, we need a source MAC
address. Currently we take that from the MAC address of the main interface
on the host, but that doesn't actually make much sense:
* We can't preserve the real MAC address of packets from anywhere
external so there's no transparency case here
* In fact, it's confusingly different from how we handle IP addresses:
whereas we give the guest the same IP as the host, we're making the
host's MAC the one MAC that the guest *can't* use for itself.
* We already need a fallback case if the host doesn't have an Ethernet
like MAC (e.g. if it's connected via a point to point interface, such
as a wireguard VPN).
Change to just just use an arbitrary fixed MAC address - I've picked
9a:55:9a:55:9a:55. It's simpler and has the small advantage of making
the fact that passt/pasta is in use typically obvious from guest side
packet dumps. This can still, of course, be overridden with the -M option.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'passt.h')
-rw-r--r-- | passt.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -26,6 +26,13 @@ union epoll_ref; #include "tcp.h" #include "udp.h" +/* Default address for our end on the tap interface. Bit 0 of byte 0 must be 0 + * (unicast) and bit 1 of byte 1 must be 1 (locally administered). Otherwise + * it's arbitrary. + */ +#define MAC_OUR_LAA \ + ((uint8_t [ETH_ALEN]){0x9a, 0x55, 0x9a, 0x55, 0x9a, 0x55}) + /** * union epoll_ref - Breakdown of reference for epoll fd bookkeeping * @type: Type of fd (tells us what to do with events) |