1aa772005SRobert Watson %{ 2aa772005SRobert Watson /*- 3aa772005SRobert Watson * Copyright (c) 2012 The FreeBSD Foundation 4aa772005SRobert Watson * All rights reserved. 5aa772005SRobert Watson * 6aa772005SRobert Watson * This software was developed by Pawel Jakub Dawidek under sponsorship from 7aa772005SRobert Watson * the FreeBSD Foundation. 8aa772005SRobert Watson * 9aa772005SRobert Watson * Redistribution and use in source and binary forms, with or without 10aa772005SRobert Watson * modification, are permitted provided that the following conditions 11aa772005SRobert Watson * are met: 12aa772005SRobert Watson * 1. Redistributions of source code must retain the above copyright 13aa772005SRobert Watson * notice, this list of conditions and the following disclaimer. 14aa772005SRobert Watson * 2. Redistributions in binary form must reproduce the above copyright 15aa772005SRobert Watson * notice, this list of conditions and the following disclaimer in the 16aa772005SRobert Watson * documentation and/or other materials provided with the distribution. 17aa772005SRobert Watson * 18aa772005SRobert Watson * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 19aa772005SRobert Watson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20aa772005SRobert Watson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21aa772005SRobert Watson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 22aa772005SRobert Watson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23aa772005SRobert Watson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24aa772005SRobert Watson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25aa772005SRobert Watson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26aa772005SRobert Watson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27aa772005SRobert Watson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28aa772005SRobert Watson * SUCH DAMAGE. 29aa772005SRobert Watson */ 30aa772005SRobert Watson 31aa772005SRobert Watson #include <config/config.h> 32aa772005SRobert Watson 33aa772005SRobert Watson #include <stdio.h> 34aa772005SRobert Watson #include <string.h> 35aa772005SRobert Watson 36aa772005SRobert Watson #ifndef HAVE_STRNDUP 37aa772005SRobert Watson #include "strndup.h" 38aa772005SRobert Watson #endif 39aa772005SRobert Watson 40aa772005SRobert Watson #include "auditdistd.h" 41aa772005SRobert Watson 42aa772005SRobert Watson #include "parse.h" 43aa772005SRobert Watson 44aa772005SRobert Watson #define SECTION_GLOBAL 0 45aa772005SRobert Watson #define SECTION_SENDER 1 46aa772005SRobert Watson #define SECTION_RECEIVER 2 47aa772005SRobert Watson 48aa772005SRobert Watson int cursection; 49aa772005SRobert Watson int depth; 50aa772005SRobert Watson int lineno; 51aa772005SRobert Watson 52aa772005SRobert Watson #define DP do { } while (0) 53*9c5a52cfSJung-uk Kim #define YY_DECL int yylex(void) 54aa772005SRobert Watson %} 55aa772005SRobert Watson 56aa772005SRobert Watson %option noinput 57aa772005SRobert Watson %option nounput 58aa772005SRobert Watson %option noyywrap 59aa772005SRobert Watson 60aa772005SRobert Watson %% 61aa772005SRobert Watson certfile { DP; return CERTFILE; } 62aa772005SRobert Watson directory { DP; return DIRECTORY; } 63aa772005SRobert Watson fingerprint { DP; return FINGERPRINT; } 64aa772005SRobert Watson host { DP; return HOST; } 65aa772005SRobert Watson keyfile { DP; return KEYFILE; } 66aa772005SRobert Watson listen { DP; return LISTEN; } 67aa772005SRobert Watson name { DP; return NAME; } 68aa772005SRobert Watson password { DP; return PASSWORD; } 69aa772005SRobert Watson pidfile { DP; return PIDFILE; } 70aa772005SRobert Watson receiver { DP; return RECEIVER; } 71aa772005SRobert Watson remote { DP; return REMOTE; } 72aa772005SRobert Watson sender { DP; return SENDER; } 73aa772005SRobert Watson source { DP; return SOURCE; } 74aa772005SRobert Watson timeout { DP; return TIMEOUT; } 75aa772005SRobert Watson [0-9]+ { DP; yylval.num = atoi(yytext); return NUM; } 767e46ff5fSPawel Jakub Dawidek \"[a-zA-Z0-9_/ !@#\$%\^\&\*\(\)\+\=\|\;\?\,\.\[\]\-\:]*\" { DP; yylval.str = strndup(yytext + 1, strlen(yytext) - 2); return STR; } 77aa772005SRobert Watson \{ { DP; depth++; return OB; } 78aa772005SRobert Watson \} { DP; depth--; return CB; } 79aa772005SRobert Watson #.*$ /* ignore comments */; 80aa772005SRobert Watson \n { lineno++; } 81aa772005SRobert Watson [ \t]+ /* ignore whitespace */; 82aa772005SRobert Watson %% 83