diff options
Diffstat (limited to 'src/NetworkManagerAP.c')
-rw-r--r-- | src/NetworkManagerAP.c | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/src/NetworkManagerAP.c b/src/NetworkManagerAP.c new file mode 100644 index 0000000000..ef4b7224a6 --- /dev/null +++ b/src/NetworkManagerAP.c @@ -0,0 +1,289 @@ +/* NetworkManager -- Network link manager + * + * Dan Williams <dcbw@redhat.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * (C) Copyright 2004 Red Hat, Inc. + */ + +#include "NetworkManagerAP.h" +#include "NetworkManagerUtils.h" + +extern gboolean debug; + + +/* + * Encapsulates Access Point information + */ +struct NMAccessPoint +{ + guint refcount; + gchar *essid; + gchar *address; + guint8 quality; + double freq; + guint16 rate; + time_t stamp; + + /* Things from user prefs */ + gchar *wep_key; + guint priority; +}; + + +/* + * nm_ap_new + * + * Create a new, blank user access point info structure + * + */ +NMAccessPoint * nm_ap_new (void) +{ + NMAccessPoint *ap; + + ap = g_new0 (NMAccessPoint, 1); + if (!ap) + NM_DEBUG_PRINT( "nm_ap_new() could not allocate a new user access point info structure. Not enough memory?" ); + + ap->priority = NM_AP_PRIORITY_WORST; + ap->refcount = 1; + + return (ap); +} + + +/* + * nm_ap_new_from_ap + * + * Create a new user access point info structure, duplicating an existing one + * + */ +NMAccessPoint * nm_ap_new_from_ap (NMAccessPoint *src_ap) +{ + NMAccessPoint *new_ap; + + g_return_val_if_fail (src_ap != NULL, NULL); + + new_ap = nm_ap_new(); + if (!new_ap) + NM_DEBUG_PRINT( "nm_ap_new_from_uap() could not allocate a new user access point info structure. Not enough memory?" ); + + new_ap->refcount = 1; + + if (src_ap->essid && (strlen (src_ap->essid) > 0)) + new_ap->essid = g_strdup (src_ap->essid); + if (src_ap->address && (strlen (src_ap->address) > 0)) + new_ap->address = g_strdup (src_ap->address); + new_ap->quality = src_ap->quality; + new_ap->freq = src_ap->freq; + new_ap->rate = src_ap->rate; + + if (src_ap->wep_key && (strlen (src_ap->wep_key) > 0)) + new_ap->wep_key = g_strdup (src_ap->wep_key); + new_ap->priority = src_ap->priority; + + return (new_ap); +} + + +/* + * AP refcounting functions + */ +void nm_ap_ref (NMAccessPoint *ap) +{ + g_return_if_fail (ap != NULL); + + ap->refcount++; +} + +void nm_ap_unref (NMAccessPoint *ap) +{ + g_return_if_fail (ap != NULL); + + ap->refcount--; + if (ap->refcount == 0) + { + g_free (ap->essid); + g_free (ap->address); + g_free (ap->wep_key); + + ap->essid = NULL; + ap->wep_key = NULL; + + g_free (ap); + } +} + + +/* + * Get/set functions for priority + * + */ +guint nm_ap_get_priority (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, 0); + + return (ap->priority); +} + +void nm_ap_set_priority (NMAccessPoint *ap, guint priority) +{ + g_return_if_fail (ap != NULL); + + ap->priority = priority; +} + + +/* + * Get/set functions for essid + * + */ +gchar * nm_ap_get_essid (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, NULL); + + return (ap->essid); +} + +void nm_ap_set_essid (NMAccessPoint *ap, gchar * essid) +{ + g_return_if_fail (ap != NULL); + + if (ap->essid) + g_free (ap->essid); + + ap->essid = g_strdup (essid); +} + + +/* + * Get/set functions for WEP key + * + */ +gchar * nm_ap_get_wep_key (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, NULL); + + return (ap->wep_key); +} + +void nm_ap_set_wep_key (NMAccessPoint *ap, gchar * wep_key) +{ + g_return_if_fail (ap != NULL); + + if (ap->wep_key) + g_free (ap->wep_key); + + ap->wep_key = g_strdup (wep_key); +} + + +/* + * Get/set functions for address + * + */ +gchar * nm_ap_get_address (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, NULL); + + return (ap->address); +} + +void nm_ap_set_address (NMAccessPoint *ap, gchar * address) +{ + g_return_if_fail (ap != NULL); + + if (ap->address) + g_free (ap->address); + + ap->address = g_strdup (address); +} + + +/* + * Get/set functions for quality + * + */ +guint8 nm_ap_get_quality (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, 0); + + return (ap->quality); +} + +void nm_ap_set_quality (NMAccessPoint *ap, guint8 quality) +{ + g_return_if_fail (ap != NULL); + + ap->quality = quality; +} + + +/* + * Get/set functions for frequency + * + */ +double nm_ap_get_freq (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, 0); + + return (ap->freq); +} + +void nm_ap_set_freq (NMAccessPoint *ap, double freq) +{ + g_return_if_fail (ap != NULL); + + ap->freq = freq; +} + + +/* + * Get/set functions for rate + * + */ +guint16 nm_ap_get_rate (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, 0); + + return (ap->rate); +} + +void nm_ap_set_rate (NMAccessPoint *ap, guint16 rate) +{ + g_return_if_fail (ap != NULL); + + ap->rate = rate; +} + + +/* + * Get/set functions for timestamp + * + */ +time_t nm_ap_get_stamp (NMAccessPoint *ap) +{ + g_return_val_if_fail (ap != NULL, 0); + + return (ap->stamp); +} + +void nm_ap_set_stamp (NMAccessPoint *ap, time_t stamp) +{ + g_return_if_fail (ap != NULL); + + ap->stamp = stamp; +} |