NMSettingIP6Config

NMSettingIP6Config — Describes IPv6 addressing, routing, and name service properties

Properties

int addr-gen-mode Read / Write
char * dhcp-duid Read / Write
NMSettingIP6ConfigPrivacy ip6-privacy Read / Write
int ra-timeout Read / Write
char * token Read / Write

Object Hierarchy

    GEnum
    ├── NMSettingIP6ConfigAddrGenMode
    ╰── NMSettingIP6ConfigPrivacy
    GObject
    ╰── NMSetting
        ╰── NMSettingIPConfig
            ╰── NMSettingIP6Config

Description

The NMSettingIP6Config object is a NMSetting subclass that describes properties related to IPv6 addressing, routing, and Domain Name Service

NMSettingIP6Config has few properties or methods of its own; it inherits almost everything from NMSettingIPConfig.

NetworkManager supports 7 values for the “method” property for IPv6. If "auto" is specified then the appropriate automatic method (PPP, router advertisement, etc) is used for the device and most other properties can be left unset. To force the use of DHCP only, specify "dhcp"; this method is only valid for Ethernet- based hardware. If "link-local" is specified, then an IPv6 link-local address will be assigned to the interface. If "manual" is specified, static IP addressing is used and at least one IP address must be given in the "addresses" property. If "ignore" is specified, IPv6 configuration is not done. Note: the "shared" method is not yet supported. If "disabled" is specified, IPv6 is disabled completely for the interface.

Functions

nm_setting_ip6_config_new ()

NMSetting *
nm_setting_ip6_config_new (void);

Creates a new NMSettingIP6Config object with default values.

Returns

the new empty NMSettingIP6Config object.

[transfer full]


nm_setting_ip6_config_get_ip6_privacy ()

NMSettingIP6ConfigPrivacy
nm_setting_ip6_config_get_ip6_privacy (NMSettingIP6Config *setting);

Returns the value contained in the “ip6-privacy” property.

Parameters

setting

the NMSettingIP6Config

 

Returns

IPv6 Privacy Extensions configuration value (NMSettingIP6ConfigPrivacy).


nm_setting_ip6_config_get_addr_gen_mode ()

NMSettingIP6ConfigAddrGenMode
nm_setting_ip6_config_get_addr_gen_mode
                               (NMSettingIP6Config *setting);

Returns the value contained in the “addr-gen-mode” property.

Parameters

setting

the NMSettingIP6Config

 

Returns

IPv6 Address Generation Mode.

Since: 1.2


nm_setting_ip6_config_get_token ()

const char *
nm_setting_ip6_config_get_token (NMSettingIP6Config *setting);

Returns the value contained in the “token” property.

Parameters

setting

the NMSettingIP6Config

 

Returns

A string.

Since: 1.4


nm_setting_ip6_config_get_dhcp_duid ()

const char *
nm_setting_ip6_config_get_dhcp_duid (NMSettingIP6Config *setting);

Returns the value contained in the “dhcp-duid” property.

Parameters

setting

the NMSettingIP6Config

 

Returns

The configured DUID value to be included in the DHCPv6 requests sent to the DHCPv6 servers.

Since: 1.12


nm_setting_ip6_config_get_ra_timeout ()

gint32
nm_setting_ip6_config_get_ra_timeout (NMSettingIP6Config *setting);

Parameters

setting

the NMSettingIP6Config

 

Returns

The configured NM_SETTING_IP6_CONFIG_RA_TIMEOUT value with the timeout for router advertisements in seconds.

Since: 1.24

Types and Values

NM_SETTING_IP6_CONFIG_SETTING_NAME

#define NM_SETTING_IP6_CONFIG_SETTING_NAME "ipv6"

NM_SETTING_IP6_CONFIG_IP6_PRIVACY

#define NM_SETTING_IP6_CONFIG_IP6_PRIVACY "ip6-privacy"

NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE

#define NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE "addr-gen-mode"

NM_SETTING_IP6_CONFIG_TOKEN

#define NM_SETTING_IP6_CONFIG_TOKEN "token"

NM_SETTING_IP6_CONFIG_DHCP_DUID

#define NM_SETTING_IP6_CONFIG_DHCP_DUID "dhcp-duid"

NM_SETTING_IP6_CONFIG_RA_TIMEOUT

#define NM_SETTING_IP6_CONFIG_RA_TIMEOUT "ra-timeout"

NM_SETTING_IP6_CONFIG_METHOD_IGNORE

#define NM_SETTING_IP6_CONFIG_METHOD_IGNORE "ignore"

IPv6 is not required or is handled by some other mechanism, and NetworkManager should not configure IPv6 for this connection.


NM_SETTING_IP6_CONFIG_METHOD_AUTO

#define NM_SETTING_IP6_CONFIG_METHOD_AUTO "auto"

IPv6 configuration should be automatically determined via a method appropriate for the hardware interface, ie router advertisements, DHCP, or PPP or some other device-specific manner.


NM_SETTING_IP6_CONFIG_METHOD_DHCP

#define NM_SETTING_IP6_CONFIG_METHOD_DHCP "dhcp"

IPv6 configuration should be automatically determined via DHCPv6 only and router advertisements should be ignored.


NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL

#define NM_SETTING_IP6_CONFIG_METHOD_LINK_LOCAL "link-local"

IPv6 configuration should be automatically configured for link-local-only operation.


NM_SETTING_IP6_CONFIG_METHOD_MANUAL

#define NM_SETTING_IP6_CONFIG_METHOD_MANUAL "manual"

All necessary IPv6 configuration (addresses, prefix, DNS, etc) is specified in the setting's properties.


NM_SETTING_IP6_CONFIG_METHOD_SHARED

#define NM_SETTING_IP6_CONFIG_METHOD_SHARED "shared"

This connection specifies configuration that allows other computers to connect through it to the default network (usually the Internet). The connection's interface will be assigned a private address, and router advertisements, a caching DNS server, and Network Address Translation (NAT) functionality will be started on this connection's interface to allow other devices to connect through that interface to the default network. (not yet supported for IPv6)


NM_SETTING_IP6_CONFIG_METHOD_DISABLED

#define NM_SETTING_IP6_CONFIG_METHOD_DISABLED "disabled"

IPv6 is disabled for the connection.

Since: 1.20


enum NMSettingIP6ConfigPrivacy

NMSettingIP6ConfigPrivacy values indicate if and how IPv6 Privacy Extensions are used (RFC4941).

Members

NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN

unknown or no value specified

 

NM_SETTING_IP6_CONFIG_PRIVACY_DISABLED

IPv6 Privacy Extensions are disabled

 

NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_PUBLIC_ADDR

IPv6 Privacy Extensions are enabled, but public addresses are preferred over temporary addresses

 

NM_SETTING_IP6_CONFIG_PRIVACY_PREFER_TEMP_ADDR

IPv6 Privacy Extensions are enabled and temporary addresses are preferred over public addresses

 

enum NMSettingIP6ConfigAddrGenMode

NMSettingIP6ConfigAddrGenMode controls how the Interface Identifier for RFC4862 Stateless Address Autoconfiguration is created.

Members

NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64

The Interface Identifier is derived from the interface hardware address.

 

NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY

The Interface Identifier is created by using a cryptographically secure hash of a secret host-specific key along with the connection identification and the network address as specified by RFC7217.

 

Since: 1.2


NMSettingIP6Config

typedef struct _NMSettingIP6Config NMSettingIP6Config;

IPv6 Settings

Property Details

The “addr-gen-mode” property

  “addr-gen-mode”            int

Configure method for creating the address for use with RFC4862 IPv6 Stateless Address Autoconfiguration. The permitted values are: NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_EUI64 or NM_SETTING_IP6_CONFIG_ADDR_GEN_MODE_STABLE_PRIVACY.

If the property is set to EUI64, the addresses will be generated using the interface tokens derived from hardware address. This makes the host part of the address to stay constant, making it possible to track host's presence when it changes networks. The address changes when the interface hardware is replaced.

The value of stable-privacy enables use of cryptographically secure hash of a secret host-specific key along with the connection's stable-id and the network address as specified by RFC7217. This makes it impossible to use the address track host's presence, and makes the address stable when the network interface hardware is replaced.

On D-Bus, the absence of an addr-gen-mode setting equals enabling stable-privacy. For keyfile plugin, the absence of the setting on disk means EUI64 so that the property doesn't change on upgrade from older versions.

Note that this setting is distinct from the Privacy Extensions as configured by "ip6-privacy" property and it does not affect the temporary addresses configured with this option.

Owner: NMSettingIP6Config

Flags: Read / Write

Default value: 1

Since: 1.2


The “dhcp-duid” property

  “dhcp-duid”                char *

A string containing the DHCPv6 Unique Identifier (DUID) used by the dhcp client to identify itself to DHCPv6 servers (RFC 3315). The DUID is carried in the Client Identifier option. If the property is a hex string ('aa:bb:cc') it is interpreted as a binary DUID and filled as an opaque value in the Client Identifier option.

The special value "lease" will retrieve the DUID previously used from the lease file belonging to the connection. If no DUID is found and "dhclient" is the configured dhcp client, the DUID is searched in the system-wide dhclient lease file. If still no DUID is found, or another dhcp client is used, a global and permanent DUID-UUID (RFC 6355) will be generated based on the machine-id.

The special values "llt" and "ll" will generate a DUID of type LLT or LL (see RFC 3315) based on the current MAC address of the device. In order to try providing a stable DUID-LLT, the time field will contain a constant timestamp that is used globally (for all profiles) and persisted to disk.

The special values "stable-llt", "stable-ll" and "stable-uuid" will generate a DUID of the corresponding type, derived from the connection's stable-id and a per-host unique key. You may want to include the "${DEVICE}" or "${MAC}" specifier in the stable-id, in case this profile gets activated on multiple devices. So, the link-layer address of "stable-ll" and "stable-llt" will be a generated address derived from the stable id. The DUID-LLT time value in the "stable-llt" option will be picked among a static timespan of three years (the upper bound of the interval is the same constant timestamp used in "llt").

When the property is unset, the global value provided for "ipv6.dhcp-duid" is used. If no global value is provided, the default "lease" value is assumed.

Owner: NMSettingIP6Config

Flags: Read / Write

Default value: NULL

Since: 1.12


The “ip6-privacy” property

  “ip6-privacy”              NMSettingIP6ConfigPrivacy

Configure IPv6 Privacy Extensions for SLAAC, described in RFC4941. If enabled, it makes the kernel generate a temporary IPv6 address in addition to the public one generated from MAC address via modified EUI-64. This enhances privacy, but could cause problems in some applications, on the other hand. The permitted values are: -1: unknown, 0: disabled, 1: enabled (prefer public address), 2: enabled (prefer temporary addresses).

Having a per-connection setting set to "-1" (unknown) means fallback to global configuration "ipv6.ip6-privacy".

If also global configuration is unspecified or set to "-1", fallback to read "/proc/sys/net/ipv6/conf/default/use_tempaddr".

Note that this setting is distinct from the Stable Privacy addresses that can be enabled with the "addr-gen-mode" property's "stable-privacy" setting as another way of avoiding host tracking with IPv6 addresses.

Owner: NMSettingIP6Config

Flags: Read / Write

Default value: NM_SETTING_IP6_CONFIG_PRIVACY_UNKNOWN


The “ra-timeout” property

  “ra-timeout”               int

A timeout for waiting Router Advertisements in seconds. If zero (the default), a globally configured default is used. If still unspecified, the timeout depends on the sysctl settings of the device.

Set to 2147483647 (MAXINT32) for infinity.

Owner: NMSettingIP6Config

Flags: Read / Write

Allowed values: >= 0

Default value: 0

Since: 1.24


The “token” property

  “token”                    char *

Configure the token for draft-chown-6man-tokenised-ipv6-identifiers-02 IPv6 tokenized interface identifiers. Useful with eui64 addr-gen-mode.

Owner: NMSettingIP6Config

Flags: Read / Write

Default value: NULL

Since: 1.4