Filter: Add type info for more instructions
This commit is contained in:
parent
87512e9751
commit
10c4cd9677
1 changed files with 12 additions and 2 deletions
|
@ -226,6 +226,9 @@
|
||||||
}
|
}
|
||||||
INST(FI_AND, 1, 1) {
|
INST(FI_AND, 1, 1) {
|
||||||
ARG(1,T_BOOL);
|
ARG(1,T_BOOL);
|
||||||
|
ARG_TYPE(2,T_BOOL);
|
||||||
|
RESULT_TYPE(T_BOOL);
|
||||||
|
|
||||||
if (v1.val.i)
|
if (v1.val.i)
|
||||||
LINE(2,0);
|
LINE(2,0);
|
||||||
else
|
else
|
||||||
|
@ -233,6 +236,9 @@
|
||||||
}
|
}
|
||||||
INST(FI_OR, 1, 1) {
|
INST(FI_OR, 1, 1) {
|
||||||
ARG(1,T_BOOL);
|
ARG(1,T_BOOL);
|
||||||
|
ARG_TYPE(2,T_BOOL);
|
||||||
|
RESULT_TYPE(T_BOOL);
|
||||||
|
|
||||||
if (!v1.val.i)
|
if (!v1.val.i)
|
||||||
LINE(2,0);
|
LINE(2,0);
|
||||||
else
|
else
|
||||||
|
@ -351,6 +357,8 @@
|
||||||
INST(FI_LT, 2, 1) {
|
INST(FI_LT, 2, 1) {
|
||||||
ARG_ANY(1);
|
ARG_ANY(1);
|
||||||
ARG_ANY(2);
|
ARG_ANY(2);
|
||||||
|
ARG_SAME_TYPE(1, 2);
|
||||||
|
|
||||||
int i = val_compare(&v1, &v2);
|
int i = val_compare(&v1, &v2);
|
||||||
if (i == F_CMP_ERROR)
|
if (i == F_CMP_ERROR)
|
||||||
runtime( "Can't compare values of incompatible types" );
|
runtime( "Can't compare values of incompatible types" );
|
||||||
|
@ -360,6 +368,8 @@
|
||||||
INST(FI_LTE, 2, 1) {
|
INST(FI_LTE, 2, 1) {
|
||||||
ARG_ANY(1);
|
ARG_ANY(1);
|
||||||
ARG_ANY(2);
|
ARG_ANY(2);
|
||||||
|
ARG_SAME_TYPE(1, 2);
|
||||||
|
|
||||||
int i = val_compare(&v1, &v2);
|
int i = val_compare(&v1, &v2);
|
||||||
if (i == F_CMP_ERROR)
|
if (i == F_CMP_ERROR)
|
||||||
runtime( "Can't compare values of incompatible types" );
|
runtime( "Can't compare values of incompatible types" );
|
||||||
|
@ -807,14 +817,14 @@
|
||||||
|
|
||||||
INST(FI_AS_PATH_FIRST, 1, 1) { /* Get first ASN from AS PATH */
|
INST(FI_AS_PATH_FIRST, 1, 1) { /* Get first ASN from AS PATH */
|
||||||
ARG(1, T_PATH);
|
ARG(1, T_PATH);
|
||||||
int as = 0;
|
u32 as = 0;
|
||||||
as_path_get_first(v1.val.ad, &as);
|
as_path_get_first(v1.val.ad, &as);
|
||||||
RESULT(T_INT, i, as);
|
RESULT(T_INT, i, as);
|
||||||
}
|
}
|
||||||
|
|
||||||
INST(FI_AS_PATH_LAST, 1, 1) { /* Get last ASN from AS PATH */
|
INST(FI_AS_PATH_LAST, 1, 1) { /* Get last ASN from AS PATH */
|
||||||
ARG(1, T_PATH);
|
ARG(1, T_PATH);
|
||||||
int as = 0;
|
u32 as = 0;
|
||||||
as_path_get_last(v1.val.ad, &as);
|
as_path_get_last(v1.val.ad, &as);
|
||||||
RESULT(T_INT, i, as);
|
RESULT(T_INT, i, as);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue