summaryrefslogtreecommitdiffstats
path: root/mmss/config.l
diff options
context:
space:
mode:
Diffstat (limited to 'mmss/config.l')
-rw-r--r--mmss/config.l19
1 files changed, 19 insertions, 0 deletions
diff --git a/mmss/config.l b/mmss/config.l
index f612613..4fdd346 100644
--- a/mmss/config.l
+++ b/mmss/config.l
@@ -36,6 +36,9 @@
%top {
#include <config.yy.hpp>
+
+ #include <cassert>
+ #include <cstdio>
}
%s NEEDSPACE
@@ -59,6 +62,22 @@
yes { TOKEN(TOK_YES); }
no { TOKEN(TOK_NO); }
network { TOKEN(TOK_NETWORK); }
+protocol { TOKEN(TOK_PROTOCOL); }
+node { TOKEN(TOK_NODE); }
+load { TOKEN(TOK_LOAD); }
+default { TOKEN(TOK_DEFAULT); }
+interface { TOKEN(TOK_INTERFACE); }
+address { TOKEN(TOK_ADDRESS); }
+
+([[:xdigit:]]{2}:){7}[[:xdigit:]]{2} {
+ UPDATE_LOCATION;
+
+ assert(std::sscanf(yytext, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
+ &yylval->addr.d[0], &yylval->addr.d[1], &yylval->addr.d[2], &yylval->addr.d[3],
+ &yylval->addr.d[4], &yylval->addr.d[5], &yylval->addr.d[6], &yylval->addr.d[7]) == 8);
+
+ return TOK_GMRF_ADDRESS;
+}
[;:\{\}] { UPDATE_LOCATION; return yytext[0]; }