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.
|
|
|
|
|
*/
|
|
|
|
|
|
2014-11-13 10:07:02 -05:00
|
|
|
#include "config.h"
|
|
|
|
|
|
2014-07-24 08:53:33 -04:00
|
|
|
#include <string.h>
|
2014-11-13 10:29:37 -05:00
|
|
|
#include <glib/gi18n-lib.h>
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
#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-07-24 08:53:33 -04:00
|
|
|
#include "nm-setting-connection.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"
|
2015-06-26 11:44:15 +02:00
|
|
|
#include "nm-macros-internal.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;
|
|
|
|
|
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;
|
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;
|
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,
|
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,
|
2014-07-24 08:53:33 -04:00
|
|
|
|
|
|
|
|
LAST_PROP
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
|
|
#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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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;
|
|
|
|
|
}
|
|
|
|
|
|
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.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
|
|
|
|
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;
|
|
|
|
|
}
|
2015-06-26 11:44:15 +02:00
|
|
|
NM_BACKPORT_SYMBOL (libnm_1_0_4, NMSettingConnectionAutoconnectSlaves, nm_setting_connection_get_autoconnect_slaves, (NMSettingConnection *setting), (setting));
|
|
|
|
|
|
|
|
|
|
NM_BACKPORT_SYMBOL (libnm_1_0_4, GType, nm_setting_connection_autoconnect_slaves_get_type, (void), ());
|
2015-05-06 10:54:35 +02:00
|
|
|
|
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.
|
|
|
|
|
*
|
|
|
|
|
* Since: 1.2
|
|
|
|
|
**/
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
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
|
|
|
|
2014-09-15 13:30:07 -04:00
|
|
|
static void
|
|
|
|
|
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,
|
2014-08-16 10:09:48 -04:00
|
|
|
GVariant *value)
|
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);
|
2014-09-15 13:30:07 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
nm_setting_connection_no_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)
|
|
|
|
|
{
|
|
|
|
|
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);
|
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);
|
|
|
|
|
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;
|
|
|
|
|
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;
|
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;
|
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;
|
|
|
|
|
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;
|
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;
|
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
|
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
|
|
|
* creates the UUID itself (by hashing the file).
|
|
|
|
|
* ---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));
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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));
|
|
|
|
|
|
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.
|
|
|
|
|
**/
|
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 |
|
|
|
|
|
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.
|
|
|
|
|
*
|
|
|
|
|
* 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 |
|
|
|
|
|
G_PARAM_STATIC_STRINGS));
|
2014-07-24 08:53:33 -04:00
|
|
|
}
|