| From: |
| Kuniyuki Iwashima <kuniyu-AT-google.com> |
| To: |
| Andrew Lunn <andrew+netdev-AT-lunn.ch>, "David S . Miller" <davem-AT-davemloft.net>, Eric Dumazet <edumazet-AT-google.com>, Jakub Kicinski <kuba-AT-kernel.org>, Paolo Abeni <pabeni-AT-redhat.com> |
| Subject: |
| [PATCH v4 net-next 0/5] geneve: Allow binding UDP socket to a specific address. |
| Date: |
| Thu, 28 May 2026 00:56:43 +0000 |
| Message-ID: |
| <20260528005658.1756248-1-kuniyu@google.com> |
| Cc: |
| Simon Horman <horms-AT-kernel.org>, David Ahern <dsahern-AT-kernel.org>, Stephen Hemminger <stephen-AT-networkplumber.org>, Kuniyuki Iwashima <kuniyu-AT-google.com>, Kuniyuki Iwashima <kuni1840-AT-gmail.com>, netdev-AT-vger.kernel.org |
| Archive-link: |
| Article |
By default, a GENEVE device bind()s its underlying UDP socket(s) to
the IPv4 or IPv6 wildcard address because there is no way to specify
a specific local IP address to bind() to.
This prevents deploying multiple GENEVE devices on a multi-homed host
where each device should be isolated and bound to a different local IP
address on the same UDP port.
This series introduces two options to specify local IPv4 or IPv6
addresses for a GENEVE device.
The corresponding iproute2 patch is here:
https://lore.kernel.org/netdev/20260523061102.2762452-1-k...
Once this series and the iproute2 patch land upstream, I'll add
a small selftest.
Changes:
v4:
* Patch 5 : Simplify validation in geneve_nl2info()
: Add ynl spec
v3: https://lore.kernel.org/netdev/20260526015152.2409183-1-k...
* Patch 5 : Use NLA_POLICY_EXACT_LEN() for IFLA_GENEVE_LOCAL6.
Mention source address in error messages in geneve_configure().
v2: https://lore.kernel.org/netdev/20260525001745.1251640-1-k...
* Patch 1 : Move addr_type to if-block for CONFIG_IPV6=n
* Patch 4 : Don't set cfg->dualstack for IFLA_GENEVE_REMOTE6?
* Patch 5 : Validate saddr in geneve_xmit_skb() and geneve6_xmit_skb().
v1: https://lore.kernel.org/netdev/20260523061654.2767060-1-k...
Kuniyuki Iwashima (5):
geneve: Reuse ipv6_addr_type() result in geneve_nl2info().
geneve: Pass struct geneve_dev to geneve_create_sock().
geneve: Pass struct geneve_dev to geneve_find_sock().
geneve: Add dualstack flag to struct geneve_config.
geneve: Introduce IFLA_GENEVE_LOCAL and IFLA_GENEVE_LOCAL6.
Documentation/netlink/specs/rt-link.yaml | 9 +
drivers/net/geneve.c | 240 ++++++++++++++++++-----
include/uapi/linux/if_link.h | 2 +
3 files changed, 205 insertions(+), 46 deletions(-)
--
2.54.0.794.g4f17f83d09-goog