<para>A static local address for tunneled packets. It must be an address on another interface
of this host, or one of the special values <literal>any</literal>,
<literal>ipv4_link_local</literal>, <literal>ipv6_link_local</literal>,
- <literal>dhcp4</literal>, <literal>dhcp6</literal>, and <literal>slaac</literal>. If one
+ <literal>dhcp4</literal>, <literal>dhcp6</literal>, <literal>dhcp_pd</literal>, and <literal>slaac</literal>. If one
of the special values except for <literal>any</literal> is specified, an address which
matches the corresponding type on the underlying interface will be used. Defaults to
<literal>any</literal>.</para>
#include "string-table.h"
static const char * const netdev_local_address_type_table[_NETDEV_LOCAL_ADDRESS_TYPE_MAX] = {
- [NETDEV_LOCAL_ADDRESS_IPV4LL] = "ipv4_link_local",
- [NETDEV_LOCAL_ADDRESS_IPV6LL] = "ipv6_link_local",
- [NETDEV_LOCAL_ADDRESS_DHCP4] = "dhcp4",
- [NETDEV_LOCAL_ADDRESS_DHCP6] = "dhcp6",
- [NETDEV_LOCAL_ADDRESS_SLAAC] = "slaac",
+ [NETDEV_LOCAL_ADDRESS_IPV4LL] = "ipv4_link_local",
+ [NETDEV_LOCAL_ADDRESS_IPV6LL] = "ipv6_link_local",
+ [NETDEV_LOCAL_ADDRESS_DHCP4] = "dhcp4",
+ [NETDEV_LOCAL_ADDRESS_DHCP6] = "dhcp6",
+ [NETDEV_LOCAL_ADDRESS_SLAAC] = "slaac",
+ [NETDEV_LOCAL_ADDRESS_DHCP_PD] = "dhcp_pd",
};
DEFINE_STRING_TABLE_LOOKUP(netdev_local_address_type, NetDevLocalAddressType);
case NETDEV_LOCAL_ADDRESS_IPV6LL:
case NETDEV_LOCAL_ADDRESS_DHCP6:
case NETDEV_LOCAL_ADDRESS_SLAAC:
+ case NETDEV_LOCAL_ADDRESS_DHCP_PD:
assert(IN_SET(family, AF_UNSPEC, AF_INET6));
family = AF_INET6;
break;
if (a->source != NETWORK_CONFIG_SOURCE_NDISC)
continue;
break;
+ case NETDEV_LOCAL_ADDRESS_DHCP_PD:
+ if (a->source != NETWORK_CONFIG_SOURCE_DHCP_PD)
+ continue;
+ break;
default:
assert_not_reached();
}
NETDEV_LOCAL_ADDRESS_DHCP4,
NETDEV_LOCAL_ADDRESS_DHCP6,
NETDEV_LOCAL_ADDRESS_SLAAC,
+ NETDEV_LOCAL_ADDRESS_DHCP_PD,
_NETDEV_LOCAL_ADDRESS_TYPE_MAX,
_NETDEV_LOCAL_ADDRESS_TYPE_INVALID = -EINVAL,
} NetDevLocalAddressType;
#include "conf-parser.h"
#include "hexdecoct.h"
#include "missing-network.h"
+#include "netdev-util.h"
#include "netlink-util.h"
#include "networkd-manager.h"
#include "parse-util.h"
type = netdev_local_address_type_from_string(rvalue);
if (IN_SET(type, NETDEV_LOCAL_ADDRESS_IPV4LL, NETDEV_LOCAL_ADDRESS_DHCP4))
f = AF_INET;
- else if (IN_SET(type, NETDEV_LOCAL_ADDRESS_IPV6LL, NETDEV_LOCAL_ADDRESS_DHCP6, NETDEV_LOCAL_ADDRESS_SLAAC))
+ else if (IN_SET(type, NETDEV_LOCAL_ADDRESS_IPV6LL, NETDEV_LOCAL_ADDRESS_DHCP6, NETDEV_LOCAL_ADDRESS_SLAAC, NETDEV_LOCAL_ADDRESS_DHCP_PD))
f = AF_INET6;
else {
type = _NETDEV_LOCAL_ADDRESS_TYPE_INVALID;