Blame libnm/nm-wifi-p2p-peer.c

Packit Service b23acc
// SPDX-License-Identifier: LGPL-2.1+
Packit Service b23acc
/*
Packit Service b23acc
 * Copyright (C) 2018 - 2019 Red Hat, Inc.
Packit Service b23acc
 */
Packit Service b23acc
Packit Service b23acc
#include "nm-default.h"
Packit Service b23acc
Packit Service b23acc
#include "nm-wifi-p2p-peer.h"
Packit Service b23acc
Packit Service b23acc
#include "nm-connection.h"
Packit Service b23acc
#include "nm-setting-connection.h"
Packit Service b23acc
#include "nm-setting-wifi-p2p.h"
Packit Service b23acc
#include "nm-utils.h"
Packit Service b23acc
#include "nm-dbus-interface.h"
Packit Service b23acc
#include "nm-object-private.h"
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
NM_GOBJECT_PROPERTIES_DEFINE_BASE (
Packit Service b23acc
	PROP_FLAGS,
Packit Service b23acc
	PROP_NAME,
Packit Service b23acc
	PROP_MANUFACTURER,
Packit Service b23acc
	PROP_MODEL,
Packit Service b23acc
	PROP_MODEL_NUMBER,
Packit Service b23acc
	PROP_SERIAL,
Packit Service b23acc
	PROP_WFD_IES,
Packit Service b23acc
	PROP_HW_ADDRESS,
Packit Service b23acc
	PROP_STRENGTH,
Packit Service b23acc
	PROP_LAST_SEEN,
Packit Service b23acc
);
Packit Service b23acc
Packit Service b23acc
typedef struct {
Packit Service b23acc
	GBytes *wfd_ies;
Packit Service b23acc
	char *name;
Packit Service b23acc
	char *manufacturer;
Packit Service b23acc
	char *model;
Packit Service b23acc
	char *model_number;
Packit Service b23acc
	char *serial;
Packit Service b23acc
	char *hw_address;
Packit Service b23acc
	gint32 last_seen;
Packit Service b23acc
	guint32 flags;
Packit Service b23acc
	guint8 strength;
Packit Service b23acc
} NMWifiP2PPeerPrivate;
Packit Service b23acc
Packit Service b23acc
struct _NMWifiP2PPeer {
Packit Service b23acc
	NMObject parent;
Packit Service b23acc
	NMWifiP2PPeerPrivate _priv;
Packit Service b23acc
};
Packit Service b23acc
Packit Service b23acc
struct _NMWifiP2PPeerClass {
Packit Service b23acc
	NMObjectClass parent;
Packit Service b23acc
};
Packit Service b23acc
Packit Service b23acc
G_DEFINE_TYPE (NMWifiP2PPeer, nm_wifi_p2p_peer, NM_TYPE_OBJECT)
Packit Service b23acc
Packit Service b23acc
#define NM_WIFI_P2P_PEER_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMWifiP2PPeer, NM_IS_WIFI_P2P_PEER, NMObject)
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_flags:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the flags of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the flags
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
NM80211ApFlags
Packit Service b23acc
nm_wifi_p2p_peer_get_flags (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NM_802_11_AP_FLAGS_NONE);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->flags;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_name:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the name of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the name
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_name (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->name;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_manufacturer:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the manufacturer of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the manufacturer
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_manufacturer (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->manufacturer;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_model:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the model of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the model
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_model (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->model;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_model_number:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the model number of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the model number
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_model_number (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->model_number;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_serial:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the serial number of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the serial number
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_serial (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->serial;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_wfd_ies:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the WFD information elements of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: (transfer none): the #GBytes containing the WFD IEs, or %NULL.
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
GBytes *
Packit Service b23acc
nm_wifi_p2p_peer_get_wfd_ies (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	NMWifiP2PPeerPrivate *priv;
Packit Service b23acc
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	priv = NM_WIFI_P2P_PEER_GET_PRIVATE (peer);
Packit Service b23acc
	if (!priv->wfd_ies || g_bytes_get_size (priv->wfd_ies) == 0)
Packit Service b23acc
		return NULL;
Packit Service b23acc
Packit Service b23acc
	return priv->wfd_ies;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_hw_address:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the hardware address of the P2P peer.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the hardware address
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
const char *
Packit Service b23acc
nm_wifi_p2p_peer_get_hw_address (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), NULL);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->hw_address;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_strength:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Gets the current signal strength of the P2P peer as a percentage.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the signal strength (0 to 100)
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
guint8
Packit Service b23acc
nm_wifi_p2p_peer_get_strength (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), 0);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->strength;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_get_last_seen:
Packit Service b23acc
 * @peer: a #NMWifiP2PPeer
Packit Service b23acc
 *
Packit Service b23acc
 * Returns the timestamp (in CLOCK_BOOTTIME seconds) for the last time the
Packit Service b23acc
 * P2P peer was seen.  A value of -1 means the P2P peer has never been seen.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: the last seen time in seconds
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
int
Packit Service b23acc
nm_wifi_p2p_peer_get_last_seen (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	g_return_val_if_fail (NM_IS_WIFI_P2P_PEER (peer), -1);
Packit Service b23acc
Packit Service b23acc
	return NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->last_seen;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_connection_valid:
Packit Service b23acc
 * @peer: an #NMWifiP2PPeer to validate @connection against
Packit Service b23acc
 * @connection: an #NMConnection to validate against @peer
Packit Service b23acc
 *
Packit Service b23acc
 * Validates a given connection against a given Wi-Fi P2P peer to ensure that
Packit Service b23acc
 * the connection may be activated with that peer. The connection must match the
Packit Service b23acc
 * @peer's address and in the future possibly other attributes.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: %TRUE if the connection may be activated with this Wi-Fi P2P Peer,
Packit Service b23acc
 * %FALSE if it cannot be.
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
gboolean
Packit Service b23acc
nm_wifi_p2p_peer_connection_valid (NMWifiP2PPeer *peer, NMConnection *connection)
Packit Service b23acc
{
Packit Service b23acc
	NMSettingConnection *s_con;
Packit Service b23acc
	NMSettingWifiP2P *s_wifi_p2p;
Packit Service b23acc
	const char *ctype;
Packit Service b23acc
	const char *hw_address;
Packit Service b23acc
	const char *setting_peer;
Packit Service b23acc
Packit Service b23acc
	s_wifi_p2p = (NMSettingWifiP2P *) nm_connection_get_setting (connection, NM_TYPE_SETTING_WIFI_P2P);
Packit Service b23acc
	if (!s_wifi_p2p)
Packit Service b23acc
		return FALSE;
Packit Service b23acc
Packit Service b23acc
	s_con = nm_connection_get_setting_connection (connection);
Packit Service b23acc
	if (!s_con)
Packit Service b23acc
		return FALSE;
Packit Service b23acc
Packit Service b23acc
	ctype = nm_setting_connection_get_connection_type (s_con);
Packit Service b23acc
	if (   !ctype
Packit Service b23acc
	    || !nm_streq (ctype, NM_SETTING_WIFI_P2P_SETTING_NAME))
Packit Service b23acc
		return FALSE;
Packit Service b23acc
Packit Service b23acc
	/* HW Address check */
Packit Service b23acc
	hw_address = nm_wifi_p2p_peer_get_hw_address (peer);
Packit Service b23acc
	if (!hw_address)
Packit Service b23acc
		return FALSE;
Packit Service b23acc
Packit Service b23acc
	setting_peer = nm_setting_wifi_p2p_get_peer (s_wifi_p2p);
Packit Service b23acc
	if (   !setting_peer
Packit Service b23acc
	    || !nm_streq (hw_address, setting_peer))
Packit Service b23acc
		return FALSE;
Packit Service b23acc
Packit Service b23acc
	return TRUE;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/**
Packit Service b23acc
 * nm_wifi_p2p_peer_filter_connections:
Packit Service b23acc
 * @peer: an #NMWifiP2PPeer to filter connections for
Packit Service b23acc
 * @connections: (element-type NMConnection): an array of #NMConnections to
Packit Service b23acc
 * filter
Packit Service b23acc
 *
Packit Service b23acc
 * Filters a given array of connections for a given #NMWifiP2PPeer object and
Packit Service b23acc
 * returns connections which may be activated with the P2P peer.  Any
Packit Service b23acc
 * returned connections will match the @peers's HW address and in the future
Packit Service b23acc
 * possibly other attributes.
Packit Service b23acc
 *
Packit Service b23acc
 * To obtain the list of connections that are compatible with this P2P peer,
Packit Service b23acc
 * use nm_client_get_connections() and then filter the returned list for a given
Packit Service b23acc
 * #NMDevice using nm_device_filter_connections() and finally filter that list
Packit Service b23acc
 * with this function.
Packit Service b23acc
 *
Packit Service b23acc
 * Returns: (transfer container) (element-type NMConnection): an array of
Packit Service b23acc
 * #NMConnections that could be activated with the given @peer. The array should
Packit Service b23acc
 * be freed with g_ptr_array_unref() when it is no longer required.
Packit Service b23acc
 *
Packit Service b23acc
 * Since: 1.16
Packit Service b23acc
 **/
Packit Service b23acc
GPtrArray *
Packit Service b23acc
nm_wifi_p2p_peer_filter_connections (NMWifiP2PPeer *peer, const GPtrArray *connections)
Packit Service b23acc
{
Packit Service b23acc
	GPtrArray *filtered;
Packit Service b23acc
	guint i;
Packit Service b23acc
Packit Service b23acc
	filtered = g_ptr_array_new_with_free_func (g_object_unref);
Packit Service b23acc
	for (i = 0; i < connections->len; i++) {
Packit Service b23acc
		NMConnection *candidate = connections->pdata[i];
Packit Service b23acc
Packit Service b23acc
		if (nm_wifi_p2p_peer_connection_valid (peer, candidate))
Packit Service b23acc
			g_ptr_array_add (filtered, g_object_ref (candidate));
Packit Service b23acc
	}
Packit Service b23acc
Packit Service b23acc
	return filtered;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
get_property (GObject *object,
Packit Service b23acc
              guint prop_id,
Packit Service b23acc
              GValue *value,
Packit Service b23acc
              GParamSpec *pspec)
Packit Service b23acc
{
Packit Service b23acc
	NMWifiP2PPeer *peer = NM_WIFI_P2P_PEER (object);
Packit Service b23acc
Packit Service b23acc
	switch (prop_id) {
Packit Service b23acc
	case PROP_FLAGS:
Packit Service b23acc
		g_value_set_flags (value, nm_wifi_p2p_peer_get_flags (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_NAME:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_name (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_MANUFACTURER:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_manufacturer (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_MODEL:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_model (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_MODEL_NUMBER:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_model_number (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_SERIAL:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_serial (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_WFD_IES:
Packit Service b23acc
		g_value_set_boxed (value, nm_wifi_p2p_peer_get_wfd_ies (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_HW_ADDRESS:
Packit Service b23acc
		g_value_set_string (value, nm_wifi_p2p_peer_get_hw_address (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_STRENGTH:
Packit Service b23acc
		g_value_set_uchar (value, nm_wifi_p2p_peer_get_strength (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	case PROP_LAST_SEEN:
Packit Service b23acc
		g_value_set_int (value, nm_wifi_p2p_peer_get_last_seen (peer));
Packit Service b23acc
		break;
Packit Service b23acc
	default:
Packit Service b23acc
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
Packit Service b23acc
		break;
Packit Service b23acc
	}
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
/*****************************************************************************/
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
nm_wifi_p2p_peer_init (NMWifiP2PPeer *peer)
Packit Service b23acc
{
Packit Service b23acc
	NM_WIFI_P2P_PEER_GET_PRIVATE (peer)->last_seen = -1;
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
finalize (GObject *object)
Packit Service b23acc
{
Packit Service b23acc
	NMWifiP2PPeerPrivate *priv = NM_WIFI_P2P_PEER_GET_PRIVATE (object);
Packit Service b23acc
Packit Service b23acc
	g_free (priv->name);
Packit Service b23acc
	g_free (priv->manufacturer);
Packit Service b23acc
	g_free (priv->model);
Packit Service b23acc
	g_free (priv->model_number);
Packit Service b23acc
	g_free (priv->serial);
Packit Service b23acc
	g_free (priv->hw_address);
Packit Service b23acc
Packit Service b23acc
	g_bytes_unref (priv->wfd_ies);
Packit Service b23acc
Packit Service b23acc
	G_OBJECT_CLASS (nm_wifi_p2p_peer_parent_class)->finalize (object);
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
const NMLDBusMetaIface _nml_dbus_meta_iface_nm_wifip2ppeer = NML_DBUS_META_IFACE_INIT_PROP (
Packit Service b23acc
	NM_DBUS_INTERFACE_WIFI_P2P_PEER,
Packit Service b23acc
	nm_wifi_p2p_peer_get_type,
Packit Service b23acc
	NML_DBUS_META_INTERFACE_PRIO_INSTANTIATE_HIGH,
Packit Service b23acc
	NML_DBUS_META_IFACE_DBUS_PROPERTIES (
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_U      ("Flags",        PROP_FLAGS,        NMWifiP2PPeer, _priv.flags        ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_IGNORE ("Groups",       "as"                                                 ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("HwAddress",    PROP_HW_ADDRESS,   NMWifiP2PPeer, _priv.hw_address   ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_I      ("LastSeen",     PROP_LAST_SEEN,    NMWifiP2PPeer, _priv.last_seen    ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("Manufacturer", PROP_MANUFACTURER, NMWifiP2PPeer, _priv.manufacturer ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("Model",        PROP_MODEL,        NMWifiP2PPeer, _priv.model        ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("ModelNumber",  PROP_MODEL_NUMBER, NMWifiP2PPeer, _priv.model_number ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("Name",         PROP_NAME,         NMWifiP2PPeer, _priv.name         ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_S      ("Serial",       PROP_SERIAL,       NMWifiP2PPeer, _priv.serial       ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_Y      ("Strength",     PROP_STRENGTH,     NMWifiP2PPeer, _priv.strength     ),
Packit Service b23acc
		NML_DBUS_META_PROPERTY_INIT_AY     ("WfdIEs",       PROP_WFD_IES,      NMWifiP2PPeer, _priv.wfd_ies      ),
Packit Service b23acc
	),
Packit Service b23acc
);
Packit Service b23acc
Packit Service b23acc
static void
Packit Service b23acc
nm_wifi_p2p_peer_class_init (NMWifiP2PPeerClass *klass)
Packit Service b23acc
{
Packit Service b23acc
	GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit Service b23acc
Packit Service b23acc
	object_class->get_property = get_property;
Packit Service b23acc
	object_class->finalize     = finalize;
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:flags:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The flags of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_FLAGS] =
Packit Service b23acc
	    g_param_spec_flags (NM_WIFI_P2P_PEER_FLAGS, "", "",
Packit Service b23acc
	                        NM_TYPE_802_11_AP_FLAGS,
Packit Service b23acc
	                        NM_802_11_AP_FLAGS_NONE,
Packit Service b23acc
	                        G_PARAM_READABLE |
Packit Service b23acc
	                        G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:name:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The name of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_NAME] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_NAME, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:manufacturer:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The manufacturer of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_MANUFACTURER] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_MANUFACTURER, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:model:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The model of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_MODEL] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_MODEL, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:model-number:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The hardware address of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_MODEL_NUMBER] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_MODEL_NUMBER, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:serial:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The serial number of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_SERIAL] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_SERIAL, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:wfd-ies:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The WFD information elements of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_WFD_IES] =
Packit Service b23acc
	    g_param_spec_boxed (NM_WIFI_P2P_PEER_WFD_IES, "", "",
Packit Service b23acc
	                        G_TYPE_BYTES,
Packit Service b23acc
	                        G_PARAM_READABLE |
Packit Service b23acc
	                        G_PARAM_STATIC_STRINGS);
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:hw-address:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The hardware address of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_HW_ADDRESS] =
Packit Service b23acc
	    g_param_spec_string (NM_WIFI_P2P_PEER_HW_ADDRESS, "", "",
Packit Service b23acc
	                         NULL,
Packit Service b23acc
	                         G_PARAM_READABLE |
Packit Service b23acc
	                         G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:strength:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The current signal strength of the P2P peer.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_STRENGTH] =
Packit Service b23acc
	    g_param_spec_uchar (NM_WIFI_P2P_PEER_STRENGTH, "", "",
Packit Service b23acc
	                        0, G_MAXUINT8, 0,
Packit Service b23acc
	                        G_PARAM_READABLE |
Packit Service b23acc
	                        G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	/**
Packit Service b23acc
	 * NMWifiP2PPeer:last-seen:
Packit Service b23acc
	 *
Packit Service b23acc
	 * The timestamp (in CLOCK_BOOTTIME seconds) for the last time the
Packit Service b23acc
	 * P2P peer was found.  A value of -1 means the peer has never been seen.
Packit Service b23acc
	 *
Packit Service b23acc
	 * Since: 1.16
Packit Service b23acc
	 **/
Packit Service b23acc
	obj_properties[PROP_LAST_SEEN] =
Packit Service b23acc
	    g_param_spec_int (NM_WIFI_P2P_PEER_LAST_SEEN, "", "",
Packit Service b23acc
	                      -1, G_MAXINT, -1,
Packit Service b23acc
	                      G_PARAM_READABLE |
Packit Service b23acc
	                      G_PARAM_STATIC_STRINGS);
Packit Service b23acc
Packit Service b23acc
	_nml_dbus_meta_class_init_with_properties (object_class, &_nml_dbus_meta_iface_nm_wifip2ppeer);
Packit Service b23acc
}