Add reacher to manager 10/190110/1
authorYu <jiung.yu@samsung.com>
Wed, 19 Sep 2018 07:15:12 +0000 (16:15 +0900)
committerYu <jiung.yu@samsung.com>
Wed, 19 Sep 2018 07:15:28 +0000 (16:15 +0900)
Change-Id: If814f8190ae8b96536958b3e8c419a0f5a1dce60
Signed-off-by: Yu Jiung <jiung.yu@samsung.com>
include/inm-manager.h
src/CMakeLists.txt
src/inm-manager.c

index d2210f33ee8995ea06727d77031d8863b37be013..bc49722b2db543d051e11acc8b83096ddface831 100644 (file)
@@ -224,6 +224,11 @@ int inm_manager_start_arping(char *target_ip, int timeout);
 int inm_manager_stop_arping(char *target_ip);
 int inm_manager_start_check_gateway();
 int inm_manager_stop_check_gateway();
+int inm_manager_add_reacher_url(const char *url);
+int inm_manager_remove_reacher_url(const char *url);
+int inm_manager_start_reacher(int type);
+int inm_manager_stop_reacher(int type);
+int inm_manager_get_reacher_is_running(gboolean *is_running);
 
 int inm_manager_get_wifi_scan_state(gboolean *state);
 
index aa622bcdd4a7af05c7dd8d61bc7d20b8c10ad4cc..1ef4add2b2236cd94a9b9e89ad957ddb365d345f 100644 (file)
@@ -56,6 +56,7 @@ SET(SRCS
        ${CMAKE_SOURCE_DIR}/src/inm-manager-main.c
        ${CMAKE_SOURCE_DIR}/src/inm-ip-conflict.c
        ${CMAKE_SOURCE_DIR}/src/inm-arping.c
+       ${CMAKE_SOURCE_DIR}/src/inm-reacher.c
        ${CMAKE_SOURCE_DIR}/src/inm-iface-mon.c
        ${CMAKE_SOURCE_DIR}/src/inm-net-access.c
        ${CMAKE_SOURCE_DIR}/src/inm-statistics.c
index 5036cc5e83ba73a8e712e42cb7aa57067b2c762a..ae3e96b112ec7b64a31b9418f0f2a597397b666e 100644 (file)
@@ -32,6 +32,7 @@
 #include "inm-dump.h"
 #include "inm-ip-conflict.h"
 #include "inm-arping.h"
+#include "inm-reacher.h"
 #include "inm-iface-mon.h"
 #include "inm-supplicant.h"
 #include "inm-connman.h"
@@ -407,6 +408,126 @@ int inm_manager_stop_check_gateway()
        return ret;
 }
 
+int inm_manager_add_reacher_url(const char *url)
+{
+       int ret = 0;
+
+       __INM_FUNC_ENTER__;
+
+       ret = inm_reacher_add_url(url);
+       if (ret != 0) {
+               INM_LOGI("Failed to add url");
+
+               if (ret == INM_REACHER_ERROR_IN_PROGRESS)
+                       ret = INM_MANAGER_ERROR_IN_PROGRESS;
+               else
+                       ret = -1;
+
+               __INM_FUNC_EXIT__;
+               return ret;
+       }
+
+       __INM_FUNC_EXIT__;
+       return INM_MANAGER_ERROR_NONE;
+}
+
+int inm_manager_remove_reacher_url(const char *url)
+{
+       int ret = 0;
+
+       __INM_FUNC_ENTER__;
+
+       ret = inm_reacher_remove_url(url);
+       if (ret != 0) {
+               INM_LOGI("Failed to remove url");
+
+               if (ret == INM_REACHER_ERROR_IN_PROGRESS)
+                       ret = INM_MANAGER_ERROR_IN_PROGRESS;
+               else
+                       ret = -1;
+
+               __INM_FUNC_EXIT__;
+               return ret;
+       }
+
+       __INM_FUNC_EXIT__;
+       return INM_MANAGER_ERROR_NONE;
+}
+
+static void __reacher_callback (
+               inm_reacher_error_e err,
+               gboolean found,
+               const char *url,
+               gpointer user_data)
+{
+       if (!url)
+               return;
+
+       INM_LOGI("URL : %s is %s", url, found ? "Found" : "Not Found");
+
+       return;
+}
+
+int inm_manager_start_reacher(int type)
+{
+       int ret = 0;
+
+       __INM_FUNC_ENTER__;
+
+       ret = inm_reacher_start(type, TRUE, __reacher_callback, NULL);
+       if (ret != 0) {
+               INM_LOGI("Failed to start reacher");
+
+               if (ret == INM_REACHER_ERROR_IN_PROGRESS)
+                       ret = INM_MANAGER_ERROR_IN_PROGRESS;
+               else
+                       ret = -1;
+
+               __INM_FUNC_EXIT__;
+               return ret;
+       }
+
+       __INM_FUNC_EXIT__;
+       return INM_MANAGER_ERROR_NONE;
+}
+
+int inm_manager_stop_reacher(int type)
+{
+       int ret = 0;
+
+       __INM_FUNC_ENTER__;
+
+       ret = inm_reacher_stop(type);
+       if (ret != 0) {
+               INM_LOGI("Failed to stop reacher");
+
+               __INM_FUNC_EXIT__;
+               return -1;
+       }
+
+       __INM_FUNC_EXIT__;
+       return INM_MANAGER_ERROR_NONE;
+}
+
+int inm_manager_get_reacher_is_running(gboolean *is_running)
+{
+       int ret = 0;
+
+       __INM_FUNC_ENTER__;
+
+       ret = inm_reacher_is_running(is_running);
+       if (ret != 0) {
+               INM_LOGI("Failed to get reacher is running");
+
+               __INM_FUNC_EXIT__;
+               return -1;
+       }
+
+       __INM_FUNC_EXIT__;
+       return INM_MANAGER_ERROR_NONE;
+}
+
+
 int inm_manager_get_wifi_scan_state(gboolean *state)
 {
        inm_supplicant_iface_s *iface = NULL;
@@ -512,6 +633,29 @@ static inline void __deinit_arping()
        return;
 }
 
+static inline void __init_reacher()
+{
+       __INM_FUNC_ENTER__;
+       if (inm_reacher_init() < 0) {
+               INM_LOGI("reacher init failed");
+               __INM_FUNC_EXIT__;
+               return;
+       }
+
+       __INM_FUNC_EXIT__;
+}
+
+static inline void __deinit_reacher()
+{
+       __INM_FUNC_ENTER__;
+
+       if (inm_reacher_deinit() < 0) {
+               INM_LOGI("reacher deinit failed");
+       }
+
+       __INM_FUNC_EXIT__;
+       return;
+}
 static void __ethernet_cable_state_changed_cb(char *iface_name, int state, void *user_data)
 {
        gboolean is_attached = FALSE;
@@ -986,6 +1130,7 @@ int inm_manager_init()
        inm_dump_init();
        __init_ip_conflict_detect();
        __init_arping();
+       __init_reacher();
        __init_iface_monitor();
        __init_retry_tx_rate_monitor();
        __init_channel_interference_monitor();
@@ -1011,6 +1156,7 @@ int inm_manager_deinit()
        inm_dump_deinit();
        __deinit_ip_conflict_detect();
        __deinit_arping();
+       __deinit_reacher();
        __deinit_iface_monitor();
        __deinit_retry_tx_rate_monitor();
        __deinit_channel_interference_monitor();