2014-07-24 08:53:33 -04:00
|
|
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
|
* version 2 of the License, or (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
* License along with this library; if not, write to the
|
|
|
|
|
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
|
|
|
* Boston, MA 02110-1301 USA.
|
|
|
|
|
*
|
|
|
|
|
* Copyright 2007 - 2013 Red Hat, Inc.
|
|
|
|
|
* Copyright 2007 - 2008 Novell, Inc.
|
|
|
|
|
*/
|
|
|
|
|
|
2016-02-12 14:44:52 +01:00
|
|
|
#include "nm-default.h"
|
2016-02-19 14:57:48 +01:00
|
|
|
|
2016-02-12 14:44:52 +01:00
|
|
|
#include "nm-setting-connection.h"
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
|
|
#include "nm-utils.h"
|
2014-08-21 13:19:53 -04:00
|
|
|
#include "nm-utils-private.h"
|
2015-05-06 10:54:35 +02:00
|
|
|
#include "nm-core-enum-types.h"
|
2014-10-21 22:30:31 -04:00
|
|
|
#include "nm-connection-private.h"
|
2014-10-21 22:09:52 -04:00
|
|
|
#include "nm-setting-bond.h"
|
|
|
|
|
#include "nm-setting-bridge.h"
|
|
|
|
|
#include "nm-setting-team.h"
|
|
|
|
|
#include "nm-setting-vlan.h"
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* SECTION:nm-setting-connection
|
|
|
|
|
* @short_description: Describes general connection properties
|
|
|
|
|
*
|
|
|
|
|
* The #NMSettingConnection object is a #NMSetting subclass that describes
|
|
|
|
|
* properties that apply to all #NMConnection objects, regardless of what type
|
|
|
|
|
* of network connection they describe. Each #NMConnection object must contain
|
|
|
|
|
* a #NMSettingConnection setting.
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
|
|
G_DEFINE_TYPE_WITH_CODE (NMSettingConnection, nm_setting_connection, NM_TYPE_SETTING,
|
2014-08-07 17:19:40 -04:00
|
|
|
_nm_register_setting (CONNECTION, 0))
|
2014-07-24 08:53:33 -04:00
|
|
|
NM_SETTING_REGISTER_TYPE (NM_TYPE_SETTING_CONNECTION)
|
|
|
|
|
|
|
|
|
|
#define NM_SETTING_CONNECTION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SETTING_CONNECTION, NMSettingConnectionPrivate))
|
|
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
|
PERM_TYPE_USER = 0,
|
|
|
|
|
} PermType;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
guint8 ptype;
|
|
|
|
|
char *item;
|
|
|
|
|
} Permission;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char *id;
|
|
|
|
|
char *uuid;
|
2016-06-21 16:41:05 +02:00
|
|
|
char *stable_id;
|
2014-07-24 08:53:33 -04:00
|
|
|
char *interface_name;
|
|
|
|
|
char *type;
|
|
|
|
|
char *master;
|
|
|
|
|
char *slave_type;
|
2015-05-06 10:54:35 +02:00
|
|
|
NMSettingConnectionAutoconnectSlaves autoconnect_slaves;
|
2014-07-24 08:53:33 -04:00
|
|
|
GSList *permissions; /* list of Permission structs */
|
|
|
|
|
gboolean autoconnect;
|
2014-08-25 20:39:40 +02:00
|
|
|
gint autoconnect_priority;
|
2016-10-08 10:27:15 +02:00
|
|
|
gint autoconnect_retries;
|
2014-07-24 08:53:33 -04:00
|
|
|
guint64 timestamp;
|
|
|
|
|
gboolean read_only;
|
|
|
|
|
char *zone;
|
|
|
|
|
GSList *secondaries; /* secondary connections to activate with the base connection */
|
|
|
|
|
guint gateway_ping_timeout;
|
2015-04-27 17:45:53 +02:00
|
|
|
NMMetered metered;
|
2015-10-07 11:48:30 +02:00
|
|
|
NMSettingConnectionLldp lldp;
|
2014-07-24 08:53:33 -04:00
|
|
|
} NMSettingConnectionPrivate;
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
PROP_0,
|
|
|
|
|
PROP_ID,
|
|
|
|
|
PROP_UUID,
|
|
|
|
|
PROP_INTERFACE_NAME,
|
|
|
|
|
PROP_TYPE,
|
|
|
|
|
PROP_PERMISSIONS,
|
|
|
|
|
PROP_AUTOCONNECT,
|
2014-08-25 20:39:40 +02:00
|
|
|
PROP_AUTOCONNECT_PRIORITY,
|
2016-10-08 10:27:15 +02:00
|
|
|
PROP_AUTOCONNECT_RETRIES,
|
2014-07-24 08:53:33 -04:00
|
|
|
PROP_TIMESTAMP,
|
|
|
|
|
PROP_READ_ONLY,
|
|
|
|
|
PROP_ZONE,
|
|
|
|
|
PROP_MASTER,
|
|
|
|
|
PROP_SLAVE_TYPE,
|
2015-05-06 10:54:35 +02:00
|
|
|
PROP_AUTOCONNECT_SLAVES,
|
2014-07-24 08:53:33 -04:00
|
|
|
PROP_SECONDARIES,
|
|
|
|
|
PROP_GATEWAY_PING_TIMEOUT,
|
2015-04-27 17:45:53 +02:00
|
|
|
PROP_METERED,
|
2015-10-07 11:48:30 +02:00
|
|
|
PROP_LLDP,
|
2016-06-21 16:41:05 +02:00
|
|
|
PROP_STABLE_ID,
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
LAST_PROP
|
|
|
|
|
};
|
|
|
|
|
|
2016-10-02 18:22:50 +02:00
|
|
|
/*****************************************************************************/
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
#define PERM_USER_PREFIX "user:"
|
|
|
|
|
|
|
|
|
|
static Permission *
|
|
|
|
|
permission_new_from_str (const char *str)
|
|
|
|
|
{
|
|
|
|
|
Permission *p;
|
|
|
|
|
const char *last_colon;
|
|
|
|
|
size_t ulen = 0, i;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (strncmp (str, PERM_USER_PREFIX, strlen (PERM_USER_PREFIX)) == 0, NULL);
|
|
|
|
|
str += strlen (PERM_USER_PREFIX);
|
|
|
|
|
|
|
|
|
|
last_colon = strrchr (str, ':');
|
|
|
|
|
if (last_colon) {
|
|
|
|
|
/* Ensure that somebody didn't pass "user::" */
|
|
|
|
|
g_return_val_if_fail (last_colon > str, NULL);
|
|
|
|
|
|
|
|
|
|
/* Reject :[detail] for now */
|
|
|
|
|
g_return_val_if_fail (*(last_colon + 1) == '\0', NULL);
|
|
|
|
|
|
|
|
|
|
/* Make sure we don't include detail in the username */
|
|
|
|
|
ulen = last_colon - str;
|
|
|
|
|
} else
|
|
|
|
|
ulen = strlen (str);
|
|
|
|
|
|
|
|
|
|
/* Sanity check the length of the username */
|
|
|
|
|
g_return_val_if_fail (ulen < 100, NULL);
|
|
|
|
|
|
|
|
|
|
/* Make sure there's no ':' in the username */
|
|
|
|
|
for (i = 0; i < ulen; i++)
|
|
|
|
|
g_return_val_if_fail (str[i] != ':', NULL);
|
|
|
|
|
|
|
|
|
|
/* And the username must be valid UTF-8 */
|
|
|
|
|
g_return_val_if_fail (g_utf8_validate (str, -1, NULL) == TRUE, NULL);
|
|
|
|
|
|
|
|
|
|
/* Yay, valid... create the new permission */
|
|
|
|
|
p = g_slice_new0 (Permission);
|
|
|
|
|
p->ptype = PERM_TYPE_USER;
|
|
|
|
|
if (last_colon) {
|
|
|
|
|
p->item = g_malloc (ulen + 1);
|
|
|
|
|
memcpy (p->item, str, ulen);
|
|
|
|
|
p->item[ulen] = '\0';
|
|
|
|
|
} else
|
|
|
|
|
p->item = g_strdup (str);
|
|
|
|
|
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static Permission *
|
|
|
|
|
permission_new (const char *uname)
|
|
|
|
|
{
|
|
|
|
|
Permission *p;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (uname, NULL);
|
|
|
|
|
g_return_val_if_fail (uname[0] != '\0', NULL);
|
|
|
|
|
g_return_val_if_fail (strchr (uname, ':') == NULL, NULL);
|
|
|
|
|
g_return_val_if_fail (g_utf8_validate (uname, -1, NULL) == TRUE, NULL);
|
|
|
|
|
|
|
|
|
|
/* Yay, valid... create the new permission */
|
|
|
|
|
p = g_slice_new0 (Permission);
|
|
|
|
|
p->ptype = PERM_TYPE_USER;
|
|
|
|
|
p->item = g_strdup (uname);
|
|
|
|
|
return p;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static char *
|
|
|
|
|
permission_to_string (Permission *p)
|
|
|
|
|
{
|
|
|
|
|
return g_strdup_printf (PERM_USER_PREFIX "%s:", p->item);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
permission_free (Permission *p)
|
|
|
|
|
{
|
|
|
|
|
g_free (p->item);
|
|
|
|
|
memset (p, 0, sizeof (*p));
|
|
|
|
|
g_slice_free (Permission, p);
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-02 18:22:50 +02:00
|
|
|
/*****************************************************************************/
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_new:
|
|
|
|
|
*
|
|
|
|
|
* Creates a new #NMSettingConnection object with default values.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the new empty #NMSettingConnection object
|
|
|
|
|
**/
|
|
|
|
|
NMSetting *nm_setting_connection_new (void)
|
|
|
|
|
{
|
|
|
|
|
return (NMSetting *) g_object_new (NM_TYPE_SETTING_CONNECTION, NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_id:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:id property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection ID
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_id (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_uuid:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:uuid property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection UUID
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_uuid (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->uuid;
|
|
|
|
|
}
|
|
|
|
|
|
2016-06-21 16:41:05 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_stable_id:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:stable_id property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the stable-id for the connection
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.4
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_stable_id (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->stable_id;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_interface_name:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:interface-name property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection's interface name
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_interface_name (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->interface_name;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_connection_type:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:type property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection type
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_connection_type (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_num_permissions:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the number of entires in the #NMSettingConnection:permissions
|
|
|
|
|
* property of this setting.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the number of permissions entires
|
|
|
|
|
*/
|
|
|
|
|
guint32
|
|
|
|
|
nm_setting_connection_get_num_permissions (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0);
|
|
|
|
|
|
|
|
|
|
return g_slist_length (NM_SETTING_CONNECTION_GET_PRIVATE (setting)->permissions);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_permission:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @idx: the zero-based index of the permissions entry
|
|
|
|
|
* @out_ptype: on return, the permission type (at this time, always "user")
|
|
|
|
|
* @out_pitem: on return, the permission item (formatted accoring to @ptype, see
|
|
|
|
|
* #NMSettingConnection:permissions for more detail
|
|
|
|
|
* @out_detail: on return, the permission detail (at this time, always %NULL)
|
|
|
|
|
*
|
|
|
|
|
* Retrieve one of the entries of the #NMSettingConnection:permissions property
|
|
|
|
|
* of this setting.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if a permission was returned, %FALSE if @idx was invalid
|
|
|
|
|
*/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_get_permission (NMSettingConnection *setting,
|
|
|
|
|
guint32 idx,
|
|
|
|
|
const char **out_ptype,
|
|
|
|
|
const char **out_pitem,
|
|
|
|
|
const char **out_detail)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
Permission *p;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (idx < g_slist_length (priv->permissions), FALSE);
|
|
|
|
|
|
|
|
|
|
p = g_slist_nth_data (priv->permissions, idx);
|
|
|
|
|
if (out_ptype)
|
|
|
|
|
*out_ptype = "user";
|
|
|
|
|
if (out_pitem)
|
|
|
|
|
*out_pitem = p->item;
|
|
|
|
|
if (out_detail)
|
|
|
|
|
*out_detail = NULL;
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_permissions_user_allowed:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @uname: the user name to check permissions for
|
|
|
|
|
*
|
|
|
|
|
* Checks whether the given username is allowed to view/access this connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the requested user is allowed to view this connection,
|
|
|
|
|
* %FALSE if the given user is not allowed to view this connection
|
|
|
|
|
*/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_permissions_user_allowed (NMSettingConnection *setting,
|
|
|
|
|
const char *uname)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
g_return_val_if_fail (uname != NULL, FALSE);
|
|
|
|
|
g_return_val_if_fail (*uname != '\0', FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
|
|
|
|
|
/* If no permissions, visible to all */
|
|
|
|
|
if (priv->permissions == NULL)
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
/* Find the username in the permissions list */
|
|
|
|
|
for (iter = priv->permissions; iter; iter = g_slist_next (iter)) {
|
|
|
|
|
Permission *p = iter->data;
|
|
|
|
|
|
|
|
|
|
if (strcmp (uname, p->item) == 0)
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_add_permission:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @ptype: the permission type; at this time only "user" is supported
|
|
|
|
|
* @pitem: the permission item formatted as required for @ptype
|
|
|
|
|
* @detail: (allow-none): unused at this time; must be %NULL
|
|
|
|
|
*
|
|
|
|
|
* Adds a permission to the connection's permission list. At this time, only
|
|
|
|
|
* the "user" permission type is supported, and @pitem must be a username. See
|
|
|
|
|
* #NMSettingConnection:permissions: for more details.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the permission was unique and was successfully added to the
|
|
|
|
|
* list, %FALSE if @ptype or @pitem was invalid or it the permission was already
|
|
|
|
|
* present in the list
|
|
|
|
|
*/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_add_permission (NMSettingConnection *setting,
|
|
|
|
|
const char *ptype,
|
|
|
|
|
const char *pitem,
|
|
|
|
|
const char *detail)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
Permission *p;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
g_return_val_if_fail (ptype, FALSE);
|
|
|
|
|
g_return_val_if_fail (strlen (ptype) > 0, FALSE);
|
|
|
|
|
g_return_val_if_fail (detail == NULL, FALSE);
|
|
|
|
|
|
|
|
|
|
/* Only "user" for now... */
|
|
|
|
|
g_return_val_if_fail (strcmp (ptype, "user") == 0, FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
|
|
|
|
|
/* No dupes */
|
|
|
|
|
for (iter = priv->permissions; iter; iter = g_slist_next (iter)) {
|
|
|
|
|
p = iter->data;
|
|
|
|
|
if (strcmp (pitem, p->item) == 0)
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
p = permission_new (pitem);
|
|
|
|
|
g_return_val_if_fail (p != NULL, FALSE);
|
|
|
|
|
priv->permissions = g_slist_append (priv->permissions, p);
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_PERMISSIONS);
|
|
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_remove_permission:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @idx: the zero-based index of the permission to remove
|
|
|
|
|
*
|
|
|
|
|
* Removes the permission at index @idx from the connection.
|
|
|
|
|
*/
|
|
|
|
|
void
|
|
|
|
|
nm_setting_connection_remove_permission (NMSettingConnection *setting,
|
|
|
|
|
guint32 idx)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (NM_IS_SETTING_CONNECTION (setting));
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
iter = g_slist_nth (priv->permissions, idx);
|
|
|
|
|
g_return_if_fail (iter != NULL);
|
|
|
|
|
|
|
|
|
|
permission_free ((Permission *) iter->data);
|
|
|
|
|
priv->permissions = g_slist_delete_link (priv->permissions, iter);
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_PERMISSIONS);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_remove_permission_by_value:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @ptype: the permission type; at this time only "user" is supported
|
|
|
|
|
* @pitem: the permission item formatted as required for @ptype
|
|
|
|
|
* @detail: (allow-none): unused at this time; must be %NULL
|
|
|
|
|
*
|
|
|
|
|
* Removes the permission from the connection.
|
|
|
|
|
* At this time, only the "user" permission type is supported, and @pitem must
|
|
|
|
|
* be a username. See #NMSettingConnection:permissions: for more details.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the permission was found and removed; %FALSE if it was not.
|
|
|
|
|
*/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_remove_permission_by_value (NMSettingConnection *setting,
|
|
|
|
|
const char *ptype,
|
|
|
|
|
const char *pitem,
|
|
|
|
|
const char *detail)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
Permission *p;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
g_return_val_if_fail (ptype, FALSE);
|
|
|
|
|
g_return_val_if_fail (strlen (ptype) > 0, FALSE);
|
|
|
|
|
g_return_val_if_fail (detail == NULL, FALSE);
|
|
|
|
|
|
|
|
|
|
/* Only "user" for now... */
|
|
|
|
|
g_return_val_if_fail (strcmp (ptype, "user") == 0, FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
for (iter = priv->permissions; iter; iter = g_slist_next (iter)) {
|
|
|
|
|
p = iter->data;
|
|
|
|
|
if (strcmp (pitem, p->item) == 0) {
|
|
|
|
|
permission_free ((Permission *) iter->data);
|
|
|
|
|
priv->permissions = g_slist_delete_link (priv->permissions, iter);
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_PERMISSIONS);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_autoconnect:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:autoconnect property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection's autoconnect behavior
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_get_autoconnect (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->autoconnect;
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-25 20:39:40 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_autoconnect_priority:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:autoconnect-priority property of the connection.
|
|
|
|
|
* The higher number, the higher priority.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection's autoconnect priority
|
|
|
|
|
**/
|
|
|
|
|
gint
|
|
|
|
|
nm_setting_connection_get_autoconnect_priority (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->autoconnect_priority;
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-08 10:27:15 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_autoconnect_retries:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:autoconnect-retries property of the connection.
|
|
|
|
|
* Zero means infinite, -1 means the global default value.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection's autoconnect retries
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.6
|
|
|
|
|
**/
|
|
|
|
|
gint
|
|
|
|
|
nm_setting_connection_get_autoconnect_retries (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), -1);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->autoconnect_retries;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_timestamp:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:timestamp property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the connection's timestamp
|
|
|
|
|
**/
|
|
|
|
|
guint64
|
|
|
|
|
nm_setting_connection_get_timestamp (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->timestamp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_read_only:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:read-only property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the connection is read-only, %FALSE if it is not
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_get_read_only (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), TRUE);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->read_only;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_zone:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:zone property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the trust level of a connection
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_zone (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->zone;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_master:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:master property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: interface name of the master device or UUID of the master
|
|
|
|
|
* connection.
|
|
|
|
|
*/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_master (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->master;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_slave_type:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:slave-type property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: the type of slave this connection is, if any
|
|
|
|
|
*/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_slave_type (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->slave_type;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_is_slave_type:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @type: the setting name (ie #NM_SETTING_BOND_SETTING_NAME) to be matched
|
|
|
|
|
* against @setting's slave type
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if connection is of the given slave @type
|
|
|
|
|
*/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_is_slave_type (NMSettingConnection *setting,
|
|
|
|
|
const char *type)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
|
|
|
|
|
return !g_strcmp0 (NM_SETTING_CONNECTION_GET_PRIVATE (setting)->slave_type, type);
|
|
|
|
|
}
|
|
|
|
|
|
2015-05-06 10:54:35 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_autoconnect_slaves:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:autoconnect-slaves property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: whether slaves of the connection should be activated together
|
|
|
|
|
* with the connection.
|
|
|
|
|
*
|
Revert "all: change "Since: 1.2" to "Since: 1.0.4"/"Since: 1.0.6" for backported API"
API should be added with "Since:" of the next release on the same branch.
That means, new API on 1.1 branch (development), should be "Since: 1.2"
and new API on 1.0 branch (stable) will be "Since: 1.0.x". Similarly, new
API on master is NM_AVAILABLE_IN_1_2 and will be added with the linker
version libnl_1_2 -- never the versions of minor releases.
It is also strongly advised that for the 1.0 branch, we only add API
that was previously formerly added on master. IOW, that we only do true
backports of API that already exists on master.
API that gets backported, must also be added to master via NM_BACKPORT_SYMBOL().
That gives ABI compatibility and an application that was build against 1.0.x
will work with 1.y.z version (y > 0) without need for recompiling -- provided
that 1.y.z also contains that API.
There is one important caveat: if a major branch (e.g. current master) has a
linker section of backported APIs (e.g. libnm_1_0_6), we must do the minor release
(1.0.6) before the next major release (1.2). The reason is that after the major
release, the linker section (libnm_1_0_6) must not be extended and thus
the minor release (1.0.6) must be already released at that point.
In general, users should avoid using backported API because it limits
the ability to upgrade to arbitrary later versions. But together with the
previous point (that we only backport API to minor releases), a user that
uses backported API can be sure that a 1.y.z version is ABI compatible with
1.0.x, if the 1.y.z release date was after the release date of 1.0.x.
This reverts commit 02a136682c749a0fd27853c0152d36c44635151f.
2015-08-22 00:57:30 +02:00
|
|
|
* Since: 1.2
|
2015-05-06 10:54:35 +02:00
|
|
|
**/
|
|
|
|
|
NMSettingConnectionAutoconnectSlaves
|
|
|
|
|
nm_setting_connection_get_autoconnect_slaves (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->autoconnect_slaves;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_num_secondaries:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns: the number of configured secondary connection UUIDs
|
|
|
|
|
**/
|
|
|
|
|
guint32
|
|
|
|
|
nm_setting_connection_get_num_secondaries (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0);
|
|
|
|
|
|
|
|
|
|
return g_slist_length (NM_SETTING_CONNECTION_GET_PRIVATE (setting)->secondaries);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_secondary:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @idx: the zero-based index of the secondary connection UUID entry
|
|
|
|
|
*
|
|
|
|
|
* Returns: the secondary connection UUID at index @idx
|
|
|
|
|
**/
|
|
|
|
|
const char *
|
|
|
|
|
nm_setting_connection_get_secondary (NMSettingConnection *setting, guint32 idx)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NULL);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
g_return_val_if_fail (idx <= g_slist_length (priv->secondaries), NULL);
|
|
|
|
|
|
|
|
|
|
return (const char *) g_slist_nth_data (priv->secondaries, idx);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_add_secondary:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @sec_uuid: the secondary connection UUID to add
|
|
|
|
|
*
|
|
|
|
|
* Adds a new secondary connetion UUID to the setting.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the secondary connection UUID was added; %FALSE if the UUID
|
|
|
|
|
* was already present
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_add_secondary (NMSettingConnection *setting,
|
|
|
|
|
const char *sec_uuid)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
g_return_val_if_fail (sec_uuid != NULL, FALSE);
|
|
|
|
|
g_return_val_if_fail (sec_uuid[0] != '\0', FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
for (iter = priv->secondaries; iter; iter = g_slist_next (iter)) {
|
|
|
|
|
if (!strcmp (sec_uuid, (char *) iter->data))
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
priv->secondaries = g_slist_append (priv->secondaries, g_strdup (sec_uuid));
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_SECONDARIES);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_remove_secondary:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @idx: index number of the secondary connection UUID
|
|
|
|
|
*
|
|
|
|
|
* Removes the secondary coonnection UUID at index @idx.
|
|
|
|
|
**/
|
|
|
|
|
void
|
|
|
|
|
nm_setting_connection_remove_secondary (NMSettingConnection *setting, guint32 idx)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
GSList *elt;
|
|
|
|
|
|
|
|
|
|
g_return_if_fail (NM_IS_SETTING_CONNECTION (setting));
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
elt = g_slist_nth (priv->secondaries, idx);
|
|
|
|
|
g_return_if_fail (elt != NULL);
|
|
|
|
|
|
|
|
|
|
g_free (elt->data);
|
|
|
|
|
priv->secondaries = g_slist_delete_link (priv->secondaries, elt);
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_SECONDARIES);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_remove_secondary_by_value:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
* @sec_uuid: the secondary connection UUID to remove
|
|
|
|
|
*
|
|
|
|
|
* Removes the secondary coonnection UUID @sec_uuid.
|
|
|
|
|
*
|
|
|
|
|
* Returns: %TRUE if the secondary connection UUID was found and removed; %FALSE if it was not.
|
|
|
|
|
**/
|
|
|
|
|
gboolean
|
|
|
|
|
nm_setting_connection_remove_secondary_by_value (NMSettingConnection *setting,
|
|
|
|
|
const char *sec_uuid)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv;
|
|
|
|
|
GSList *iter;
|
|
|
|
|
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), FALSE);
|
|
|
|
|
g_return_val_if_fail (sec_uuid != NULL, FALSE);
|
|
|
|
|
g_return_val_if_fail (sec_uuid[0] != '\0', FALSE);
|
|
|
|
|
|
|
|
|
|
priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
for (iter = priv->secondaries; iter; iter = g_slist_next (iter)) {
|
|
|
|
|
if (!strcmp (sec_uuid, (char *) iter->data)) {
|
|
|
|
|
priv->secondaries = g_slist_delete_link (priv->secondaries, iter);
|
|
|
|
|
g_object_notify (G_OBJECT (setting), NM_SETTING_CONNECTION_SECONDARIES);
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_gateway_ping_timeout:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns: the value contained in the #NMSettingConnection:gateway-ping-timeout
|
|
|
|
|
* property.
|
|
|
|
|
**/
|
|
|
|
|
guint32
|
|
|
|
|
nm_setting_connection_get_gateway_ping_timeout (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), 0);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->gateway_ping_timeout;
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-27 17:45:53 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_metered:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns: the #NMSettingConnection:metered property of the setting.
|
|
|
|
|
*
|
Revert "all: change "Since: 1.2" to "Since: 1.0.4"/"Since: 1.0.6" for backported API"
API should be added with "Since:" of the next release on the same branch.
That means, new API on 1.1 branch (development), should be "Since: 1.2"
and new API on 1.0 branch (stable) will be "Since: 1.0.x". Similarly, new
API on master is NM_AVAILABLE_IN_1_2 and will be added with the linker
version libnl_1_2 -- never the versions of minor releases.
It is also strongly advised that for the 1.0 branch, we only add API
that was previously formerly added on master. IOW, that we only do true
backports of API that already exists on master.
API that gets backported, must also be added to master via NM_BACKPORT_SYMBOL().
That gives ABI compatibility and an application that was build against 1.0.x
will work with 1.y.z version (y > 0) without need for recompiling -- provided
that 1.y.z also contains that API.
There is one important caveat: if a major branch (e.g. current master) has a
linker section of backported APIs (e.g. libnm_1_0_6), we must do the minor release
(1.0.6) before the next major release (1.2). The reason is that after the major
release, the linker section (libnm_1_0_6) must not be extended and thus
the minor release (1.0.6) must be already released at that point.
In general, users should avoid using backported API because it limits
the ability to upgrade to arbitrary later versions. But together with the
previous point (that we only backport API to minor releases), a user that
uses backported API can be sure that a 1.y.z version is ABI compatible with
1.0.x, if the 1.y.z release date was after the release date of 1.0.x.
This reverts commit 02a136682c749a0fd27853c0152d36c44635151f.
2015-08-22 00:57:30 +02:00
|
|
|
* Since: 1.2
|
2015-04-27 17:45:53 +02:00
|
|
|
**/
|
|
|
|
|
NMMetered
|
|
|
|
|
nm_setting_connection_get_metered (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting),
|
|
|
|
|
NM_METERED_UNKNOWN);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->metered;
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-07 11:48:30 +02:00
|
|
|
/**
|
|
|
|
|
* nm_setting_connection_get_lldp:
|
|
|
|
|
* @setting: the #NMSettingConnection
|
|
|
|
|
*
|
|
|
|
|
* Returns the #NMSettingConnection:lldp property of the connection.
|
|
|
|
|
*
|
|
|
|
|
* Returns: a %NMSettingConnectionLldp which indicates whether LLDP must be
|
|
|
|
|
* enabled for the connection.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
|
|
|
|
NMSettingConnectionLldp
|
|
|
|
|
nm_setting_connection_get_lldp (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
g_return_val_if_fail (NM_IS_SETTING_CONNECTION (setting), NM_SETTING_CONNECTION_LLDP_DEFAULT);
|
|
|
|
|
|
|
|
|
|
return NM_SETTING_CONNECTION_GET_PRIVATE (setting)->lldp;
|
|
|
|
|
}
|
2015-07-21 19:02:12 +02:00
|
|
|
|
2014-07-08 18:36:02 +02:00
|
|
|
static void
|
|
|
|
|
_set_error_missing_base_setting (GError **error, const char *type)
|
|
|
|
|
{
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_SETTING,
|
|
|
|
|
_("setting required for connection of type '%s'"),
|
2014-07-08 18:36:02 +02:00
|
|
|
type);
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
g_prefix_error (error, "%s: ", type);
|
2014-07-08 18:36:02 +02:00
|
|
|
}
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
static gboolean
|
2014-10-21 22:30:31 -04:00
|
|
|
verify (NMSetting *setting, NMConnection *connection, GError **error)
|
2014-07-24 08:53:33 -04:00
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
gboolean is_slave;
|
2014-07-07 17:05:10 +02:00
|
|
|
const char *slave_setting_type = NULL;
|
2014-07-08 18:36:02 +02:00
|
|
|
NMSetting *normerr_base_type = NULL;
|
2014-07-07 17:05:10 +02:00
|
|
|
const char *normerr_slave_setting_type = NULL;
|
|
|
|
|
const char *normerr_missing_slave_type = NULL;
|
|
|
|
|
const char *normerr_missing_slave_type_port = NULL;
|
2014-07-08 18:36:02 +02:00
|
|
|
gboolean normerr_base_setting = FALSE;
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
if (!priv->id) {
|
|
|
|
|
g_set_error_literal (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
2014-07-24 08:53:33 -04:00
|
|
|
_("property is missing"));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID);
|
|
|
|
|
return FALSE;
|
2014-07-08 17:22:43 +02:00
|
|
|
} else if (!priv->id[0]) {
|
2014-07-24 08:53:33 -04:00
|
|
|
g_set_error_literal (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-24 08:53:33 -04:00
|
|
|
_("property is empty"));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_ID);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
2014-12-01 13:03:23 +01:00
|
|
|
if (priv->uuid && !nm_utils_is_uuid (priv->uuid)) {
|
2014-07-24 08:53:33 -04:00
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-24 08:53:33 -04:00
|
|
|
_("'%s' is not a valid UUID"),
|
|
|
|
|
priv->uuid);
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_UUID);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (priv->interface_name) {
|
|
|
|
|
if (!nm_utils_iface_valid_name (priv->interface_name)) {
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-24 08:53:33 -04:00
|
|
|
_("'%s' is not a valid interface name"),
|
|
|
|
|
priv->interface_name);
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_INTERFACE_NAME);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!priv->type) {
|
2014-10-21 22:30:31 -04:00
|
|
|
if (!connection || !(normerr_base_type = _nm_connection_find_base_type_setting (connection))) {
|
2014-07-08 18:36:02 +02:00
|
|
|
g_set_error_literal (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
2014-07-08 18:36:02 +02:00
|
|
|
_("property is missing"));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TYPE);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2014-07-08 17:22:43 +02:00
|
|
|
} else {
|
|
|
|
|
GType base_type;
|
|
|
|
|
|
|
|
|
|
if (!priv->type[0]) {
|
|
|
|
|
g_set_error_literal (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-08 17:22:43 +02:00
|
|
|
_("property is empty"));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TYPE);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2014-07-03 19:49:52 +02:00
|
|
|
|
2014-07-08 17:22:43 +02:00
|
|
|
base_type = nm_setting_lookup_type (priv->type);
|
2014-10-11 15:02:16 -04:00
|
|
|
if (base_type == G_TYPE_INVALID || !_nm_setting_type_is_base_type (base_type)) {
|
2014-07-03 19:49:52 +02:00
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-08 17:22:43 +02:00
|
|
|
_("connection type '%s' is not valid"),
|
2014-07-03 19:49:52 +02:00
|
|
|
priv->type);
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TYPE);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2014-07-08 17:22:43 +02:00
|
|
|
|
|
|
|
|
/* Make sure the corresponding 'type' item is present */
|
2014-10-21 22:30:31 -04:00
|
|
|
if ( connection
|
|
|
|
|
&& !nm_connection_get_setting_by_name (connection, priv->type)) {
|
2014-07-08 18:36:02 +02:00
|
|
|
NMSetting *s_base;
|
2014-10-21 22:30:31 -04:00
|
|
|
NMConnection *connection2;
|
2014-07-08 18:36:02 +02:00
|
|
|
|
|
|
|
|
s_base = g_object_new (base_type, NULL);
|
2014-10-21 22:30:31 -04:00
|
|
|
connection2 = nm_simple_connection_new_clone (connection);
|
|
|
|
|
nm_connection_add_setting (connection2, s_base);
|
2014-07-08 18:36:02 +02:00
|
|
|
|
2014-10-21 22:30:31 -04:00
|
|
|
normerr_base_setting = nm_setting_verify (s_base, connection2, NULL);
|
2014-07-08 18:36:02 +02:00
|
|
|
|
2014-10-21 22:30:31 -04:00
|
|
|
g_object_unref (connection2);
|
2014-07-08 18:36:02 +02:00
|
|
|
|
|
|
|
|
if (!normerr_base_setting) {
|
|
|
|
|
_set_error_missing_base_setting (error, priv->type);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2014-07-03 19:49:52 +02:00
|
|
|
}
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|
|
|
|
|
|
2014-07-07 17:05:10 +02:00
|
|
|
is_slave = FALSE;
|
|
|
|
|
if (priv->slave_type)
|
|
|
|
|
is_slave = _nm_setting_slave_type_is_valid (priv->slave_type, &slave_setting_type);
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
if (priv->slave_type && !is_slave) {
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
2014-07-24 08:53:33 -04:00
|
|
|
_("Unknown slave type '%s'"), priv->slave_type);
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE);
|
2014-07-07 17:05:10 +02:00
|
|
|
return FALSE;
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (is_slave) {
|
|
|
|
|
if (!priv->master) {
|
2014-11-20 12:33:49 +01:00
|
|
|
g_set_error (error,
|
|
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
|
|
|
_("Slave connections need a valid '%s' property"), NM_SETTING_CONNECTION_MASTER);
|
2014-07-24 08:53:33 -04:00
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_MASTER);
|
2014-07-07 17:05:10 +02:00
|
|
|
return FALSE;
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|
2014-07-07 17:05:10 +02:00
|
|
|
if ( slave_setting_type
|
2014-10-21 22:30:31 -04:00
|
|
|
&& connection
|
|
|
|
|
&& !nm_connection_get_setting_by_name (connection, slave_setting_type))
|
2014-07-07 17:05:10 +02:00
|
|
|
normerr_slave_setting_type = slave_setting_type;
|
2014-07-24 08:53:33 -04:00
|
|
|
} else {
|
|
|
|
|
if (priv->master) {
|
2014-07-07 17:05:10 +02:00
|
|
|
const char *slave_type;
|
|
|
|
|
NMSetting *s_port;
|
|
|
|
|
|
2014-10-21 22:30:31 -04:00
|
|
|
if ( connection
|
|
|
|
|
&& (slave_type = _nm_connection_detect_slave_type (connection, &s_port))) {
|
2014-07-07 17:05:10 +02:00
|
|
|
normerr_missing_slave_type = slave_type;
|
|
|
|
|
normerr_missing_slave_type_port = nm_setting_get_name (s_port);
|
|
|
|
|
} else {
|
2014-11-20 12:33:49 +01:00
|
|
|
g_set_error (error,
|
|
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
|
|
|
_("Cannot set '%s' without '%s'"),
|
|
|
|
|
NM_SETTING_CONNECTION_MASTER, NM_SETTING_CONNECTION_SLAVE_TYPE);
|
2014-07-07 17:05:10 +02:00
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-04-27 17:45:53 +02:00
|
|
|
if (priv->metered != NM_METERED_UNKNOWN &&
|
|
|
|
|
priv->metered != NM_METERED_YES &&
|
|
|
|
|
priv->metered != NM_METERED_NO) {
|
|
|
|
|
g_set_error (error,
|
|
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_INVALID_PROPERTY,
|
|
|
|
|
_("metered value %d is not valid"), priv->metered);
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME,
|
|
|
|
|
NM_SETTING_CONNECTION_METERED);
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-07 17:05:10 +02:00
|
|
|
/* *** errors above here should be always fatal, below NORMALIZABLE_ERROR *** */
|
|
|
|
|
|
2014-12-01 13:03:23 +01:00
|
|
|
if (!priv->uuid) {
|
|
|
|
|
g_set_error_literal (error,
|
|
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
|
|
|
|
_("property is missing"));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_UUID);
|
|
|
|
|
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-08 18:36:02 +02:00
|
|
|
if (normerr_base_type) {
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
2014-07-08 18:36:02 +02:00
|
|
|
_("property type should be set to '%s'"),
|
|
|
|
|
nm_setting_get_name (normerr_base_type));
|
|
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_TYPE);
|
|
|
|
|
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (normerr_base_setting) {
|
|
|
|
|
_set_error_missing_base_setting (error, priv->type);
|
|
|
|
|
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-07 17:05:10 +02:00
|
|
|
if (normerr_slave_setting_type) {
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_SETTING,
|
2014-07-07 17:05:10 +02:00
|
|
|
_("slave-type '%s' requires a '%s' setting in the connection"),
|
|
|
|
|
priv->slave_type, normerr_slave_setting_type);
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
g_prefix_error (error, "%s: ", normerr_slave_setting_type);
|
2014-07-07 17:05:10 +02:00
|
|
|
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (normerr_missing_slave_type) {
|
|
|
|
|
g_set_error (error,
|
libnm-core: merge NMSetting*Error into NMConnectionError
Each setting type was defining its own error type, but most of them
had exactly the same three errors ("unknown", "missing property", and
"invalid property"), and none of the other values was of much use
programmatically anyway.
So, this commit merges NMSettingError, NMSettingAdslError, etc, all
into NMConnectionError. (The reason for merging into NMConnectionError
rather than NMSettingError is that we also already have
"NMSettingsError", for errors related to the settings service, so
"NMConnectionError" is a less-confusable name for settings/connection
errors than "NMSettingError".)
Also, make sure that all of the affected error messages are localized,
and (where appropriate) prefix them with the relevant property name.
Renamed error codes:
NM_SETTING_ERROR_PROPERTY_NOT_FOUND -> NM_CONNECTION_ERROR_PROPERTY_NOT_FOUND
NM_SETTING_ERROR_PROPERTY_NOT_SECRET -> NM_CONNECTION_ERROR_PROPERTY_NOT_SECRET
Remapped error codes:
NM_SETTING_*_ERROR_MISSING_PROPERTY -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_*_ERROR_INVALID_PROPERTY -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BLUETOOTH_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_INVALID_SETTING
NM_SETTING_BOND_ERROR_INVALID_OPTION -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_BOND_ERROR_MISSING_OPTION -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_CONNECTION_ERROR_SLAVE_SETTING_NOT_FOUND -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_IP4_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_IP6_CONFIG_ERROR_NOT_ALLOWED_FOR_METHOD -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_VLAN_ERROR_INVALID_PARENT -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_MISSING_802_1X_SETTING -> NM_CONNECTION_ERROR_MISSING_SETTING
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_802_1X -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_LEAP_REQUIRES_USERNAME -> NM_CONNECTION_ERROR_MISSING_PROPERTY
NM_SETTING_WIRELESS_SECURITY_ERROR_SHARED_KEY_REQUIRES_WEP -> NM_CONNECTION_ERROR_INVALID_PROPERTY
NM_SETTING_WIRELESS_ERROR_CHANNEL_REQUIRES_BAND -> NM_CONNECTION_ERROR_MISSING_PROPERTY
Dropped error codes (were previously defined but unused):
NM_SETTING_CDMA_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_CONNECTION_ERROR_IP_CONFIG_NOT_ALLOWED
NM_SETTING_GSM_ERROR_MISSING_SERIAL_SETTING
NM_SETTING_PPP_ERROR_REQUIRE_MPPE_NOT_ALLOWED
NM_SETTING_PPPOE_ERROR_MISSING_PPP_SETTING
NM_SETTING_SERIAL_ERROR_MISSING_PPP_SETTING
NM_SETTING_WIRELESS_ERROR_MISSING_SECURITY_SETTING
2014-10-20 13:52:23 -04:00
|
|
|
NM_CONNECTION_ERROR,
|
|
|
|
|
NM_CONNECTION_ERROR_MISSING_PROPERTY,
|
2014-11-20 12:33:49 +01:00
|
|
|
_("Detect a slave connection with '%s' set and a port type '%s'. '%s' should be set to '%s'"),
|
|
|
|
|
NM_SETTING_CONNECTION_MASTER, normerr_missing_slave_type_port,
|
|
|
|
|
NM_SETTING_CONNECTION_SLAVE_TYPE, normerr_missing_slave_type);
|
2014-07-07 17:05:10 +02:00
|
|
|
g_prefix_error (error, "%s.%s: ", NM_SETTING_CONNECTION_SETTING_NAME, NM_SETTING_CONNECTION_SLAVE_TYPE);
|
|
|
|
|
return NM_SETTING_VERIFY_NORMALIZABLE_ERROR;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
|
2014-09-15 13:30:07 -04:00
|
|
|
static const char *
|
2014-08-16 10:09:48 -04:00
|
|
|
find_virtual_interface_name (GVariant *connection_dict)
|
2014-08-04 19:57:20 -04:00
|
|
|
{
|
2014-08-16 10:09:48 -04:00
|
|
|
GVariant *setting_dict;
|
|
|
|
|
const char *interface_name;
|
|
|
|
|
|
|
|
|
|
setting_dict = g_variant_lookup_value (connection_dict, NM_SETTING_BOND_SETTING_NAME, NM_VARIANT_TYPE_SETTING);
|
|
|
|
|
if (!setting_dict)
|
|
|
|
|
setting_dict = g_variant_lookup_value (connection_dict, NM_SETTING_BRIDGE_SETTING_NAME, NM_VARIANT_TYPE_SETTING);
|
|
|
|
|
if (!setting_dict)
|
|
|
|
|
setting_dict = g_variant_lookup_value (connection_dict, NM_SETTING_TEAM_SETTING_NAME, NM_VARIANT_TYPE_SETTING);
|
|
|
|
|
if (!setting_dict)
|
|
|
|
|
setting_dict = g_variant_lookup_value (connection_dict, NM_SETTING_VLAN_SETTING_NAME, NM_VARIANT_TYPE_SETTING);
|
|
|
|
|
|
|
|
|
|
if (!setting_dict)
|
2014-09-15 13:30:07 -04:00
|
|
|
return NULL;
|
2014-08-04 19:57:20 -04:00
|
|
|
|
|
|
|
|
/* All of the deprecated virtual interface name properties were named "interface-name". */
|
2014-08-16 10:09:48 -04:00
|
|
|
if (!g_variant_lookup (setting_dict, "interface-name", "&s", &interface_name))
|
2015-02-06 16:36:55 +01:00
|
|
|
interface_name = NULL;
|
2014-08-04 19:57:20 -04:00
|
|
|
|
2015-02-06 16:36:55 +01:00
|
|
|
g_variant_unref (setting_dict);
|
2014-08-16 10:09:48 -04:00
|
|
|
return interface_name;
|
2014-09-15 13:30:07 -04:00
|
|
|
}
|
2014-08-04 19:57:20 -04:00
|
|
|
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
static gboolean
|
2014-09-15 13:30:07 -04:00
|
|
|
nm_setting_connection_set_interface_name (NMSetting *setting,
|
2014-08-16 10:09:48 -04:00
|
|
|
GVariant *connection_dict,
|
2014-09-15 13:30:07 -04:00
|
|
|
const char *property,
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
GVariant *value,
|
|
|
|
|
NMSettingParseFlags parse_flags,
|
|
|
|
|
GError **error)
|
2014-09-15 13:30:07 -04:00
|
|
|
{
|
|
|
|
|
const char *interface_name;
|
|
|
|
|
|
|
|
|
|
/* For compatibility reasons, if there is an invalid virtual interface name,
|
|
|
|
|
* we need to make verification fail, even if that virtual name would be
|
|
|
|
|
* overridden by a valid connection.interface-name.
|
|
|
|
|
*/
|
2014-08-16 10:09:48 -04:00
|
|
|
interface_name = find_virtual_interface_name (connection_dict);
|
2014-09-15 13:30:07 -04:00
|
|
|
if (!interface_name || nm_utils_iface_valid_name (interface_name))
|
2014-08-16 10:09:48 -04:00
|
|
|
interface_name = g_variant_get_string (value, NULL);
|
2014-08-04 19:57:20 -04:00
|
|
|
|
|
|
|
|
g_object_set (G_OBJECT (setting),
|
|
|
|
|
NM_SETTING_CONNECTION_INTERFACE_NAME, interface_name,
|
|
|
|
|
NULL);
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
|
|
|
|
|
return TRUE;
|
2014-09-15 13:30:07 -04:00
|
|
|
}
|
|
|
|
|
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
static gboolean
|
2014-09-15 13:30:07 -04:00
|
|
|
nm_setting_connection_no_interface_name (NMSetting *setting,
|
2014-08-16 10:09:48 -04:00
|
|
|
GVariant *connection_dict,
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
const char *property,
|
|
|
|
|
NMSettingParseFlags parse_flags,
|
|
|
|
|
GError **error)
|
2014-09-15 13:30:07 -04:00
|
|
|
{
|
|
|
|
|
const char *virtual_interface_name;
|
|
|
|
|
|
2014-08-16 10:09:48 -04:00
|
|
|
virtual_interface_name = find_virtual_interface_name (connection_dict);
|
2014-09-15 13:30:07 -04:00
|
|
|
g_object_set (G_OBJECT (setting),
|
|
|
|
|
NM_SETTING_CONNECTION_INTERFACE_NAME, virtual_interface_name,
|
|
|
|
|
NULL);
|
libnm-core: allow strict and relaxed error behavior for _nm_setting_new_from_dbus()
In some situations, we want strict checking of errors, for example when
NetworkManager receives a new connection from a client, the connection
must make sense as a whole (and since NetworkManager service is backward
compatible to the clients and not the other way around, there is no
excuse for sending invalid data to the server).
In other situations, we want a best-effort behavior. Like when
NetworkManager sends a connection to its clients, those clients
want to extract as many properties as they understand, but in order
to be forward compatible against newer server versions, invalid
or unknown properties must be accepted.
Previously, a mixture of both was done. Some issues caused a failure
to create a new NMSetting, other invalid parts were just silently
ignored or triggered a g_warning() in glib.
Now allow for both. When doing strict-validation, be more strict and
reject all unknown properties and catch when the user sets an invalid
argument. On the other hand, allow for a best-effort mode that
effectively cannot fail and will return a new NMSetting instance.
For now, add NMSettingParseFlags so that the caller can choose the
old behavior, strict parsing, or best effort.
This patch doesn't have any externally visible change except that
no more g_warnings will be emitted.
2016-03-18 13:42:50 +01:00
|
|
|
return TRUE;
|
2014-08-04 19:57:20 -04:00
|
|
|
}
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
static gboolean
|
|
|
|
|
compare_property (NMSetting *setting,
|
|
|
|
|
NMSetting *other,
|
|
|
|
|
const GParamSpec *prop_spec,
|
|
|
|
|
NMSettingCompareFlags flags)
|
|
|
|
|
{
|
|
|
|
|
/* Handle ignore ID */
|
|
|
|
|
if ( (flags & NM_SETTING_COMPARE_FLAG_IGNORE_ID)
|
|
|
|
|
&& g_strcmp0 (prop_spec->name, NM_SETTING_CONNECTION_ID) == 0)
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
2014-11-18 14:20:12 +01:00
|
|
|
/* Handle ignore timestamp */
|
|
|
|
|
if ( (flags & NM_SETTING_COMPARE_FLAG_IGNORE_TIMESTAMP)
|
|
|
|
|
&& g_strcmp0 (prop_spec->name, NM_SETTING_CONNECTION_TIMESTAMP) == 0)
|
|
|
|
|
return TRUE;
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/* Otherwise chain up to parent to handle generic compare */
|
|
|
|
|
return NM_SETTING_CLASS (nm_setting_connection_parent_class)->compare_property (setting, other, prop_spec, flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
nm_setting_connection_init (NMSettingConnection *setting)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
finalize (GObject *object)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE (object);
|
|
|
|
|
|
|
|
|
|
g_free (priv->id);
|
|
|
|
|
g_free (priv->uuid);
|
2016-06-21 16:41:05 +02:00
|
|
|
g_free (priv->stable_id);
|
2014-07-24 08:53:33 -04:00
|
|
|
g_free (priv->interface_name);
|
|
|
|
|
g_free (priv->type);
|
|
|
|
|
g_free (priv->zone);
|
|
|
|
|
g_free (priv->master);
|
|
|
|
|
g_free (priv->slave_type);
|
|
|
|
|
g_slist_free_full (priv->permissions, (GDestroyNotify) permission_free);
|
|
|
|
|
g_slist_free_full (priv->secondaries, g_free);
|
|
|
|
|
|
|
|
|
|
G_OBJECT_CLASS (nm_setting_connection_parent_class)->finalize (object);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static GSList *
|
2014-08-21 13:19:53 -04:00
|
|
|
perm_strv_to_permlist (char **strv)
|
2014-07-24 08:53:33 -04:00
|
|
|
{
|
2014-08-21 13:19:53 -04:00
|
|
|
GSList *list = NULL;
|
|
|
|
|
int i;
|
2014-07-24 08:53:33 -04:00
|
|
|
|
2014-09-18 12:45:30 +02:00
|
|
|
if (!strv)
|
|
|
|
|
return NULL;
|
|
|
|
|
|
2014-08-21 13:19:53 -04:00
|
|
|
for (i = 0; strv[i]; i++) {
|
2014-07-24 08:53:33 -04:00
|
|
|
Permission *p;
|
|
|
|
|
|
2014-08-21 13:19:53 -04:00
|
|
|
p = permission_new_from_str (strv[i]);
|
2014-07-24 08:53:33 -04:00
|
|
|
if (p)
|
|
|
|
|
list = g_slist_append (list, p);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
set_property (GObject *object, guint prop_id,
|
|
|
|
|
const GValue *value, GParamSpec *pspec)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE (object);
|
|
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
|
case PROP_ID:
|
|
|
|
|
g_free (priv->id);
|
|
|
|
|
priv->id = g_value_dup_string (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_UUID:
|
|
|
|
|
g_free (priv->uuid);
|
|
|
|
|
priv->uuid = g_value_dup_string (value);
|
|
|
|
|
break;
|
2016-06-21 16:41:05 +02:00
|
|
|
case PROP_STABLE_ID:
|
|
|
|
|
g_free (priv->stable_id);
|
|
|
|
|
priv->stable_id = g_value_dup_string (value);
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_INTERFACE_NAME:
|
|
|
|
|
g_free (priv->interface_name);
|
|
|
|
|
priv->interface_name = g_value_dup_string (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_TYPE:
|
|
|
|
|
g_free (priv->type);
|
|
|
|
|
priv->type = g_value_dup_string (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_PERMISSIONS:
|
|
|
|
|
g_slist_free_full (priv->permissions, (GDestroyNotify) permission_free);
|
2014-08-21 13:19:53 -04:00
|
|
|
priv->permissions = perm_strv_to_permlist (g_value_get_boxed (value));
|
2014-07-24 08:53:33 -04:00
|
|
|
break;
|
|
|
|
|
case PROP_AUTOCONNECT:
|
|
|
|
|
priv->autoconnect = g_value_get_boolean (value);
|
|
|
|
|
break;
|
2014-08-25 20:39:40 +02:00
|
|
|
case PROP_AUTOCONNECT_PRIORITY:
|
|
|
|
|
priv->autoconnect_priority = g_value_get_int (value);
|
|
|
|
|
break;
|
2016-10-08 10:27:15 +02:00
|
|
|
case PROP_AUTOCONNECT_RETRIES:
|
|
|
|
|
priv->autoconnect_retries = g_value_get_int (value);
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_TIMESTAMP:
|
|
|
|
|
priv->timestamp = g_value_get_uint64 (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_READ_ONLY:
|
|
|
|
|
priv->read_only = g_value_get_boolean (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_ZONE:
|
|
|
|
|
g_free (priv->zone);
|
|
|
|
|
priv->zone = g_value_dup_string (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_MASTER:
|
|
|
|
|
g_free (priv->master);
|
|
|
|
|
priv->master = g_value_dup_string (value);
|
|
|
|
|
break;
|
|
|
|
|
case PROP_SLAVE_TYPE:
|
|
|
|
|
g_free (priv->slave_type);
|
|
|
|
|
priv->slave_type = g_value_dup_string (value);
|
|
|
|
|
break;
|
2015-05-06 10:54:35 +02:00
|
|
|
case PROP_AUTOCONNECT_SLAVES:
|
|
|
|
|
priv->autoconnect_slaves = g_value_get_enum (value);
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_SECONDARIES:
|
|
|
|
|
g_slist_free_full (priv->secondaries, g_free);
|
2015-07-01 14:08:51 +02:00
|
|
|
priv->secondaries = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
2014-07-24 08:53:33 -04:00
|
|
|
break;
|
|
|
|
|
case PROP_GATEWAY_PING_TIMEOUT:
|
|
|
|
|
priv->gateway_ping_timeout = g_value_get_uint (value);
|
|
|
|
|
break;
|
2015-04-27 17:45:53 +02:00
|
|
|
case PROP_METERED:
|
|
|
|
|
priv->metered = g_value_get_enum (value);
|
|
|
|
|
break;
|
2015-10-07 11:48:30 +02:00
|
|
|
case PROP_LLDP:
|
|
|
|
|
priv->lldp = g_value_get_int (value);
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
default:
|
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-21 13:19:53 -04:00
|
|
|
static char **
|
|
|
|
|
perm_permlist_to_strv (GSList *permlist)
|
2014-07-24 08:53:33 -04:00
|
|
|
{
|
2014-08-21 13:19:53 -04:00
|
|
|
GPtrArray *strings;
|
|
|
|
|
GSList *iter;
|
2014-07-24 08:53:33 -04:00
|
|
|
|
2014-08-21 13:19:53 -04:00
|
|
|
strings = g_ptr_array_new ();
|
2014-07-24 08:53:33 -04:00
|
|
|
for (iter = permlist; iter; iter = g_slist_next (iter))
|
2014-08-21 13:19:53 -04:00
|
|
|
g_ptr_array_add (strings, permission_to_string ((Permission *) iter->data));
|
|
|
|
|
g_ptr_array_add (strings, NULL);
|
|
|
|
|
|
|
|
|
|
return (char **) g_ptr_array_free (strings, FALSE);
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
get_property (GObject *object, guint prop_id,
|
|
|
|
|
GValue *value, GParamSpec *pspec)
|
|
|
|
|
{
|
|
|
|
|
NMSettingConnection *setting = NM_SETTING_CONNECTION (object);
|
|
|
|
|
NMSettingConnectionPrivate *priv = NM_SETTING_CONNECTION_GET_PRIVATE (setting);
|
|
|
|
|
|
|
|
|
|
switch (prop_id) {
|
|
|
|
|
case PROP_ID:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_id (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_UUID:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_uuid (setting));
|
|
|
|
|
break;
|
2016-06-21 16:41:05 +02:00
|
|
|
case PROP_STABLE_ID:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_stable_id (setting));
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_INTERFACE_NAME:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_interface_name (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_TYPE:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_connection_type (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_PERMISSIONS:
|
2014-08-21 13:19:53 -04:00
|
|
|
g_value_take_boxed (value, perm_permlist_to_strv (priv->permissions));
|
2014-07-24 08:53:33 -04:00
|
|
|
break;
|
|
|
|
|
case PROP_AUTOCONNECT:
|
|
|
|
|
g_value_set_boolean (value, nm_setting_connection_get_autoconnect (setting));
|
|
|
|
|
break;
|
2014-08-25 20:39:40 +02:00
|
|
|
case PROP_AUTOCONNECT_PRIORITY:
|
|
|
|
|
g_value_set_int (value, nm_setting_connection_get_autoconnect_priority (setting));
|
|
|
|
|
break;
|
2016-10-08 10:27:15 +02:00
|
|
|
case PROP_AUTOCONNECT_RETRIES:
|
|
|
|
|
g_value_set_int (value, nm_setting_connection_get_autoconnect_retries (setting));
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_TIMESTAMP:
|
|
|
|
|
g_value_set_uint64 (value, nm_setting_connection_get_timestamp (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_READ_ONLY:
|
|
|
|
|
g_value_set_boolean (value, nm_setting_connection_get_read_only (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_ZONE:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_zone (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_MASTER:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_master (setting));
|
|
|
|
|
break;
|
|
|
|
|
case PROP_SLAVE_TYPE:
|
|
|
|
|
g_value_set_string (value, nm_setting_connection_get_slave_type (setting));
|
|
|
|
|
break;
|
2015-05-06 10:54:35 +02:00
|
|
|
case PROP_AUTOCONNECT_SLAVES:
|
|
|
|
|
g_value_set_enum (value, nm_setting_connection_get_autoconnect_slaves (setting));
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
case PROP_SECONDARIES:
|
2015-07-01 14:08:51 +02:00
|
|
|
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->secondaries, TRUE));
|
2014-07-24 08:53:33 -04:00
|
|
|
break;
|
|
|
|
|
case PROP_GATEWAY_PING_TIMEOUT:
|
|
|
|
|
g_value_set_uint (value, priv->gateway_ping_timeout);
|
|
|
|
|
break;
|
2015-04-27 17:45:53 +02:00
|
|
|
case PROP_METERED:
|
|
|
|
|
g_value_set_enum (value, priv->metered);
|
|
|
|
|
break;
|
2015-10-07 11:48:30 +02:00
|
|
|
case PROP_LLDP:
|
|
|
|
|
g_value_set_int (value, priv->lldp);
|
|
|
|
|
break;
|
2014-07-24 08:53:33 -04:00
|
|
|
default:
|
|
|
|
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
nm_setting_connection_class_init (NMSettingConnectionClass *setting_class)
|
|
|
|
|
{
|
|
|
|
|
GObjectClass *object_class = G_OBJECT_CLASS (setting_class);
|
|
|
|
|
NMSettingClass *parent_class = NM_SETTING_CLASS (setting_class);
|
|
|
|
|
|
|
|
|
|
g_type_class_add_private (setting_class, sizeof (NMSettingConnectionPrivate));
|
|
|
|
|
|
|
|
|
|
/* virtual methods */
|
|
|
|
|
object_class->set_property = set_property;
|
|
|
|
|
object_class->get_property = get_property;
|
|
|
|
|
object_class->finalize = finalize;
|
|
|
|
|
parent_class->verify = verify;
|
|
|
|
|
parent_class->compare_property = compare_property;
|
|
|
|
|
|
|
|
|
|
/* Properties */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:id:
|
|
|
|
|
*
|
|
|
|
|
* A human readable unique identifier for the connection, like "Work Wi-Fi"
|
|
|
|
|
* or "T-Mobile 3G".
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: id
|
|
|
|
|
* variable: NAME(+)
|
|
|
|
|
* description: User friendly name for the connection profile.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_ID,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_ID, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:uuid:
|
|
|
|
|
*
|
|
|
|
|
* A universally unique identifier for the connection, for example generated
|
|
|
|
|
* with libuuid. It should be assigned when the connection is created, and
|
|
|
|
|
* never changed as long as the connection still applies to the same
|
|
|
|
|
* network. For example, it should not be changed when the
|
|
|
|
|
* #NMSettingConnection:id property or #NMSettingIP4Config changes, but
|
|
|
|
|
* might need to be re-created when the Wi-Fi SSID, mobile broadband network
|
|
|
|
|
* provider, or #NMSettingConnection:type property changes.
|
|
|
|
|
*
|
|
|
|
|
* The UUID must be in the format "2815492f-7e56-435e-b2e9-246bd7cdc664"
|
|
|
|
|
* (ie, contains only hexadecimal characters and "-"). A suitable UUID may
|
|
|
|
|
* be generated by nm_utils_uuid_generate() or
|
|
|
|
|
* nm_utils_uuid_generate_from_string().
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: uuid
|
|
|
|
|
* variable: UUID(+)
|
2014-11-20 13:18:32 +01:00
|
|
|
* description: UUID for the connection profile. When missing, NetworkManager
|
2016-06-21 16:41:05 +02:00
|
|
|
* creates the UUID itself (by hashing the filename).
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_UUID,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_UUID, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2016-06-21 16:41:05 +02:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:stable-id:
|
|
|
|
|
*
|
|
|
|
|
* This token to generate stable IDs for the connection. If unset,
|
|
|
|
|
* the UUID will be used instead.
|
|
|
|
|
*
|
2016-06-21 18:07:56 +02:00
|
|
|
* The stable-id is used instead of the connection UUID for generating
|
|
|
|
|
* IPv6 stable private addresses with ipv6.addr-gen-mode=stable-privacy.
|
device: extend MAC address handling including randomization for ethernet and wifi
Extend the "ethernet.cloned-mac-address" and "wifi.cloned-mac-address"
settings. Instead of specifying an explicit MAC address, the additional
special values "permanent", "preserve", "random", "random-bia", "stable" and
"stable-bia" are supported.
"permanent" means to use the permanent hardware address. Previously that
was the default if no explict cloned-mac-address was set. The default is
thus still "permanent", but it can be overwritten by global
configuration.
"preserve" means not to configure the MAC address when activating the
device. That was actually the default behavior before introducing MAC
address handling with commit 1b49f941a69af910b0e68530be7339e8053068e5.
"random" and "random-bia" use a randomized MAC address for each
connection. "stable" and "stable-bia" use a generated, stable
address based on some token. The "bia" suffix says to generate a
burned-in address. The stable method by default uses as token the
connection UUID, but the token can be explicitly choosen via
"stable:<TOKEN>" and "stable-bia:<TOKEN>".
On a D-Bus level, the "cloned-mac-address" is a bytestring and thus
cannot express the new forms. It is replaced by the new
"assigned-mac-address" field. For the GObject property, libnm's API,
nmcli, keyfile, etc. the old name "cloned-mac-address" is still used.
Deprecating the old field seems more complicated then just extending
the use of the existing "cloned-mac-address" field, although the name
doesn't match well with the extended meaning.
There is some overlap with the "wifi.mac-address-randomization" setting.
https://bugzilla.gnome.org/show_bug.cgi?id=705545
https://bugzilla.gnome.org/show_bug.cgi?id=708820
https://bugzilla.gnome.org/show_bug.cgi?id=758301
2016-05-24 15:57:16 +02:00
|
|
|
* It is also used to seed the generated cloned MAC address for
|
|
|
|
|
* ethernet.cloned-mac-address=stable and wifi.cloned-mac-address=stable.
|
2016-06-21 18:07:56 +02:00
|
|
|
*
|
2016-06-21 16:41:05 +02:00
|
|
|
* Since: 1.4
|
|
|
|
|
**/
|
|
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: stable-id
|
|
|
|
|
* variable: STABLE_ID(+)
|
|
|
|
|
* description: Token to generate stable IDs.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
|
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_STABLE_ID,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_STABLE_ID, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:interface-name:
|
|
|
|
|
*
|
|
|
|
|
* The name of the network interface this connection is bound to. If not
|
|
|
|
|
* set, then the connection can be attached to any interface of the
|
|
|
|
|
* appropriate type (subject to restrictions imposed by other settings).
|
|
|
|
|
*
|
|
|
|
|
* For software devices this specifies the name of the created device.
|
|
|
|
|
*
|
|
|
|
|
* For connection types where interface names cannot easily be made
|
|
|
|
|
* persistent (e.g. mobile broadband or USB Ethernet), this property should
|
|
|
|
|
* not be used. Setting this property restricts the interfaces a connection
|
|
|
|
|
* can be used with, and if interface names change or are reordered the
|
|
|
|
|
* connection may be applied to the wrong interface.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: interface-name
|
|
|
|
|
* variable: DEVICE
|
|
|
|
|
* description: Interface name of the device this profile is bound to. The variable
|
|
|
|
|
* can be left out when the profile should apply for more devices. Note that DEVICE
|
|
|
|
|
* can be required for some connection types.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_INTERFACE_NAME,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_INTERFACE_NAME, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_INFERRABLE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2014-08-04 19:57:20 -04:00
|
|
|
_nm_setting_class_override_property (parent_class, NM_SETTING_CONNECTION_INTERFACE_NAME,
|
2014-08-16 10:09:48 -04:00
|
|
|
G_VARIANT_TYPE_STRING,
|
2014-09-15 13:30:07 -04:00
|
|
|
NULL,
|
|
|
|
|
nm_setting_connection_set_interface_name,
|
2014-08-04 19:57:20 -04:00
|
|
|
nm_setting_connection_no_interface_name);
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:type:
|
|
|
|
|
*
|
|
|
|
|
* Base type of the connection. For hardware-dependent connections, should
|
|
|
|
|
* contain the setting name of the hardware-type specific setting (ie,
|
|
|
|
|
* "802-3-ethernet" or "802-11-wireless" or "bluetooth", etc), and for
|
|
|
|
|
* non-hardware dependent connections like VPN or otherwise, should contain
|
|
|
|
|
* the setting name of that setting type (ie, "vpn" or "bridge", etc).
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: type
|
|
|
|
|
* variable: TYPE (DEVICETYPE, DEVICE)
|
|
|
|
|
* values: Ethernet, Wireless, InfiniBand, Bridge, Bond, Vlan, Team, TeamPort
|
|
|
|
|
* description: Base type of the connection. DEVICETYPE is used for teaming
|
|
|
|
|
* connections.
|
|
|
|
|
* example: TYPE=Ethernet; TYPE=Bond; TYPE=Bridge; DEVICETYPE=TeamPort
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_TYPE,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_TYPE, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_INFERRABLE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:permissions:
|
|
|
|
|
*
|
|
|
|
|
* An array of strings defining what access a given user has to this
|
|
|
|
|
* connection. If this is %NULL or empty, all users are allowed to access
|
|
|
|
|
* this connection. Otherwise a user is allowed to access this connection
|
|
|
|
|
* if and only if they are in this list. Each entry is of the form
|
|
|
|
|
* "[type]:[id]:[reserved]"; for example, "user:dcbw:blah".
|
|
|
|
|
*
|
|
|
|
|
* At this time only the "user" [type] is allowed. Any other values are
|
|
|
|
|
* ignored and reserved for future use. [id] is the username that this
|
|
|
|
|
* permission refers to, which may not contain the ":" character. Any
|
|
|
|
|
* [reserved] information present must be ignored and is reserved for future
|
|
|
|
|
* use. All of [type], [id], and [reserved] must be valid UTF-8.
|
|
|
|
|
*/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: permissions
|
|
|
|
|
* variable: USERS(+)
|
|
|
|
|
* description: USERS restrict the access for this conenction to certain
|
|
|
|
|
* users only.
|
|
|
|
|
* example: USERS="joe bob"
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_PERMISSIONS,
|
2014-07-29 09:22:07 -04:00
|
|
|
g_param_spec_boxed (NM_SETTING_CONNECTION_PERMISSIONS, "", "",
|
2014-08-21 13:19:53 -04:00
|
|
|
G_TYPE_STRV,
|
2014-07-29 09:22:07 -04:00
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:autoconnect:
|
|
|
|
|
*
|
|
|
|
|
* Whether or not the connection should be automatically connected by
|
|
|
|
|
* NetworkManager when the resources for the connection are available.
|
|
|
|
|
* %TRUE to automatically activate the connection, %FALSE to require manual
|
|
|
|
|
* intervention to activate the connection.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: autoconnect
|
|
|
|
|
* variable: ONBOOT
|
|
|
|
|
* default: yes
|
|
|
|
|
* description: Whether the connection should be autoconnected (not only while booting).
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_AUTOCONNECT,
|
|
|
|
|
g_param_spec_boolean (NM_SETTING_CONNECTION_AUTOCONNECT, "", "",
|
|
|
|
|
TRUE,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2014-08-25 20:39:40 +02:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:autoconnect-priority:
|
|
|
|
|
*
|
|
|
|
|
* The autoconnect priority. If the connection is set to autoconnect,
|
|
|
|
|
* connections with higher priority will be preferred. Defaults to 0.
|
|
|
|
|
* The higher number means higher priority.
|
|
|
|
|
**/
|
2014-11-19 09:42:22 +01:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: autoconnect-priority
|
|
|
|
|
* variable: AUTOCONNECT_PRIORITY(+)
|
|
|
|
|
* values: -999 to 999
|
|
|
|
|
* default: 0
|
|
|
|
|
* description: Connection priority for automatic activation. Connections with
|
|
|
|
|
* higher numbers are preferred when selecting profiles for automatic activation.
|
|
|
|
|
* example: AUTOCONNECT_PRIORITY=20
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-08-25 20:39:40 +02:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_AUTOCONNECT_PRIORITY,
|
|
|
|
|
g_param_spec_int (NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY, "", "",
|
|
|
|
|
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_MIN,
|
|
|
|
|
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_MAX,
|
|
|
|
|
NM_SETTING_CONNECTION_AUTOCONNECT_PRIORITY_DEFAULT,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2016-10-08 10:27:15 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:autoconnect-retries:
|
|
|
|
|
*
|
|
|
|
|
* The number of times a connection should be tried when autoctivating before
|
|
|
|
|
* giving up. Zero means forever, -1 means the global default (4 times if not
|
|
|
|
|
* overridden).
|
|
|
|
|
*/
|
2016-10-08 10:27:21 +02:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: autoconnect-retries
|
|
|
|
|
* variable: AUTOCONNECT_RETRIES(+)
|
|
|
|
|
* description: The number of times a connection should be autoactivated
|
|
|
|
|
* before giving up and switching to the next one.
|
|
|
|
|
* values: -1 (use global default), 0 (forever) or a positive value
|
|
|
|
|
* example: AUTOCONNECT_RETRIES=1
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2016-10-08 10:27:15 +02:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_AUTOCONNECT_RETRIES,
|
|
|
|
|
g_param_spec_int (NM_SETTING_CONNECTION_AUTOCONNECT_RETRIES, "", "",
|
|
|
|
|
-1, G_MAXINT32, -1,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:timestamp:
|
|
|
|
|
*
|
|
|
|
|
* The time, in seconds since the Unix Epoch, that the connection was last
|
|
|
|
|
* _successfully_ fully activated.
|
|
|
|
|
*
|
|
|
|
|
* NetworkManager updates the connection timestamp periodically when the
|
|
|
|
|
* connection is active to ensure that an active connection has the latest
|
|
|
|
|
* timestamp. The property is only meant for reading (changes to this
|
|
|
|
|
* property will not be preserved).
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_TIMESTAMP,
|
|
|
|
|
g_param_spec_uint64 (NM_SETTING_CONNECTION_TIMESTAMP, "", "",
|
|
|
|
|
0, G_MAXUINT64, 0,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:read-only:
|
|
|
|
|
*
|
|
|
|
|
* %FALSE if the connection can be modified using the provided settings
|
|
|
|
|
* service's D-Bus interface with the right privileges, or %TRUE if the
|
|
|
|
|
* connection is read-only and cannot be modified.
|
|
|
|
|
**/
|
|
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_READ_ONLY,
|
|
|
|
|
g_param_spec_boolean (NM_SETTING_CONNECTION_READ_ONLY, "", "",
|
|
|
|
|
FALSE,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:zone:
|
|
|
|
|
*
|
|
|
|
|
* The trust level of a the connection. Free form case-insensitive string
|
|
|
|
|
* (for example "Home", "Work", "Public"). %NULL or unspecified zone means
|
|
|
|
|
* the connection will be placed in the default zone as defined by the
|
|
|
|
|
* firewall.
|
2015-09-18 17:21:34 +02:00
|
|
|
*
|
|
|
|
|
* When updating this property on a currently activated connection,
|
|
|
|
|
* the change takes effect immediately.
|
2014-07-24 08:53:33 -04:00
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: zone
|
|
|
|
|
* variable: ZONE(+)
|
|
|
|
|
* description: Trust level of this connection. The string is usually used
|
|
|
|
|
* for a firewall.
|
|
|
|
|
* example: ZONE=Work
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_ZONE,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_ZONE, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
2015-09-18 17:21:34 +02:00
|
|
|
NM_SETTING_PARAM_REAPPLY_IMMEDIATELY |
|
2014-07-24 08:53:33 -04:00
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:master:
|
|
|
|
|
*
|
|
|
|
|
* Interface name of the master device or UUID of the master connection.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: master
|
|
|
|
|
* variable: MASTER, TEAM_MASTER, BRIDGE
|
|
|
|
|
* description: Reference to master connection. The variable used depends on
|
|
|
|
|
* the connection type.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_MASTER,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_MASTER, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
NM_SETTING_PARAM_INFERRABLE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:slave-type:
|
|
|
|
|
*
|
|
|
|
|
* Setting name of the device type of this slave's master connection (eg,
|
|
|
|
|
* %NM_SETTING_BOND_SETTING_NAME), or %NULL if this connection is not a
|
|
|
|
|
* slave.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: slave-type
|
|
|
|
|
* variable: MASTER, TEAM_MASTER, DEVICETYPE, BRIDGE
|
|
|
|
|
* description: Slave type doesn't map directly to a variable, but it is
|
|
|
|
|
* recognized using different variables. MASTER for bonding,
|
|
|
|
|
* TEAM_MASTER and DEVICETYPE for teaming, BRIDGE for bridging.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_SLAVE_TYPE,
|
|
|
|
|
g_param_spec_string (NM_SETTING_CONNECTION_SLAVE_TYPE, "", "",
|
|
|
|
|
NULL,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
NM_SETTING_PARAM_INFERRABLE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2015-05-06 10:54:35 +02:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:autoconnect-slaves:
|
|
|
|
|
*
|
|
|
|
|
* Whether or not slaves of this connection should be automatically brought up
|
|
|
|
|
* when NetworkManager activates this connection. This only has a real effect
|
|
|
|
|
* for master connections.
|
|
|
|
|
* The permitted values are: 0: leave slave connections untouched,
|
|
|
|
|
* 1: activate all the slave connections with this connection, -1: default.
|
|
|
|
|
* If -1 (default) is set, global connection.autoconnect-slaves is read to
|
|
|
|
|
* determine the real value. If it is default as well, this fallbacks to 0.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
|
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: autoconnect-slaves
|
|
|
|
|
* variable: AUTOCONNECT-SLAVES(+)
|
2015-05-06 10:59:11 +02:00
|
|
|
* default: missing variable means global default
|
2015-05-06 10:54:35 +02:00
|
|
|
* description: Whether slaves of this connection should be auto-connected
|
|
|
|
|
* when this connection is activated.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
|
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_AUTOCONNECT_SLAVES,
|
|
|
|
|
g_param_spec_enum (NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES, "", "",
|
|
|
|
|
NM_TYPE_SETTING_CONNECTION_AUTOCONNECT_SLAVES,
|
|
|
|
|
NM_SETTING_CONNECTION_AUTOCONNECT_SLAVES_DEFAULT,
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:secondaries:
|
|
|
|
|
*
|
|
|
|
|
* List of connection UUIDs that should be activated when the base
|
|
|
|
|
* connection itself is activated. Currently only VPN connections are
|
|
|
|
|
* supported.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: secondaries
|
|
|
|
|
* variable: SECONDARY_UUIDS(+)
|
|
|
|
|
* description: UUID of VPN connections that should be activated
|
|
|
|
|
* together with this connection.
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_SECONDARIES,
|
2014-07-29 09:22:07 -04:00
|
|
|
g_param_spec_boxed (NM_SETTING_CONNECTION_SECONDARIES, "", "",
|
2014-08-21 13:19:53 -04:00
|
|
|
G_TYPE_STRV,
|
2014-07-29 09:22:07 -04:00
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:gateway-ping-timeout:
|
|
|
|
|
*
|
|
|
|
|
* If greater than zero, delay success of IP addressing until either the
|
|
|
|
|
* timeout is reached, or an IP gateway replies to a ping.
|
|
|
|
|
**/
|
libnm, libnm-util: move settings doc generation to libnm-core
Move the settings/plugins doc generation from libnm-util to
libnm-core, since libnm-util isn't being updated for all new
properties.
With this commit, the keyfile and ifcfg-rh documentation is basically
unchanged, except that deprecated properties are now gone, and new
properties have been added, and the sections are in a different order.
(generate-plugin-docs.pl just outputs the settings in Makefile order,
and they were unsorted in libnm-util, but are sorted in libnm-core).
The settings documentation used for nm-settings.5, the D-Bus API docs,
and the nmcli help is changed a bit more at this point, and mostly for
the worse, since the libnm-core setting properties don't match up with
the D-Bus API as well as the libnm-util ones do. To be fixed...
(I also removed the "plugins docs" line in each plugin docs comment
block while moving them, since those blocks will be used for more than
just plugins soon, and it's sort of obvious anyway.)
2014-10-28 09:58:25 -04:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: gateway-ping-timeout
|
|
|
|
|
* variable: GATEWAY_PING_TIMEOUT(+)
|
|
|
|
|
* default: 0
|
|
|
|
|
* description: If greater than zero, the IP connectivity will be checked by
|
|
|
|
|
* pinging the gateway and waiting for the specified timeout (in seconds).
|
|
|
|
|
* example: GATEWAY_PING_TIMEOUT=5
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2014-07-24 08:53:33 -04:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_GATEWAY_PING_TIMEOUT,
|
|
|
|
|
g_param_spec_uint (NM_SETTING_CONNECTION_GATEWAY_PING_TIMEOUT, "", "",
|
2015-07-01 13:42:41 +02:00
|
|
|
0, 600, 0,
|
2014-07-24 08:53:33 -04:00
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2015-04-27 17:45:53 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:metered:
|
|
|
|
|
*
|
|
|
|
|
* Whether the connection is metered.
|
|
|
|
|
*
|
2015-09-18 17:21:34 +02:00
|
|
|
* When updating this property on a currently activated connection,
|
|
|
|
|
* the change takes effect immediately.
|
|
|
|
|
*
|
2015-04-27 17:45:53 +02:00
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
2015-05-29 17:41:21 +02:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: metered
|
|
|
|
|
* variable: CONNECTION_METERED
|
|
|
|
|
* values: yes,no,unknown
|
|
|
|
|
* description: Whether the device is metered
|
|
|
|
|
* example: CONNECTION_METERED=yes
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2015-04-27 17:45:53 +02:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_METERED,
|
|
|
|
|
g_param_spec_enum (NM_SETTING_CONNECTION_METERED, "", "",
|
|
|
|
|
NM_TYPE_METERED,
|
|
|
|
|
NM_METERED_UNKNOWN,
|
|
|
|
|
G_PARAM_READWRITE |
|
2015-09-18 17:21:34 +02:00
|
|
|
NM_SETTING_PARAM_REAPPLY_IMMEDIATELY |
|
2015-04-27 17:45:53 +02:00
|
|
|
G_PARAM_STATIC_STRINGS));
|
2015-10-07 11:48:30 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* NMSettingConnection:lldp:
|
|
|
|
|
*
|
|
|
|
|
* Whether LLDP is enabled for the connection.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
2015-10-08 18:26:45 +02:00
|
|
|
/* ---ifcfg-rh---
|
|
|
|
|
* property: lldp
|
|
|
|
|
* variable: LLDP
|
|
|
|
|
* values: boolean value or 'rx'
|
|
|
|
|
* default: missing variable means global default
|
|
|
|
|
* description: whether LLDP is enabled for the connection
|
|
|
|
|
* example: LLDP=no
|
|
|
|
|
* ---end---
|
|
|
|
|
*/
|
2015-10-07 11:48:30 +02:00
|
|
|
g_object_class_install_property
|
|
|
|
|
(object_class, PROP_LLDP,
|
|
|
|
|
g_param_spec_int (NM_SETTING_CONNECTION_LLDP, "", "",
|
|
|
|
|
G_MININT32, G_MAXINT32, NM_SETTING_CONNECTION_LLDP_DEFAULT,
|
|
|
|
|
NM_SETTING_PARAM_FUZZY_IGNORE |
|
|
|
|
|
G_PARAM_READWRITE |
|
|
|
|
|
G_PARAM_CONSTRUCT |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|