}
static struct xtables_match *prepare_matches(struct connman_iptables *table,
- char *match_name)
+ struct xtables_rule_match **xt_rm, char *match_name)
{
struct xtables_match *xt_m;
size_t match_size;
if (match_name == NULL)
return NULL;
- xt_m = xtables_find_match(match_name, XTF_LOAD_MUST_SUCCEED, NULL);
+ xt_m = xtables_find_match(match_name, XTF_LOAD_MUST_SUCCEED, xt_rm);
match_size = ALIGN(sizeof(struct ipt_entry_match)) + xt_m->size;
xt_m->m = g_try_malloc0(match_size);
static int iptables_command(int argc, char *argv[])
{
struct connman_iptables *table;
+ struct xtables_rule_match *xt_rm;
struct xtables_match *xt_m;
struct xtables_target *xt_t;
struct ipt_ip ip;
flush_chain = delete_chain = NULL;
memset(&ip, 0, sizeof(struct ipt_ip));
table = NULL;
+ xt_rm = NULL;
xt_m = NULL;
xt_t = NULL;
ret = 0;
goto out;
if (match_name != NULL) {
- xt_m = prepare_matches(table, match_name);
+ xt_m = prepare_matches(table, &xt_rm, match_name);
if (xt_m == NULL)
goto out;
}