-/*
- * Network Configuration Module
- *
- * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Danny JS Seo <S.Seo@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "dbus.h"
-#include "log.h"
-#include "netconfig.h"
-
-#define NETCONFIG_DBUS_REPLY_TIMEOUT (10 * 1000)
-
-#define DBUS_PARAM_TYPE_STRING "string"
-#define DBUS_PARAM_TYPE_INT16 "int16"
-#define DBUS_PARAM_TYPE_UINT16 "uint16"
-#define DBUS_PARAM_TYPE_INT32 "int32"
-#define DBUS_PARAM_TYPE_UINT32 "uint32"
-#define DBUS_PARAM_TYPE_INT64 "int64"
-#define DBUS_PARAM_TYPE_UINT64 "uint64"
-#define DBUS_PARAM_TYPE_DOUBLE "double"
-#define DBUS_PARAM_TYPE_BYTE "byte"
-#define DBUS_PARAM_TYPE_BOOLEAN "boolean"
-#define DBUS_PARAM_TYPE_OBJECT_PATH "objpath"
-
-static int __neconfig_dbus_datatype_from_stringname(const char *Args)
-{
- int ArgType = 0;
-
- if (!strcmp(Args, DBUS_PARAM_TYPE_STRING))
- ArgType = DBUS_TYPE_STRING;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_INT16))
- ArgType = DBUS_TYPE_INT16;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_UINT16))
- ArgType = DBUS_TYPE_UINT16;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_INT32))
- ArgType = DBUS_TYPE_INT32;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_UINT32))
- ArgType = DBUS_TYPE_UINT32;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_INT64))
- ArgType = DBUS_TYPE_INT64;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_UINT64))
- ArgType = DBUS_TYPE_UINT64;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_DOUBLE))
- ArgType = DBUS_TYPE_DOUBLE;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_BYTE))
- ArgType = DBUS_TYPE_BYTE;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_BOOLEAN))
- ArgType = DBUS_TYPE_BOOLEAN;
- else if (!strcmp(Args, DBUS_PARAM_TYPE_OBJECT_PATH))
- ArgType = DBUS_TYPE_OBJECT_PATH;
- else {
- ERR("Error!!! Unknown Argument Type \"%s\"", Args);
-
- return -1;
- }
-
- return ArgType;
-}
-
-static int __netconfig_dbus_append_argument(DBusMessageIter *iter, int ArgType,
- const char *Value)
-{
- double Double = 0;
- unsigned char ByteValue = 0;
- dbus_bool_t booleanvalue = 0;
- dbus_uint16_t Uint16 = 0;
- dbus_int16_t Int16 = 0;
- dbus_uint32_t Uint32 = 0;
- dbus_int32_t Int32 = 0;
-
- switch (ArgType) {
- case DBUS_TYPE_BYTE:
- ByteValue = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BYTE, &ByteValue);
- break;
-
- case DBUS_TYPE_DOUBLE:
- Double = strtod(Value, NULL);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_DOUBLE, &Double);
- break;
-
- case DBUS_TYPE_INT16:
- Int16 = strtol(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_INT16, &Int16);
- break;
-
- case DBUS_TYPE_UINT16:
- Uint16 = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT16, &Uint16);
- break;
-
- case DBUS_TYPE_INT32:
- Int32 = strtol(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_INT32, &Int32);
- break;
-
- case DBUS_TYPE_UINT32:
- Uint32 = strtoul(Value, NULL, 0);
- dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &Uint32);
- break;
-
- case DBUS_TYPE_STRING:
- dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &Value);
- break;
-
- case DBUS_TYPE_OBJECT_PATH:
- dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &Value);
- break;
-
- case DBUS_TYPE_BOOLEAN:
- if (strcmp(Value, "true") == 0) {
- booleanvalue = TRUE;
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &booleanvalue);
- } else if (strcmp(Value, "false") == 0) {
- booleanvalue = FALSE;
- dbus_message_iter_append_basic(iter, DBUS_TYPE_BOOLEAN, &booleanvalue);
- } else {
- ERR("Error!!! Expected \"true\" or \"false\" instead of \"%s\"", Value);
-
- return -1;
- }
- break;
-
- default:
- ERR("Error!!! Unsupported data ArgType %c", (char)ArgType);
-
- return -1;
- }
-
- return 0;
-}
-
-static int __netconfig_dbus_append_array(DBusMessageIter *iter, int ArgType,
- const char *Value)
-{
- const char *Val = NULL;
- char *DupValue = strdup(Value);
- Val = strtok(DupValue, ",");
-
- while (Val != NULL) {
- if (__netconfig_dbus_append_argument(iter, ArgType, Val) != 0) {
- g_free(DupValue);
- DupValue = NULL;
-
- return -1;
- }
-
- Val = strtok(NULL, ",");
- }
-
- g_free(DupValue);
- DupValue = NULL;
- return 0;
-}
-
-static int __netconfig_dbus_append_dict(DBusMessageIter *iter, int KeyType,
- int ValueType, const char *Value)
-{
- const char *Val = NULL;
- char *DupValue = strdup(Value);
- Val = strtok(DupValue, ",");
-
- while (Val != NULL) {
- DBusMessageIter SubIter;
- dbus_message_iter_open_container(iter, DBUS_TYPE_DICT_ENTRY,
- NULL, &SubIter);
-
- if (__netconfig_dbus_append_argument(&SubIter, KeyType, Val) != 0) {
- ERR("Error!!! network_append_argument() failed");
- g_free(DupValue);
- DupValue = NULL;
- return -1;
- }
-
- Val = strtok(NULL, ",");
- if (Val == NULL) {
- ERR("Error!!! Mal-formed dictionary data");
- g_free(DupValue);
- DupValue = NULL;
- return -1;
- }
-
- if (__netconfig_dbus_append_argument(&SubIter, ValueType, Val) != 0) {
- ERR("Error!!! network_append_argument() failed");
- g_free(DupValue);
- DupValue = NULL;
- return -1;
- }
-
- dbus_message_iter_close_container(iter, &SubIter);
-
- Val = strtok(NULL, ",");
- }
-
- g_free(DupValue);
- DupValue = NULL;
- return 0;
-}
-
-char *netconfig_dbus_get_string(DBusMessage * msg)
-{
- DBusMessageIter args;
- char *sigvalue = NULL;
-
- /** read these parameters */
- if (!dbus_message_iter_init(msg, &args))
- DBG("Message does not have parameters");
- else if (DBUS_TYPE_STRING != dbus_message_iter_get_arg_type(&args))
- DBG("Argument is not string");
- else
- dbus_message_iter_get_basic(&args, &sigvalue);
-
- return sigvalue;
-}
-
-DBusMessage *netconfig_dbus_send_request(const char *destination, char *param_array[])
-{
- DBusConnection *connection = NULL;
- DBusError error;
- DBusMessage *message = NULL;
- char *RequestMethod = NULL;
- int i = 0;
- const char *path = NULL;
- const char *name = NULL;
- int param_count = 0;
- DBusMessageIter iter;
- DBusMessage *reply = NULL;
-
- DBG("Send DBus request to %s", destination);
-
- for (param_count = 0; param_array[param_count] != NULL;
- param_count++)
- DBG("[%s]", param_array[param_count]);
-
- DBG("Total Arguments [%d]", param_count);
- path = param_array[i++];
-
- /** 0th is path */
- name = param_array[i++];/** 1st is request name */
- if ((strlen(path) == 0) || (strlen(name) == 0)) {
- ERR("Error!!! Invalid parameters passed path [%s], request name [%s]",
- path, name);
-
- goto end_error;
- }
-
- dbus_error_init(&error);
-
- connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
- ERR("Error!!! Failed to get system DBus, error [%s]",
- error.message);
- dbus_error_free(&error);
-
- goto end_error;
- }
-
- RequestMethod = strrchr(name, '.');
- if (RequestMethod == NULL) {
- ERR("Error!!! Invalid method in \"%s\"", name);
-
- goto end_error;
- }
-
- *RequestMethod = '\0';
- message = dbus_message_new_method_call(NULL, path, name,
- RequestMethod + 1);
- if (message == NULL) {
- ERR("Error!!! dbus_message_new_method_call() failed");
-
- goto end_error;
- }
-
- if (destination && !dbus_message_set_destination(message, destination)) {
- ERR("Error!!! dbus_message_set_destination() failed");
-
- goto end_error;
- }
-
- dbus_message_iter_init_append(message, &iter);
-
- /** Two args name and path already extracted, so i == 2 */
- while (i < param_count) {
- char *Args = NULL;
- char *Ch = NULL;
- int ArgType = 0;
- int SecondaryType = 0;
- int ContainerType = 0;
- DBusMessageIter *TargetIter = NULL;
- DBusMessageIter ContainerIter;
- ArgType = DBUS_TYPE_INVALID;
-
- Args = param_array[i++];
- Ch = strchr(Args, ':');
- if (Ch == NULL) {
- ERR("Error!!! Invalid data format[\"%s\"]", Args);
-
- goto end_error;
- }
-
- *(Ch++) = 0;
- if (strcmp(Args, "variant") == 0)
- ContainerType = DBUS_TYPE_VARIANT;
- else if (strcmp(Args, "array") == 0)
- ContainerType = DBUS_TYPE_ARRAY;
- else if (strcmp(Args, "dict") == 0)
- ContainerType = DBUS_TYPE_DICT_ENTRY;
- else
- ContainerType = DBUS_TYPE_INVALID;
-
- if (ContainerType != DBUS_TYPE_INVALID) {
- Args = Ch;
- Ch = strchr(Args, ':');
- if (Ch == NULL) {
- ERR("Error!!! Invalid data format[\"%s\"]", Args);
-
- goto end_error;
- }
-
- *(Ch++) = 0;
- }
-
- if (Args[0] == 0)
- ArgType = DBUS_TYPE_STRING;
- else {
- ArgType = __neconfig_dbus_datatype_from_stringname(Args);
-
- if (ArgType == -1) {
- ERR("Error!!! Unknown data type");
-
- goto end_error;
- }
- }
-
- if (ContainerType == DBUS_TYPE_DICT_ENTRY) {
- char Signature[5] = "";
- Args = Ch;
- Ch = strchr(Ch, ':');
- if (Ch == NULL) {
- ERR("Error!!! Invalid data format[\"%s\"]", Args);
-
- goto end_error;
- }
-
- *(Ch++) = 0;
- SecondaryType = __neconfig_dbus_datatype_from_stringname(Args);
- if (SecondaryType == -1) {
- ERR("Error!!! Unknown data type");
-
- goto end_error;
- }
-
- Signature[0] = DBUS_DICT_ENTRY_BEGIN_CHAR;
- Signature[1] = ArgType;
- Signature[2] = SecondaryType;
- Signature[3] = DBUS_DICT_ENTRY_END_CHAR;
- Signature[4] = '\0';
-
- dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY,
- Signature, &ContainerIter);
-
- TargetIter = &ContainerIter;
- } else if (ContainerType != DBUS_TYPE_INVALID) {
- char Signature[2] = "";
- Signature[0] = ArgType;
- Signature[1] = '\0';
-
- dbus_message_iter_open_container(&iter, ContainerType,
- Signature, &ContainerIter);
-
- TargetIter = &ContainerIter;
- } else
- TargetIter = &iter;
-
- if (ContainerType == DBUS_TYPE_ARRAY) {
- if (__netconfig_dbus_append_array(TargetIter, ArgType, Ch) != 0) {
- ERR("Error!!! network_append_array() failed");
-
- goto end_error;
- }
- } else if (ContainerType == DBUS_TYPE_DICT_ENTRY) {
- if (__netconfig_dbus_append_dict(TargetIter, ArgType, SecondaryType, Ch) != 0) {
- ERR("Error!!! network_append_dict() failed");
-
- goto end_error;
- }
- } else {
- if (__netconfig_dbus_append_argument(TargetIter, ArgType, Ch) != 0) {
- ERR("Error!!! network_append_array() failed");
-
- goto end_error;
- }
- }
-
- if (ContainerType != DBUS_TYPE_INVALID) {
- dbus_message_iter_close_container(&iter, &ContainerIter);
- }
- }
-
- dbus_error_init(&error);
-
- reply = dbus_connection_send_with_reply_and_block(connection, message,
- NETCONFIG_DBUS_REPLY_TIMEOUT, &error);
-
- if (reply == NULL) {
- if (dbus_error_is_set(&error) == TRUE) {
- ERR("Error!!! dbus_connection_send_with_reply_and_block() failed, Error[%s: %s]",
- error.name, error.message);
-
- dbus_error_free(&error);
-
- goto end_error;
- }
- }
-
- dbus_message_unref(message);
- dbus_connection_unref(connection);
-
- return reply;
-
-end_error:
-
- if (message != NULL)
- dbus_message_unref(message);
- if (connection != NULL)
- dbus_connection_unref(connection);
-
- return NULL;
-}
-
-DBusMessage *netconfig_invoke_dbus_method(const char *dest, DBusConnection *connection,
- const char *path, const char *interface_name, const char *method)
-{
- DBusError error;
- DBusMessage *reply = NULL;
- DBusMessage *message = NULL;
-
- message = dbus_message_new_method_call(dest, path, interface_name, method);
- if (message == NULL) {
- ERR("Error!!! Failed to GetProperties");
- return NULL;
- }
-
- dbus_error_init(&error);
-
- reply = dbus_connection_send_with_reply_and_block(connection, message,
- NETCONFIG_DBUS_REPLY_TIMEOUT, &error);
-
- if (reply == NULL) {
- if (dbus_error_is_set(&error) == TRUE) {
- ERR("Error!!! dbus_connection_send_with_reply_and_block() failed. DBus error [%s: %s]",
- error.name, error.message);
-
- dbus_error_free(&error);
- } else
- ERR("Error!!! Failed to get properties");
-
- dbus_message_unref(message);
-
- return NULL;
- }
-
- dbus_message_unref(message);
-
- return reply;
-}
-
-void setup_dbus(gpointer data, gpointer user_data)
-{
- struct dbus_input_arguments *args;
- DBusMessageIter *iter;
-
- if (data != NULL && user_data != NULL) {
- args = (struct dbus_input_arguments *)data;
- iter = (DBusMessageIter *) user_data;
-
- dbus_message_iter_append_basic(iter, args->type,
- &(args->data));
- }
-}
-
-DBusMessage *netconfig_supplicant_invoke_dbus_method(const char *dest,
- DBusConnection *connection,
- const char *path, const char *interface_name,
- const char *method, GList *args)
-{
- DBusError error;
- DBusMessageIter iter;
- DBusMessage *reply = NULL;
- DBusMessage *message = NULL;
-
- message = dbus_message_new_method_call(dest, path, interface_name, method);
- if (message == NULL) {
- ERR("Error!!! DBus method call fail");
- return NULL;
- }
-
- dbus_message_iter_init_append(message, &iter);
-
- if (args != NULL)
- g_list_foreach(args, setup_dbus, (gpointer) &iter);
-
- dbus_error_init(&error);
-
- reply = dbus_connection_send_with_reply_and_block(connection, message,
- NETCONFIG_DBUS_REPLY_TIMEOUT, &error);
-
- if (reply == NULL) {
- if (dbus_error_is_set(&error) == TRUE) {
- ERR("Error!!! dbus_connection_send_with_reply_and_block() failed. DBus error [%s: %s]",
- error.name, error.message);
-
- dbus_error_free(&error);
- } else
- ERR("Error!!! Failed to get properties");
-
- dbus_message_unref(message);
-
- return NULL;
- }
-
- dbus_message_unref(message);
-
- return reply;
-}
-
-char *netconfig_wifi_get_connected_service_name(DBusMessage *message)
-{
- int is_connected = 0;
- char *essid_name = NULL;
- DBusMessageIter iter, array;
-
- dbus_message_iter_init(message, &iter);
- dbus_message_iter_recurse(&iter, &array);
-
- while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_DICT_ENTRY) {
- DBusMessageIter entry, string;
- const char *key = NULL;
-
- dbus_message_iter_recurse(&array, &entry);
- dbus_message_iter_get_basic(&entry, &key);
-
- if (g_str_equal(key, "State") == TRUE && is_connected == 0) {
- dbus_message_iter_next(&entry);
- dbus_message_iter_recurse(&entry, &string);
-
- if (dbus_message_iter_get_arg_type(&string) == DBUS_TYPE_STRING) {
- dbus_message_iter_get_basic(&string, &key);
-
- if (g_str_equal(key, "ready") == TRUE || g_str_equal(key, "online") == TRUE)
- is_connected = 1;
- }
- } else if (g_str_equal(key, "Name") == TRUE) {
- dbus_message_iter_next(&entry);
- dbus_message_iter_recurse(&entry, &string);
-
- if (dbus_message_iter_get_arg_type(&string) == DBUS_TYPE_STRING) {
- dbus_message_iter_get_basic(&string, &key);
-
- essid_name = (char *)g_strdup(key);
- }
- }
-
- dbus_message_iter_next(&array);
- }
-
- if (is_connected == 1 && essid_name != NULL)
- return essid_name;
-
- if (essid_name != NULL)
- g_free(essid_name);
-
- return NULL;
-}
-
-void netconfig_dbus_parse_recursive(DBusMessageIter *iter,
- netconfig_dbus_result_type result_type, void *data)
-{
- unsigned char *bgscan_mode = NULL;
- static dbus_bool_t default_tech_flag = FALSE;
- char *default_tech = NULL;
-
- if (result_type == NETCONFIG_DBUS_RESULT_GET_BGSCAN_MODE)
- bgscan_mode = (unsigned char *)data;
- else if (result_type == NETCONFIG_DBUS_RESULT_DEFAULT_TECHNOLOGY)
- default_tech = (char *)data;
-
- do {
- int ArgType = dbus_message_iter_get_arg_type(iter);
-
- if (ArgType == DBUS_TYPE_INVALID)
- break;
-
- switch (ArgType) {
- case DBUS_TYPE_BYTE:
- {
- unsigned char Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
-
- *bgscan_mode = Value;
- INFO("BG scan mode: %d, %d", *bgscan_mode, Value);
- break;
- }
-
- case DBUS_TYPE_STRING:
- {
- char *Value = NULL;
-
- dbus_message_iter_get_basic(iter, &Value);
-
- INFO("result type: %d, string: %s", result_type, Value);
- if (result_type == NETCONFIG_DBUS_RESULT_DEFAULT_TECHNOLOGY) {
- if (strcmp(Value, "DefaultTechnology") == 0) {
- default_tech_flag = TRUE;
- } else {
- if (default_tech_flag == TRUE) {
- sprintf(default_tech, "%s", Value);
- INFO("default technology: %s", default_tech);
- default_tech_flag = FALSE;
- }
- }
- }
- break;
- }
-
- case DBUS_TYPE_SIGNATURE:
- {
- char *Value = NULL;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_OBJECT_PATH:
- {
- char *Value = NULL;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_INT16:
- {
- dbus_int16_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_UINT16:
- {
- dbus_uint16_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_INT32:
- {
- dbus_int32_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_UINT32:
- {
- dbus_uint32_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_INT64:
- {
- dbus_int64_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_UINT64:
- {
- dbus_uint64_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_DOUBLE:
- {
- double Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_BOOLEAN:
- {
- dbus_bool_t Value = 0;
-
- dbus_message_iter_get_basic(iter, &Value);
- break;
- }
-
- case DBUS_TYPE_VARIANT:
- {
- DBusMessageIter SubIter;
-
- dbus_message_iter_recurse(iter, &SubIter);
- netconfig_dbus_parse_recursive(&SubIter,
- result_type, data);
- break;
- }
-
- case DBUS_TYPE_ARRAY:
- {
- int CurrentType = 0;
- DBusMessageIter SubIter;
-
- dbus_message_iter_recurse(iter, &SubIter);
- CurrentType = dbus_message_iter_get_arg_type(&SubIter);
-
- while (CurrentType != DBUS_TYPE_INVALID) {
- netconfig_dbus_parse_recursive(&SubIter,
- result_type, data);
-
- dbus_message_iter_next(&SubIter);
- CurrentType = dbus_message_iter_get_arg_type(&SubIter);
- }
- break;
- }
-
- case DBUS_TYPE_DICT_ENTRY:
- {
- DBusMessageIter SubIter;
-
- dbus_message_iter_recurse(iter, &SubIter);
- netconfig_dbus_parse_recursive(&SubIter, result_type, data);
-
- dbus_message_iter_next(&SubIter);
- netconfig_dbus_parse_recursive(&SubIter, result_type, data);
- break;
- }
-
- case DBUS_TYPE_STRUCT:
- {
- int CurrentType = 0;
- DBusMessageIter SubIter;
-
- dbus_message_iter_recurse(iter, &SubIter);
-
- while ((CurrentType = dbus_message_iter_get_arg_type(&SubIter))
- != DBUS_TYPE_INVALID) {
- netconfig_dbus_parse_recursive(&SubIter, result_type, data);
-
- dbus_message_iter_next(&SubIter);
- }
- break;
- }
-
- default:
- ERR("Error!!! Invalid Argument Type [%c]", ArgType);
- }
- } while (dbus_message_iter_next(iter));
-}
-
-DBusGConnection *netconfig_setup_dbus(void)
-{
- DBusGConnection* connection = NULL;
- GError *error = NULL;
- DBusGProxy *proxy;
- guint rv = 0;
-
- connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error);
- if (connection == NULL) {
- ERR("Fail to get DBus(%s)", error->message);
- return connection;
- }
-
- INFO("Successfully get system DBus connection(%p)", connection);
-
- proxy = dbus_g_proxy_new_for_name(connection, "org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus");
-
- if (!dbus_g_proxy_call(proxy, "RequestName", &error,
- G_TYPE_STRING, NETCONFIG_SERVICE, G_TYPE_UINT, 0,
- G_TYPE_INVALID, G_TYPE_UINT, &rv,
- G_TYPE_INVALID)) {
- ERR("Failed to acquire service(%s) error(%s)",
- NETCONFIG_SERVICE, error->message);
-
- dbus_g_connection_unref(connection);
-
- return NULL;
- }
-
- if (rv != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) {
- ERR("Service name is already in use");
-
- dbus_g_connection_unref(connection);
-
- return NULL;
- }
-
- return connection;
-}