Fixes behavior of defined() on bgp_community attribute.
This commit is contained in:
parent
1528d30aeb
commit
74e9331fe0
1 changed files with 5 additions and 7 deletions
|
@ -607,12 +607,6 @@ interpret(struct f_inst *what)
|
||||||
e = ea_find( (*f_rte)->attrs->eattrs, what->a2.i );
|
e = ea_find( (*f_rte)->attrs->eattrs, what->a2.i );
|
||||||
|
|
||||||
if (!e) {
|
if (!e) {
|
||||||
/* A special case: undefined int_set looks like empty int_set */
|
|
||||||
if ((what->aux & EAF_TYPE_MASK) == EAF_TYPE_INT_SET) {
|
|
||||||
res.type = T_CLIST;
|
|
||||||
res.val.ad = adata_empty(f_pool);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* Undefined value */
|
/* Undefined value */
|
||||||
res.type = T_VOID;
|
res.type = T_VOID;
|
||||||
break;
|
break;
|
||||||
|
@ -821,7 +815,11 @@ interpret(struct f_inst *what)
|
||||||
|
|
||||||
case P('C','a'): /* Community list add or delete */
|
case P('C','a'): /* Community list add or delete */
|
||||||
TWOARGS;
|
TWOARGS;
|
||||||
if (v1.type != T_CLIST)
|
|
||||||
|
/* Replace undefined value with empty community list */
|
||||||
|
if (v1.type == T_VOID)
|
||||||
|
v1.val.ad = adata_empty(f_pool);
|
||||||
|
else if (v1.type != T_CLIST)
|
||||||
runtime("Can't add/delete to non-clist");
|
runtime("Can't add/delete to non-clist");
|
||||||
if (v2.type != T_PAIR)
|
if (v2.type != T_PAIR)
|
||||||
runtime("Can't add/delete non-pair");
|
runtime("Can't add/delete non-pair");
|
||||||
|
|
Loading…
Reference in a new issue