/** * 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; }
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; }
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; }