2 * Network Configuration Module
4 * Copyright (c) 2000 - 2012 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.
24 #include <system_info.h>
33 #include "wifi-agent.h"
34 #include "wifi-power.h"
37 #include "network-clock.h"
38 #include "network-dpm.h"
39 #include "network-state.h"
40 #include "network-monitor.h"
41 #include "signal-handler.h"
42 #include "network-statistics.h"
43 #include "network-dump.h"
45 #include "wifi-firmware.h"
47 static GMainLoop *main_loop = NULL;
49 /*Poll the ethernet Cable Plug-in /Plug-out status at every 1000 ms*/
50 #define ETH_POLLING_TIME 1000
51 #define CONTAINER_FILE "/run/systemd/container"
53 /* Callback to Poll the Ethernet Status*/
54 gboolean __net_ethernet_cable_status_polling_callback(gpointer data)
56 netconfig_ethernet_cable_plugin_status_check();
60 void _got_name_cb(void)
62 wifi_object_create_and_init();
63 state_object_create_and_init();
64 statistics_object_create_and_init();
65 vpnsvc_create_and_init();
66 mptcp_object_create_and_init();
67 ethernet_object_create_and_init();
69 register_gdbus_signal();
70 connman_register_agent();
73 __netconfig_set_ether_macaddr();
76 static void _objects_deinit(void)
80 state_object_deinit();
81 statistics_object_deinit();
82 vpnsvc_destroy_deinit();
83 mptcp_object_deinit();
84 ethernet_object_deinit();
87 int main(int argc, char *argv[])
90 int check_ethernet_monitor_timer = 0;
92 char *wifi_def_mac = NULL;
96 DBG("Network Configuration service");
97 if (daemon(0, 0) != 0)
98 DBG("Cannot start daemon");
100 if (mkdir(WIFI_STORAGEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
101 S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
103 ERR("Failed to create Wi-Fi directory");
106 if (mkdir(WIFI_CERT_STORAGEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
107 S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
109 ERR("Failed to create cert directory");
112 #if !GLIB_CHECK_VERSION(2, 36, 0)
116 main_loop = g_main_loop_new(NULL, FALSE);
117 if (main_loop == NULL) {
118 ERR("Couldn't create GMainLoop\n");
123 if (access(CONTAINER_FILE, F_OK) == 0) {
124 ret = setup_gdbus(NULL);
126 ERR("_netconfig_setup_gdbus is failed\n");
129 g_main_loop_run(main_loop);
135 /* Backward compatibility:
136 * Execute only when the old style hal architecture is not running
138 if (!wifi_check_systemd_service()) {
139 ifname = netconfig_get_default_ifname_from_file();
141 if (ifname && netconfig_wifi_firmware_get_mac(ifname, &wifi_def_mac) == 0)
142 wifi_set_default_mac(wifi_def_mac);
147 ret = setup_gdbus(_got_name_cb);
149 ERR("_netconfig_setup_gdbus is failed\n");
153 netconfig_setting_init();
155 netconfig_error_init();
157 if (TIZEN_NTP_ENABLE)
158 netconfig_clock_init();
160 /* If its environment uses Emulator, network configuration is set by emulator default */
161 emulator_test_and_start();
163 /* For device policy manager */
164 netconfig_dpm_init();
166 /* Start tcpdump if dump state is on */
167 #if defined TIZEN_DEBUG_ENABLE
168 check_dump_state_and_start();
171 /* Backward compatibility:
172 * Execute only when the old style hal architecture is running
174 if (TIZEN_WLAN_BOARD_SPRD && wifi_check_systemd_service())
175 wifi_firmware_download();
177 /*In case no emulator, set the ETH0 Mac address*/
178 if (TIZEN_TV && emulator_is_emulated() == FALSE)
179 __netconfig_set_ether_macaddr();
181 if (netconfig_check_feature_supported(NETCONFIG_SUPPORTED_FEATURE_ETHERNET)) {
182 /* Register the callback to check the ethernet Plug-in /Plug-out Status */
183 check_ethernet_monitor_timer = g_timeout_add(ETH_POLLING_TIME,
184 __net_ethernet_cable_status_polling_callback,
185 &check_ethernet_monitor_timer);
188 netconfig_plugin_init();
190 g_main_loop_run(main_loop);
192 netconfig_plugin_deinit();
198 deregister_gdbus_signal();
200 netconfig_dpm_deinit();
202 netconfig_setting_deinit();
204 if (TIZEN_NTP_ENABLE)
205 netconfig_clock_deinit();
209 if (check_ethernet_monitor_timer > 0)
210 g_source_remove(check_ethernet_monitor_timer);
212 wifi_state_notifier_cleanup();
214 /* Unregistering the agent */
215 connman_unregister_agent();