%{ /** * A client-side 802.1x implementation supporting EAP/TLS * * This code is released under both the GPL version 2 and BSD licenses. * Either license may be used. The respective licenses are found below. * * Copyright (C) 2002 Bryan D. Payne & Nick L. Petroni Jr. * All Rights Reserved * * --- GPL Version 2 License --- * This program 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 2 * of the License, or (at your option) any later version. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * --- BSD License --- * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * Maryland at College Park and its contributors. * - Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ /******************************************************************* * Tokens for configuration file * * File: config_lex.l * * Authors: bdpayne@cs.umd.edu, npetroni@cs.umd.edu * * $Id: config_lex.l,v 1.6 2003/03/11 00:13:08 npetroni Exp $ * $Date: 2003/03/11 00:13:08 $ * $Log: config_lex.l,v $ * Revision 1.6 2003/03/11 00:13:08 npetroni * allow number-only ssids * * Revision 1.5 2003/03/11 00:03:16 npetroni * added "\" as a valid username character * * Revision 1.4 2003/03/04 07:11:52 npetroni * cleaned up some configuration parsing issues, modifed the test config * * Revision 1.3 2003/03/04 06:10:08 npetroni * changes to allow a program to be run after successful authentication * * Revision 1.2 2003/03/02 06:40:24 npetroni * -allow @ symbol in identities in config_lex.l * -added error checking in eap.c to test if there is a valid id before * building idrsp * * Revision 1.1 2003/03/01 06:55:39 npetroni * modified config parse to use lex and yacc for parsing. this may break stuff temporarily, but is good in the long run * * * *******************************************************************/ #include #include #include #include "config_grammar.h" int config_linenum = 0; const char *config_fname; %} %% "id" { return TK_ID; } "cert" { return TK_CERT; } "key" { return TK_KEY; } "root" { return TK_ROOT; } "auth" { return TK_AUTH; } "first_auth" { return TK_FIRST_AUTH; } "after_auth" { return TK_AFTER_AUTH; } "type" { return TK_TYPE; } "pref" { return TK_PREF; } "chunk_size" { return TK_CHUNK_SIZE; } "random_file" { return TK_RAND_FILE; } "=" { return yytext[0]; } ":" { return yytext[0]; } [0123456789]+ { yylval.str = strdup(yytext); return TK_NUMBER; } [/_\\\.@\-[:alnum:]]+ { yylval.str = strdup(yytext); return TK_STRING; } "\"/".*"\"" { yylval.str = strdup(yytext+1); yylval.str[strlen(yylval.str)-1]= '\0'; return TK_COMMAND; } "#".* /* skip comments */ [ \t]+ /* de nada */ \n { config_linenum++; } %% int yywrap(void) { return 1; } int yyerror(char *e) { fprintf(stderr, "Error %s, %d: %s\n", config_fname, config_linenum, e); return 0; }