From e499866cde13bb04b65e4aaac4f229cd8811f7f4 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 3 Dec 2010 01:40:38 +0000 Subject: added config file parser git-svn-id: https://svn.spreadspace.org/tcpproxy/trunk@24 e61f0598-a718-4e21-a8f0-0aadfa62ad6b --- src/cfg_scan.lex | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/cfg_scan.lex (limited to 'src/cfg_scan.lex') 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 + * + * 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 . + */ + +#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 */; + +%% + -- cgit v1.2.3