* @see stc_restriction_list_create()
* @see stc_get_restriction_from_list()
* @see stc_foreach_restriction_list()
- * @see stc_remove_restriction_from_list()
+ * @see stc_remove_restriction_rule_from_list()
* @see stc_set_restriction_list()
* @see stc_unset_restriction_list()
*/
-int stc_add_restriction_to_list(stc_h stc, stc_restriction_list_h list,
- stc_restriction_rule_h rule);
+int stc_add_restriction_rule_to_list(stc_h stc,
+ stc_restriction_list_h list, stc_restriction_rule_h rule);
/**
* @brief Removes the restriction from list.
* @see stc_restriction_list_create()
* @see stc_get_restriction_from_list()
* @see stc_foreach_restriction_list()
- * @see stc_add_restriction_to_list()
+ * @see stc_add_restriction_rule_to_list()
* @see stc_set_restriction_list()
* @see stc_unset_restriction_list()
*/
-int stc_remove_restriction_from_list(stc_h stc, stc_restriction_list_h list,
- stc_restriction_rule_h rule);
+int stc_remove_restriction_rule_from_list(stc_h stc,
+ stc_restriction_list_h list, stc_restriction_rule_h rule);
/**
* @brief Gets the restriction from list.
* @see stc_restriction_rule_get_subscriber_id()
* @see stc_restriction_rule_get_process_state()
* @see stc_restriction_list_create()
- * @see stc_add_restriction_to_list()
+ * @see stc_add_restriction_rule_to_list()
* @see stc_foreach_restriction_list()
- * @see stc_remove_restriction_from_list()
+ * @see stc_remove_restriction_rule_from_list()
* @see stc_set_restriction_list()
* @see stc_unset_restriction_list()
*/
* @see stc_restriction_rule_get_process_state()
* @see stc_restriction_list_create()
* @see stc_get_restriction_list()
- * @see stc_add_restriction_to_list()
- * @see stc_remove_restriction_from_list()
+ * @see stc_add_restriction_rule_to_list()
+ * @see stc_remove_restriction_rule_from_list()
* @see stc_set_restriction_list()
* @see stc_unset_restriction_list()
*/
* @see stc_restriction_rule_get_process_state()
* @see stc_restriction_list_create()
* @see stc_get_restriction_list()
- * @see stc_add_restriction_to_list()
- * @see stc_remove_restriction_from_list()
+ * @see stc_add_restriction_rule_to_list()
+ * @see stc_remove_restriction_rule_from_list()
* @see stc_foreach_restriction_list()
* @see stc_unset_restriction_list()
*/
* @see stc_restriction_rule_get_process_state()
* @see stc_restriction_list_create()
* @see stc_get_restriction_list()
- * @see stc_add_restriction_to_list()
- * @see stc_remove_restriction_from_list()
+ * @see stc_add_restriction_rule_to_list()
+ * @see stc_remove_restriction_rule_from_list()
* @see stc_foreach_restriction_list()
* @see stc_set_restriction_list()
*/
return STC_ERROR_INVALID_PARAMETER;
}
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_INVALID_PARAMETER;
}
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_INVALID_PARAMETER;
}
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_INVALID_PARAMETER;
}
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_INVALID_PARAMETER;
}
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_NONE;
}
+EXPORT_API int stc_add_restriction_rule_to_list(stc_h stc,
+ stc_restriction_list_h list, stc_restriction_rule_h rule)
+{
+ int ret = STC_ERROR_NONE;
+
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
+
+ if (!(_stc_handle_check_validity(stc))) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (_stc_restriction_check_list_validity(list) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (_stc_restriction_check_rule_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ ret = _stc_restriction_validate_rule(rule);
+ if (ret != STC_ERROR_NONE) {
+ STC_LOGE("Invalid restriction rule [%s]",
+ _stc_convert_error_type_to_string(ret));
+ return ret;
+ }
+
+ if (_stc_restriction_add_rule_to_list(list, rule) == false) {
+ STC_LOGE("Failed to add restriction rule to list[%s]",
+ _stc_convert_error_type_to_string(ret));
+ return ret;
+ }
+
+ return STC_ERROR_NONE;
+}
+
+EXPORT_API int stc_remove_restriction_rule_from_list(stc_h stc,
+ stc_restriction_list_h list, stc_restriction_rule_h rule)
+{
+ int ret = STC_ERROR_NONE;
+
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
+
+ if (!(_stc_handle_check_validity(stc))) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (_stc_restriction_check_list_validity(list) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (_stc_restriction_check_rule_validity(rule) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ ret = _stc_restriction_validate_rule(rule);
+ if (ret != STC_ERROR_NONE) {
+ STC_LOGE("Invalid restriction rule [%s]",
+ _stc_convert_error_type_to_string(ret));
+ return ret;
+ }
+
+ if (_stc_restriction_remove_rule_from_list(list, rule) == false) {
+ STC_LOGE("Failed to remove restriction rule from list[%s]",
+ _stc_convert_error_type_to_string(ret));
+ return ret;
+ }
+
+ return STC_ERROR_NONE;
+}
+
EXPORT_API int stc_iptables_commit(stc_h stc, const char *option,
int *err_num, char **err_str)
{
* Global Variables
*****************************************************************************/
+static GSList *g_restriction_rule = NULL;
static GSList *g_restriction_list = NULL;
/*****************************************************************************
g_free(rule);
}
+static void __stc_restriction_init_list(stc_restriction_list_s *list,
+ const char *name)
+{
+ g_strlcpy(list->name, name, STC_LIST_NAME_LEN);
+ list->rules = NULL;
+}
+
+static void __stc_restriction_deinit_list(stc_restriction_list_h list)
+{
+ g_free(list);
+}
+
static void __stc_restriction_rule_make_params(
stc_restriction_rule_h rule,
GVariant **params)
return STC_ERROR_NONE;
}
-void _stc_restriction_add_to_list(stc_restriction_rule_h rule)
+void _stc_restriction_add_rule(stc_restriction_rule_h rule)
{
- g_restriction_list = g_slist_append(g_restriction_list, rule);
+ g_restriction_rule = g_slist_append(g_restriction_rule, rule);
}
-void _stc_restriction_remove_from_list(stc_restriction_rule_h rule)
+void _stc_restriction_remove_rule(stc_restriction_rule_h rule)
{
- g_restriction_list = g_slist_remove(g_restriction_list, rule);
+ g_restriction_rule = g_slist_remove(g_restriction_rule, rule);
}
-bool _stc_restriction_check_validity(stc_restriction_rule_h rule)
+bool _stc_restriction_check_rule_validity(stc_restriction_rule_h rule)
{
if (!rule)
return false;
- if (g_slist_find(g_restriction_list, rule))
+ if (g_slist_find(g_restriction_rule, rule))
+ return true;
+ else
+ return false;
+}
+
+bool _stc_restriction_add_rule_to_list(stc_restriction_list_h list,
+ stc_restriction_rule_h rule)
+{
+ GSList *find = g_slist_find(g_restriction_list, list);
+ if (find) {
+ stc_restriction_list_s *list_data = (stc_restriction_list_s *)find->data;
+ list_data->rules = g_slist_append(list_data->rules, rule);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+bool _stc_restriction_remove_rule_from_list(stc_restriction_list_h list,
+ stc_restriction_rule_h rule)
+{
+ GSList *find = g_slist_find(g_restriction_list, list);
+ if (find) {
+ stc_restriction_list_s *list_data = (stc_restriction_list_s *)find->data;
+ list_data->rules = g_slist_append(list_data->rules, rule);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+void _stc_restriction_add_list(stc_restriction_list_h list)
+{
+ g_restriction_list = g_slist_append(g_restriction_list, list);
+}
+
+void _stc_restriction_remove_list(stc_restriction_list_h list)
+{
+ g_restriction_list = g_slist_remove(g_restriction_list, list);
+}
+
+bool _stc_restriction_check_list_validity(stc_restriction_list_h list)
+{
+ if (!list)
+ return false;
+
+ if (g_slist_find(g_restriction_list, list))
return true;
else
return false;
}
__stc_restriction_init_rule(restriction_rule);
- _stc_restriction_add_to_list((stc_restriction_rule_h)restriction_rule);
+ _stc_restriction_add_rule((stc_restriction_rule_h)restriction_rule);
*rule = (stc_restriction_rule_h)restriction_rule;
STC_LOGI("Restriction rule successfully created");
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
- _stc_restriction_remove_from_list(rule);
+ _stc_restriction_remove_rule(rule);
__stc_restriction_deinit_rule(rule);
STC_LOGI("Restriction rule successfully destroyed");
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
{
CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
- if (_stc_restriction_check_validity(rule) == false) {
+ if (_stc_restriction_check_rule_validity(rule) == false) {
STC_LOGE("Invalid parameter");
return STC_ERROR_INVALID_PARAMETER;
}
return STC_ERROR_NONE;
}
+
+EXPORT_API int stc_restriction_list_create(stc_h stc, stc_restriction_list_h *list,
+ const char *name)
+{
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
+
+ if (!(_stc_handle_check_validity(stc))) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ if (list == NULL || name == NULL) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ stc_restriction_list_s *restriction_list =
+ g_try_malloc0(sizeof(stc_restriction_list_s));
+ if (restriction_list == NULL) {
+ STC_LOGE("Memory allocation failed");
+ return STC_ERROR_OUT_OF_MEMORY;
+ }
+
+ __stc_restriction_init_list(restriction_list, name);
+ _stc_restriction_add_list((stc_restriction_list_h)restriction_list);
+
+ *list = (stc_restriction_list_h)restriction_list;
+ STC_LOGI("Restriction list successfully created [%s]", name);
+
+ return STC_ERROR_NONE;
+}
+
+EXPORT_API int stc_restriction_list_destroy(stc_restriction_list_h list)
+{
+ CHECK_FEATURE_SUPPORTED(TIZEN_FEATURE_STC);
+
+ if (_stc_restriction_check_list_validity(list) == false) {
+ STC_LOGE("Invalid parameter");
+ return STC_ERROR_INVALID_PARAMETER;
+ }
+
+ _stc_restriction_remove_list(list);
+ __stc_restriction_deinit_list(list);
+
+ STC_LOGI("Restriction list successfully destroyed");
+
+ return STC_ERROR_NONE;
+}
//LCOV_EXCL_STOP