From a51e0f01a2445438f0d4e438bb66ccffd9621480 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 16 Jul 2009 04:45:07 +0200 Subject: [PATCH] Add helper function for WiFi group name --- include/Makefile.am | 2 +- include/wifi.h | 38 ++++++++++++++++++++++++++++++++++++++ src/connman.h | 2 ++ src/wifi.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 include/wifi.h create mode 100644 src/wifi.c diff --git a/include/Makefile.am b/include/Makefile.am index 160ae60..53e991d 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -6,7 +6,7 @@ include_HEADERS = types.h log.h plugin.h security.h notifier.h \ nodist_include_HEADERS = version.h -noinst_HEADERS = driver.h element.h property.h rtnl.h dbus.h \ +noinst_HEADERS = driver.h element.h property.h rtnl.h wifi.h dbus.h \ rfkill.h resolver.h ipconfig.h service.h option.h MAINTAINERCLEANFILES = Makefile.in diff --git a/include/wifi.h b/include/wifi.h new file mode 100644 index 0000000..aa63f80 --- /dev/null +++ b/include/wifi.h @@ -0,0 +1,38 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __CONNMAN_WIFI_H +#define __CONNMAN_WIFI_H + +#ifdef __cplusplus +extern "C" { +#endif + +char *connman_wifi_build_group_name(const unsigned char *ssid, + unsigned int ssid_len, + const char *mode, + const char *security); + +#ifdef __cplusplus +} +#endif + +#endif /* __CONNMAN_WIFI_H */ diff --git a/src/connman.h b/src/connman.h index 9b68083..a688db2 100644 --- a/src/connman.h +++ b/src/connman.h @@ -105,6 +105,8 @@ int __connman_ipconfig_save(struct connman_ipconfig *ipconfig, enum connman_device_type __connman_inet_get_device_type(int index); +#include + #include int __connman_rfkill_init(void); diff --git a/src/wifi.c b/src/wifi.c new file mode 100644 index 0000000..72f2500 --- /dev/null +++ b/src/wifi.c @@ -0,0 +1,50 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#include "connman.h" + +char *connman_wifi_build_group_name(const unsigned char *ssid, + unsigned int ssid_len, + const char *mode, + const char *security) +{ + GString *str; + unsigned int i; + + str = g_string_sized_new((ssid_len * 2) + 24); + if (str == NULL) + return NULL; + + if (ssid_len > 0 && ssid[0] != '\0') { + for (i = 0; i < ssid_len; i++) + g_string_append_printf(str, "%02x", ssid[i]); + } + + g_string_append_printf(str, "_%s_%s", mode, security); + + return g_string_free(str, FALSE); +} -- 2.7.4