mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
docs: xfrm: include mark in XFRM_MSG_MIGRATE_STATE EEXIST tuple
Document mark as part of the EEXIST tuple and update the SA lookup
description to match.
Fixes: c13c0cc6f5 ("xfrm: add documentation for XFRM_MSG_MIGRATE_STATE")
Signed-off-by: Antony Antony <antony.antony@secunet.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
This commit is contained in:
parent
24bc5e5499
commit
dcf413245c
|
|
@ -27,15 +27,20 @@ SA Identification
|
|||
=================
|
||||
|
||||
The struct is defined in ``include/uapi/linux/xfrm.h``. The SA is looked
|
||||
up using ``xfrm_state_lookup()`` with ``id.spi``,
|
||||
``id.daddr``, ``id.proto``, ``id.family``, and
|
||||
``old_mark.v & old_mark.m`` as the mark key::
|
||||
up using ``xfrm_state_lookup_exact()`` with ``id.spi``, ``id.daddr``,
|
||||
``id.proto``, ``id.family``, and an exact match against ``old_mark.v``
|
||||
and ``old_mark.m``. Unlike the data path, which uses a masked
|
||||
comparison, this requires the SA's mark and mask to equal ``old_mark``
|
||||
exactly, so a broad-mask SA is never matched when a more specific one
|
||||
was intended. If no such SA exists, ``-ESRCH`` is returned.
|
||||
|
||||
The layout is::
|
||||
|
||||
struct xfrm_user_migrate_state {
|
||||
struct xfrm_usersa_id id; /* spi, daddr, proto, family */
|
||||
xfrm_address_t new_daddr;
|
||||
xfrm_address_t new_saddr;
|
||||
struct xfrm_mark old_mark; /* SA lookup: key = v & m */
|
||||
struct xfrm_mark old_mark; /* SA lookup key (exact v/m match) */
|
||||
struct xfrm_selector new_sel; /* new selector (see Flags) */
|
||||
__u32 new_reqid;
|
||||
__u32 flags; /* XFRM_MIGRATE_STATE_* */
|
||||
|
|
@ -72,8 +77,8 @@ inherits the value from the existing SA (omit-to-inherit).
|
|||
- Description
|
||||
* - ``XFRMA_MARK``
|
||||
- Mark on the migrated SA (``struct xfrm_mark``). Absent inherits
|
||||
``old_mark``. To use no mark on the new SA, send ``XFRMA_MARK``
|
||||
with ``{0, 0}``.
|
||||
the mark of the existing SA. To use no mark on the new SA, send
|
||||
``XFRMA_MARK`` with ``{0, 0}``.
|
||||
* - ``XFRMA_ENCAP``
|
||||
- UDP encapsulation template; only ``UDP_ENCAP_ESPINUDP`` is supported.
|
||||
Set ``encap_type=0`` to remove encap.
|
||||
|
|
@ -259,8 +264,12 @@ Attributes in the notification
|
|||
Error Handling
|
||||
==============
|
||||
|
||||
If the target SA tuple (new daddr, SPI, proto, new family) is already
|
||||
occupied, the operation returns ``-EEXIST`` before the migration begins.
|
||||
If the target SA tuple (new daddr, SPI, proto, new family, mark) is
|
||||
already occupied, the operation returns ``-EEXIST`` before the migration
|
||||
begins. "Occupied" includes wildcard shadowing: an existing SA with a
|
||||
broader mask (e.g. mark 0/0) claims every mark value, so it blocks
|
||||
migrating to any more specific mark at the same tuple, not just an
|
||||
exact mark/mask duplicate.
|
||||
The old SA remains intact and the operation is safe to retry after
|
||||
resolving the conflict.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user