diff options
author | Christian Pointner <equinox@spreadspace.org> | 2010-12-03 01:40:38 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2010-12-03 01:40:38 +0000 |
commit | e499866cde13bb04b65e4aaac4f229cd8811f7f4 (patch) | |
tree | e0a18657f6bb8b74398ec43f7bbadb949f4724c0 /src/cfg_scan.lex | |
parent | removed 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.lex | 62 |
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 */; + +%% + |