• A
    seg6: add support for optional attributes in SRv6 behaviors · 0a3021f1
    Andrea Mayer 提交于
    Before this patch, each SRv6 behavior specifies a set of required
    attributes that must be provided by the userspace application when such
    behavior is going to be instantiated. If at least one of the required
    attributes is not provided, the creation of the behavior fails.
    
    The SRv6 behavior framework lacks a way to manage optional attributes.
    By definition, an optional attribute for a SRv6 behavior consists of an
    attribute which may or may not be provided by the userspace. Therefore,
    if an optional attribute is missing (and thus not supplied by the user)
    the creation of the behavior goes ahead without any issue.
    
    This patch explicitly differentiates the required attributes from the
    optional attributes. In particular, each behavior can declare a set of
    required attributes and a set of optional ones.
    
    The semantic of the required attributes remains *totally* unaffected by
    this patch. The introduction of the optional attributes does NOT impact
    on the backward compatibility of the existing SRv6 behaviors.
    
    It is essential to note that if an (optional or required) attribute is
    supplied to a SRv6 behavior which does not expect it, the behavior
    simply discards such attribute without generating any error or warning.
    This operating mode remained unchanged both before and after the
    introduction of the optional attributes extension.
    
    The optional attributes are one of the key components used to implement
    the SRv6 End.DT6 behavior based on the Virtual Routing and Forwarding
    (VRF) framework. The optional attributes make possible the coexistence
    of the already existing SRv6 End.DT6 implementation with the new SRv6
    End.DT6 VRF-based implementation without breaking any backward
    compatibility. Further details on the SRv6 End.DT6 behavior (VRF mode)
    are reported in subsequent patches.
    
    From the userspace point of view, the support for optional attributes DO
    NOT require any changes to the userspace applications, i.e: iproute2
    unless new attributes (required or optional) are needed.
    Signed-off-by: NAndrea Mayer <andrea.mayer@uniroma2.it>
    Signed-off-by: NJakub Kicinski <kuba@kernel.org>
    0a3021f1
seg6_local.c 28.1 KB