summaryrefslogtreecommitdiff
path: root/libnm-util
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2014-02-25 09:52:28 +0100
committerJiří Klimeš <jklimes@redhat.com>2014-02-28 10:39:09 +0100
commitde646d95887fccfd3bfc8e4bc9c85a99c50f55dc (patch)
tree7ad149b9495a505aed6dacb93834e577f4ec8011 /libnm-util
parentca0aa8139c9fda6b8cd8d3ce67da3adb11d8c189 (diff)
downloadNetworkManager-de646d95887fccfd3bfc8e4bc9c85a99c50f55dc.tar.gz
libnm-util: add *_remove_*_by_value() functions for '802-11-wireless' setting
nm_setting_wired_remove_mac_blacklist_item_by_value() Also add missing function nm_setting_wired_clear_mac_blacklist_items() and notify about mac-address-blacklist changes.
Diffstat (limited to 'libnm-util')
-rw-r--r--libnm-util/libnm-util.ver2
-rw-r--r--libnm-util/nm-setting-wireless.c58
-rw-r--r--libnm-util/nm-setting-wireless.h7
3 files changed, 65 insertions, 2 deletions
diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver
index e45dbd8c80..f437415c7b 100644
--- a/libnm-util/libnm-util.ver
+++ b/libnm-util/libnm-util.ver
@@ -539,6 +539,7 @@ global:
nm_setting_wireless_add_mac_blacklist_item;
nm_setting_wireless_add_seen_bssid;
nm_setting_wireless_ap_security_compatible;
+ nm_setting_wireless_clear_mac_blacklist_items;
nm_setting_wireless_error_get_type;
nm_setting_wireless_error_quark;
nm_setting_wireless_get_band;
@@ -561,6 +562,7 @@ global:
nm_setting_wireless_get_type;
nm_setting_wireless_new;
nm_setting_wireless_remove_mac_blacklist_item;
+ nm_setting_wireless_remove_mac_blacklist_item_by_value;
nm_setting_wireless_security_add_group;
nm_setting_wireless_security_add_pairwise;
nm_setting_wireless_security_add_proto;
diff --git a/libnm-util/nm-setting-wireless.c b/libnm-util/nm-setting-wireless.c
index e467662977..8c3ea07cc8 100644
--- a/libnm-util/nm-setting-wireless.c
+++ b/libnm-util/nm-setting-wireless.c
@@ -19,7 +19,7 @@
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
- * (C) Copyright 2007 - 2013 Red Hat, Inc.
+ * (C) Copyright 2007 - 2014 Red Hat, Inc.
* (C) Copyright 2007 - 2008 Novell, Inc.
*/
@@ -533,6 +533,7 @@ nm_setting_wireless_add_mac_blacklist_item (NMSettingWireless *setting, const ch
priv->mac_address_blacklist = g_slist_append (priv->mac_address_blacklist,
g_ascii_strup (mac, -1));
+ g_object_notify (G_OBJECT (setting), NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST);
return TRUE;
}
@@ -559,6 +560,61 @@ nm_setting_wireless_remove_mac_blacklist_item (NMSettingWireless *setting, guint
g_free (elt->data);
priv->mac_address_blacklist = g_slist_delete_link (priv->mac_address_blacklist, elt);
+ g_object_notify (G_OBJECT (setting), NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST);
+}
+
+/**
+ * nm_setting_wireless_remove_mac_blacklist_item_by_value:
+ * @setting: the #NMSettingWireless
+ * @mac: the MAC address string (hex-digits-and-colons notation) to remove from
+ * the blacklist
+ *
+ * Removes the MAC address @mac from the blacklist.
+ *
+ * Returns: %TRUE if the MAC address was found and removed; %FALSE if it was not.
+ *
+ * Since: 0.9.10
+ **/
+gboolean
+nm_setting_wireless_remove_mac_blacklist_item_by_value (NMSettingWireless *setting, const char *mac)
+{
+ NMSettingWirelessPrivate *priv;
+ GSList *iter;
+ guint8 buf[32];
+
+ g_return_val_if_fail (NM_IS_SETTING_WIRELESS (setting), FALSE);
+ g_return_val_if_fail (mac != NULL, FALSE);
+
+ if (!nm_utils_hwaddr_aton (mac, ARPHRD_ETHER, buf))
+ return FALSE;
+
+ priv = NM_SETTING_WIRELESS_GET_PRIVATE (setting);
+ for (iter = priv->mac_address_blacklist; iter; iter = g_slist_next (iter)) {
+ if (!strcasecmp (mac, (char *) iter->data)) {
+ priv->mac_address_blacklist = g_slist_delete_link (priv->mac_address_blacklist, iter);
+ g_object_notify (G_OBJECT (setting), NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/**
+ * nm_setting_wireless_clear_mac_blacklist_items:
+ * @setting: the #NMSettingWireless
+ *
+ * Removes all blacklisted MAC addresses.
+ *
+ * Since: 0.9.10
+ **/
+void
+nm_setting_wireless_clear_mac_blacklist_items (NMSettingWireless *setting)
+{
+ g_return_if_fail (NM_IS_SETTING_WIRELESS (setting));
+
+ g_slist_free_full (NM_SETTING_WIRELESS_GET_PRIVATE (setting)->mac_address_blacklist, g_free);
+ NM_SETTING_WIRELESS_GET_PRIVATE (setting)->mac_address_blacklist = NULL;
+ g_object_notify (G_OBJECT (setting), NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST);
}
/**
diff --git a/libnm-util/nm-setting-wireless.h b/libnm-util/nm-setting-wireless.h
index 6ad82f6e4b..221a921a34 100644
--- a/libnm-util/nm-setting-wireless.h
+++ b/libnm-util/nm-setting-wireless.h
@@ -19,7 +19,7 @@
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA.
*
- * (C) Copyright 2007 - 2011 Red Hat, Inc.
+ * (C) Copyright 2007 - 2014 Red Hat, Inc.
* (C) Copyright 2007 - 2008 Novell, Inc.
*/
@@ -145,6 +145,11 @@ gboolean nm_setting_wireless_add_mac_blacklist_item (NMSettingWire
NM_AVAILABLE_IN_0_9_10
void nm_setting_wireless_remove_mac_blacklist_item (NMSettingWireless *setting,
guint32 idx);
+NM_AVAILABLE_IN_0_9_10
+gboolean nm_setting_wireless_remove_mac_blacklist_item_by_value (NMSettingWireless *setting,
+ const char *mac);
+NM_AVAILABLE_IN_0_9_10
+void nm_setting_wireless_clear_mac_blacklist_items (NMSettingWireless *setting);
guint32 nm_setting_wireless_get_mtu (NMSettingWireless *setting);
gboolean nm_setting_wireless_get_hidden (NMSettingWireless *setting);