/**
 * nm_setting_olpc_mesh_get_ssid:
 * @setting: the #NMSettingOlpcMesh
 *
 * Returns: (transfer none):
 */
GBytes *
nm_setting_olpc_mesh_get_ssid (NMSettingOlpcMesh *setting)
{
	g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (setting), NULL);

	return NM_SETTING_OLPC_MESH_GET_PRIVATE (setting)->ssid;
}
guint32
nm_setting_olpc_mesh_get_channel (NMSettingOlpcMesh *setting)
{
	g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (setting), 0);

	return NM_SETTING_OLPC_MESH_GET_PRIVATE (setting)->channel;
}
const char *
nm_setting_olpc_mesh_get_dhcp_anycast_address (NMSettingOlpcMesh *setting)
{
	g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (setting), NULL);

	return NM_SETTING_OLPC_MESH_GET_PRIVATE (setting)->dhcp_anycast_addr;
}
Пример #4
0
static void
set_property (GObject *object, guint prop_id,
		    const GValue *value, GParamSpec *pspec)
{
	NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE (object);

	switch (prop_id) {
	case PROP_SSID:
		if (priv->ssid)
			g_byte_array_free (priv->ssid, TRUE);
		priv->ssid = g_value_dup_boxed (value);
		break;
	case PROP_CHANNEL:
		priv->channel = g_value_get_uint (value);
		break;
	case PROP_DHCP_ANYCAST_ADDRESS:
		if (priv->dhcp_anycast_addr)
			g_byte_array_free (priv->dhcp_anycast_addr, TRUE);
		priv->dhcp_anycast_addr = g_value_dup_boxed (value);
		break;
	default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
		break;
	}
}
static void
finalize (GObject *object)
{
	NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE (object);

	if (priv->ssid)
		g_bytes_unref (priv->ssid);
	g_free (priv->dhcp_anycast_addr);

	G_OBJECT_CLASS (nm_setting_olpc_mesh_parent_class)->finalize (object);
}
static gboolean
verify (NMSetting *setting, NMConnection *connection, GError **error)
{
	NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE (setting);
	gsize length;

	if (!priv->ssid) {
		g_set_error_literal (error,
		                     NM_CONNECTION_ERROR,
		                     NM_CONNECTION_ERROR_MISSING_PROPERTY,
		                     _("property is missing"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_SSID);
		return FALSE;
	}

	length = g_bytes_get_size (priv->ssid);
	if (length == 0 || length > 32) {
		g_set_error_literal (error,
		                     NM_CONNECTION_ERROR,
		                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
		                     _("SSID length is out of range <1-32> bytes"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_SSID);
		return FALSE;
	}

	if (priv->channel == 0 || priv->channel > 13) {
		g_set_error (error,
		             NM_CONNECTION_ERROR,
		             NM_CONNECTION_ERROR_INVALID_PROPERTY,
		             _("'%d' is not a valid channel"),
		             priv->channel);
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_CHANNEL);
		return FALSE;
	}

	if (priv->dhcp_anycast_addr && !nm_utils_hwaddr_valid (priv->dhcp_anycast_addr, ETH_ALEN)) {
		g_set_error_literal (error,
		                     NM_CONNECTION_ERROR,
		                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
		                     _("property is invalid"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS);
		return FALSE;
	}

	return TRUE;
}
Пример #7
0
static gboolean
verify (NMSetting *setting, GSList *all_settings, GError **error)
{
	NMSettingOlpcMeshPrivate *priv = NM_SETTING_OLPC_MESH_GET_PRIVATE (setting);

	if (!priv->ssid) {
		g_set_error_literal (error,
		                     NM_SETTING_OLPC_MESH_ERROR,
		                     NM_SETTING_OLPC_MESH_ERROR_MISSING_PROPERTY,
		                     _("property is missing"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_SSID);
		return FALSE;
	}

	if (!priv->ssid->len || priv->ssid->len > 32) {
		g_set_error_literal (error,
		                     NM_SETTING_OLPC_MESH_ERROR,
		                     NM_SETTING_OLPC_MESH_ERROR_INVALID_PROPERTY,
		                     _("SSID length is out of range <1-32> bytes"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_SSID);
		return FALSE;
	}

	if (priv->channel == 0 || priv->channel > 13) {
		g_set_error (error,
		             NM_SETTING_OLPC_MESH_ERROR,
		             NM_SETTING_OLPC_MESH_ERROR_INVALID_PROPERTY,
		             _("'%d' is not a valid channel"),
		             priv->channel);
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_CHANNEL);
		return FALSE;
	}

	if (priv->dhcp_anycast_addr && priv->dhcp_anycast_addr->len != ETH_ALEN) {
		g_set_error_literal (error,
		                     NM_SETTING_OLPC_MESH_ERROR,
		                     NM_SETTING_OLPC_MESH_ERROR_INVALID_PROPERTY,
		                     _("property is invalid"));
		g_prefix_error (error, "%s.%s: ", NM_SETTING_OLPC_MESH_SETTING_NAME, NM_SETTING_OLPC_MESH_DHCP_ANYCAST_ADDRESS);
		return FALSE;
	}

	return TRUE;
}