mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 17:51:53 +00:00
Sorry, previous commit did not even compile.
This commit is contained in:
parent
48f9e01954
commit
8f013d9ca4
@ -184,7 +184,7 @@ pair:
|
|||||||
* Complex types, their bison value is struct f_val
|
* Complex types, their bison value is struct f_val
|
||||||
*/
|
*/
|
||||||
prefix_s:
|
prefix_s:
|
||||||
IPA '/' NUM { $$.type = T_PREFIX; $$.val.px.ip = $1; $$.val.px.len = $3; printf( "ook, we have prefix here\n" ); }
|
IPA '/' NUM { $$.type = T_PREFIX; $$.val.px.ip = $1; $$.val.px.len = $3; cf_error( "%I/%d is not really prefix\n", $$.val.px.ip, $$.val.px.len ); }
|
||||||
;
|
;
|
||||||
|
|
||||||
prefix:
|
prefix:
|
||||||
|
@ -90,7 +90,7 @@ val_simple_in_range(struct f_val v1, struct f_val v2)
|
|||||||
mask = ipa_mkmask( v2.val.px.len & LEN_MASK );
|
mask = ipa_mkmask( v2.val.px.len & LEN_MASK );
|
||||||
if (ipa_compare(ipa_and(v2.val.px.ip, mask), ipa_and(v1.val.px.ip, mask)))
|
if (ipa_compare(ipa_and(v2.val.px.ip, mask), ipa_and(v1.val.px.ip, mask)))
|
||||||
return 0;
|
return 0;
|
||||||
/* FIXME: read rpsl or better ask mj: is it really like this? */
|
|
||||||
if ((v2.val.px.len & LEN_MINUS) && (v1.val.px.len <= (v2.val.px.len & LEN_MASK)))
|
if ((v2.val.px.len & LEN_MINUS) && (v1.val.px.len <= (v2.val.px.len & LEN_MASK)))
|
||||||
return 0;
|
return 0;
|
||||||
if ((v2.val.px.len & LEN_PLUS) && (v1.val.px.len < (v2.val.px.len & LEN_MASK)))
|
if ((v2.val.px.len & LEN_PLUS) && (v1.val.px.len < (v2.val.px.len & LEN_MASK)))
|
||||||
@ -216,7 +216,6 @@ interpret(struct f_inst *what)
|
|||||||
case '<': COMPARE(i==-1);
|
case '<': COMPARE(i==-1);
|
||||||
case '<=': COMPARE(i!=1);
|
case '<=': COMPARE(i!=1);
|
||||||
|
|
||||||
/* FIXME: Should be able to work with prefixes of limited sizes */
|
|
||||||
case '~':
|
case '~':
|
||||||
TWOARGS;
|
TWOARGS;
|
||||||
res.type = T_BOOL;
|
res.type = T_BOOL;
|
||||||
@ -357,8 +356,8 @@ interpret(struct f_inst *what)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
*f_rte = rte_do_cow(*f_rte);
|
*f_rte = rte_do_cow(*f_rte);
|
||||||
l->next = *f_rte->attrs->eattrs;
|
l->next = (*f_rte)->attrs->eattrs;
|
||||||
*f_rte->attrs->eattrs = l;
|
(*f_rte)->attrs->eattrs = l;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user