void inm_gdbus_emit_ip_conflicted(int state, gchar *if_name, gchar *ip);
void inm_gdbus_emit_arp_request_result(gboolean found, gchar *ip);
void inm_gdbus_emit_gateway_check_result(gboolean found, gchar *ip);
-void inm_gdbus_emit_reacher_result(gboolean found, const gchar *url);
+void inm_gdbus_emit_reacher_result(int error_code,
+ gboolean found,
+ const gchar *url);
void inm_gdbus_emit_default_dns_lookup_result(gboolean found, const gchar *host_name);
void inm_gdbus_emit_ethernet_cable_state(gboolean state);
void inm_gdbus_emit_wifi_module_state(gboolean state);
INM_REACHER_ERROR_DNS_NOT_RESOLVED,
INM_REACHER_ERROR_TIMEOUT,
INM_REACHER_ERROR_CURL,
-
} inm_reacher_error_e;
+typedef enum {
+ INM_REACHER_URL_RESULT_SUCCESS,
+ INM_REACHER_URL_RESULT_ERROR_MALFORMED_URL,
+ INM_REACHER_URL_RESULT_ERROR_DNS_RESOLVE,
+ INM_REACHER_URL_RESULT_ERROR_TCP_CONNECT,
+ INM_REACHER_URL_RESULT_ERROR_SSL,
+ INM_REACHER_URL_RESULT_ERROR_HTTP,
+ INM_REACHER_URL_RESULT_ERROR_FILE_NOT_FOUND,
+ INM_REACHER_URL_RESULT_ERROR_UNKNOWN = 255,
+} inm_reacher_url_result_e;
+
typedef enum {
INM_REACHER_CHECK_DEFAULT_URLS,
INM_REACHER_CHECK_USER_URLS,
*/
typedef void (*reacher_callback) (
- inm_reacher_error_e err,
+ inm_reacher_url_result_e result,
gboolean found,
const char *url,
gpointer user_data);
Name: inm-manager
Summary: INM(Intelligent Network Monitoring) daemon
-Version: 0.0.21
+Version: 0.0.22
Release: 1
Group: Network & Connectivity/Other
License: Apache-2.0
__INM_FUNC_EXIT__;
}
-void inm_gdbus_emit_reacher_result(gboolean found, const gchar *url)
+void inm_gdbus_emit_reacher_result(int error_code,
+ gboolean found,
+ const gchar *url)
{
GVariantBuilder *builder = NULL;
__INM_FUNC_ENTER__;
builder = g_variant_builder_new(G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add(builder, "{sv}", "UrlError", g_variant_new_int32(error_code));
g_variant_builder_add(builder, "{sv}", "Found", g_variant_new_boolean(found));
g_variant_builder_add(builder, "{sv}", "Url", g_variant_new_string(url));
}
static void __reacher_callback(
- inm_reacher_error_e err,
+ inm_reacher_url_result_e result,
gboolean found,
const char *url,
gpointer user_data)
return;
PRINT_LOG("<URL %s:%s>", url, found ? "Found" : "Not Found");
- inm_gdbus_emit_reacher_result(found, url);
+ inm_gdbus_emit_reacher_result(result, found, url);
return;
}
return;
}
+static inline inm_reacher_url_result_e __translate_curl_code_to_url_result(CURLcode code)
+{
+ inm_reacher_url_result_e result;
+
+ switch (code) {
+ case CURLE_OK:
+ result = INM_REACHER_URL_RESULT_SUCCESS;
+ break;
+ case CURLE_URL_MALFORMAT:
+ result = INM_REACHER_URL_RESULT_ERROR_MALFORMED_URL;
+ break;
+ case CURLE_COULDNT_RESOLVE_PROXY:
+ case CURLE_COULDNT_RESOLVE_HOST:
+ result = INM_REACHER_URL_RESULT_ERROR_DNS_RESOLVE;
+ break;
+ case CURLE_COULDNT_CONNECT:
+ result = INM_REACHER_URL_RESULT_ERROR_TCP_CONNECT;
+ break;
+ case CURLE_SSL_CONNECT_ERROR:
+ case CURLE_SSL_ENGINE_NOTFOUND:
+ case CURLE_SSL_ENGINE_SETFAILED:
+ case CURLE_SSL_CERTPROBLEM:
+ case CURLE_SSL_CIPHER:
+ case CURLE_PEER_FAILED_VERIFICATION:
+ case CURLE_SSL_ENGINE_INITFAILED:
+ case CURLE_SSL_CACERT_BADFILE:
+ case CURLE_SSL_SHUTDOWN_FAILED:
+ case CURLE_SSL_CRL_BADFILE:
+ case CURLE_SSL_ISSUER_ERROR:
+ result = INM_REACHER_URL_RESULT_ERROR_SSL;
+ break;
+ case CURLE_HTTP_RETURNED_ERROR:
+ result = INM_REACHER_URL_RESULT_ERROR_HTTP;
+ break;
+ case CURLE_REMOTE_FILE_NOT_FOUND:
+ result = INM_REACHER_URL_RESULT_ERROR_FILE_NOT_FOUND;
+ break;
+ default:
+ result = INM_REACHER_URL_RESULT_ERROR_UNKNOWN;
+ break;
+ }
+ return result;
+}
+
/* Check for completed transfers, and remove their easy handles */
static void __check_multi_info(reacher_data_s *reacher)
{
INM_LOGI("DONE: %s => (%d) %s", eff_url, ret, conn->error);
if (reacher->cb)
- reacher->cb(INM_REACHER_ERROR_NONE,
- TRUE,
+ reacher->cb(__translate_curl_code_to_url_result(ret),
+ ret == CURLE_OK ? TRUE : FALSE,
conn->url,
reacher->cb_user_data);
__destroy_conn(conn);
CMD_CONNMAN_INIT,
CMD_CONNMAN_DEINIT,
- CMD_CONNMAN_MGR_GET_PROPERTIES,
CMD_CONNMAN_MGR_GET_SERVICES,
CMD_CONNMAN_MGR_GET_TECHNOLOGIES,
{CMD_CONNMAN_INIT, "CMD_CONNMAN_INIT"},
{CMD_CONNMAN_DEINIT, "CMD_CONNMAN_DEINIT"},
- {CMD_CONNMAN_MGR_GET_PROPERTIES, "CMD_CONNMAN_MGR_GET_PROPERTIES"},
{CMD_CONNMAN_MGR_GET_SERVICES, "CMD_CONNMAN_MGR_GET_SERVICES"},
{CMD_CONNMAN_MGR_GET_TECHNOLOGIES, "CMD_CONNMAN_MGR_GET_TECHNOLOGIES"},
}
static void __reacher_callback(
- inm_reacher_error_e err,
+ inm_reacher_url_result_e err,
gboolean found,
const char *url,
gpointer user_data)