Fixes a bug in community set delete.
This commit is contained in:
parent
4ca93a5067
commit
a58022a64e
1 changed files with 6 additions and 3 deletions
|
@ -919,6 +919,9 @@ interpret(struct f_inst *what)
|
||||||
runtime("Can't add/delete to non-clist");
|
runtime("Can't add/delete to non-clist");
|
||||||
|
|
||||||
struct f_val dummy;
|
struct f_val dummy;
|
||||||
|
u16 op = what->aux;
|
||||||
|
i = 0;
|
||||||
|
|
||||||
if ((v2.type == T_PAIR) || (v2.type == T_QUAD))
|
if ((v2.type == T_PAIR) || (v2.type == T_QUAD))
|
||||||
i = v2.val.i;
|
i = v2.val.i;
|
||||||
#ifndef IPV6
|
#ifndef IPV6
|
||||||
|
@ -926,13 +929,13 @@ interpret(struct f_inst *what)
|
||||||
else if (v2.type == T_IP)
|
else if (v2.type == T_IP)
|
||||||
i = ipa_to_u32(v2.val.px.ip);
|
i = ipa_to_u32(v2.val.px.ip);
|
||||||
#endif
|
#endif
|
||||||
else if ((v2.type == T_SET) && (what->aux == 'd') && clist_set_type(v2.val.t, &dummy))
|
else if ((v2.type == T_SET) && (op == 'd') && clist_set_type(v2.val.t, &dummy))
|
||||||
what->aux = 'D';
|
op = 'D';
|
||||||
else
|
else
|
||||||
runtime("Can't add/delete non-pair");
|
runtime("Can't add/delete non-pair");
|
||||||
|
|
||||||
res.type = T_CLIST;
|
res.type = T_CLIST;
|
||||||
switch (what->aux) {
|
switch (op) {
|
||||||
case 'a': res.val.ad = int_set_add(f_pool, v1.val.ad, i); break;
|
case 'a': res.val.ad = int_set_add(f_pool, v1.val.ad, i); break;
|
||||||
case 'd': res.val.ad = int_set_del(f_pool, v1.val.ad, i); break;
|
case 'd': res.val.ad = int_set_del(f_pool, v1.val.ad, i); break;
|
||||||
case 'D': res.val.ad = clist_del_matching(f_pool, v1.val.ad, v2.val.t); break;
|
case 'D': res.val.ad = clist_del_matching(f_pool, v1.val.ad, v2.val.t); break;
|
||||||
|
|
Loading…
Reference in a new issue