summaryrefslogtreecommitdiff
path: root/src/cfg_scan.lex
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2010-12-03 01:40:38 +0000
committerChristian Pointner <equinox@spreadspace.org>2010-12-03 01:40:38 +0000
commite499866cde13bb04b65e4aaac4f229cd8811f7f4 (patch)
treee0a18657f6bb8b74398ec43f7bbadb949f4724c0 /src/cfg_scan.lex
parentremoved useless source address resolving type option (diff)
added config file parser
git-svn-id: https://svn.spreadspace.org/tcpproxy/trunk@24 e61f0598-a718-4e21-a8f0-0aadfa62ad6b
Diffstat (limited to 'src/cfg_scan.lex')
-rw-r--r--src/cfg_scan.lex62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/cfg_scan.lex b/src/cfg_scan.lex
new file mode 100644
index 0000000..a63490d
--- /dev/null
+++ b/src/cfg_scan.lex
@@ -0,0 +1,62 @@
+%{
+/*
+ * tcpproxy
+ *
+ * tcpproxy is a simple tcp connection proxy which combines the
+ * features of rinetd and 6tunnel. tcpproxy supports IPv4 and
+ * IPv6 and also supports connections from IPv6 to IPv4
+ * endpoints and vice versa.
+ *
+ *
+ * Copyright (C) 2010-2011 Christian Pointner <equinox@spreadspace.org>
+ *
+ * This file is part of tcpproxy.
+ *
+ * tcpproxy is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * tcpproxy is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with tcpproxy. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "cfg_parse.h"
+
+#include "tcp.h"
+
+extern int line_cnt;
+%}
+
+%option noyywrap
+
+%%
+
+\s*"#".*\n line_cnt++;
+\{ return TOK_OPEN;
+\} return TOK_CLOSE;
+\: return TOK_COLON;
+\; return TOK_SEMICOLON;
+\* return TOK_ASTERISK;
+"listen" return TOK_LISTEN;
+"resolv" return TOK_RESOLV;
+"remote" return TOK_REMOTE;
+"remote-resolv" return TOK_REMOTE_RESOLV;
+"source" return TOK_SOURCE;
+"ipv4" yylval.rtype = IPV4_ONLY; return TOK_IPV4;
+"ipv6" yylval.rtype = IPV6_ONLY; return TOK_IPV6;
+[0-9]+ yylval.string = strdup(yytext); return TOK_NUMBER;
+[0-9\.]+ yylval.string = strdup(yytext); return TOK_IPV4_ADDR;
+[0-9a-fA-F:]+ yylval.string = strdup(yytext); return TOK_IPV6_ADDR;
+[a-zA-Z0-9\-]+ yylval.string = strdup(yytext); return TOK_NAME;
+[a-zA-Z0-9\-\.]+ yylval.string = strdup(yytext); return TOK_HOSTNAME;
+\n line_cnt++;
+[ \t]+ /* ignore whitespace */;
+
+%%
+