summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--clients/cli/connections.c1
-rw-r--r--clients/common/nm-meta-setting-desc.c29
-rw-r--r--clients/common/settings-docs.h.in1
-rw-r--r--docs/libnm/libnm-docs.xml1
-rw-r--r--libnm-core/meson.build2
-rw-r--r--libnm-core/nm-connection.c5
-rw-r--r--libnm-core/nm-core-internal.h1
-rw-r--r--libnm-core/nm-core-types.h1
-rw-r--r--libnm-core/nm-setting-vrf.c168
-rw-r--r--libnm-core/nm-setting-vrf.h36
-rw-r--r--libnm-core/nm-setting.c15
-rw-r--r--libnm/NetworkManager.h1
-rw-r--r--libnm/libnm.ver3
-rw-r--r--po/POTFILES.in1
-rw-r--r--shared/nm-meta-setting.c7
-rw-r--r--shared/nm-meta-setting.h1
17 files changed, 268 insertions, 7 deletions
diff --git a/Makefile.am b/Makefile.am
index 1673fc1fc3..a7e0495a59 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -918,6 +918,7 @@ libnm_core_lib_h_pub_real = \
libnm-core/nm-setting-user.h \
libnm-core/nm-setting-vlan.h \
libnm-core/nm-setting-vpn.h \
+ libnm-core/nm-setting-vrf.h \
libnm-core/nm-setting-vxlan.h \
libnm-core/nm-setting-wifi-p2p.h \
libnm-core/nm-setting-wimax.h \
@@ -990,6 +991,7 @@ libnm_core_lib_c_settings_real = \
libnm-core/nm-setting-user.c \
libnm-core/nm-setting-vlan.c \
libnm-core/nm-setting-vpn.c \
+ libnm-core/nm-setting-vrf.c \
libnm-core/nm-setting-vxlan.c \
libnm-core/nm-setting-wifi-p2p.c \
libnm-core/nm-setting-wimax.c \
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index a4fbf6df3a..6e4e7fd964 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -855,6 +855,7 @@ const NmcMetaGenericInfo *const metagen_con_active_vpn[_NMC_GENERIC_INFO_TYPE_CO
NM_SETTING_MACSEC_SETTING_NAME"," \
NM_SETTING_MACVLAN_SETTING_NAME"," \
NM_SETTING_VXLAN_SETTING_NAME"," \
+ NM_SETTING_VRF_SETTING_NAME"," \
NM_SETTING_WPAN_SETTING_NAME","\
NM_SETTING_6LOWPAN_SETTING_NAME","\
NM_SETTING_WIREGUARD_SETTING_NAME","\
diff --git a/clients/common/nm-meta-setting-desc.c b/clients/common/nm-meta-setting-desc.c
index d28efa0753..c5b8bb3166 100644
--- a/clients/common/nm-meta-setting-desc.c
+++ b/clients/common/nm-meta-setting-desc.c
@@ -5127,7 +5127,8 @@ static const NMMetaPropertyInfo *const property_infos_CONNECTION[] = {
NM_SETTING_BRIDGE_SETTING_NAME,
NM_SETTING_OVS_BRIDGE_SETTING_NAME,
NM_SETTING_OVS_PORT_SETTING_NAME,
- NM_SETTING_TEAM_SETTING_NAME),
+ NM_SETTING_TEAM_SETTING_NAME,
+ NM_SETTING_VRF_SETTING_NAME),
),
),
PROPERTY_INFO_WITH_DESC (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
@@ -6915,6 +6916,20 @@ static const NMMetaPropertyInfo *const property_infos_VPN[] = {
};
#undef _CURRENT_NM_META_SETTING_TYPE
+#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VRF
+static const NMMetaPropertyInfo *const property_infos_VRF[] = {
+ PROPERTY_INFO_WITH_DESC (NM_SETTING_VRF_TABLE,
+ .is_cli_option = TRUE,
+ .property_alias = "table",
+ .inf_flags = NM_META_PROPERTY_INF_FLAG_REQD,
+ .prompt = N_("Table [0]"),
+ .property_type = &_pt_gobject_int,
+ ),
+ NULL
+};
+
+
+#undef _CURRENT_NM_META_SETTING_TYPE
#define _CURRENT_NM_META_SETTING_TYPE NM_META_SETTING_TYPE_VXLAN
static const NMMetaPropertyInfo *const property_infos_VXLAN[] = {
PROPERTY_INFO_WITH_DESC (NM_SETTING_VXLAN_PARENT,
@@ -7698,6 +7713,7 @@ _setting_init_fcn_wireless (ARGS_SETTING_INIT_FCN)
#define SETTING_PRETTY_NAME_USER N_("User settings")
#define SETTING_PRETTY_NAME_VLAN N_("VLAN connection")
#define SETTING_PRETTY_NAME_VPN N_("VPN connection")
+#define SETTING_PRETTY_NAME_VRF N_("VRF connection")
#define SETTING_PRETTY_NAME_VXLAN N_("VXLAN connection")
#define SETTING_PRETTY_NAME_WIFI_P2P N_("Wi-Fi P2P connection")
#define SETTING_PRETTY_NAME_WIMAX N_("WiMAX connection")
@@ -7938,6 +7954,13 @@ const NMMetaSettingInfoEditor nm_meta_setting_infos_editor[] = {
NM_META_SETTING_VALID_PART_ITEM (VPN, TRUE),
),
),
+ SETTING_INFO (VRF,
+ .valid_parts = NM_META_SETTING_VALID_PARTS (
+ NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
+ NM_META_SETTING_VALID_PART_ITEM (VRF, TRUE),
+ ),
+ ),
+
SETTING_INFO (VXLAN,
.valid_parts = NM_META_SETTING_VALID_PARTS (
NM_META_SETTING_VALID_PART_ITEM (CONNECTION, TRUE),
@@ -8062,6 +8085,10 @@ nm_meta_setting_info_valid_parts_for_slave_type (const char *slave_type, const c
NM_SET_OUT (out_slave_name, "team-slave");
return valid_settings_slave_team;
}
+ if (nm_streq (slave_type, NM_SETTING_VRF_SETTING_NAME)) {
+ NM_SET_OUT (out_slave_name, "vrf-slave");
+ return valid_settings_noslave;
+ }
return NULL;
}
diff --git a/clients/common/settings-docs.h.in b/clients/common/settings-docs.h.in
index 57e9ab2a48..5ab0152222 100644
--- a/clients/common/settings-docs.h.in
+++ b/clients/common/settings-docs.h.in
@@ -354,6 +354,7 @@
#define DESCRIBE_DOC_NM_SETTING_VPN_SERVICE_TYPE N_("D-Bus service name of the VPN plugin that this setting uses to connect to its network. i.e. org.freedesktop.NetworkManager.vpnc for the vpnc plugin.")
#define DESCRIBE_DOC_NM_SETTING_VPN_TIMEOUT N_("Timeout for the VPN service to establish the connection. Some services may take quite a long time to connect. Value of 0 means a default timeout, which is 60 seconds (unless overridden by vpn.timeout in configuration file). Values greater than zero mean timeout in seconds.")
#define DESCRIBE_DOC_NM_SETTING_VPN_USER_NAME N_("If the VPN connection requires a user name for authentication, that name should be provided here. If the connection is available to more than one user, and the VPN requires each user to supply a different name, then leave this property empty. If this property is empty, NetworkManager will automatically supply the username of the user which requested the VPN connection.")
+#define DESCRIBE_DOC_NM_SETTING_VRF_TABLE N_("The routing table for this VRF.")
#define DESCRIBE_DOC_NM_SETTING_VXLAN_AGEING N_("Specifies the lifetime in seconds of FDB entries learnt by the kernel.")
#define DESCRIBE_DOC_NM_SETTING_VXLAN_DESTINATION_PORT N_("Specifies the UDP destination port to communicate to the remote VXLAN tunnel endpoint.")
#define DESCRIBE_DOC_NM_SETTING_VXLAN_ID N_("Specifies the VXLAN Network Identifier (or VXLAN Segment Identifier) to use.")
diff --git a/docs/libnm/libnm-docs.xml b/docs/libnm/libnm-docs.xml
index 357cfe16d0..e92f2a3117 100644
--- a/docs/libnm/libnm-docs.xml
+++ b/docs/libnm/libnm-docs.xml
@@ -350,6 +350,7 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-setting-user.xml"/>
<xi:include href="xml/nm-setting-vlan.xml"/>
<xi:include href="xml/nm-setting-vpn.xml"/>
+ <xi:include href="xml/nm-setting-vrf.xml"/>
<xi:include href="xml/nm-setting-vxlan.xml"/>
<xi:include href="xml/nm-setting-wifi-p2p.xml"/>
<xi:include href="xml/nm-setting-wimax.xml"/>
diff --git a/libnm-core/meson.build b/libnm-core/meson.build
index 4e1c93e778..27d6e2c8cc 100644
--- a/libnm-core/meson.build
+++ b/libnm-core/meson.build
@@ -56,6 +56,7 @@ libnm_core_headers = files(
'nm-setting-user.h',
'nm-setting-vlan.h',
'nm-setting-vpn.h',
+ 'nm-setting-vrf.h',
'nm-setting-vxlan.h',
'nm-setting-wifi-p2p.h',
'nm-setting-wimax.h',
@@ -150,6 +151,7 @@ libnm_core_settings_sources = files(
'nm-setting-user.c',
'nm-setting-vlan.c',
'nm-setting-vpn.c',
+ 'nm-setting-vrf.c',
'nm-setting-vxlan.c',
'nm-setting-wifi-p2p.c',
'nm-setting-wimax.c',
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c
index bedf3003c7..7c62bea2f3 100644
--- a/libnm-core/nm-connection.c
+++ b/libnm-core/nm-connection.c
@@ -887,6 +887,7 @@ static gboolean
_supports_addr_family (NMConnection *self, int family)
{
const char *connection_type = nm_connection_get_connection_type (self);
+ NMSettingConnection *s_con;
g_return_val_if_fail (connection_type, TRUE);
if (strcmp (connection_type, NM_SETTING_OVS_INTERFACE_SETTING_NAME) == 0)
@@ -895,6 +896,9 @@ _supports_addr_family (NMConnection *self, int family)
return FALSE;
if (strcmp (connection_type, NM_SETTING_6LOWPAN_SETTING_NAME) == 0)
return family == AF_INET6 || family == AF_UNSPEC;
+ if ( (s_con = nm_connection_get_setting_connection (self))
+ && (nm_streq0 (nm_setting_connection_get_slave_type (s_con), NM_SETTING_VRF_SETTING_NAME)))
+ return TRUE;
return !nm_setting_connection_get_master (nm_connection_get_setting_connection (self));
}
@@ -2687,6 +2691,7 @@ nm_connection_is_virtual (NMConnection *connection)
NM_SETTING_TEAM_SETTING_NAME,
NM_SETTING_TUN_SETTING_NAME,
NM_SETTING_VLAN_SETTING_NAME,
+ NM_SETTING_VRF_SETTING_NAME,
NM_SETTING_VXLAN_SETTING_NAME,
NM_SETTING_WIREGUARD_SETTING_NAME))
return TRUE;
diff --git a/libnm-core/nm-core-internal.h b/libnm-core/nm-core-internal.h
index 95cfc47f3d..bd65432eee 100644
--- a/libnm-core/nm-core-internal.h
+++ b/libnm-core/nm-core-internal.h
@@ -61,6 +61,7 @@
#include "nm-setting-tun.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
+#include "nm-setting-vrf.h"
#include "nm-setting-vxlan.h"
#include "nm-setting-wifi-p2p.h"
#include "nm-setting-wimax.h"
diff --git a/libnm-core/nm-core-types.h b/libnm-core/nm-core-types.h
index d7c1b5b5b7..d1ce6310cd 100644
--- a/libnm-core/nm-core-types.h
+++ b/libnm-core/nm-core-types.h
@@ -54,6 +54,7 @@ typedef struct _NMSettingTun NMSettingTun;
typedef struct _NMSettingUser NMSettingUser;
typedef struct _NMSettingVlan NMSettingVlan;
typedef struct _NMSettingVpn NMSettingVpn;
+typedef struct _NMSettingVrf NMSettingVrf;
typedef struct _NMSettingVxlan NMSettingVxlan;
typedef struct _NMSettingWifiP2P NMSettingWifiP2P;
typedef struct _NMSettingWimax NMSettingWimax;
diff --git a/libnm-core/nm-setting-vrf.c b/libnm-core/nm-setting-vrf.c
new file mode 100644
index 0000000000..9a62e86493
--- /dev/null
+++ b/libnm-core/nm-setting-vrf.c
@@ -0,0 +1,168 @@
+// SPDX-License-Identifier: LGPL-2.1+
+
+#include "nm-default.h"
+
+#include "nm-setting-vrf.h"
+
+#include "nm-connection-private.h"
+#include "nm-setting-connection.h"
+#include "nm-setting-private.h"
+
+/**
+ * SECTION:nm-setting-vrf
+ * @short_description: Describes connection properties for vrf interfaces
+ *
+ * The #NMSettingVrf object is a #NMSetting subclass that describes properties
+ * necessary for connection to vrf devices
+ **/
+
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE_BASE (
+ PROP_TABLE,
+);
+
+/**
+ * NMSettingVrf:
+ *
+ * VRF settings.
+ *
+ * Since: 1.24
+ */
+struct _NMSettingVrf {
+ NMSetting parent;
+ guint32 table;
+};
+
+struct _NMSettingVrfClass {
+ NMSettingClass parent;
+};
+
+G_DEFINE_TYPE (NMSettingVrf, nm_setting_vrf, NM_TYPE_SETTING)
+
+/*****************************************************************************/
+
+/**
+ * nm_setting_vrf_get_table:
+ * @setting: the #NMSettingVrf
+ *
+ * Returns: the routing table for the VRF
+ *
+ * Since: 1.24
+ **/
+guint32
+nm_setting_vrf_get_table (NMSettingVrf *setting)
+{
+ g_return_val_if_fail (NM_IS_SETTING_VRF (setting), 0);
+
+ return setting->table;
+}
+
+/*****************************************************************************/
+
+static gboolean
+verify (NMSetting *setting, NMConnection *connection, GError **error)
+{
+ NMSettingVrf *self = NM_SETTING_VRF (setting);
+
+ if (!_nm_connection_verify_required_interface_name (connection, error))
+ return FALSE;
+
+ if (self->table == 0) {
+ g_set_error_literal (error,
+ NM_CONNECTION_ERROR,
+ NM_CONNECTION_ERROR_INVALID_PROPERTY,
+ _("table cannot be zero"));
+ g_prefix_error (error, "%s.%s: ", NM_SETTING_VRF_SETTING_NAME,
+ NM_SETTING_VRF_TABLE);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+/*****************************************************************************/
+
+static void
+get_property (GObject *object, guint prop_id,
+ GValue *value, GParamSpec *pspec)
+{
+ NMSettingVrf *self = NM_SETTING_VRF (object);
+
+ switch (prop_id) {
+ case PROP_TABLE:
+ g_value_set_uint (value, self->table);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+set_property (GObject *object, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ NMSettingVrf *self = NM_SETTING_VRF (object);
+
+ switch (prop_id) {
+ case PROP_TABLE:
+ self->table = g_value_get_uint (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/*****************************************************************************/
+
+static void
+nm_setting_vrf_init (NMSettingVrf *setting)
+{
+}
+
+/**
+ * nm_setting_vrf_new:
+ *
+ * Creates a new #NMSettingVrf object with default values.
+ *
+ * Returns: (transfer full): the new empty #NMSettingVrf object
+ *
+ * Since: 1.24
+ **/
+NMSetting *
+nm_setting_vrf_new (void)
+{
+ return (NMSetting *) g_object_new (NM_TYPE_SETTING_VRF, NULL);
+}
+
+static void
+nm_setting_vrf_class_init (NMSettingVrfClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ NMSettingClass *setting_class = NM_SETTING_CLASS (klass);
+
+ object_class->get_property = get_property;
+ object_class->set_property = set_property;
+
+ setting_class->verify = verify;
+
+ /**
+ * NMSettingVrf:table:
+ *
+ * The routing table for this VRF.
+ *
+ * Since: 1.24
+ **/
+ obj_properties[PROP_TABLE] =
+ g_param_spec_uint (NM_SETTING_VRF_TABLE, "", "",
+ 0, G_MAXUINT32, 0,
+ G_PARAM_READWRITE |
+ NM_SETTING_PARAM_INFERRABLE |
+ G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
+
+ _nm_setting_class_commit (setting_class, NM_META_SETTING_TYPE_VRF);
+}
diff --git a/libnm-core/nm-setting-vrf.h b/libnm-core/nm-setting-vrf.h
new file mode 100644
index 0000000000..774a4824b7
--- /dev/null
+++ b/libnm-core/nm-setting-vrf.h
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: LGPL-2.1+
+
+#ifndef __NM_SETTING_VRF_H__
+#define __NM_SETTING_VRF_H__
+
+#if !defined (__NETWORKMANAGER_H_INSIDE__) && !defined (NETWORKMANAGER_COMPILATION)
+#error "Only <NetworkManager.h> can be included directly."
+#endif
+
+#include "nm-setting.h"
+
+G_BEGIN_DECLS
+
+#define NM_TYPE_SETTING_VRF (nm_setting_vrf_get_type ())
+#define NM_SETTING_VRF(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTING_VRF, NMSettingVrf))
+#define NM_SETTING_VRF_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTING_VRFCONFIG, NMSettingVrfClass))
+#define NM_IS_SETTING_VRF(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTING_VRF))
+#define NM_IS_SETTING_VRF_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SETTING_VRF))
+#define NM_SETTING_VRF_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTING_VRF, NMSettingVrfClass))
+
+#define NM_SETTING_VRF_SETTING_NAME "vrf"
+
+#define NM_SETTING_VRF_TABLE "table"
+
+typedef struct _NMSettingVrfClass NMSettingVrfClass;
+
+NM_AVAILABLE_IN_1_24
+GType nm_setting_vrf_get_type (void);
+NM_AVAILABLE_IN_1_24
+NMSetting *nm_setting_vrf_new (void);
+NM_AVAILABLE_IN_1_24
+guint32 nm_setting_vrf_get_table (NMSettingVrf *setting);
+
+G_END_DECLS
+
+#endif /* __NM_SETTING_VRF_H__ */
diff --git a/libnm-core/nm-setting.c b/libnm-core/nm-setting.c
index b7be9c657f..a75302f00f 100644
--- a/libnm-core/nm-setting.c
+++ b/libnm-core/nm-setting.c
@@ -151,15 +151,18 @@ _nm_setting_slave_type_is_valid (const char *slave_type, const char **out_port_t
if (!slave_type)
found = FALSE;
- else if (!strcmp (slave_type, NM_SETTING_BOND_SETTING_NAME))
- ;
- else if (!strcmp (slave_type, NM_SETTING_BRIDGE_SETTING_NAME))
+ else if (NM_IN_STRSET (slave_type,
+ NM_SETTING_BOND_SETTING_NAME,
+ NM_SETTING_VRF_SETTING_NAME)) {
+ /* pass */
+ }
+ else if (nm_streq (slave_type, NM_SETTING_BRIDGE_SETTING_NAME))
port_type = NM_SETTING_BRIDGE_PORT_SETTING_NAME;
- else if (!strcmp (slave_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME))
+ else if (nm_streq (slave_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME))
port_type = NM_SETTING_OVS_PORT_SETTING_NAME;
- else if (!strcmp (slave_type, NM_SETTING_OVS_PORT_SETTING_NAME))
+ else if (nm_streq (slave_type, NM_SETTING_OVS_PORT_SETTING_NAME))
port_type = NM_SETTING_OVS_INTERFACE_SETTING_NAME;
- else if (!strcmp (slave_type, NM_SETTING_TEAM_SETTING_NAME))
+ else if (nm_streq (slave_type, NM_SETTING_TEAM_SETTING_NAME))
port_type = NM_SETTING_TEAM_PORT_SETTING_NAME;
else
found = FALSE;
diff --git a/libnm/NetworkManager.h b/libnm/NetworkManager.h
index 6a0f117865..41f9354222 100644
--- a/libnm/NetworkManager.h
+++ b/libnm/NetworkManager.h
@@ -88,6 +88,7 @@
#include "nm-setting-user.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
+#include "nm-setting-vrf.h"
#include "nm-setting-vxlan.h"
#include "nm-setting-wimax.h"
#include "nm-setting-wired.h"
diff --git a/libnm/libnm.ver b/libnm/libnm.ver
index d8e069f8ae..8544fd43d7 100644
--- a/libnm/libnm.ver
+++ b/libnm/libnm.ver
@@ -1665,4 +1665,7 @@ global:
nm_client_get_permissions_state;
nm_client_instance_flags_get_type;
nm_object_get_client;
+ nm_setting_vrf_get_table;
+ nm_setting_vrf_get_type;
+ nm_setting_vrf_new;
} libnm_1_22_0;
diff --git a/po/POTFILES.in b/po/POTFILES.in
index d48d92a00e..d09909f8a4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -90,6 +90,7 @@ libnm-core/nm-setting-team.c
libnm-core/nm-setting-tun.c
libnm-core/nm-setting-user.c
libnm-core/nm-setting-vlan.c
+libnm-core/nm-setting-vrf.c
libnm-core/nm-setting-vpn.c
libnm-core/nm-setting-vxlan.c
libnm-core/nm-setting-wifi-p2p.c
diff --git a/shared/nm-meta-setting.c b/shared/nm-meta-setting.c
index af5aa8429d..cf6309b168 100644
--- a/shared/nm-meta-setting.c
+++ b/shared/nm-meta-setting.c
@@ -46,6 +46,7 @@
#include "nm-setting-user.h"
#include "nm-setting-vlan.h"
#include "nm-setting-vpn.h"
+#include "nm-setting-vrf.h"
#include "nm-setting-vxlan.h"
#include "nm-setting-wifi-p2p.h"
#include "nm-setting-wimax.h"
@@ -387,6 +388,12 @@ const NMMetaSettingInfo nm_meta_setting_infos[] = {
.setting_name = NM_SETTING_VPN_SETTING_NAME,
.get_setting_gtype = nm_setting_vpn_get_type,
},
+ [NM_META_SETTING_TYPE_VRF] = {
+ .meta_type = NM_META_SETTING_TYPE_VRF,
+ .setting_priority = NM_SETTING_PRIORITY_HW_BASE,
+ .setting_name = NM_SETTING_VRF_SETTING_NAME,
+ .get_setting_gtype = nm_setting_vrf_get_type,
+ },
[NM_META_SETTING_TYPE_VXLAN] = {
.meta_type = NM_META_SETTING_TYPE_VXLAN,
.setting_priority = NM_SETTING_PRIORITY_HW_BASE,
diff --git a/shared/nm-meta-setting.h b/shared/nm-meta-setting.h
index 3976bfe19b..8b0c7d35a5 100644
--- a/shared/nm-meta-setting.h
+++ b/shared/nm-meta-setting.h
@@ -142,6 +142,7 @@ typedef enum {
NM_META_SETTING_TYPE_USER,
NM_META_SETTING_TYPE_VLAN,
NM_META_SETTING_TYPE_VPN,
+ NM_META_SETTING_TYPE_VRF,
NM_META_SETTING_TYPE_VXLAN,
NM_META_SETTING_TYPE_WIFI_P2P,
NM_META_SETTING_TYPE_WIMAX,