diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2010-10-29 14:45:20 +0200 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-10-30 00:22:21 +0200 |
commit | 7900a98aa762f07fa01537de79cef295052ea967 (patch) | |
tree | 320bd734ebdb2d81fe8b7f21c439af6b22aca487 /tools/iptables-test.c | |
parent | 4c8037421697c904a50d8a847ed5a2560c468470 (diff) | |
download | connman-7900a98aa762f07fa01537de79cef295052ea967.tar.gz connman-7900a98aa762f07fa01537de79cef295052ea967.tar.bz2 connman-7900a98aa762f07fa01537de79cef295052ea967.zip |
iptables-test: Merge rule adding routines
There is no valid reason for separating the builtin case from the generic
one.
Diffstat (limited to 'tools/iptables-test.c')
-rw-r--r-- | tools/iptables-test.c | 70 |
1 files changed, 15 insertions, 55 deletions
diff --git a/tools/iptables-test.c b/tools/iptables-test.c index 590936c1..a3de5131 100644 --- a/tools/iptables-test.c +++ b/tools/iptables-test.c @@ -313,49 +313,12 @@ err: } static struct ipt_entry * -new_builtin_rule(char *target_name, struct xtables_match *xt_m) -{ - struct ipt_entry *new_entry; - size_t match_size, target_size; - struct xt_entry_match *entry_match; - struct xt_standard_target *target; - - if (xt_m) - match_size = xt_m->m->u.match_size; - else - match_size = 0; - - target_size = ALIGN(sizeof(struct xt_standard_target)); - - new_entry = g_try_malloc0(sizeof(struct ipt_entry) + target_size + - match_size); - if (new_entry == NULL) - return NULL; - - new_entry->target_offset = sizeof(struct ipt_entry) + match_size; - new_entry->next_offset = sizeof(struct ipt_entry) + target_size + - match_size; - if (xt_m) { - entry_match = (struct xt_entry_match *)new_entry->elems; - memcpy(entry_match, xt_m->m, match_size); - } - - target = (struct xt_standard_target *)(new_entry->elems + match_size); - strcpy(target->target.u.user.name, IPT_STANDARD_TARGET); - target->target.u.user.target_size = - ALIGN(sizeof(struct ipt_standard_target)); - target->verdict = target_to_verdict(target_name); - - return new_entry; -} - -static struct ipt_entry * -new_custom_rule(struct xtables_target *xt_t, struct xtables_match *xt_m) +new_rule(char *target_name, struct xtables_target *xt_t, + char *match_name, struct xtables_match *xt_m) { struct ipt_entry *new_entry; size_t match_size, target_size; - struct xt_entry_match *entry_match; - struct xt_entry_target *entry_target; + int is_builtin = is_builtin_target(target_name); if (xt_m) match_size = xt_m->m->u.match_size; @@ -376,29 +339,26 @@ new_custom_rule(struct xtables_target *xt_t, struct xtables_match *xt_m) new_entry->next_offset = sizeof(struct ipt_entry) + target_size + match_size; if (xt_m) { + struct xt_entry_match *entry_match; + entry_match = (struct xt_entry_match *)new_entry->elems; memcpy(entry_match, xt_m->m, match_size); } if (xt_t) { - entry_target = (struct xt_entry_target *)(new_entry->elems + - match_size); - memcpy(entry_target, xt_t->t, target_size); - } + struct xt_entry_target *entry_target; - return new_entry; -} + if (is_builtin) { + struct xt_standard_target *target; -static struct ipt_entry * -new_rule(char *target_name, struct xtables_target *xt_t, - char *match_name, struct xtables_match *xt_m) -{ - struct ipt_entry *new_entry; + target = (struct xt_standard_target *)(xt_t->t); + strcpy(target->target.u.user.name, IPT_STANDARD_TARGET); + target->verdict = target_to_verdict(target_name); + } - if (is_builtin_target(target_name)) - new_entry = new_builtin_rule(target_name, xt_m); - else - new_entry = new_custom_rule(xt_t, xt_m); + entry_target = ipt_get_target(new_entry); + memcpy(entry_target, xt_t->t, target_size); + } return new_entry; } |