| /* -*- Mode: C; tab-width: 4 -*- |
| * |
| * Copyright (c) 2006 Apple Computer, Inc. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| %{ |
| #include <string.h> |
| #include <stdio.h> |
| #include "dnsextd_parser.h" |
| |
| |
| extern YYSTYPE yylval; |
| |
| /* Mac OS X 10.4 has flex version 2.5.4, which doesn't define yylineno for us */ |
| /* Mac OS X 10.5 has flex version 2.5.33, which does define yylineno */ |
| #if YY_FLEX_MAJOR_VERSION <= 2 && YY_FLEX_MINOR_VERSION <= 5 && YY_FLEX_SUBMINOR_VERSION <= 4 |
| int yylineno = 1; |
| #endif |
| |
| int yylex(void); |
| |
| static char* |
| StripQuotes |
| ( |
| const char * string |
| ) |
| { |
| char * dup; |
| |
| dup = strdup( string + 1); |
| |
| dup[ strlen( dup ) - 1 ] = '\0'; |
| |
| return dup; |
| } |
| |
| |
| %} |
| |
| %option nounput |
| %% |
| |
| options return OPTIONS; |
| listen-on return LISTEN_ON; |
| nameserver return NAMESERVER; |
| port return PORT; |
| address return ADDRESS; |
| llq return LLQ; |
| public return PUBLIC; |
| private return PRIVATE; |
| key return KEY; |
| allow-update return ALLOWUPDATE; |
| allow-query return ALLOWQUERY; |
| algorithm return ALGORITHM; |
| secret return SECRET; |
| zone return ZONE; |
| type return TYPE; |
| allow return ALLOW; |
| \{ return OBRACE; |
| \} return EBRACE; |
| ; return SEMICOLON; |
| IN return IN; |
| \* yylval.string = strdup(yytext); return WILDCARD; |
| [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ yylval.string = strdup(yytext); return DOTTED_DECIMAL_ADDRESS; |
| [0123456789]+ yylval.number = atoi(yytext); return NUMBER; |
| [a-zA-Z0-9]+(\.[a-zA-Z0-9]+)* yylval.string = strdup(yytext); return HOSTNAME; |
| [a-zA-Z0-9\.]+([a-zA-Z0-9\.]+)* yylval.string = strdup(yytext); return DOMAINNAME; |
| \"([^"\\\r\n]*(\\.[^"\\\r\n]*)*)\" yylval.string = StripQuotes(yytext); return QUOTEDSTRING; |
| [\/][\/].* /* ignore C++ style comments */; |
| \n yylineno++; /* ignore EOL */; |
| [ \t]+ /* ignore whitespace */; |
| %% |