GVariant *return_parameters = NULL;
STC_LOGI("stc manager stop");
+ stc_set_keep_alive(TRUE);
return_parameters = g_variant_new("(i)", STC_ERROR_NONE);
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
g_variant_get(rules, "a{sv}", &iter);
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = iptables_add_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = iptables_remove_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = iptables_flush_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
if (rules != NULL) {
GVariantIter *iter = NULL;
g_variant_get(rules, "a{sv}", &iter);
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = ip6tables_add_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = ip6tables_remove_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
stc_error_e ret = STC_ERROR_NONE;
GVariant *return_parameters = NULL;
+ stc_set_keep_alive(TRUE);
+
ret = ip6tables_flush_chain(chain);
if (ret < STC_ERROR_NONE) {
STC_IPTABLES_DBUS_REPLY_ERROR(invocation, ret); //LCOV_EXCL_LINE
}
}
+static gboolean __stc_timer_expired(gpointer data)
+{
+ if (g_stc_iptables->keep_alive) {
+ g_stc_iptables->keep_alive = FALSE;
+ return TRUE;
+ }
+
+ g_main_loop_quit(g_stc_iptables->main_loop);
+
+ return FALSE;
+}
+
gint32 main(gint32 argc, gchar *argv[])
{
GMainLoop *main_loop = NULL;
setenv("GCOV_PREFIX", "/tmp/daemon", 1);
#endif
+/*
if (daemon(0, 0) != 0)
STC_LOGE("Can't start daemon"); //LCOV_EXCL_LINE
+*/
/* Initialize required subsystems */
#if !GLIB_CHECK_VERSION(2, 35, 0)
goto fail;
g_stc_iptables->main_loop = main_loop;
+ g_stc_iptables->timer = g_timeout_add_seconds(10, __stc_timer_expired, NULL);
+ g_stc_iptables->keep_alive = FALSE;
+
/* Run the main loop */
g_main_loop_run(main_loop);
{
return g_stc_iptables;
}
-//LCOV_EXCL_STOP
void stc_stop_iptables(void)
{
if (g_stc_iptables && g_stc_iptables->main_loop)
g_main_loop_quit(g_stc_iptables->main_loop);
}
+
+void stc_set_keep_alive(gboolean keep_alive)
+{
+ g_stc_iptables->keep_alive = keep_alive;
+}
+//LCOV_EXCL_STOP