summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Filip <feela@majklik.network.cz>2010-02-10 12:30:14 +0100
committerOndrej Filip <feela@majklik.network.cz>2010-02-10 12:30:14 +0100
commit0efd646278987df023586d85817a848c2bb39a1d (patch)
tree8449b708c020405f3c6d829288b652531e9ae9c7
parentc27b2449d1f57e780974ed13fbd572a48e2a3602 (diff)
Define symbols as text between ''.
-rw-r--r--conf/cf-lex.l6
-rw-r--r--doc/bird.conf.example3
-rw-r--r--filter/test.conf12
3 files changed, 14 insertions, 7 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index c68a42e4..04b0c604 100644
--- a/conf/cf-lex.l
+++ b/conf/cf-lex.l
@@ -131,7 +131,11 @@ WHITE [ \t]
return NUM;
}
-{ALPHA}{ALNUM}* {
+({ALPHA}{ALNUM}*|[']({ALNUM}|[-])*[']) {
+ if(*yytext == '\'') {
+ yytext[yyleng-1] = 0;
+ yytext++;
+ }
unsigned int h = cf_hash(yytext);
struct keyword *k = kw_hash[h & (KW_HASH_SIZE-1)];
while (k)
diff --git a/doc/bird.conf.example b/doc/bird.conf.example
index 6ab03a23..51b2c0ec 100644
--- a/doc/bird.conf.example
+++ b/doc/bird.conf.example
@@ -13,7 +13,8 @@
#router id 62.168.0.1;
# You can define your own symbols...
-#define xyzzy = 120+10;
+#define xyzzy = (120+10);
+#define '1a-a1' = (30+40);
# Define a route filter...
filter test_filter {
diff --git a/filter/test.conf b/filter/test.conf
index 2e828633..fb35afbe 100644
--- a/filter/test.conf
+++ b/filter/test.conf
@@ -8,9 +8,10 @@
router id 62.168.0.1;
define xyzzy = (120+10);
+define '1a-a1' = (20+10);
-function mkpair(int a)
+function 'mkpair-a'(int a)
{
return (1, a);
}
@@ -132,7 +133,8 @@ pair pp;
int set is;
prefix set pxs;
string s;
-{
+{
+ print "1a-a1 = 30: ", '1a-a1';
print "Testing filter language:";
i = four;
i = 12*100 + 60/2 + i;
@@ -149,9 +151,9 @@ string s;
is = [ 2, 3, 4, 7..11 ];
print " must be true: ", 1.2.0.0/16 ~ [ 1.0.0.0/8{ 15 , 17 } ];
print " data types; must be true: ", 1.2.3.4 = 1.2.3.4, ",", 1 ~ [1,2,3], ",", 5 ~ [1..20], ",", 10 ~ is, ",", 2 ~ [ 1, 2, 3 ], ",", 5 ~ [ 4 .. 7 ], ",", 1.2.3.4 ~ [ 1.2.3.3..1.2.3.5 ], ",", 1.2.3.4 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ [ 1.0.0.0/8+ ];
- print " must be true: ", true && true, ",", true || false, ",", ! false && ! false && true, ",", 1 < 2 && 1 != 3;
+ print " must be true: ", true && true, ",", true || false, ",", ! false && ! false && true, ",", 1 < 2 && 1 != 3, ",", true && true && ! false;
-# print " must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2;
+ print " must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2;
print " data types: must be false: ", 1 ~ [ 2, 3, 4 ], ",", 5 ~ is, ",", 1.2.3.4 ~ [ 1.2.3.3, 1.2.3.5 ], ",", (1,2) > (2,2), ",", (1,1) > (1,1), ",", 1.0.0.0/9 ~ [ 1.0.0.0/8- ], ",", 1.2.0.0/17 ~ [ 1.0.0.0/8{ 15 , 16 } ], ",", true && false;
px = 1.2.0.0/18;
@@ -163,7 +165,7 @@ string s;
print "Testing mask : 127.0.0.0 = ", p.mask(8);
pp = (1, 2);
- print "Testing pairs: (1,2) = ", (1,2), " = ", pp, " = ", (1,1+1), " = ", mkpair(2);
+ print "Testing pairs: (1,2) = ", (1,2), " = ", pp, " = ", (1,1+1), " = ", 'mkpair-a'(2);
print " must be true: ", (1,2) = (1,1+1);
print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;