|
Packit Service |
87a54e |
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
Packit |
5756e2 |
/*
|
|
Packit |
5756e2 |
* Copyright (C) 2007 - 2013 Red Hat, Inc.
|
|
Packit |
5756e2 |
* Copyright (C) 2007 - 2008 Novell, Inc.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
|
|
Packit Service |
2bceb2 |
#include "libnm-core/nm-default-libnm-core.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "nm-setting-connection.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "nm-libnm-core-intern/nm-common-macros.h"
|
|
Packit |
5756e2 |
#include "nm-utils.h"
|
|
Packit |
5756e2 |
#include "nm-utils-private.h"
|
|
Packit |
5756e2 |
#include "nm-core-enum-types.h"
|
|
Packit |
5756e2 |
#include "nm-connection-private.h"
|
|
Packit |
5756e2 |
#include "nm-setting-bond.h"
|
|
Packit |
5756e2 |
#include "nm-setting-bridge.h"
|
|
Packit |
5756e2 |
#include "nm-setting-team.h"
|
|
Packit |
5756e2 |
#include "nm-setting-vlan.h"
|
|
Packit |
5756e2 |
#include "systemd/nm-sd-utils-shared.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* SECTION:nm-setting-connection
|
|
Packit |
5756e2 |
* @short_description: Describes general connection properties
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* The #NMSettingConnection object is a #NMSetting subclass that describes
|
|
Packit |
5756e2 |
* properties that apply to all #NMConnection objects, regardless of what type
|
|
Packit |
5756e2 |
* of network connection they describe. Each #NMConnection object must contain
|
|
Packit |
5756e2 |
* a #NMSettingConnection setting.
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
typedef enum _nm_packed {
|
|
Packit Service |
a1bd4f |
PERM_TYPE_INVALID,
|
|
Packit Service |
a1bd4f |
PERM_TYPE_USER,
|
|
Packit |
5756e2 |
} PermType;
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
typedef struct {
|
|
Packit Service |
a1bd4f |
PermType ptype;
|
|
Packit Service |
a1bd4f |
char * item;
|
|
Packit |
5756e2 |
} Permission;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
NM_GOBJECT_PROPERTIES_DEFINE(NMSettingConnection,
|
|
Packit Service |
a1bd4f |
PROP_ID,
|
|
Packit Service |
a1bd4f |
PROP_UUID,
|
|
Packit Service |
a1bd4f |
PROP_INTERFACE_NAME,
|
|
Packit Service |
a1bd4f |
PROP_TYPE,
|
|
Packit Service |
a1bd4f |
PROP_PERMISSIONS,
|
|
Packit Service |
a1bd4f |
PROP_AUTOCONNECT,
|
|
Packit Service |
a1bd4f |
PROP_AUTOCONNECT_PRIORITY,
|
|
Packit Service |
a1bd4f |
PROP_AUTOCONNECT_RETRIES,
|
|
Packit Service |
a1bd4f |
PROP_MULTI_CONNECT,
|
|
Packit Service |
a1bd4f |
PROP_TIMESTAMP,
|
|
Packit Service |
a1bd4f |
PROP_READ_ONLY,
|
|
Packit Service |
a1bd4f |
PROP_ZONE,
|
|
Packit Service |
a1bd4f |
PROP_MASTER,
|
|
Packit Service |
a1bd4f |
PROP_SLAVE_TYPE,
|
|
Packit Service |
a1bd4f |
PROP_AUTOCONNECT_SLAVES,
|
|
Packit Service |
a1bd4f |
PROP_SECONDARIES,
|
|
Packit Service |
a1bd4f |
PROP_GATEWAY_PING_TIMEOUT,
|
|
Packit Service |
a1bd4f |
PROP_METERED,
|
|
Packit Service |
a1bd4f |
PROP_LLDP,
|
|
Packit Service |
a1bd4f |
PROP_MDNS,
|
|
Packit Service |
a1bd4f |
PROP_LLMNR,
|
|
Packit Service |
a1bd4f |
PROP_STABLE_ID,
|
|
Packit Service |
a1bd4f |
PROP_AUTH_RETRIES,
|
|
Packit Service |
a1bd4f |
PROP_WAIT_DEVICE_TIMEOUT,
|
|
Packit Service |
a1bd4f |
PROP_MUD_URL, );
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
typedef struct {
|
|
Packit Service |
a1bd4f |
GArray *permissions;
|
|
Packit Service |
a1bd4f |
GSList *secondaries; /* secondary connections to activate with the base connection */
|
|
Packit Service |
a1bd4f |
char * id;
|
|
Packit Service |
a1bd4f |
char * uuid;
|
|
Packit Service |
a1bd4f |
char * stable_id;
|
|
Packit Service |
a1bd4f |
char * interface_name;
|
|
Packit Service |
a1bd4f |
char * type;
|
|
Packit Service |
a1bd4f |
char * master;
|
|
Packit Service |
a1bd4f |
char * slave_type;
|
|
Packit Service |
a1bd4f |
char * zone;
|
|
Packit Service |
a1bd4f |
char * mud_url;
|
|
Packit Service |
a1bd4f |
guint64 timestamp;
|
|
Packit Service |
a1bd4f |
int autoconnect_priority;
|
|
Packit Service |
a1bd4f |
int autoconnect_retries;
|
|
Packit Service |
a1bd4f |
int multi_connect;
|
|
Packit Service |
a1bd4f |
int auth_retries;
|
|
Packit Service |
a1bd4f |
int mdns;
|
|
Packit Service |
a1bd4f |
int llmnr;
|
|
Packit Service |
a1bd4f |
int wait_device_timeout;
|
|
Packit Service |
a1bd4f |
guint gateway_ping_timeout;
|
|
Packit Service |
a1bd4f |
NMSettingConnectionAutoconnectSlaves autoconnect_slaves;
|
|
Packit Service |
a1bd4f |
NMMetered metered;
|
|
Packit Service |
a1bd4f |
NMSettingConnectionLldp lldp;
|
|
Packit Service |
a1bd4f |
bool read_only : 1;
|
|
Packit Service |
a1bd4f |
bool autoconnect : 1;
|
|
Packit |
5756e2 |
} NMSettingConnectionPrivate;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
G_DEFINE_TYPE(NMSettingConnection, nm_setting_connection, NM_TYPE_SETTING)
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
#define NM_SETTING_CONNECTION_GET_PRIVATE(o) \
|
|
Packit Service |
a1bd4f |
(G_TYPE_INSTANCE_GET_PRIVATE((o), NM_TYPE_SETTING_CONNECTION, NMSettingConnectionPrivate))
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
static void
|
|
Packit Service |
a1bd4f |
_permission_set_stale(Permission *permission, PermType ptype, char *item_take)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_assert(permission);
|
|
Packit Service |
a1bd4f |
nm_assert(NM_IN_SET(ptype, PERM_TYPE_INVALID, PERM_TYPE_USER));
|
|
Packit Service |
a1bd4f |
nm_assert(ptype != PERM_TYPE_USER
|
|
Packit Service |
a1bd4f |
|| nm_settings_connection_validate_permission_user(item_take, -1));
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/* we don't inspect (clear) permission before setting. It takes a
|
|
Packit Service |
a1bd4f |
* stale instance. */
|
|
Packit Service |
a1bd4f |
*permission = (Permission){
|
|
Packit Service |
a1bd4f |
.ptype = ptype,
|
|
Packit Service |
a1bd4f |
.item = item_take,
|
|
Packit Service |
a1bd4f |
};
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
static void
|
|
Packit Service |
a1bd4f |
_permission_clear_stale(Permission *permission)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_free(permission->item);
|
|
Packit Service |
a1bd4f |
/* We leave the permission instance with dangling pointers.
|
|
Packit Service |
a1bd4f |
* It is "stale". */
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
static gboolean
|
|
Packit Service |
a1bd4f |
_permission_set_stale_parse(Permission *permission, const char *str)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
const char *str0 = str;
|
|
Packit Service |
a1bd4f |
const char *last_colon;
|
|
Packit Service |
a1bd4f |
gsize ulen;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
nm_assert(str);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!str)
|
|
Packit Service |
a1bd4f |
goto invalid;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!NM_STR_HAS_PREFIX(str, NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX))
|
|
Packit Service |
a1bd4f |
goto invalid;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
str += NM_STRLEN(NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
last_colon = strrchr(str, ':');
|
|
Packit Service |
a1bd4f |
if (last_colon) {
|
|
Packit Service |
a1bd4f |
/* Reject :[detail] for now */
|
|
Packit Service |
a1bd4f |
if (last_colon[1] != '\0')
|
|
Packit Service |
a1bd4f |
goto invalid;
|
|
Packit Service |
a1bd4f |
ulen = last_colon - str;
|
|
Packit Service |
a1bd4f |
} else
|
|
Packit Service |
a1bd4f |
ulen = strlen(str);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!nm_settings_connection_validate_permission_user(str, ulen))
|
|
Packit Service |
a1bd4f |
goto invalid;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/* Yay, valid... create the new permission */
|
|
Packit Service |
a1bd4f |
if (permission)
|
|
Packit Service |
a1bd4f |
_permission_set_stale(permission, PERM_TYPE_USER, g_strndup(str, ulen));
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
invalid:
|
|
Packit Service |
a1bd4f |
if (permission)
|
|
Packit Service |
a1bd4f |
_permission_set_stale(permission, PERM_TYPE_INVALID, g_strdup(str0));
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
static char *
|
|
Packit Service |
a1bd4f |
_permission_to_string(Permission *permission)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_assert(permission);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
switch (permission->ptype) {
|
|
Packit Service |
a1bd4f |
case PERM_TYPE_USER:
|
|
Packit Service |
a1bd4f |
return g_strdup_printf(NM_SETTINGS_CONNECTION_PERMISSION_USER_PREFIX "%s:",
|
|
Packit Service |
a1bd4f |
permission->item);
|
|
Packit Service |
a1bd4f |
case PERM_TYPE_INVALID:
|
|
Packit Service |
a1bd4f |
nm_assert(permission->item);
|
|
Packit Service |
a1bd4f |
return g_strdup(permission->item);
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
nm_assert_not_reached();
|
|
Packit Service |
a1bd4f |
return g_strdup(permission->item ?: "");
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_id:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:id property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection ID
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_id(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->id;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_uuid:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:uuid property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection UUID
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_uuid(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->uuid;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_stable_id:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:stable_id property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the stable-id for the connection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.4
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_stable_id(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->stable_id;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_interface_name:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:interface-name property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection's interface name
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_interface_name(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->interface_name;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_connection_type:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:type property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection type
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_connection_type(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->type;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_num_permissions:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the number of entries in the #NMSettingConnection:permissions
|
|
Packit |
5756e2 |
* property of this setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the number of permissions entries
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
guint32
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_num_permissions(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return nm_g_array_len(NM_SETTING_CONNECTION_GET_PRIVATE(setting)->permissions);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_permission:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @idx: the zero-based index of the permissions entry
|
|
Packit Service |
a1bd4f |
* @out_ptype: on return, the permission type. This is currently always "user",
|
|
Packit Service |
a1bd4f |
* unless the entry is invalid, in which case it returns "invalid".
|
|
Packit |
5756e2 |
* @out_pitem: on return, the permission item (formatted according to @ptype, see
|
|
Packit |
5756e2 |
* #NMSettingConnection:permissions for more detail
|
|
Packit |
5756e2 |
* @out_detail: on return, the permission detail (at this time, always %NULL)
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Retrieve one of the entries of the #NMSettingConnection:permissions property
|
|
Packit |
5756e2 |
* of this setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if a permission was returned, %FALSE if @idx was invalid
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_permission(NMSettingConnection *setting,
|
|
Packit Service |
a1bd4f |
guint32 idx,
|
|
Packit Service |
a1bd4f |
const char ** out_ptype,
|
|
Packit Service |
a1bd4f |
const char ** out_pitem,
|
|
Packit Service |
a1bd4f |
const char ** out_detail)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
Permission * permission;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(idx < nm_g_array_len(priv->permissions), FALSE);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
permission = &g_array_index(priv->permissions, Permission, idx);
|
|
Packit Service |
a1bd4f |
switch (permission->ptype) {
|
|
Packit Service |
a1bd4f |
case PERM_TYPE_USER:
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_ptype, NM_SETTINGS_CONNECTION_PERMISSION_USER);
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_pitem, permission->item);
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_detail, NULL);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
case PERM_TYPE_INVALID:
|
|
Packit Service |
a1bd4f |
goto invalid;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
nm_assert_not_reached();
|
|
Packit Service |
a1bd4f |
invalid:
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_ptype, "invalid");
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_pitem, permission->item);
|
|
Packit Service |
a1bd4f |
NM_SET_OUT(out_detail, NULL);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_permissions_user_allowed:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @uname: the user name to check permissions for
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Checks whether the given username is allowed to view/access this connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the requested user is allowed to view this connection,
|
|
Packit |
5756e2 |
* %FALSE if the given user is not allowed to view this connection
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_permissions_user_allowed(NMSettingConnection *setting, const char *uname)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
guint i;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(uname != NULL, FALSE);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (nm_g_array_len(priv->permissions) == 0) {
|
|
Packit Service |
a1bd4f |
/* If no permissions, visible to all */
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
for (i = 0; i < priv->permissions->len; i++) {
|
|
Packit Service |
a1bd4f |
const Permission *permission = &g_array_index(priv->permissions, Permission, i);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (permission->ptype == PERM_TYPE_USER && nm_streq(permission->item, uname))
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_add_permission:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @ptype: the permission type; at this time only "user" is supported
|
|
Packit |
5756e2 |
* @pitem: the permission item formatted as required for @ptype
|
|
Packit |
5756e2 |
* @detail: (allow-none): unused at this time; must be %NULL
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Adds a permission to the connection's permission list. At this time, only
|
|
Packit |
5756e2 |
* the "user" permission type is supported, and @pitem must be a username. See
|
|
Packit |
5756e2 |
* #NMSettingConnection:permissions: for more details.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the permission was unique and was successfully added to the
|
|
Packit Service |
a1bd4f |
* list, %FALSE if @ptype or @pitem was invalid.
|
|
Packit Service |
a1bd4f |
* If the permission was already present in the list, it will not be added
|
|
Packit Service |
a1bd4f |
* a second time but %TRUE will be returned. Note that before 1.28, in this
|
|
Packit Service |
a1bd4f |
* case %FALSE would be returned.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_add_permission(NMSettingConnection *setting,
|
|
Packit Service |
a1bd4f |
const char * ptype,
|
|
Packit Service |
a1bd4f |
const char * pitem,
|
|
Packit Service |
a1bd4f |
const char * detail)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
guint i;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(ptype, FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(pitem, FALSE);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (!nm_streq0(ptype, NM_SETTINGS_CONNECTION_PERMISSION_USER))
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (!nm_settings_connection_validate_permission_user(pitem, -1))
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (detail)
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (!priv->permissions) {
|
|
Packit Service |
a1bd4f |
priv->permissions = g_array_sized_new(FALSE, FALSE, sizeof(Permission), 1);
|
|
Packit Service |
a1bd4f |
g_array_set_clear_func(priv->permissions, (GDestroyNotify) _permission_clear_stale);
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
for (i = 0; i < priv->permissions->len; i++) {
|
|
Packit Service |
a1bd4f |
const Permission *permission = &g_array_index(priv->permissions, Permission, i);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (permission->ptype == PERM_TYPE_USER && nm_streq(permission->item, pitem))
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
_permission_set_stale(nm_g_array_append_new(priv->permissions, Permission),
|
|
Packit Service |
a1bd4f |
PERM_TYPE_USER,
|
|
Packit Service |
a1bd4f |
g_strdup(pitem));
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_PERMISSIONS);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_remove_permission:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @idx: the zero-based index of the permission to remove
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Removes the permission at index @idx from the connection.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
void
|
|
Packit Service |
a1bd4f |
nm_setting_connection_remove_permission(NMSettingConnection *setting, guint32 idx)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_if_fail(NM_IS_SETTING_CONNECTION(setting));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_return_if_fail(idx < nm_g_array_len(priv->permissions));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_array_remove_index(priv->permissions, idx);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_PERMISSIONS);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_remove_permission_by_value:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @ptype: the permission type; at this time only "user" is supported
|
|
Packit |
5756e2 |
* @pitem: the permission item formatted as required for @ptype
|
|
Packit |
5756e2 |
* @detail: (allow-none): unused at this time; must be %NULL
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Removes the permission from the connection.
|
|
Packit |
5756e2 |
* At this time, only the "user" permission type is supported, and @pitem must
|
|
Packit |
5756e2 |
* be a username. See #NMSettingConnection:permissions: for more details.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the permission was found and removed; %FALSE if it was not.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_remove_permission_by_value(NMSettingConnection *setting,
|
|
Packit Service |
a1bd4f |
const char * ptype,
|
|
Packit Service |
a1bd4f |
const char * pitem,
|
|
Packit Service |
a1bd4f |
const char * detail)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
guint i;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(ptype, FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(pitem, FALSE);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!nm_streq0(ptype, NM_SETTINGS_CONNECTION_PERMISSION_USER))
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (detail)
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
if (priv->permissions) {
|
|
Packit Service |
a1bd4f |
for (i = 0; i < priv->permissions->len; i++) {
|
|
Packit Service |
a1bd4f |
const Permission *permission = &g_array_index(priv->permissions, Permission, i);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (permission->ptype == PERM_TYPE_USER && nm_streq(permission->item, pitem)) {
|
|
Packit Service |
a1bd4f |
g_array_remove_index(priv->permissions, i);
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_PERMISSIONS);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_autoconnect:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:autoconnect property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection's autoconnect behavior
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_autoconnect(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->autoconnect;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_autoconnect_priority:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:autoconnect-priority property of the connection.
|
|
Packit |
5756e2 |
* The higher number, the higher priority.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection's autoconnect priority
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
int
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_autoconnect_priority(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->autoconnect_priority;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_autoconnect_retries:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:autoconnect-retries property of the connection.
|
|
Packit |
5756e2 |
* Zero means infinite, -1 means the global default value.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection's autoconnect retries
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.6
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
int
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_autoconnect_retries(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), -1);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->autoconnect_retries;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_multi_connect:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the #NMSettingConnection:multi-connect property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.14
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMConnectionMultiConnect
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_multi_connect(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), -1);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return (NMConnectionMultiConnect) NM_SETTING_CONNECTION_GET_PRIVATE(setting)->multi_connect;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_auth_retries:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the value contained in the #NMSettingConnection:auth-retries property.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the configured authentication retries. Zero means
|
|
Packit |
5756e2 |
* infinity and -1 means a global default value.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.10
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
int
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_auth_retries(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), -1);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->auth_retries;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_timestamp:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:timestamp property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the connection's timestamp
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
guint64
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_timestamp(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->timestamp;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static GVariant *
|
|
Packit Service |
a1bd4f |
_to_dbus_fcn_timestamp(const NMSettInfoSetting * sett_info,
|
|
Packit Service |
a1bd4f |
guint property_idx,
|
|
Packit Service |
a1bd4f |
NMConnection * connection,
|
|
Packit Service |
a1bd4f |
NMSetting * setting,
|
|
Packit Service |
a1bd4f |
NMConnectionSerializationFlags flags,
|
|
Packit Service |
a1bd4f |
const NMConnectionSerializationOptions *options)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
guint64 v;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
v = options && options->timestamp.has ? options->timestamp.val
|
|
Packit Service |
a1bd4f |
: NM_SETTING_CONNECTION_GET_PRIVATE(setting)->timestamp;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (v == 0u)
|
|
Packit Service |
a1bd4f |
return NULL;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return g_variant_new_uint64(v);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_read_only:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:read-only property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the connection is read-only, %FALSE if it is not
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_read_only(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), TRUE);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->read_only;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_zone:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:zone property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the trust level of a connection
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_zone(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->zone;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_master:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:master property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: interface name of the master device or UUID of the master
|
|
Packit |
5756e2 |
* connection.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_master(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->master;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_slave_type:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:slave-type property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the type of slave this connection is, if any
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_slave_type(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->slave_type;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_is_slave_type:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @type: the setting name (ie #NM_SETTING_BOND_SETTING_NAME) to be matched
|
|
Packit |
5756e2 |
* against @setting's slave type
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if connection is of the given slave @type
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_is_slave_type(NMSettingConnection *setting, const char *type)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return !g_strcmp0(NM_SETTING_CONNECTION_GET_PRIVATE(setting)->slave_type, type);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_wait_device_timeout:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the %NM_SETTING_CONNECTION_WAIT_DEVICE_TIMEOUT property with
|
|
Packit |
5756e2 |
* the timeout in milliseconds. -1 is the default.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.20
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
gint32
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_wait_device_timeout(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), -1);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->wait_device_timeout;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_autoconnect_slaves:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:autoconnect-slaves property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: whether slaves of the connection should be activated together
|
|
Packit |
5756e2 |
* with the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.2
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMSettingConnectionAutoconnectSlaves
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_autoconnect_slaves(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->autoconnect_slaves;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_num_secondaries:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the number of configured secondary connection UUIDs
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
guint32
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_num_secondaries(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return g_slist_length(NM_SETTING_CONNECTION_GET_PRIVATE(setting)->secondaries);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_secondary:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @idx: the zero-based index of the secondary connection UUID entry
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the secondary connection UUID at index @idx
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_secondary(NMSettingConnection *setting, guint32 idx)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(idx <= g_slist_length(priv->secondaries), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return (const char *) g_slist_nth_data(priv->secondaries, idx);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_mud_url:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the value contained in the #NMSettingConnection:mud-url
|
|
Packit |
5756e2 |
* property.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.26
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
const char *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_mud_url(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->mud_url;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_add_secondary:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @sec_uuid: the secondary connection UUID to add
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Adds a new secondary connection UUID to the setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the secondary connection UUID was added; %FALSE if the UUID
|
|
Packit |
5756e2 |
* was already present
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_add_secondary(NMSettingConnection *setting, const char *sec_uuid)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
GSList * iter;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(sec_uuid != NULL, FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(sec_uuid[0] != '\0', FALSE);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
for (iter = priv->secondaries; iter; iter = g_slist_next(iter)) {
|
|
Packit Service |
a1bd4f |
if (!strcmp(sec_uuid, (char *) iter->data))
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv->secondaries = g_slist_append(priv->secondaries, g_strdup(sec_uuid));
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_SECONDARIES);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_remove_secondary:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @idx: index number of the secondary connection UUID
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Removes the secondary connection UUID at index @idx.
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
void
|
|
Packit Service |
a1bd4f |
nm_setting_connection_remove_secondary(NMSettingConnection *setting, guint32 idx)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
GSList * elt;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_return_if_fail(NM_IS_SETTING_CONNECTION(setting));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
elt = g_slist_nth(priv->secondaries, idx);
|
|
Packit Service |
a1bd4f |
g_return_if_fail(elt != NULL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_free(elt->data);
|
|
Packit Service |
a1bd4f |
priv->secondaries = g_slist_delete_link(priv->secondaries, elt);
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_SECONDARIES);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_remove_secondary_by_value:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
* @sec_uuid: the secondary connection UUID to remove
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Removes the secondary connection UUID @sec_uuid.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: %TRUE if the secondary connection UUID was found and removed; %FALSE if it was not.
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_remove_secondary_by_value(NMSettingConnection *setting, const char *sec_uuid)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv;
|
|
Packit Service |
a1bd4f |
GSList * iter;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(sec_uuid != NULL, FALSE);
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(sec_uuid[0] != '\0', FALSE);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
for (iter = priv->secondaries; iter; iter = g_slist_next(iter)) {
|
|
Packit Service |
a1bd4f |
if (!strcmp(sec_uuid, (char *) iter->data)) {
|
|
Packit Service |
a1bd4f |
priv->secondaries = g_slist_delete_link(priv->secondaries, iter);
|
|
Packit Service |
a1bd4f |
_notify(setting, PROP_SECONDARIES);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_gateway_ping_timeout:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the value contained in the #NMSettingConnection:gateway-ping-timeout
|
|
Packit |
5756e2 |
* property.
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
guint32
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_gateway_ping_timeout(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), 0);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->gateway_ping_timeout;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_metered:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the #NMSettingConnection:metered property of the setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.2
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMMetered
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_metered(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NM_METERED_UNKNOWN);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->metered;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_lldp:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns the #NMSettingConnection:lldp property of the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: a %NMSettingConnectionLldp which indicates whether LLDP must be
|
|
Packit |
5756e2 |
* enabled for the connection.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.2
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMSettingConnectionLldp
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_lldp(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NM_SETTING_CONNECTION_LLDP_DEFAULT);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->lldp;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_mdns:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the #NMSettingConnection:mdns property of the setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.12
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMSettingConnectionMdns
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_mdns(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NM_SETTING_CONNECTION_MDNS_DEFAULT);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->mdns;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_get_llmnr:
|
|
Packit |
5756e2 |
* @setting: the #NMSettingConnection
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the #NMSettingConnection:llmnr property of the setting.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Since: 1.14
|
|
Packit |
5756e2 |
**/
|
|
Packit |
5756e2 |
NMSettingConnectionLlmnr
|
|
Packit Service |
a1bd4f |
nm_setting_connection_get_llmnr(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_return_val_if_fail(NM_IS_SETTING_CONNECTION(setting), NM_SETTING_CONNECTION_LLMNR_DEFAULT);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CONNECTION_GET_PRIVATE(setting)->llmnr;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
_set_error_missing_base_setting(GError **error, const char *type)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_SETTING,
|
|
Packit Service |
a1bd4f |
_("setting required for connection of type '%s'"),
|
|
Packit Service |
a1bd4f |
type);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error, "%s: ", type);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
8f75d2 |
gboolean
|
|
Packit Service |
8f75d2 |
_nm_connection_detect_slave_type_full(NMSettingConnection *s_con,
|
|
Packit Service |
8f75d2 |
NMConnection * connection,
|
|
Packit Service |
8f75d2 |
const char ** out_slave_type,
|
|
Packit Service |
8f75d2 |
const char ** out_normerr_slave_setting_type,
|
|
Packit Service |
8f75d2 |
const char ** out_normerr_missing_slave_type,
|
|
Packit Service |
8f75d2 |
const char ** out_normerr_missing_slave_type_port,
|
|
Packit Service |
8f75d2 |
GError ** error)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
8f75d2 |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(s_con);
|
|
Packit Service |
a1bd4f |
gboolean is_slave;
|
|
Packit Service |
a1bd4f |
const char * slave_setting_type;
|
|
Packit Service |
8f75d2 |
const char * slave_type;
|
|
Packit Service |
8f75d2 |
const char * normerr_slave_setting_type = NULL;
|
|
Packit Service |
8f75d2 |
const char * normerr_missing_slave_type = NULL;
|
|
Packit Service |
8f75d2 |
const char * normerr_missing_slave_type_port = NULL;
|
|
Packit Service |
8f75d2 |
|
|
Packit Service |
8f75d2 |
is_slave = FALSE;
|
|
Packit Service |
8f75d2 |
slave_setting_type = NULL;
|
|
Packit Service |
8f75d2 |
slave_type = priv->slave_type;
|
|
Packit Service |
8f75d2 |
if (slave_type) {
|
|
Packit Service |
8f75d2 |
is_slave = _nm_setting_slave_type_is_valid(slave_type, &slave_setting_type);
|
|
Packit Service |
8f75d2 |
if (!is_slave) {
|
|
Packit Service |
8f75d2 |
g_set_error(error,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
8f75d2 |
_("Unknown slave type '%s'"),
|
|
Packit Service |
8f75d2 |
slave_type);
|
|
Packit Service |
8f75d2 |
g_prefix_error(error,
|
|
Packit Service |
8f75d2 |
"%s.%s: ",
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
8f75d2 |
return FALSE;
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
|
|
Packit Service |
8f75d2 |
if (is_slave) {
|
|
Packit Service |
8f75d2 |
if (!priv->master) {
|
|
Packit Service |
8f75d2 |
g_set_error(error,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
8f75d2 |
_("Slave connections need a valid '%s' property"),
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_MASTER);
|
|
Packit Service |
8f75d2 |
g_prefix_error(error,
|
|
Packit Service |
8f75d2 |
"%s.%s: ",
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_MASTER);
|
|
Packit Service |
8f75d2 |
return FALSE;
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
if (slave_setting_type && connection
|
|
Packit Service |
8f75d2 |
&& !nm_connection_get_setting_by_name(connection, slave_setting_type))
|
|
Packit Service |
8f75d2 |
normerr_slave_setting_type = slave_setting_type;
|
|
Packit Service |
8f75d2 |
} else {
|
|
Packit Service |
8f75d2 |
nm_assert(!slave_type);
|
|
Packit Service |
8f75d2 |
if (priv->master) {
|
|
Packit Service |
8f75d2 |
NMSetting *s_port;
|
|
Packit Service |
8f75d2 |
|
|
Packit Service |
8f75d2 |
if (connection
|
|
Packit Service |
8f75d2 |
&& (slave_type = _nm_connection_detect_slave_type(connection, &s_port))) {
|
|
Packit Service |
8f75d2 |
normerr_missing_slave_type = slave_type;
|
|
Packit Service |
8f75d2 |
normerr_missing_slave_type_port = nm_setting_get_name(s_port);
|
|
Packit Service |
8f75d2 |
} else {
|
|
Packit Service |
8f75d2 |
g_set_error(error,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR,
|
|
Packit Service |
8f75d2 |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
8f75d2 |
_("Cannot set '%s' without '%s'"),
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_MASTER,
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
8f75d2 |
g_prefix_error(error,
|
|
Packit Service |
8f75d2 |
"%s.%s: ",
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
8f75d2 |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
8f75d2 |
return FALSE;
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
|
|
Packit Service |
8f75d2 |
NM_SET_OUT(out_slave_type, slave_type);
|
|
Packit Service |
8f75d2 |
NM_SET_OUT(out_normerr_slave_setting_type, normerr_slave_setting_type);
|
|
Packit Service |
8f75d2 |
NM_SET_OUT(out_normerr_missing_slave_type, normerr_missing_slave_type);
|
|
Packit Service |
8f75d2 |
NM_SET_OUT(out_normerr_missing_slave_type_port, normerr_missing_slave_type_port);
|
|
Packit Service |
8f75d2 |
return TRUE;
|
|
Packit Service |
8f75d2 |
}
|
|
Packit Service |
8f75d2 |
|
|
Packit Service |
8f75d2 |
static gboolean
|
|
Packit Service |
8f75d2 |
verify(NMSetting *setting, NMConnection *connection, GError **error)
|
|
Packit Service |
8f75d2 |
{
|
|
Packit Service |
8f75d2 |
NMSettingConnection * self = NM_SETTING_CONNECTION(setting);
|
|
Packit Service |
8f75d2 |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(self);
|
|
Packit Service |
a1bd4f |
NMSetting * normerr_base_type = NULL;
|
|
Packit Service |
a1bd4f |
const char * type;
|
|
Packit Service |
a1bd4f |
const char * slave_type;
|
|
Packit Service |
a1bd4f |
const char * normerr_slave_setting_type = NULL;
|
|
Packit Service |
a1bd4f |
const char * normerr_missing_slave_type = NULL;
|
|
Packit Service |
a1bd4f |
const char * normerr_missing_slave_type_port = NULL;
|
|
Packit Service |
a1bd4f |
gboolean normerr_base_setting = FALSE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!priv->id) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is missing"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_ID);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
} else if (!priv->id[0]) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is empty"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_ID);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->uuid && !nm_utils_is_uuid(priv->uuid)) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("'%s' is not a valid UUID"),
|
|
Packit Service |
a1bd4f |
priv->uuid);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_UUID);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
type = priv->type;
|
|
Packit Service |
a1bd4f |
if (!type) {
|
|
Packit Service |
a1bd4f |
if (!connection
|
|
Packit Service |
a1bd4f |
|| !(normerr_base_type = _nm_connection_find_base_type_setting(connection))) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is missing"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_TYPE);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
type = nm_setting_get_name(normerr_base_type);
|
|
Packit Service |
a1bd4f |
} else {
|
|
Packit Service |
a1bd4f |
GType base_type;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!type[0]) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is empty"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_TYPE);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
base_type = nm_setting_lookup_type(type);
|
|
Packit Service |
a1bd4f |
if (base_type == G_TYPE_INVALID
|
|
Packit Service |
a1bd4f |
|| _nm_setting_type_get_base_type_priority(base_type) == NM_SETTING_PRIORITY_INVALID) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("connection type '%s' is not valid"),
|
|
Packit Service |
a1bd4f |
type);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_TYPE);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/* Make sure the corresponding 'type' item is present */
|
|
Packit Service |
a1bd4f |
if (connection && !nm_connection_get_setting_by_name(connection, type)) {
|
|
Packit Service |
a1bd4f |
NMSetting * s_base;
|
|
Packit Service |
a1bd4f |
NMConnection *connection2;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
s_base = g_object_new(base_type, NULL);
|
|
Packit Service |
a1bd4f |
connection2 = nm_simple_connection_new_clone(connection);
|
|
Packit Service |
a1bd4f |
nm_connection_add_setting(connection2, s_base);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
normerr_base_setting = nm_setting_verify(s_base, connection2, NULL);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_object_unref(connection2);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!normerr_base_setting) {
|
|
Packit Service |
a1bd4f |
_set_error_missing_base_setting(error, type);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->interface_name) {
|
|
Packit Service |
a1bd4f |
GError * tmp_error = NULL;
|
|
Packit Service |
a1bd4f |
NMUtilsIfaceType iface_type;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (NM_IN_STRSET(type,
|
|
Packit Service |
a1bd4f |
NM_SETTING_OVS_BRIDGE_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_OVS_PORT_SETTING_NAME))
|
|
Packit Service |
a1bd4f |
iface_type = NMU_IFACE_OVS;
|
|
Packit Service |
a1bd4f |
else if (nm_streq(type, NM_SETTING_OVS_INTERFACE_SETTING_NAME)) {
|
|
Packit Service |
a1bd4f |
NMSettingOvsInterface *s_ovs_iface = NULL;
|
|
Packit Service |
a1bd4f |
const char * ovs_iface_type;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (connection)
|
|
Packit Service |
a1bd4f |
s_ovs_iface = nm_connection_get_setting_ovs_interface(connection);
|
|
Packit Service |
a1bd4f |
_nm_setting_ovs_interface_verify_interface_type(
|
|
Packit Service |
a1bd4f |
s_ovs_iface,
|
|
Packit Service |
a1bd4f |
s_ovs_iface ? nm_setting_ovs_interface_get_interface_type(s_ovs_iface) : NULL,
|
|
Packit Service |
a1bd4f |
connection,
|
|
Packit Service |
a1bd4f |
FALSE,
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
&ovs_iface_type,
|
|
Packit Service |
a1bd4f |
NULL);
|
|
Packit Service |
a1bd4f |
if (!ovs_iface_type) {
|
|
Packit Service |
a1bd4f |
/* We cannot determine to OVS interface type. Consequently, we cannot
|
|
Packit Service |
a1bd4f |
* fully validate the interface name.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* If we have a connection (and we do a full validation anyway), skip the
|
|
Packit Service |
a1bd4f |
* check. The connection will fail validation when we validate the OVS setting.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Otherwise, do the most basic validation.
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
if (connection)
|
|
Packit Service |
a1bd4f |
goto after_interface_name;
|
|
Packit Service |
a1bd4f |
iface_type = NMU_IFACE_ANY;
|
|
Packit Service |
a1bd4f |
} else if (NM_IN_STRSET(ovs_iface_type, "patch")) {
|
|
Packit Service |
a1bd4f |
/* this interface type is internal to OVS. */
|
|
Packit Service |
a1bd4f |
iface_type = NMU_IFACE_OVS;
|
|
Packit Service |
a1bd4f |
} else {
|
|
Packit Service |
a1bd4f |
/* This interface type also requires a netdev. We need to validate
|
|
Packit Service |
a1bd4f |
* for both OVS and KERNEL. */
|
|
Packit Service |
a1bd4f |
nm_assert(NM_IN_STRSET(ovs_iface_type, "internal", "system", "dpdk"));
|
|
Packit Service |
a1bd4f |
iface_type = NMU_IFACE_OVS_AND_KERNEL;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
} else
|
|
Packit Service |
a1bd4f |
iface_type = NMU_IFACE_KERNEL;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!nm_utils_ifname_valid(priv->interface_name, iface_type, &tmp_error)) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
"'%s': %s",
|
|
Packit Service |
a1bd4f |
priv->interface_name,
|
|
Packit Service |
a1bd4f |
tmp_error->message);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_INTERFACE_NAME);
|
|
Packit Service |
a1bd4f |
g_error_free(tmp_error);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
after_interface_name:
|
|
Packit |
5756e2 |
|
|
Packit Service |
8f75d2 |
if (!_nm_connection_detect_slave_type_full(self,
|
|
Packit Service |
8f75d2 |
connection,
|
|
Packit Service |
8f75d2 |
&slave_type,
|
|
Packit Service |
8f75d2 |
&normerr_slave_setting_type,
|
|
Packit Service |
8f75d2 |
&normerr_missing_slave_type,
|
|
Packit Service |
8f75d2 |
&normerr_missing_slave_type_port,
|
|
Packit Service |
8f75d2 |
error))
|
|
Packit Service |
8f75d2 |
return FALSE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
8f75d2 |
if (nm_streq(type, NM_SETTING_OVS_PORT_SETTING_NAME) && slave_type
|
|
Packit Service |
8f75d2 |
&& !nm_streq(slave_type, NM_SETTING_OVS_BRIDGE_SETTING_NAME)) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("'%s' connections must be enslaved to '%s', not '%s'"),
|
|
Packit Service |
a1bd4f |
NM_SETTING_OVS_PORT_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_OVS_BRIDGE_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
slave_type);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->metered != NM_METERED_UNKNOWN && priv->metered != NM_METERED_YES
|
|
Packit Service |
a1bd4f |
&& priv->metered != NM_METERED_NO) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("metered value %d is not valid"),
|
|
Packit Service |
a1bd4f |
priv->metered);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_METERED);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->mdns < (int) NM_SETTING_CONNECTION_MDNS_DEFAULT
|
|
Packit Service |
a1bd4f |
|| priv->mdns > (int) NM_SETTING_CONNECTION_MDNS_YES) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("value %d is not valid"),
|
|
Packit Service |
a1bd4f |
priv->mdns);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MDNS);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->llmnr < (int) NM_SETTING_CONNECTION_LLMNR_DEFAULT
|
|
Packit Service |
a1bd4f |
|| priv->llmnr > (int) NM_SETTING_CONNECTION_LLMNR_YES) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("value %d is not valid"),
|
|
Packit Service |
a1bd4f |
priv->llmnr);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_LLMNR);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!NM_IN_SET(priv->multi_connect,
|
|
Packit Service |
a1bd4f |
(int) NM_CONNECTION_MULTI_CONNECT_DEFAULT,
|
|
Packit Service |
a1bd4f |
(int) NM_CONNECTION_MULTI_CONNECT_SINGLE,
|
|
Packit Service |
a1bd4f |
(int) NM_CONNECTION_MULTI_CONNECT_MANUAL_MULTIPLE,
|
|
Packit Service |
a1bd4f |
(int) NM_CONNECTION_MULTI_CONNECT_MULTIPLE)) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("value %d is not valid"),
|
|
Packit Service |
a1bd4f |
priv->multi_connect);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MULTI_CONNECT);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->mud_url) {
|
|
Packit Service |
a1bd4f |
if (!priv->mud_url[0]) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is empty"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
nm_setting_get_name(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MUD_URL);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
if (nm_streq(priv->mud_url, NM_CONNECTION_MUD_URL_NONE)) {
|
|
Packit Service |
a1bd4f |
/* pass */
|
|
Packit Service |
a1bd4f |
} else {
|
|
Packit Service |
a1bd4f |
if (strlen(priv->mud_url) > 255) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("DHCP option cannot be longer than 255 characters"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
nm_setting_get_name(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MUD_URL);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
if (!nm_sd_http_url_is_valid_https(priv->mud_url)) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("MUD URL is not a valid URL"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
nm_setting_get_name(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MUD_URL);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (priv->permissions) {
|
|
Packit Service |
a1bd4f |
guint i;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
for (i = 0; i < priv->permissions->len; i++) {
|
|
Packit Service |
a1bd4f |
const Permission *permissions = &g_array_index(priv->permissions, Permission, i);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (permissions->ptype != PERM_TYPE_USER) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("invalid permissions not in format \"user:$UNAME[:]\""));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
nm_setting_get_name(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_PERMISSIONS);
|
|
Packit Service |
a1bd4f |
return FALSE;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
nm_assert(nm_settings_connection_validate_permission_user(permissions->item, -1));
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/* *** errors above here should be always fatal, below NORMALIZABLE_ERROR *** */
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!priv->uuid) {
|
|
Packit Service |
a1bd4f |
g_set_error_literal(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property is missing"));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_UUID);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (normerr_base_type) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("property type should be set to '%s'"),
|
|
Packit Service |
a1bd4f |
nm_setting_get_name(normerr_base_type));
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_TYPE);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (normerr_base_setting) {
|
|
Packit Service |
a1bd4f |
_set_error_missing_base_setting(error, priv->type);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (normerr_slave_setting_type) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_SETTING,
|
|
Packit Service |
a1bd4f |
_("slave-type '%s' requires a '%s' setting in the connection"),
|
|
Packit Service |
a1bd4f |
priv->slave_type,
|
|
Packit Service |
a1bd4f |
normerr_slave_setting_type);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error, "%s: ", normerr_slave_setting_type);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (normerr_missing_slave_type) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
Packit Service |
a1bd4f |
_("Detect a slave connection with '%s' set and a port type '%s'. '%s' should "
|
|
Packit Service |
a1bd4f |
"be set to '%s'"),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MASTER,
|
|
Packit Service |
a1bd4f |
normerr_missing_slave_type_port,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SLAVE_TYPE,
|
|
Packit Service |
a1bd4f |
normerr_missing_slave_type);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (connection) {
|
|
Packit Service |
a1bd4f |
gboolean has_bridge_port = FALSE;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if ((!nm_streq0(priv->slave_type, NM_SETTING_BRIDGE_SETTING_NAME)
|
|
Packit Service |
a1bd4f |
&& (has_bridge_port =
|
|
Packit Service |
a1bd4f |
!!nm_connection_get_setting_by_name(connection,
|
|
Packit Service |
a1bd4f |
NM_SETTING_BRIDGE_PORT_SETTING_NAME)))
|
|
Packit Service |
a1bd4f |
|| (!nm_streq0(priv->slave_type, NM_SETTING_TEAM_SETTING_NAME)
|
|
Packit Service |
a1bd4f |
&& nm_connection_get_setting_by_name(connection,
|
|
Packit Service |
a1bd4f |
NM_SETTING_TEAM_PORT_SETTING_NAME))) {
|
|
Packit Service |
a1bd4f |
g_set_error(error,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_ERROR_INVALID_SETTING,
|
|
Packit Service |
a1bd4f |
_("A slave connection with '%s' set to '%s' cannot have a '%s' setting"),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SLAVE_TYPE,
|
|
Packit Service |
a1bd4f |
priv->slave_type ?: "",
|
|
Packit Service |
a1bd4f |
has_bridge_port ? NM_SETTING_BRIDGE_PORT_SETTING_NAME
|
|
Packit Service |
a1bd4f |
: NM_SETTING_TEAM_PORT_SETTING_NAME);
|
|
Packit Service |
a1bd4f |
g_prefix_error(error,
|
|
Packit Service |
a1bd4f |
"%s.%s: ",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
Packit Service |
a1bd4f |
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static const char *
|
|
Packit Service |
a1bd4f |
find_virtual_interface_name(GVariant *connection_dict, GVariant **variant_to_free)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
GVariant * setting_dict;
|
|
Packit Service |
a1bd4f |
const char *interface_name;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
nm_assert(variant_to_free && !*variant_to_free);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
setting_dict = g_variant_lookup_value(connection_dict,
|
|
Packit Service |
a1bd4f |
NM_SETTING_BOND_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_VARIANT_TYPE_SETTING);
|
|
Packit Service |
a1bd4f |
if (!setting_dict)
|
|
Packit Service |
a1bd4f |
setting_dict = g_variant_lookup_value(connection_dict,
|
|
Packit Service |
a1bd4f |
NM_SETTING_BRIDGE_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_VARIANT_TYPE_SETTING);
|
|
Packit Service |
a1bd4f |
if (!setting_dict)
|
|
Packit Service |
a1bd4f |
setting_dict = g_variant_lookup_value(connection_dict,
|
|
Packit Service |
a1bd4f |
NM_SETTING_TEAM_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_VARIANT_TYPE_SETTING);
|
|
Packit Service |
a1bd4f |
if (!setting_dict)
|
|
Packit Service |
a1bd4f |
setting_dict = g_variant_lookup_value(connection_dict,
|
|
Packit Service |
a1bd4f |
NM_SETTING_VLAN_SETTING_NAME,
|
|
Packit Service |
a1bd4f |
NM_VARIANT_TYPE_SETTING);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
if (!setting_dict)
|
|
Packit Service |
a1bd4f |
return NULL;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
*variant_to_free = setting_dict;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/* All of the deprecated virtual interface name properties were named "interface-name". */
|
|
Packit Service |
a1bd4f |
if (!g_variant_lookup(setting_dict, "interface-name", "&s", &interface_name))
|
|
Packit Service |
a1bd4f |
interface_name = NULL;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
return interface_name;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static gboolean
|
|
Packit Service |
a1bd4f |
nm_setting_connection_no_interface_name(NMSetting * setting,
|
|
Packit Service |
a1bd4f |
GVariant * connection_dict,
|
|
Packit Service |
a1bd4f |
const char * property,
|
|
Packit Service |
a1bd4f |
NMSettingParseFlags parse_flags,
|
|
Packit Service |
a1bd4f |
GError ** error)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
const char * virtual_interface_name;
|
|
Packit Service |
a1bd4f |
gs_unref_variant GVariant *variant_to_free = NULL;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
virtual_interface_name = find_virtual_interface_name(connection_dict, &variant_to_free);
|
|
Packit Service |
a1bd4f |
g_object_set(G_OBJECT(setting),
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_INTERFACE_NAME,
|
|
Packit Service |
a1bd4f |
virtual_interface_name,
|
|
Packit Service |
a1bd4f |
NULL);
|
|
Packit Service |
a1bd4f |
return TRUE;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static NMTernary
|
|
Packit Service |
a1bd4f |
compare_property(const NMSettInfoSetting *sett_info,
|
|
Packit Service |
a1bd4f |
guint property_idx,
|
|
Packit Service |
a1bd4f |
NMConnection * con_a,
|
|
Packit Service |
a1bd4f |
NMSetting * set_a,
|
|
Packit Service |
a1bd4f |
NMConnection * con_b,
|
|
Packit Service |
a1bd4f |
NMSetting * set_b,
|
|
Packit Service |
a1bd4f |
NMSettingCompareFlags flags)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
if (NM_FLAGS_HAS(flags, NM_SETTING_COMPARE_FLAG_IGNORE_ID)
|
|
Packit Service |
a1bd4f |
&& nm_streq(sett_info->property_infos[property_idx].name, NM_SETTING_CONNECTION_ID))
|
|
Packit Service |
a1bd4f |
return NM_TERNARY_DEFAULT;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
if (NM_FLAGS_HAS(flags, NM_SETTING_COMPARE_FLAG_IGNORE_TIMESTAMP)
|
|
Packit Service |
a1bd4f |
&& nm_streq(sett_info->property_infos[property_idx].name, NM_SETTING_CONNECTION_TIMESTAMP))
|
|
Packit Service |
a1bd4f |
return NM_TERNARY_DEFAULT;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
return NM_SETTING_CLASS(nm_setting_connection_parent_class)
|
|
Packit Service |
a1bd4f |
->compare_property(sett_info, property_idx, con_a, set_a, con_b, set_b, flags);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnection * setting = NM_SETTING_CONNECTION(object);
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
switch (prop_id) {
|
|
Packit Service |
a1bd4f |
case PROP_ID:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_id(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_UUID:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_uuid(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_STABLE_ID:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_stable_id(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_INTERFACE_NAME:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_interface_name(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_TYPE:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_connection_type(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_PERMISSIONS:
|
|
Packit Service |
a1bd4f |
{
|
|
Packit Service |
a1bd4f |
char **strv;
|
|
Packit Service |
a1bd4f |
gsize i, l;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
l = nm_g_array_len(priv->permissions);
|
|
Packit Service |
a1bd4f |
strv = g_new(char *, l + 1u);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
for (i = 0; i < l; i++)
|
|
Packit Service |
a1bd4f |
strv[i] = _permission_to_string(&g_array_index(priv->permissions, Permission, i));
|
|
Packit Service |
a1bd4f |
strv[i] = NULL;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_value_take_boxed(value, strv);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT:
|
|
Packit Service |
a1bd4f |
g_value_set_boolean(value, nm_setting_connection_get_autoconnect(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_PRIORITY:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, nm_setting_connection_get_autoconnect_priority(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_RETRIES:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, nm_setting_connection_get_autoconnect_retries(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MULTI_CONNECT:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->multi_connect);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_TIMESTAMP:
|
|
Packit Service |
a1bd4f |
g_value_set_uint64(value, nm_setting_connection_get_timestamp(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_READ_ONLY:
|
|
Packit Service |
a1bd4f |
g_value_set_boolean(value, nm_setting_connection_get_read_only(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_ZONE:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_zone(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MASTER:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_master(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_SLAVE_TYPE:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, nm_setting_connection_get_slave_type(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_SLAVES:
|
|
Packit Service |
a1bd4f |
g_value_set_enum(value, nm_setting_connection_get_autoconnect_slaves(setting));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_SECONDARIES:
|
|
Packit Service |
a1bd4f |
g_value_take_boxed(value, _nm_utils_slist_to_strv(priv->secondaries, TRUE));
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_GATEWAY_PING_TIMEOUT:
|
|
Packit Service |
a1bd4f |
g_value_set_uint(value, priv->gateway_ping_timeout);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_METERED:
|
|
Packit Service |
a1bd4f |
g_value_set_enum(value, priv->metered);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_LLDP:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->lldp);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTH_RETRIES:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->auth_retries);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MDNS:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->mdns);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_LLMNR:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->llmnr);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_WAIT_DEVICE_TIMEOUT:
|
|
Packit Service |
a1bd4f |
g_value_set_int(value, priv->wait_device_timeout);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MUD_URL:
|
|
Packit Service |
a1bd4f |
g_value_set_string(value, priv->mud_url);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
default:
|
|
Packit Service |
a1bd4f |
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(object);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
switch (prop_id) {
|
|
Packit Service |
a1bd4f |
case PROP_ID:
|
|
Packit Service |
a1bd4f |
g_free(priv->id);
|
|
Packit Service |
a1bd4f |
priv->id = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_UUID:
|
|
Packit Service |
a1bd4f |
g_free(priv->uuid);
|
|
Packit Service |
a1bd4f |
priv->uuid = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_STABLE_ID:
|
|
Packit Service |
a1bd4f |
g_free(priv->stable_id);
|
|
Packit Service |
a1bd4f |
priv->stable_id = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_INTERFACE_NAME:
|
|
Packit Service |
a1bd4f |
g_free(priv->interface_name);
|
|
Packit Service |
a1bd4f |
priv->interface_name = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_TYPE:
|
|
Packit Service |
a1bd4f |
g_free(priv->type);
|
|
Packit Service |
a1bd4f |
priv->type = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_PERMISSIONS:
|
|
Packit Service |
a1bd4f |
{
|
|
Packit Service |
a1bd4f |
const char *const *strv;
|
|
Packit Service |
a1bd4f |
guint i;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
nm_clear_pointer(&priv->permissions, g_array_unref);
|
|
Packit Service |
a1bd4f |
strv = g_value_get_boxed(value);
|
|
Packit Service |
a1bd4f |
if (strv && strv[0]) {
|
|
Packit Service |
a1bd4f |
priv->permissions =
|
|
Packit Service |
a1bd4f |
g_array_sized_new(FALSE, FALSE, sizeof(Permission), NM_PTRARRAY_LEN(strv));
|
|
Packit Service |
a1bd4f |
g_array_set_clear_func(priv->permissions, (GDestroyNotify) _permission_clear_stale);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
for (i = 0; strv[i]; i++) {
|
|
Packit Service |
a1bd4f |
Permission *permission = nm_g_array_append_new(priv->permissions, Permission);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
_permission_set_stale_parse(permission, strv[i]);
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT:
|
|
Packit Service |
a1bd4f |
priv->autoconnect = g_value_get_boolean(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_PRIORITY:
|
|
Packit Service |
a1bd4f |
priv->autoconnect_priority = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_RETRIES:
|
|
Packit Service |
a1bd4f |
priv->autoconnect_retries = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MULTI_CONNECT:
|
|
Packit Service |
a1bd4f |
priv->multi_connect = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_TIMESTAMP:
|
|
Packit Service |
a1bd4f |
priv->timestamp = g_value_get_uint64(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_READ_ONLY:
|
|
Packit Service |
a1bd4f |
priv->read_only = g_value_get_boolean(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_ZONE:
|
|
Packit Service |
a1bd4f |
g_free(priv->zone);
|
|
Packit Service |
a1bd4f |
priv->zone = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MASTER:
|
|
Packit Service |
a1bd4f |
g_free(priv->master);
|
|
Packit Service |
a1bd4f |
priv->master = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_SLAVE_TYPE:
|
|
Packit Service |
a1bd4f |
g_free(priv->slave_type);
|
|
Packit Service |
a1bd4f |
priv->slave_type = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTOCONNECT_SLAVES:
|
|
Packit Service |
a1bd4f |
priv->autoconnect_slaves = g_value_get_enum(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_SECONDARIES:
|
|
Packit Service |
a1bd4f |
g_slist_free_full(priv->secondaries, g_free);
|
|
Packit Service |
a1bd4f |
priv->secondaries = _nm_utils_strv_to_slist(g_value_get_boxed(value), TRUE);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_GATEWAY_PING_TIMEOUT:
|
|
Packit Service |
a1bd4f |
priv->gateway_ping_timeout = g_value_get_uint(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_METERED:
|
|
Packit Service |
a1bd4f |
priv->metered = g_value_get_enum(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_LLDP:
|
|
Packit Service |
a1bd4f |
priv->lldp = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_AUTH_RETRIES:
|
|
Packit Service |
a1bd4f |
priv->auth_retries = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MDNS:
|
|
Packit Service |
a1bd4f |
priv->mdns = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_LLMNR:
|
|
Packit Service |
a1bd4f |
priv->llmnr = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_WAIT_DEVICE_TIMEOUT:
|
|
Packit Service |
a1bd4f |
priv->wait_device_timeout = g_value_get_int(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
case PROP_MUD_URL:
|
|
Packit Service |
a1bd4f |
g_free(priv->mud_url);
|
|
Packit Service |
a1bd4f |
priv->mud_url = g_value_dup_string(value);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
default:
|
|
Packit Service |
a1bd4f |
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
|
|
Packit Service |
a1bd4f |
break;
|
|
Packit Service |
a1bd4f |
}
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
nm_setting_connection_init(NMSettingConnection *setting)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(setting);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
priv->auth_retries = -1;
|
|
Packit Service |
a1bd4f |
priv->autoconnect = TRUE;
|
|
Packit Service |
a1bd4f |
priv->autoconnect_priority = NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_DEFAULT;
|
|
Packit Service |
a1bd4f |
priv->autoconnect_retries = -1;
|
|
Packit Service |
a1bd4f |
priv->autoconnect_slaves = NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT;
|
|
Packit Service |
a1bd4f |
priv->lldp = NM_SETTING_CONNECTION_LLDP_DEFAULT;
|
|
Packit Service |
a1bd4f |
priv->llmnr = NM_SETTING_CONNECTION_LLMNR_DEFAULT;
|
|
Packit Service |
a1bd4f |
priv->mdns = NM_SETTING_CONNECTION_MDNS_DEFAULT;
|
|
Packit Service |
a1bd4f |
priv->wait_device_timeout = -1;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/**
|
|
Packit |
5756e2 |
* nm_setting_connection_new:
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Creates a new #NMSettingConnection object with default values.
|
|
Packit |
5756e2 |
*
|
|
Packit |
5756e2 |
* Returns: the new empty #NMSettingConnection object
|
|
Packit |
5756e2 |
**/
|
|
Packit Service |
a1bd4f |
NMSetting *
|
|
Packit Service |
a1bd4f |
nm_setting_connection_new(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
return g_object_new(NM_TYPE_SETTING_CONNECTION, NULL);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
finalize(GObject *object)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE(object);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_free(priv->id);
|
|
Packit Service |
a1bd4f |
g_free(priv->uuid);
|
|
Packit Service |
a1bd4f |
g_free(priv->stable_id);
|
|
Packit Service |
a1bd4f |
g_free(priv->interface_name);
|
|
Packit Service |
a1bd4f |
g_free(priv->type);
|
|
Packit Service |
a1bd4f |
g_free(priv->zone);
|
|
Packit Service |
a1bd4f |
g_free(priv->master);
|
|
Packit Service |
a1bd4f |
g_free(priv->slave_type);
|
|
Packit Service |
a1bd4f |
g_free(priv->mud_url);
|
|
Packit Service |
a1bd4f |
nm_clear_pointer(&priv->permissions, g_array_unref);
|
|
Packit Service |
a1bd4f |
g_slist_free_full(priv->secondaries, g_free);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
G_OBJECT_CLASS(nm_setting_connection_parent_class)->finalize(object);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
nm_setting_connection_class_init(NMSettingConnectionClass *klass)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
GObjectClass * object_class = G_OBJECT_CLASS(klass);
|
|
Packit Service |
a1bd4f |
NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
|
|
Packit Service |
a1bd4f |
GArray * properties_override = _nm_sett_info_property_override_create_array();
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_type_class_add_private(klass, sizeof(NMSettingConnectionPrivate));
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
object_class->get_property = get_property;
|
|
Packit Service |
a1bd4f |
object_class->set_property = set_property;
|
|
Packit Service |
a1bd4f |
object_class->finalize = finalize;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
setting_class->verify = verify;
|
|
Packit Service |
a1bd4f |
setting_class->compare_property = compare_property;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:id:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* A human readable unique identifier for the connection, like "Work Wi-Fi"
|
|
Packit Service |
a1bd4f |
* or "T-Mobile 3G".
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: id
|
|
Packit Service |
a1bd4f |
* variable: NAME(+)
|
|
Packit Service |
a1bd4f |
* description: User friendly name for the connection profile.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_ID] = g_param_spec_string(NM_SETTING_CONNECTION_ID,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE
|
|
Packit Service |
a1bd4f |
| G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:uuid:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* A universally unique identifier for the connection, for example generated
|
|
Packit Service |
a1bd4f |
* with libuuid. It should be assigned when the connection is created, and
|
|
Packit Service |
a1bd4f |
* never changed as long as the connection still applies to the same
|
|
Packit Service |
a1bd4f |
* network. For example, it should not be changed when the
|
|
Packit Service |
a1bd4f |
* #NMSettingConnection:id property or #NMSettingIP4Config changes, but
|
|
Packit Service |
a1bd4f |
* might need to be re-created when the Wi-Fi SSID, mobile broadband network
|
|
Packit Service |
a1bd4f |
* provider, or #NMSettingConnection:type property changes.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The UUID must be in the format "2815492f-7e56-435e-b2e9-246bd7cdc664"
|
|
Packit Service |
a1bd4f |
* (ie, contains only hexadecimal characters and "-"). A suitable UUID may
|
|
Packit Service |
a1bd4f |
* be generated by nm_utils_uuid_generate() or
|
|
Packit Service |
a1bd4f |
* nm_utils_uuid_generate_from_string().
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: uuid
|
|
Packit Service |
a1bd4f |
* variable: UUID(+)
|
|
Packit Service |
a1bd4f |
* description: UUID for the connection profile. When missing, NetworkManager
|
|
Packit Service |
a1bd4f |
* creates the UUID itself (by hashing the filename).
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_UUID] = g_param_spec_string(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_UUID,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:stable-id:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* This represents the identity of the connection used for various purposes.
|
|
Packit Service |
a1bd4f |
* It allows to configure multiple profiles to share the identity. Also,
|
|
Packit Service |
a1bd4f |
* the stable-id can contain placeholders that are substituted dynamically and
|
|
Packit Service |
a1bd4f |
* deterministically depending on the context.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The stable-id is used for generating IPv6 stable private addresses
|
|
Packit Service |
a1bd4f |
* with ipv6.addr-gen-mode=stable-privacy. It is also used to seed the
|
|
Packit Service |
a1bd4f |
* generated cloned MAC address for ethernet.cloned-mac-address=stable
|
|
Packit Service |
a1bd4f |
* and wifi.cloned-mac-address=stable. It is also used as DHCP client
|
|
Packit Service |
a1bd4f |
* identifier with ipv4.dhcp-client-id=stable and to derive the DHCP
|
|
Packit Service |
a1bd4f |
* DUID with ipv6.dhcp-duid=stable-[llt,ll,uuid].
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Note that depending on the context where it is used, other parameters are
|
|
Packit Service |
a1bd4f |
* also seeded into the generation algorithm. For example, a per-host key
|
|
Packit Service |
a1bd4f |
* is commonly also included, so that different systems end up generating
|
|
Packit Service |
a1bd4f |
* different IDs. Or with ipv6.addr-gen-mode=stable-privacy, also the device's
|
|
Packit Service |
a1bd4f |
* name is included, so that different interfaces yield different addresses.
|
|
Packit Service |
a1bd4f |
* The per-host key is the identity of your machine and stored in /var/lib/NetworkManager/secret-key.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The '$' character is treated special to perform dynamic substitutions
|
|
Packit Service |
a1bd4f |
* at runtime. Currently, supported are "${CONNECTION}", "${DEVICE}", "${MAC}",
|
|
Packit Service |
a1bd4f |
* "${BOOT}", "${RANDOM}".
|
|
Packit Service |
a1bd4f |
* These effectively create unique IDs per-connection, per-device, per-boot,
|
|
Packit Service |
a1bd4f |
* or every time. Note that "${DEVICE}" corresponds to the interface name of the
|
|
Packit Service |
a1bd4f |
* device and "${MAC}" is the permanent MAC address of the device.
|
|
Packit Service |
a1bd4f |
* Any unrecognized patterns following '$' are treated verbatim, however
|
|
Packit Service |
a1bd4f |
* are reserved for future use. You are thus advised to avoid '$' or
|
|
Packit Service |
a1bd4f |
* escape it as "$$".
|
|
Packit Service |
a1bd4f |
* For example, set it to "${CONNECTION}-${BOOT}-${DEVICE}" to create a unique id for
|
|
Packit Service |
a1bd4f |
* this connection that changes with every reboot and differs depending on the
|
|
Packit Service |
a1bd4f |
* interface where the profile activates.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* If the value is unset, a global connection default is consulted. If the
|
|
Packit Service |
a1bd4f |
* value is still unset, the default is similar to "${CONNECTION}" and uses
|
|
Packit Service |
a1bd4f |
* a unique, fixed ID for the connection.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.4
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: stable-id
|
|
Packit Service |
a1bd4f |
* variable: STABLE_ID(+)
|
|
Packit Service |
a1bd4f |
* description: Token to generate stable IDs.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_STABLE_ID] = g_param_spec_string(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_STABLE_ID,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:interface-name:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The name of the network interface this connection is bound to. If not
|
|
Packit Service |
a1bd4f |
* set, then the connection can be attached to any interface of the
|
|
Packit Service |
a1bd4f |
* appropriate type (subject to restrictions imposed by other settings).
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* For software devices this specifies the name of the created device.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* For connection types where interface names cannot easily be made
|
|
Packit Service |
a1bd4f |
* persistent (e.g. mobile broadband or USB Ethernet), this property should
|
|
Packit Service |
a1bd4f |
* not be used. Setting this property restricts the interfaces a connection
|
|
Packit Service |
a1bd4f |
* can be used with, and if interface names change or are reordered the
|
|
Packit Service |
a1bd4f |
* connection may be applied to the wrong interface.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: interface-name
|
|
Packit Service |
a1bd4f |
* variable: DEVICE
|
|
Packit Service |
a1bd4f |
* description: Interface name of the device this profile is bound to. The variable
|
|
Packit Service |
a1bd4f |
* can be left out when the profile should apply for more devices. Note that DEVICE
|
|
Packit Service |
a1bd4f |
* can be required for some connection types.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_INTERFACE_NAME] = g_param_spec_string(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_INTERFACE_NAME,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
_nm_properties_override_gobj(
|
|
Packit Service |
a1bd4f |
properties_override,
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_INTERFACE_NAME],
|
|
Packit Service |
a1bd4f |
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_STRING,
|
|
Packit Service |
a1bd4f |
.missing_from_dbus_fcn =
|
|
Packit Service |
a1bd4f |
nm_setting_connection_no_interface_name, ));
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:type:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Base type of the connection. For hardware-dependent connections, should
|
|
Packit Service |
a1bd4f |
* contain the setting name of the hardware-type specific setting (ie,
|
|
Packit Service |
a1bd4f |
* "802-3-ethernet" or "802-11-wireless" or "bluetooth", etc), and for
|
|
Packit Service |
a1bd4f |
* non-hardware dependent connections like VPN or otherwise, should contain
|
|
Packit Service |
a1bd4f |
* the setting name of that setting type (ie, "vpn" or "bridge", etc).
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: type
|
|
Packit Service |
a1bd4f |
* variable: TYPE (DEVICETYPE, DEVICE)
|
|
Packit Service |
a1bd4f |
* values: Ethernet, Wireless, InfiniBand, Bridge, Bond, Vlan, Team, TeamPort
|
|
Packit Service |
a1bd4f |
* description: Base type of the connection. DEVICETYPE is used for teaming
|
|
Packit Service |
a1bd4f |
* connections.
|
|
Packit Service |
a1bd4f |
* example: TYPE=Ethernet; TYPE=Bond; TYPE=Bridge; DEVICETYPE=TeamPort
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_TYPE] = g_param_spec_string(NM_SETTING_CONNECTION_TYPE,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE
|
|
Packit Service |
a1bd4f |
| G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:permissions:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* An array of strings defining what access a given user has to this
|
|
Packit Service |
a1bd4f |
* connection. If this is %NULL or empty, all users are allowed to access
|
|
Packit Service |
a1bd4f |
* this connection; otherwise users are allowed if and only if they are in
|
|
Packit Service |
a1bd4f |
* this list. When this is not empty, the connection can be active only when
|
|
Packit Service |
a1bd4f |
* one of the specified users is logged into an active session. Each entry
|
|
Packit Service |
a1bd4f |
* is of the form "[type]:[id]:[reserved]"; for example, "user:dcbw:blah".
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* At this time only the "user" [type] is allowed. Any other values are
|
|
Packit Service |
a1bd4f |
* ignored and reserved for future use. [id] is the username that this
|
|
Packit Service |
a1bd4f |
* permission refers to, which may not contain the ":" character. Any
|
|
Packit Service |
a1bd4f |
* [reserved] information present must be ignored and is reserved for future
|
|
Packit Service |
a1bd4f |
* use. All of [type], [id], and [reserved] must be valid UTF-8.
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: permissions
|
|
Packit Service |
a1bd4f |
* variable: USERS(+)
|
|
Packit Service |
a1bd4f |
* description: Restrict to certain users the access to this connection, and
|
|
Packit Service |
a1bd4f |
* allow the connection to be active only when at least one of the
|
|
Packit Service |
a1bd4f |
* specified users is logged into an active session.
|
|
Packit Service |
a1bd4f |
* example: USERS="joe bob"
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_PERMISSIONS] =
|
|
Packit Service |
a1bd4f |
g_param_spec_boxed(NM_SETTING_CONNECTION_PERMISSIONS,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_TYPE_STRV,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:autoconnect:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether or not the connection should be automatically connected by
|
|
Packit Service |
a1bd4f |
* NetworkManager when the resources for the connection are available.
|
|
Packit Service |
a1bd4f |
* %TRUE to automatically activate the connection, %FALSE to require manual
|
|
Packit Service |
a1bd4f |
* intervention to activate the connection.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Note that autoconnect is not implemented for VPN profiles. See
|
|
Packit Service |
a1bd4f |
* #NMSettingConnection:secondaries as an alternative to automatically
|
|
Packit Service |
a1bd4f |
* connect VPN profiles.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: autoconnect
|
|
Packit Service |
a1bd4f |
* variable: ONBOOT
|
|
Packit Service |
a1bd4f |
* default: yes
|
|
Packit Service |
a1bd4f |
* description: Whether the connection should be autoconnected (not only while booting).
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_AUTOCONNECT] = g_param_spec_boolean(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
TRUE,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:autoconnect-priority:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The autoconnect priority. If the connection is set to autoconnect,
|
|
Packit Service |
a1bd4f |
* connections with higher priority will be preferred. Defaults to 0.
|
|
Packit Service |
a1bd4f |
* The higher number means higher priority.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: autoconnect-priority
|
|
Packit Service |
a1bd4f |
* variable: AUTOCONNECT_PRIORITY(+)
|
|
Packit Service |
a1bd4f |
* values: -999 to 999
|
|
Packit Service |
a1bd4f |
* default: 0
|
|
Packit Service |
a1bd4f |
* description: Connection priority for automatic activation. Connections with
|
|
Packit Service |
a1bd4f |
* higher numbers are preferred when selecting profiles for automatic activation.
|
|
Packit Service |
a1bd4f |
* example: AUTOCONNECT_PRIORITY=20
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_AUTOCONNECT_PRIORITY] = g_param_spec_int(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_MIN,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_MAX,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_DEFAULT,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:autoconnect-retries:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The number of times a connection should be tried when autoactivating before
|
|
Packit Service |
a1bd4f |
* giving up. Zero means forever, -1 means the global default (4 times if not
|
|
Packit Service |
a1bd4f |
* overridden). Setting this to 1 means to try activation only once before
|
|
Packit Service |
a1bd4f |
* blocking autoconnect. Note that after a timeout, NetworkManager will try
|
|
Packit Service |
a1bd4f |
* to autoconnect again.
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: autoconnect-retries
|
|
Packit Service |
a1bd4f |
* variable: AUTOCONNECT_RETRIES(+)
|
|
Packit Service |
a1bd4f |
* description: The number of times a connection should be autoactivated
|
|
Packit Service |
a1bd4f |
* before giving up and switching to the next one.
|
|
Packit Service |
a1bd4f |
* values: -1 (use global default), 0 (forever) or a positive value
|
|
Packit Service |
a1bd4f |
* example: AUTOCONNECT_RETRIES=1
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_AUTOCONNECT_RETRIES] = g_param_spec_int(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:multi-connect:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Specifies whether the profile can be active multiple times at a particular
|
|
Packit Service |
a1bd4f |
* moment. The value is of type #NMConnectionMultiConnect.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.14
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: multi-connect
|
|
Packit Service |
a1bd4f |
* variable: MULTI_CONNECT(+)
|
|
Packit Service |
a1bd4f |
* description: whether the profile can be active on multiple devices at a given
|
|
Packit Service |
a1bd4f |
* moment. The values are numbers corresponding to #NMConnectionMultiConnect enum.
|
|
Packit Service |
a1bd4f |
* example: MULTI_CONNECT=3
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_MULTI_CONNECT] = g_param_spec_int(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MULTI_CONNECT,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_MININT32,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
NM_CONNECTION_MULTI_CONNECT_DEFAULT,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:timestamp:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The time, in seconds since the Unix Epoch, that the connection was last
|
|
Packit Service |
a1bd4f |
* _successfully_ fully activated.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* NetworkManager updates the connection timestamp periodically when the
|
|
Packit Service |
a1bd4f |
* connection is active to ensure that an active connection has the latest
|
|
Packit Service |
a1bd4f |
* timestamp. The property is only meant for reading (changes to this
|
|
Packit Service |
a1bd4f |
* property will not be preserved).
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_TIMESTAMP] = g_param_spec_uint64(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_TIMESTAMP,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
0,
|
|
Packit Service |
a1bd4f |
G_MAXUINT64,
|
|
Packit Service |
a1bd4f |
0,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
_nm_properties_override_gobj(
|
|
Packit Service |
a1bd4f |
properties_override,
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_TIMESTAMP],
|
|
Packit Service |
a1bd4f |
NM_SETT_INFO_PROPERT_TYPE(.dbus_type = G_VARIANT_TYPE_UINT64,
|
|
Packit Service |
a1bd4f |
.to_dbus_fcn = _to_dbus_fcn_timestamp, ));
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:read-only:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* %FALSE if the connection can be modified using the provided settings
|
|
Packit Service |
a1bd4f |
* service's D-Bus interface with the right privileges, or %TRUE if the
|
|
Packit Service |
a1bd4f |
* connection is read-only and cannot be modified.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_READ_ONLY] = g_param_spec_boolean(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_READ_ONLY,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
FALSE,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:zone:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The trust level of a the connection. Free form case-insensitive string
|
|
Packit Service |
a1bd4f |
* (for example "Home", "Work", "Public"). %NULL or unspecified zone means
|
|
Packit Service |
a1bd4f |
* the connection will be placed in the default zone as defined by the
|
|
Packit Service |
a1bd4f |
* firewall.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* When updating this property on a currently activated connection,
|
|
Packit Service |
a1bd4f |
* the change takes effect immediately.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: zone
|
|
Packit Service |
a1bd4f |
* variable: ZONE(+)
|
|
Packit Service |
a1bd4f |
* description: Trust level of this connection. The string is usually used
|
|
Packit Service |
a1bd4f |
* for a firewall.
|
|
Packit Service |
a1bd4f |
* example: ZONE=Work
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_ZONE] =
|
|
Packit Service |
a1bd4f |
g_param_spec_string(NM_SETTING_CONNECTION_ZONE,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE
|
|
Packit Service |
a1bd4f |
| NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:master:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Interface name of the master device or UUID of the master connection.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: master
|
|
Packit Service |
a1bd4f |
* variable: MASTER, MASTER_UUID, TEAM_MASTER, TEAM_MASTER_UUID, BRIDGE, BRIDGE_UUID
|
|
Packit Service |
a1bd4f |
* description: Reference to master connection. The variable used depends on
|
|
Packit Service |
a1bd4f |
* the connection type and the value. In general, if the *_UUID variant is present,
|
|
Packit Service |
a1bd4f |
* the variant without *_UUID is ignored. NetworkManager attempts to write both
|
|
Packit Service |
a1bd4f |
* for compatibility with legacy tooling.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_MASTER] =
|
|
Packit Service |
a1bd4f |
g_param_spec_string(NM_SETTING_CONNECTION_MASTER,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE
|
|
Packit Service |
a1bd4f |
| NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:slave-type:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Setting name of the device type of this slave's master connection (eg,
|
|
Packit Service |
a1bd4f |
* %NM_SETTING_BOND_SETTING_NAME), or %NULL if this connection is not a
|
|
Packit Service |
a1bd4f |
* slave.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: slave-type
|
|
Packit Service |
a1bd4f |
* variable: MASTER, MASTER_UUID, TEAM_MASTER, TEAM_MASTER_UUID, DEVICETYPE,
|
|
Packit Service |
a1bd4f |
* BRIDGE, BRIDGE_UUID
|
|
Packit Service |
a1bd4f |
* description: Slave type doesn't map directly to a variable, but it is
|
|
Packit Service |
a1bd4f |
* recognized using different variables. MASTER and MASTER_UUID for bonding,
|
|
Packit Service |
a1bd4f |
* TEAM_MASTER, TEAM_MASTER_UUID and DEVICETYPE for teaming, BRIDGE
|
|
Packit Service |
a1bd4f |
* and BRIDGE_UUID for bridging.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_SLAVE_TYPE] =
|
|
Packit Service |
a1bd4f |
g_param_spec_string(NM_SETTING_CONNECTION_SLAVE_TYPE,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE
|
|
Packit Service |
a1bd4f |
| NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:autoconnect-slaves:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether or not slaves of this connection should be automatically brought up
|
|
Packit Service |
a1bd4f |
* when NetworkManager activates this connection. This only has a real effect
|
|
Packit Service |
a1bd4f |
* for master connections. The properties #NMSettingConnection:autoconnect,
|
|
Packit Service |
a1bd4f |
* #NMSettingConnection:autoconnect-priority and #NMSettingConnection:autoconnect-retries
|
|
Packit Service |
a1bd4f |
* are unrelated to this setting.
|
|
Packit Service |
a1bd4f |
* The permitted values are: 0: leave slave connections untouched,
|
|
Packit Service |
a1bd4f |
* 1: activate all the slave connections with this connection, -1: default.
|
|
Packit Service |
a1bd4f |
* If -1 (default) is set, global connection.autoconnect-slaves is read to
|
|
Packit Service |
a1bd4f |
* determine the real value. If it is default as well, this fallbacks to 0.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.2
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: autoconnect-slaves
|
|
Packit Service |
a1bd4f |
* variable: AUTOCONNECT_SLAVES(+)
|
|
Packit Service |
a1bd4f |
* default: missing variable means global default
|
|
Packit Service |
a1bd4f |
* description: Whether slaves of this connection should be auto-connected
|
|
Packit Service |
a1bd4f |
* when this connection is activated.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_AUTOCONNECT_SLAVES] = g_param_spec_enum(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NM_TYPE_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:secondaries:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* List of connection UUIDs that should be activated when the base
|
|
Packit Service |
a1bd4f |
* connection itself is activated. Currently, only VPN connections are
|
|
Packit Service |
a1bd4f |
* supported.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: secondaries
|
|
Packit Service |
a1bd4f |
* variable: SECONDARY_UUIDS(+)
|
|
Packit Service |
a1bd4f |
* description: UUID of VPN connections that should be activated
|
|
Packit Service |
a1bd4f |
* together with this connection.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_SECONDARIES] = g_param_spec_boxed(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_SECONDARIES,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_TYPE_STRV,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:gateway-ping-timeout:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* If greater than zero, delay success of IP addressing until either the
|
|
Packit Service |
a1bd4f |
* timeout is reached, or an IP gateway replies to a ping.
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: gateway-ping-timeout
|
|
Packit Service |
a1bd4f |
* variable: GATEWAY_PING_TIMEOUT(+)
|
|
Packit Service |
a1bd4f |
* default: 0
|
|
Packit Service |
a1bd4f |
* description: If greater than zero, the IP connectivity will be checked by
|
|
Packit Service |
a1bd4f |
* pinging the gateway and waiting for the specified timeout (in seconds).
|
|
Packit Service |
a1bd4f |
* example: GATEWAY_PING_TIMEOUT=5
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_GATEWAY_PING_TIMEOUT] =
|
|
Packit Service |
a1bd4f |
g_param_spec_uint(NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
0,
|
|
Packit Service |
a1bd4f |
600,
|
|
Packit Service |
a1bd4f |
0,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:metered:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether the connection is metered.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* When updating this property on a currently activated connection,
|
|
Packit Service |
a1bd4f |
* the change takes effect immediately.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.2
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: metered
|
|
Packit Service |
a1bd4f |
* variable: CONNECTION_METERED(+)
|
|
Packit Service |
a1bd4f |
* values: yes,no,unknown
|
|
Packit Service |
a1bd4f |
* description: Whether the device is metered
|
|
Packit Service |
a1bd4f |
* example: CONNECTION_METERED=yes
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_METERED] = g_param_spec_enum(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_METERED,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NM_TYPE_METERED,
|
|
Packit Service |
a1bd4f |
NM_METERED_UNKNOWN,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:lldp:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether LLDP is enabled for the connection.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.2
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: lldp
|
|
Packit Service |
a1bd4f |
* variable: LLDP(+)
|
|
Packit Service |
a1bd4f |
* values: boolean value or 'rx'
|
|
Packit Service |
a1bd4f |
* default: missing variable means global default
|
|
Packit Service |
a1bd4f |
* description: whether LLDP is enabled for the connection
|
|
Packit Service |
a1bd4f |
* example: LLDP=no
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_LLDP] = g_param_spec_int(NM_SETTING_CONNECTION_LLDP,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_MININT32,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_LLDP_DEFAULT,
|
|
Packit Service |
a1bd4f |
NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE
|
|
Packit Service |
a1bd4f |
| G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:auth-retries:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The number of retries for the authentication. Zero means to try indefinitely; -1 means
|
|
Packit Service |
a1bd4f |
* to use a global default. If the global default is not set, the authentication
|
|
Packit Service |
a1bd4f |
* retries for 3 times before failing the connection.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Currently, this only applies to 802-1x authentication.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.10
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: auth-retries
|
|
Packit Service |
a1bd4f |
* variable: AUTH_RETRIES(+)
|
|
Packit Service |
a1bd4f |
* default: 0
|
|
Packit Service |
a1bd4f |
* description: Number of retries for authentication.
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_AUTH_RETRIES] = g_param_spec_int(
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_AUTH_RETRIES,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:mdns:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether mDNS is enabled for the connection.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The permitted values are: "yes" (2) register hostname and resolving
|
|
Packit Service |
a1bd4f |
* for the connection, "no" (0) disable mDNS for the interface, "resolve"
|
|
Packit Service |
a1bd4f |
* (1) do not register hostname but allow resolving of mDNS host names
|
|
Packit Service |
a1bd4f |
* and "default" (-1) to allow lookup of a global default in NetworkManager.conf.
|
|
Packit Service |
a1bd4f |
* If unspecified, "default" ultimately depends on the DNS plugin (which
|
|
Packit Service |
a1bd4f |
* for systemd-resolved currently means "no").
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* This feature requires a plugin which supports mDNS. Otherwise, the
|
|
Packit Service |
a1bd4f |
* setting has no effect. One such plugin is dns-systemd-resolved.
|
|
Packit |
5756e2 |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.12
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: mdns
|
|
Packit Service |
a1bd4f |
* variable: MDNS(+)
|
|
Packit Service |
a1bd4f |
* values: yes,no,resolve
|
|
Packit Service |
a1bd4f |
* default: missing variable means global default
|
|
Packit Service |
a1bd4f |
* description: Whether or not mDNS is enabled for the connection
|
|
Packit Service |
a1bd4f |
* example: MDNS=yes
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_MDNS] = g_param_spec_int(NM_SETTING_CONNECTION_MDNS,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_MININT32,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_MDNS_DEFAULT,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:llmnr:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Whether Link-Local Multicast Name Resolution (LLMNR) is enabled
|
|
Packit Service |
a1bd4f |
* for the connection. LLMNR is a protocol based on the Domain Name
|
|
Packit Service |
a1bd4f |
* System (DNS) packet format that allows both IPv4 and IPv6 hosts
|
|
Packit Service |
a1bd4f |
* to perform name resolution for hosts on the same local link.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The permitted values are: "yes" (2) register hostname and resolving
|
|
Packit Service |
a1bd4f |
* for the connection, "no" (0) disable LLMNR for the interface, "resolve"
|
|
Packit Service |
a1bd4f |
* (1) do not register hostname but allow resolving of LLMNR host names
|
|
Packit Service |
a1bd4f |
* If unspecified, "default" ultimately depends on the DNS plugin (which
|
|
Packit Service |
a1bd4f |
* for systemd-resolved currently means "yes").
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* This feature requires a plugin which supports LLMNR. Otherwise, the
|
|
Packit Service |
a1bd4f |
* setting has no effect. One such plugin is dns-systemd-resolved.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.14
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: llmnr
|
|
Packit Service |
a1bd4f |
* variable: LLMNR(+)
|
|
Packit Service |
a1bd4f |
* values: yes,no,resolve
|
|
Packit Service |
a1bd4f |
* default: missing variable means global default
|
|
Packit Service |
a1bd4f |
* description: Whether or not LLMNR is enabled for the connection
|
|
Packit Service |
a1bd4f |
* example: LLMNR=yes
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_LLMNR] = g_param_spec_int(NM_SETTING_CONNECTION_LLMNR,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
G_MININT32,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
NM_SETTING_CONNECTION_LLMNR_DEFAULT,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:wait-device-timeout:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Timeout in milliseconds to wait for device at startup.
|
|
Packit Service |
a1bd4f |
* During boot, devices may take a while to be detected by the driver.
|
|
Packit Service |
a1bd4f |
* This property will cause to delay NetworkManager-wait-online.service
|
|
Packit Service |
a1bd4f |
* and nm-online to give the device a chance to appear. This works by
|
|
Packit Service |
a1bd4f |
* waiting for the given timeout until a compatible device for the
|
|
Packit Service |
a1bd4f |
* profile is available and managed.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The value 0 means no wait time. The default value is -1, which
|
|
Packit Service |
a1bd4f |
* currently has the same meaning as no wait time.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.20
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: wait-device-timeout
|
|
Packit Service |
a1bd4f |
* variable: DEVTIMEOUT(+)
|
|
Packit Service |
a1bd4f |
* values: timeout in seconds.
|
|
Packit Service |
a1bd4f |
* description: for initscripts compatibility, this variable must be
|
|
Packit Service |
a1bd4f |
* a whole integer. If necessary, NetworkManager stores also a fractional
|
|
Packit Service |
a1bd4f |
* component for the milliseconds.
|
|
Packit Service |
a1bd4f |
* example: DEVTIMEOUT=5
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_WAIT_DEVICE_TIMEOUT] =
|
|
Packit Service |
a1bd4f |
g_param_spec_int(NM_SETTING_CONNECTION_WAIT_DEVICE_TIMEOUT,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_MAXINT32,
|
|
Packit Service |
a1bd4f |
-1,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
/**
|
|
Packit Service |
a1bd4f |
* NMSettingConnection:mud-url:
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* If configured, set to a Manufacturer Usage Description (MUD) URL that points
|
|
Packit Service |
a1bd4f |
* to manufacturer-recommended network policies for IoT devices. It is transmitted
|
|
Packit Service |
a1bd4f |
* as a DHCPv4 or DHCPv6 option. The value must be a valid URL starting with "https://".
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* The special value "none" is allowed to indicate that no MUD URL is used.
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* If the per-profile value is unspecified (the default), a global connection default gets
|
|
Packit Service |
a1bd4f |
* consulted. If still unspecified, the ultimate default is "none".
|
|
Packit Service |
a1bd4f |
*
|
|
Packit Service |
a1bd4f |
* Since: 1.26
|
|
Packit Service |
a1bd4f |
**/
|
|
Packit Service |
a1bd4f |
/* ---ifcfg-rh---
|
|
Packit Service |
a1bd4f |
* property: mud-url
|
|
Packit Service |
a1bd4f |
* variable: MUD_URL
|
|
Packit Service |
a1bd4f |
* values: a valid URL that points to recommended policy for this device
|
|
Packit Service |
a1bd4f |
* description: MUD_URL to be sent by device (See RFC 8520).
|
|
Packit Service |
a1bd4f |
* example: https://yourdevice.example.com/model.json
|
|
Packit Service |
a1bd4f |
* ---end---
|
|
Packit Service |
a1bd4f |
*/
|
|
Packit Service |
a1bd4f |
obj_properties[PROP_MUD_URL] = g_param_spec_string(NM_SETTING_CONNECTION_MUD_URL,
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
"",
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
_nm_setting_class_commit_full(setting_class,
|
|
Packit Service |
a1bd4f |
NM_META_SETTING_TYPE_CONNECTION,
|
|
Packit Service |
a1bd4f |
NULL,
|
|
Packit Service |
a1bd4f |
properties_override);
|
|
Packit |
5756e2 |
}
|