diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2012-11-30 11:30:38 +0200 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2012-11-30 15:01:18 +0200 |
commit | a77919a94541af7094eed38d7245583caf6e6ccf (patch) | |
tree | b5b8714004744712c0b74741b1f14bce3d13e896 /vpn/vpn-agent.c | |
parent | 75ee7a107b39753510bdf4692fd32d4754e9746f (diff) | |
download | connman-a77919a94541af7094eed38d7245583caf6e6ccf.tar.gz connman-a77919a94541af7094eed38d7245583caf6e6ccf.tar.bz2 connman-a77919a94541af7094eed38d7245583caf6e6ccf.zip |
vpn-agent: Add generic functions to add information into agent dict
Diffstat (limited to 'vpn/vpn-agent.c')
-rw-r--r-- | vpn/vpn-agent.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/vpn/vpn-agent.c b/vpn/vpn-agent.c new file mode 100644 index 00000000..0281764d --- /dev/null +++ b/vpn/vpn-agent.c @@ -0,0 +1,100 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2012 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 <config.h> +#endif + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include <gdbus.h> +#include <connman/log.h> +#include <connman/agent.h> +#include <vpn/vpn-provider.h> + +#include "vpn-agent.h" +#include "vpn.h" + +connman_bool_t vpn_agent_check_reply_has_dict(DBusMessage *reply) +{ + const char *signature = DBUS_TYPE_ARRAY_AS_STRING + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING + DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING; + + if (dbus_message_has_signature(reply, signature) == TRUE) + return TRUE; + + connman_warn("Reply %s to %s from %s has wrong signature %s", + signature, + dbus_message_get_interface(reply), + dbus_message_get_sender(reply), + dbus_message_get_signature(reply)); + + return FALSE; +} + +static void request_input_append_name(DBusMessageIter *iter, void *user_data) +{ + struct vpn_provider *provider = user_data; + const char *str = "string"; + + connman_dbus_dict_append_basic(iter, "Type", + DBUS_TYPE_STRING, &str); + str = "informational"; + connman_dbus_dict_append_basic(iter, "Requirement", + DBUS_TYPE_STRING, &str); + + str = vpn_provider_get_name(provider); + connman_dbus_dict_append_basic(iter, "Value", + DBUS_TYPE_STRING, &str); +} + +static void request_input_append_host(DBusMessageIter *iter, void *user_data) +{ + struct vpn_provider *provider = user_data; + const char *str = "string"; + + connman_dbus_dict_append_basic(iter, "Type", + DBUS_TYPE_STRING, &str); + str = "informational"; + connman_dbus_dict_append_basic(iter, "Requirement", + DBUS_TYPE_STRING, &str); + + str = vpn_provider_get_host(provider); + connman_dbus_dict_append_basic(iter, "Value", + DBUS_TYPE_STRING, &str); +} + +void vpn_agent_append_host_and_name(DBusMessageIter *iter, + struct vpn_provider *provider) +{ + connman_dbus_dict_append_dict(iter, "Host", + request_input_append_host, + provider); + + connman_dbus_dict_append_dict(iter, "Name", + request_input_append_name, + provider); +} |