2 * Network Configuration - VPN Service Module
4 * Copyright (c) 2015 Samsung Electronics Co., Ltd. All rights reserved.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
23 #include <gio/gunixfdlist.h>
26 #include "mptcp-internal.h"
30 static Mptcp *mptcp_object = NULL;
32 Mptcp *get_mptcp_object(void)
37 /*********************
40 gboolean handle_mptcp_supported(Mptcp *object, GDBusMethodInvocation *invocation)
42 DBG("handle_mptcp_supported");
45 value = mptcp_supported();
47 mptcp_complete_mptcp_supported(object, invocation, value);
51 gboolean handle_mptcp_set_enable(Mptcp *object, GDBusMethodInvocation *invocation, gint enable)
53 DBG("handle_mptcp_set_enable");
55 if (mptcp_set_enable(enable) == FALSE) {
56 ERR("Fail to set mptcp_enabled[%d]", enable);
60 mptcp_complete_mptcp_set_enable(object, invocation);
64 gboolean handle_mptcp_get_enabled(Mptcp *object, GDBusMethodInvocation *invocation)
66 DBG("handle_mptcp_get_enabled");
69 value = mptcp_get_enabled();
70 if (value != 0 && value != 1 && value != 2) {
71 ERR("Invalid value of mptcp_enabled[%d]", value);
75 mptcp_complete_mptcp_get_enabled(object, invocation, value);
79 gboolean handle_mptcp_set_path_manager(Mptcp *object, GDBusMethodInvocation *invocation, const gchar *pm)
81 DBG("handle_mptcp_set_path_manager %s", pm);
83 if (mptcp_set_path_manager(pm) == FALSE) {
84 ERR("Fail to set mptcp_path_manager[%d]", pm);
88 mptcp_complete_mptcp_set_path_manager(object, invocation);
92 gboolean handle_mptcp_get_path_manager(Mptcp *object, GDBusMethodInvocation *invocation)
94 DBG("handle_mptcp_get_path_manager");
97 pm = mptcp_get_path_manager();
99 ERR("Fail to get mptcp_path_manager");
103 DBG("get path manager %s", pm);
104 mptcp_complete_mptcp_get_path_manager(object, invocation, pm);
110 gboolean handle_mptcp_set_scheduler(Mptcp *object, GDBusMethodInvocation *invocation, const gchar *scheduler)
112 DBG("handle_mptcp_set_scheduler");
114 if (mptcp_mptcp_set_scheduler(scheduler) == FALSE) {
115 ERR("Fail to set mptcp_scheduler[%s]", scheduler);
119 mptcp_complete_mptcp_set_scheduler(object, invocation);
123 gboolean handle_mptcp_get_scheduler(Mptcp *object, GDBusMethodInvocation *invocation)
125 DBG("handle_mptcp_get_scheduler");
128 scheduler = mptcp_get_scheduler();
129 if (scheduler == NULL) {
130 ERR("Fail to get mptcp_scheduler");
134 DBG("get scheduler %s", scheduler);
135 mptcp_complete_mptcp_get_scheduler(object, invocation, scheduler);
142 /*****************************
143 * Initializations Functions *
144 ****************************/
145 void mptcp_object_create_and_init(void)
147 DBG("Create mptcp object.");
148 GDBusInterfaceSkeleton *interface_mptcp = NULL;
149 GDBusConnection *connection = NULL;
150 GDBusObjectManagerServer *server = netdbus_get_mptcp_manager();
154 connection = netdbus_get_connection();
155 g_dbus_object_manager_server_set_connection(server, connection);
158 mptcp_object = mptcp_skeleton_new();
159 interface_mptcp = G_DBUS_INTERFACE_SKELETON(mptcp_object);
162 g_signal_connect(mptcp_object, "handle-mptcp-supported",
163 G_CALLBACK(handle_mptcp_supported), NULL);
164 g_signal_connect(mptcp_object, "handle-mptcp-set-enable",
165 G_CALLBACK(handle_mptcp_set_enable), NULL);
166 g_signal_connect(mptcp_object, "handle-mptcp-get-enabled",
167 G_CALLBACK(handle_mptcp_get_enabled), NULL);
168 g_signal_connect(mptcp_object, "handle-mptcp-set-path-manager",
169 G_CALLBACK(handle_mptcp_set_path_manager), NULL);
170 g_signal_connect(mptcp_object, "handle-mptcp-get-path-manager",
171 G_CALLBACK(handle_mptcp_get_path_manager), NULL);
172 g_signal_connect(mptcp_object, "handle-mptcp-set-scheduler",
173 G_CALLBACK(handle_mptcp_set_scheduler), NULL);
174 g_signal_connect(mptcp_object, "handle-mptcp-get-scheduler",
175 G_CALLBACK(handle_mptcp_get_scheduler), NULL);
177 if (!g_dbus_interface_skeleton_export(interface_mptcp, connection,
178 NETCONFIG_MPTCP_PATH, NULL)) {
179 ERR("Export NETCONFIG_MPTCP_PATH for mptcp failed");
185 void mptcp_object_deinit(void)
187 DBG("Deinit mptcp object.");
189 g_object_unref(mptcp_object);