1c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh/* $NetBSD: cftoken.l,v 1.11.4.2 2007/09/03 18:07:29 mgrooms Exp $ */ 20a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 30a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* Id: cftoken.l,v 1.53 2006/08/22 18:17:17 manubsd Exp */ 40a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 50a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%{ 60a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 70a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 and 2003 WIDE Project. 80a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * All rights reserved. 90a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Redistribution and use in source and binary forms, with or without 110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * modification, are permitted provided that the following conditions 120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * are met: 130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 1. Redistributions of source code must retain the above copyright 140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * notice, this list of conditions and the following disclaimer. 150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 2. Redistributions in binary form must reproduce the above copyright 160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * notice, this list of conditions and the following disclaimer in the 170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * documentation and/or other materials provided with the distribution. 180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 3. Neither the name of the project nor the names of its contributors 190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * may be used to endorse or promote products derived from this software 200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * without specific prior written permission. 210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * SUCH DAMAGE. 330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang */ 340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "config.h" 360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/types.h> 380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/param.h> 390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/socket.h> 400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <netinet/in.h> 420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include PATH_IPSEC_H 430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <stdlib.h> 450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <stdio.h> 460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <string.h> 470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <errno.h> 480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <limits.h> 490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <ctype.h> 500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <glob.h> 510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_STDARG_H 520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <stdarg.h> 530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <varargs.h> 550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "var.h" 580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "misc.h" 590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "vmbuf.h" 600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "plog.h" 610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "debug.h" 620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "algorithm.h" 640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "cfparse_proto.h" 650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "cftoken_proto.h" 660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "localconf.h" 670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "oakley.h" 680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "isakmp_var.h" 690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "isakmp.h" 700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "ipsec_doi.h" 710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "policy.h" 720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "proposal.h" 730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "remoteconf.h" 740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef GC 750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "gcmalloc.h" 760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "cfparse.h" 790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangint yyerrorcount = 0; 810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#if defined(YIPS_DEBUG) 830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang# define YYDB plog(LLV_DEBUG2, LOCATION, NULL, \ 840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang "begin <%d>%s\n", yy_start, yytext); 850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang# define YYD { \ 860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plog(LLV_DEBUG2, LOCATION, NULL, "<%d>%s", \ 870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_start, loglevel >= LLV_DEBUG2 ? "\n" : ""); \ 880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang# define YYDB 910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang# define YYD 920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif /* defined(YIPS_DEBUG) */ 930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define MAX_INCLUDE_DEPTH 10 950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct include_stack { 970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *path; 980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang FILE *fp; 990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YY_BUFFER_STATE prevstate; 1000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang int lineno; 1010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang glob_t matches; 1020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang int matchon; 1030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} incstack[MAX_INCLUDE_DEPTH]; 1040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic int incstackp = 0; 1050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic int yy_first_time = 1; 1070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%} 1080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* common seciton */ 1100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangnl \n 1110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangws [ \t]+ 1120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdigit [0-9] 1130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangletter [A-Za-z] 1140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghexdigit [0-9A-Fa-f] 1150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/*octet (([01]?{digit}?{digit})|((2([0-4]{digit}))|(25[0-5]))) */ 1160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangspecial [()+\|\?\*] 1170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangcomma \, 1180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdot \. 1190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangslash \/ 1200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangbcl \{ 1210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangecl \} 1220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangblcl \[ 1230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangelcl \] 1240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghyphen \- 1250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangpercent \% 1260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsemi \; 1270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangcomment \#.* 1280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangccomment "/*" 1290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangbracketstring \<[^>]*\> 1300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangquotedstring \"[^"]*\" 1310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangaddrstring [a-fA-F0-9:]([a-fA-F0-9:\.]*|[a-fA-F0-9:\.]*%[a-zA-Z0-9]*) 1320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdecstring {digit}+ 1330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghexstring 0x{hexdigit}+ 1340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 135c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh%s S_INI S_PRIV S_PTH S_INF S_LOG S_PAD S_LST S_RTRY S_CFG S_LDAP 1360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%s S_ALGST S_ALGCL 1370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%s S_SAINF S_SAINFS 1380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%s S_RMT S_RMTS S_RMTP 1390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%s S_SA 1400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%s S_GSSENC 1410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%% 1430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%{ 1440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yy_first_time) { 1450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang BEGIN S_INI; 1460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_first_time = 0; 1470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 1480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%} 1490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* privsep */ 1510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>privsep { BEGIN S_PRIV; YYDB; return(PRIVSEP); } 1520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PRIV>{bcl} { return(BOC); } 1530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PRIV>user { YYD; return(USER); } 1540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PRIV>group { YYD; return(GROUP); } 1550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PRIV>chroot { YYD; return(CHROOT); } 1560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PRIV>{ecl} { BEGIN S_INI; return(EOC); } 1570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* path */ 1590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>path { BEGIN S_PTH; YYDB; return(PATH); } 1600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>include { YYD; yylval.num = LC_PATHTYPE_INCLUDE; 1610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>pre_shared_key { YYD; yylval.num = LC_PATHTYPE_PSK; 1630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>certificate { YYD; yylval.num = LC_PATHTYPE_CERT; 1650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>script { YYD; yylval.num = LC_PATHTYPE_SCRIPT; 1670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>backupsa { YYD; yylval.num = LC_PATHTYPE_BACKUPSA; 1690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>pidfile { YYD; yylval.num = LC_PATHTYPE_PIDFILE; 1710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PATHTYPE); } 1720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PTH>{semi} { BEGIN S_INI; YYDB; return(EOS); } 1730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* include */ 1750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>include { YYDB; return(INCLUDE); } 1760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 177c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh /* self information */ 178c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_INI>identifier { BEGIN S_INF; YYDB; yywarn("it is obsoleted. use \"my_identifier\" in each remote directives."); return(IDENTIFIER); } 179c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_INF>{semi} { BEGIN S_INI; return(EOS); } 1800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* special */ 1820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>complex_bundle { YYDB; return(COMPLEX_BUNDLE); } 1830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* logging */ 1850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>log { BEGIN S_LOG; YYDB; return(LOGGING); } 1860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>error { YYD; yylval.num = LLV_ERROR; return(LOGLEV); } 1870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>warning { YYD; yylval.num = LLV_WARNING; return(LOGLEV); } 1880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>notify { YYD; yylval.num = LLV_NOTIFY; return(LOGLEV); } 1890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>info { YYD; yylval.num = LLV_INFO; return(LOGLEV); } 1900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>debug { YYD; yylval.num = LLV_DEBUG; return(LOGLEV); } 1910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>debug2 { YYD; yylval.num = LLV_DEBUG2; return(LOGLEV); } 192c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_LOG>debug3 { YYD; yywarn("it is obsoleted. use \"debug2\""); yylval.num = LLV_DEBUG2; return(LOGLEV); } 193c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_LOG>debug4 { YYD; yywarn("it is obsoleted. use \"debug2\""); yylval.num = LLV_DEBUG2; return(LOGLEV); } 1940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LOG>{semi} { BEGIN S_INI; return(EOS); } 1950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 1960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* padding */ 1970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>padding { BEGIN S_PAD; YYDB; return(PADDING); } 1980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>{bcl} { return(BOC); } 1990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>randomize { YYD; return(PAD_RANDOMIZE); } 2000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>randomize_length { YYD; return(PAD_RANDOMIZELEN); } 2010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>maximum_length { YYD; return(PAD_MAXLEN); } 2020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>strict_check { YYD; return(PAD_STRICT); } 2030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>exclusive_tail { YYD; return(PAD_EXCLTAIL); } 2040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_PAD>{ecl} { BEGIN S_INI; return(EOC); } 2050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 2060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* listen */ 2070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>listen { BEGIN S_LST; YYDB; return(LISTEN); } 2080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>{bcl} { return(BOC); } 2090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>isakmp { YYD; return(X_ISAKMP); } 2100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>isakmp_natt { YYD; return(X_ISAKMP_NATT); } 2110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>admin { YYD; return(X_ADMIN); } 2120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>adminsock { YYD; return(ADMINSOCK); } 2130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>disabled { YYD; return(DISABLED); } 2140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>strict_address { YYD; return(STRICT_ADDRESS); } 2150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LST>{ecl} { BEGIN S_INI; return(EOC); } 2160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 2170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* ldap config */ 2180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>ldapcfg { BEGIN S_LDAP; YYDB; return(LDAPCFG); } 2190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>{bcl} { return(BOC); } 2200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>version { YYD; return(LDAP_PVER); } 2210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>host { YYD; return(LDAP_HOST); } 2220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>port { YYD; return(LDAP_PORT); } 2230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>base { YYD; return(LDAP_BASE); } 2240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>subtree { YYD; return(LDAP_SUBTREE); } 2250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>bind_dn { YYD; return(LDAP_BIND_DN); } 2260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>bind_pw { YYD; return(LDAP_BIND_PW); } 2270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>attr_user { YYD; return(LDAP_ATTR_USER); } 2280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>attr_addr { YYD; return(LDAP_ATTR_ADDR); } 2290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>attr_mask { YYD; return(LDAP_ATTR_MASK); } 2300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>attr_group { YYD; return(LDAP_ATTR_GROUP); } 2310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>attr_member { YYD; return(LDAP_ATTR_MEMBER); } 2320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_LDAP>{ecl} { BEGIN S_INI; return(EOC); } 2330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 2340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* mode_cfg */ 2350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>mode_cfg { BEGIN S_CFG; YYDB; return(MODECFG); } 2360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>{bcl} { return(BOC); } 2370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>network4 { YYD; return(CFG_NET4); } 2380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>netmask4 { YYD; return(CFG_MASK4); } 2390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>dns4 { YYD; return(CFG_DNS4); } 2400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>nbns4 { YYD; return(CFG_NBNS4); } 2410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>wins4 { YYD; return(CFG_NBNS4); } 2420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>default_domain { YYD; return(CFG_DEFAULT_DOMAIN); } 2430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>auth_source { YYD; return(CFG_AUTH_SOURCE); } 2440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>auth_groups { YYD; return(CFG_AUTH_GROUPS); } 2450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>group_source { YYD; return(CFG_GROUP_SOURCE); } 2460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>conf_source { YYD; return(CFG_CONF_SOURCE); } 2470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>accounting { YYD; return(CFG_ACCOUNTING); } 2480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>system { YYD; return(CFG_SYSTEM); } 2490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>local { YYD; return(CFG_LOCAL); } 2500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>none { YYD; return(CFG_NONE); } 2510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>radius { YYD; return(CFG_RADIUS); } 2520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>pam { YYD; return(CFG_PAM); } 2530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>ldap { YYD; return(CFG_LDAP); } 2540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>pool_size { YYD; return(CFG_POOL_SIZE); } 2550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>banner { YYD; return(CFG_MOTD); } 2560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>auth_throttle { YYD; return(CFG_AUTH_THROTTLE); } 2570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>split_network { YYD; return(CFG_SPLIT_NETWORK); } 2580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>local_lan { YYD; return(CFG_SPLIT_LOCAL); } 2590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>include { YYD; return(CFG_SPLIT_INCLUDE); } 2600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>split_dns { YYD; return(CFG_SPLIT_DNS); } 2610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>pfs_group { YYD; return(CFG_PFS_GROUP); } 2620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>save_passwd { YYD; return(CFG_SAVE_PASSWD); } 2630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>{comma} { YYD; return(COMMA); } 2640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_CFG>{ecl} { BEGIN S_INI; return(EOC); } 2650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 2660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* timer */ 2670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>timer { BEGIN S_RTRY; YYDB; return(RETRY); } 2680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>{bcl} { return(BOC); } 2690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>counter { YYD; return(RETRY_COUNTER); } 2700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>interval { YYD; return(RETRY_INTERVAL); } 2710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>persend { YYD; return(RETRY_PERSEND); } 2720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>phase1 { YYD; return(RETRY_PHASE1); } 2730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>phase2 { YYD; return(RETRY_PHASE2); } 2740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>natt_keepalive { YYD; return(NATT_KA); } 2750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RTRY>{ecl} { BEGIN S_INI; return(EOC); } 2760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 2770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* sainfo */ 2780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>sainfo { BEGIN S_SAINF; YYDB; return(SAINFO); } 2790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>anonymous { YYD; return(ANONYMOUS); } 2800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>{blcl}any{elcl} { YYD; return(PORTANY); } 2810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>any { YYD; return(ANY); } 2820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>from { YYD; return(FROM); } 2830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>group { YYD; return(GROUP); } 2840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* sainfo spec */ 2850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>{bcl} { BEGIN S_SAINFS; return(BOC); } 2860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINF>{semi} { BEGIN S_INI; return(EOS); } 2870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>{ecl} { BEGIN S_INI; return(EOC); } 2880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>pfs_group { YYD; return(PFS_GROUP); } 2890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>remoteid { YYD; return(REMOTEID); } 290c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_SAINFS>identifier { YYD; yywarn("it is obsoleted. use \"my_identifier\"."); return(IDENTIFIER); } 2910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>my_identifier { YYD; return(MY_IDENTIFIER); } 2920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>lifetime { YYD; return(LIFETIME); } 2930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>time { YYD; return(LIFETYPE_TIME); } 2940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>byte { YYD; return(LIFETYPE_BYTE); } 2950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>encryption_algorithm { YYD; yylval.num = algclass_ipsec_enc; return(ALGORITHM_CLASS); } 2960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>authentication_algorithm { YYD; yylval.num = algclass_ipsec_auth; return(ALGORITHM_CLASS); } 2970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>compression_algorithm { YYD; yylval.num = algclass_ipsec_comp; return(ALGORITHM_CLASS); } 2980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_SAINFS>{comma} { YYD; return(COMMA); } 2990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 3000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* remote */ 3010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>remote { BEGIN S_RMT; YYDB; return(REMOTE); } 3020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMT>anonymous { YYD; return(ANONYMOUS); } 3030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMT>inherit { YYD; return(INHERIT); } 3040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* remote spec */ 3050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMT>{bcl} { BEGIN S_RMTS; return(BOC); } 3060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>{ecl} { BEGIN S_INI; return(EOC); } 3070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>exchange_mode { YYD; return(EXCHANGE_MODE); } 3080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>{comma} { YYD; /* XXX ignored, but to be handled. */ ; } 3090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>base { YYD; yylval.num = ISAKMP_ETYPE_BASE; return(EXCHANGETYPE); } 3100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>main { YYD; yylval.num = ISAKMP_ETYPE_IDENT; return(EXCHANGETYPE); } 3110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>aggressive { YYD; yylval.num = ISAKMP_ETYPE_AGG; return(EXCHANGETYPE); } 3120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>doi { YYD; return(DOI); } 3130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>ipsec_doi { YYD; yylval.num = IPSEC_DOI; return(DOITYPE); } 3140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>situation { YYD; return(SITUATION); } 3150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>identity_only { YYD; yylval.num = IPSECDOI_SIT_IDENTITY_ONLY; return(SITUATIONTYPE); } 3160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>secrecy { YYD; yylval.num = IPSECDOI_SIT_SECRECY; return(SITUATIONTYPE); } 3170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>integrity { YYD; yylval.num = IPSECDOI_SIT_INTEGRITY; return(SITUATIONTYPE); } 318c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_RMTS>identifier { YYD; yywarn("it is obsoleted. use \"my_identifier\"."); return(IDENTIFIER); } 3190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>my_identifier { YYD; return(MY_IDENTIFIER); } 3200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>xauth_login { YYD; return(XAUTH_LOGIN); /* formerly identifier type login */ } 3210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>peers_identifier { YYD; return(PEERS_IDENTIFIER); } 3220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>verify_identifier { YYD; return(VERIFY_IDENTIFIER); } 3230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>certificate_type { YYD; return(CERTIFICATE_TYPE); } 3240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>ca_type { YYD; return(CA_TYPE); } 3250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>x509 { YYD; yylval.num = ISAKMP_CERT_X509SIGN; return(CERT_X509); } 3260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>plain_rsa { YYD; yylval.num = ISAKMP_CERT_PLAINRSA; return(CERT_PLAINRSA); } 3270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>peers_certfile { YYD; return(PEERS_CERTFILE); } 3280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dnssec { YYD; return(DNSSEC); } 3290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>verify_cert { YYD; return(VERIFY_CERT); } 3300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>send_cert { YYD; return(SEND_CERT); } 3310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>send_cr { YYD; return(SEND_CR); } 3320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dh_group { YYD; return(DH_GROUP); } 3330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>nonce_size { YYD; return(NONCE_SIZE); } 3340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>generate_policy { YYD; return(GENERATE_POLICY); } 3350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>unique { YYD; yylval.num = GENERATE_POLICY_UNIQUE; return(GENERATE_LEVEL); } 3360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>require { YYD; yylval.num = GENERATE_POLICY_REQUIRE; return(GENERATE_LEVEL); } 337c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh<S_RMTS>support_mip6 { YYD; yywarn("it is obsoleted. use \"support_proxy\"."); return(SUPPORT_PROXY); } 3380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>support_proxy { YYD; return(SUPPORT_PROXY); } 3390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>initial_contact { YYD; return(INITIAL_CONTACT); } 3400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>nat_traversal { YYD; return(NAT_TRAVERSAL); } 3410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>force { YYD; return(REMOTE_FORCE_LEVEL); } 3420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>proposal_check { YYD; return(PROPOSAL_CHECK); } 3430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>obey { YYD; yylval.num = PROP_CHECK_OBEY; return(PROPOSAL_CHECK_LEVEL); } 3440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>strict { YYD; yylval.num = PROP_CHECK_STRICT; return(PROPOSAL_CHECK_LEVEL); } 3450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>exact { YYD; yylval.num = PROP_CHECK_EXACT; return(PROPOSAL_CHECK_LEVEL); } 3460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>claim { YYD; yylval.num = PROP_CHECK_CLAIM; return(PROPOSAL_CHECK_LEVEL); } 3470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>keepalive { YYD; return(KEEPALIVE); } 3480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>passive { YYD; return(PASSIVE); } 3490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>lifetime { YYD; return(LIFETIME); } 3500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>time { YYD; return(LIFETYPE_TIME); } 3510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>byte { YYD; return(LIFETYPE_BYTE); } 3520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dpd { YYD; return(DPD); } 3530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dpd_delay { YYD; return(DPD_DELAY); } 3540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dpd_retry { YYD; return(DPD_RETRY); } 3550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>dpd_maxfail { YYD; return(DPD_MAXFAIL); } 3560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>ph1id { YYD; return(PH1ID); } 3570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>ike_frag { YYD; return(IKE_FRAG); } 3580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>esp_frag { YYD; return(ESP_FRAG); } 3590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>script { YYD; return(SCRIPT); } 3600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>phase1_up { YYD; return(PHASE1_UP); } 3610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>phase1_down { YYD; return(PHASE1_DOWN); } 3620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>mode_cfg { YYD; return(MODE_CFG); } 3630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>weak_phase1_check { YYD; return(WEAK_PHASE1_CHECK); } 3640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* remote proposal */ 3650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTS>proposal { BEGIN S_RMTP; YYDB; return(PROPOSAL); } 3660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>{bcl} { return(BOC); } 3670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>{ecl} { BEGIN S_RMTS; return(EOC); } 3680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>lifetime { YYD; return(LIFETIME); } 3690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>time { YYD; return(LIFETYPE_TIME); } 3700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>byte { YYD; return(LIFETYPE_BYTE); } 3710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>encryption_algorithm { YYD; yylval.num = algclass_isakmp_enc; return(ALGORITHM_CLASS); } 3720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>authentication_method { YYD; yylval.num = algclass_isakmp_ameth; return(ALGORITHM_CLASS); } 3730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>hash_algorithm { YYD; yylval.num = algclass_isakmp_hash; return(ALGORITHM_CLASS); } 3740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>dh_group { YYD; return(DH_GROUP); } 3750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>gss_id { YYD; return(GSS_ID); } 3760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_RMTP>gssapi_id { YYD; return(GSS_ID); } /* for back compatibility */ 3770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 3780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* GSS ID encoding type (global) */ 3790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_INI>gss_id_enc { BEGIN S_GSSENC; YYDB; return(GSS_ID_ENC); } 3800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_GSSENC>latin1 { YYD; yylval.num = LC_GSSENC_LATIN1; 3810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(GSS_ID_ENCTYPE); } 3820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_GSSENC>utf-16le { YYD; yylval.num = LC_GSSENC_UTF16LE; 3830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(GSS_ID_ENCTYPE); } 3840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<S_GSSENC>{semi} { BEGIN S_INI; YYDB; return(EOS); } 3850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 3860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* parameter */ 3870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangon { YYD; yylval.num = TRUE; return(SWITCH); } 3880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangoff { YYD; yylval.num = FALSE; return(SWITCH); } 3890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 3900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* prefix */ 3910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{slash}{digit}{1,3} { 3920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 3930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yytext++; 3940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.num = atoi(yytext); 3950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PREFIX); 3960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 3970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 3980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* port number */ 3990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{blcl}{decstring}{elcl} { 4000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *p = yytext; 4010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 4020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang while (*++p != ']') ; 4030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *p = 0; 4040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yytext++; 4050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.num = atoi(yytext); 4060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(PORT); 4070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 4080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 4090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* address range */ 4100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{hyphen}{addrstring} { 4110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 4120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yytext++; 4130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.val = vmalloc(yyleng + 1); 4140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yylval.val == NULL) { 4150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("vmalloc failed"); 4160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 4170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 4180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang memcpy(yylval.val->v, yytext, yylval.val->l); 4190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(ADDRRANGE); 4200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 4210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 4220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* upper protocol */ 4230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangesp { YYD; yylval.num = IPPROTO_ESP; return(UL_PROTO); } 4240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangah { YYD; yylval.num = IPPROTO_AH; return(UL_PROTO); } 4250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangipcomp { YYD; yylval.num = IPPROTO_IPCOMP; return(UL_PROTO); } 4260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangicmp { YYD; yylval.num = IPPROTO_ICMP; return(UL_PROTO); } 4270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangicmp6 { YYD; yylval.num = IPPROTO_ICMPV6; return(UL_PROTO); } 4280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangtcp { YYD; yylval.num = IPPROTO_TCP; return(UL_PROTO); } 4290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangudp { YYD; yylval.num = IPPROTO_UDP; return(UL_PROTO); } 4300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 4310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* algorithm type */ 4320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdes_iv64 { YYD; yylval.num = algtype_des_iv64; return(ALGORITHMTYPE); } 4330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdes { YYD; yylval.num = algtype_des; return(ALGORITHMTYPE); } 4340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang3des { YYD; yylval.num = algtype_3des; return(ALGORITHMTYPE); } 4350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrc5 { YYD; yylval.num = algtype_rc5; return(ALGORITHMTYPE); } 4360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangidea { YYD; yylval.num = algtype_idea; return(ALGORITHMTYPE); } 4370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangcast128 { YYD; yylval.num = algtype_cast128; return(ALGORITHMTYPE); } 4380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangblowfish { YYD; yylval.num = algtype_blowfish; return(ALGORITHMTYPE); } 4390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang3idea { YYD; yylval.num = algtype_3idea; return(ALGORITHMTYPE); } 4400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdes_iv32 { YYD; yylval.num = algtype_des_iv32; return(ALGORITHMTYPE); } 4410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrc4 { YYD; yylval.num = algtype_rc4; return(ALGORITHMTYPE); } 4420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangnull_enc { YYD; yylval.num = algtype_null_enc; return(ALGORITHMTYPE); } 4430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangnull { YYD; yylval.num = algtype_null_enc; return(ALGORITHMTYPE); } 4440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangaes { YYD; yylval.num = algtype_aes; return(ALGORITHMTYPE); } 4450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrijndael { YYD; yylval.num = algtype_aes; return(ALGORITHMTYPE); } 4460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangtwofish { YYD; yylval.num = algtype_twofish; return(ALGORITHMTYPE); } 4470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangcamellia { YYD; yylval.num = algtype_camellia; return(ALGORITHMTYPE); } 4480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangnon_auth { YYD; yylval.num = algtype_non_auth; return(ALGORITHMTYPE); } 4490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_md5 { YYD; yylval.num = algtype_hmac_md5; return(ALGORITHMTYPE); } 4500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha1 { YYD; yylval.num = algtype_hmac_sha1; return(ALGORITHMTYPE); } 4510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha2_256 { YYD; yylval.num = algtype_hmac_sha2_256; return(ALGORITHMTYPE); } 4520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha256 { YYD; yylval.num = algtype_hmac_sha2_256; return(ALGORITHMTYPE); } 4530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha2_384 { YYD; yylval.num = algtype_hmac_sha2_384; return(ALGORITHMTYPE); } 4540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha384 { YYD; yylval.num = algtype_hmac_sha2_384; return(ALGORITHMTYPE); } 4550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha2_512 { YYD; yylval.num = algtype_hmac_sha2_512; return(ALGORITHMTYPE); } 4560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghmac_sha512 { YYD; yylval.num = algtype_hmac_sha2_512; return(ALGORITHMTYPE); } 4570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdes_mac { YYD; yylval.num = algtype_des_mac; return(ALGORITHMTYPE); } 4580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangkpdk { YYD; yylval.num = algtype_kpdk; return(ALGORITHMTYPE); } 4590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmd5 { YYD; yylval.num = algtype_md5; return(ALGORITHMTYPE); } 4600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha1 { YYD; yylval.num = algtype_sha1; return(ALGORITHMTYPE); } 4610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangtiger { YYD; yylval.num = algtype_tiger; return(ALGORITHMTYPE); } 4620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha2_256 { YYD; yylval.num = algtype_sha2_256; return(ALGORITHMTYPE); } 4630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha256 { YYD; yylval.num = algtype_sha2_256; return(ALGORITHMTYPE); } 4640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha2_384 { YYD; yylval.num = algtype_sha2_384; return(ALGORITHMTYPE); } 4650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha384 { YYD; yylval.num = algtype_sha2_384; return(ALGORITHMTYPE); } 4660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha2_512 { YYD; yylval.num = algtype_sha2_512; return(ALGORITHMTYPE); } 4670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsha512 { YYD; yylval.num = algtype_sha2_512; return(ALGORITHMTYPE); } 4680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangoui { YYD; yylval.num = algtype_oui; return(ALGORITHMTYPE); } 4690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdeflate { YYD; yylval.num = algtype_deflate; return(ALGORITHMTYPE); } 4700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanglzs { YYD; yylval.num = algtype_lzs; return(ALGORITHMTYPE); } 4710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp768 { YYD; yylval.num = algtype_modp768; return(ALGORITHMTYPE); } 4720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp1024 { YYD; yylval.num = algtype_modp1024; return(ALGORITHMTYPE); } 4730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp1536 { YYD; yylval.num = algtype_modp1536; return(ALGORITHMTYPE); } 4740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangec2n155 { YYD; yylval.num = algtype_ec2n155; return(ALGORITHMTYPE); } 4750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangec2n185 { YYD; yylval.num = algtype_ec2n185; return(ALGORITHMTYPE); } 4760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp2048 { YYD; yylval.num = algtype_modp2048; return(ALGORITHMTYPE); } 4770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp3072 { YYD; yylval.num = algtype_modp3072; return(ALGORITHMTYPE); } 4780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp4096 { YYD; yylval.num = algtype_modp4096; return(ALGORITHMTYPE); } 4790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp6144 { YYD; yylval.num = algtype_modp6144; return(ALGORITHMTYPE); } 4800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmodp8192 { YYD; yylval.num = algtype_modp8192; return(ALGORITHMTYPE); } 4810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangpre_shared_key { YYD; yylval.num = algtype_psk; return(ALGORITHMTYPE); } 4820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrsasig { YYD; yylval.num = algtype_rsasig; return(ALGORITHMTYPE); } 4830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangdsssig { YYD; yylval.num = algtype_dsssig; return(ALGORITHMTYPE); } 4840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrsaenc { YYD; yylval.num = algtype_rsaenc; return(ALGORITHMTYPE); } 4850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangrsarev { YYD; yylval.num = algtype_rsarev; return(ALGORITHMTYPE); } 4860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanggssapi_krb { YYD; yylval.num = algtype_gssapikrb; return(ALGORITHMTYPE); } 4870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghybrid_rsa_server { 4880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 4890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_hybrid_rsa_s; return(ALGORITHMTYPE); 4900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 4910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 4920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 4930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 4940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghybrid_dss_server { 4950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 4960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_hybrid_dss_s; return(ALGORITHMTYPE); 4970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 4980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 4990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghybrid_rsa_client { 5020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_hybrid_rsa_c; return(ALGORITHMTYPE); 5040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghybrid_dss_client { 5090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_hybrid_dss_c; return(ALGORITHMTYPE); 5110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangxauth_psk_server { 5160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_xauth_psk_s; return(ALGORITHMTYPE); 5180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangxauth_psk_client { 5230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_xauth_psk_c; return(ALGORITHMTYPE); 5250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangxauth_rsa_server { 5300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_xauth_rsa_s; return(ALGORITHMTYPE); 5320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangxauth_rsa_client { 5370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID 5380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; yylval.num = algtype_xauth_rsa_c; return(ALGORITHMTYPE); 5390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 5400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("racoon not configured with --enable-hybrid"); 5410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 5420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 5430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* identifier type */ 546c91307af2622f6625525f3c1f9c954376df950adChia-chi Yehvendor_id { YYD; yywarn("it is obsoleted."); return(VENDORID); } 5470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanguser_fqdn { YYD; yylval.num = IDTYPE_USERFQDN; return(IDENTIFIERTYPE); } 5480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangfqdn { YYD; yylval.num = IDTYPE_FQDN; return(IDENTIFIERTYPE); } 5490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangkeyid { YYD; yylval.num = IDTYPE_KEYID; return(IDENTIFIERTYPE); } 5500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangaddress { YYD; yylval.num = IDTYPE_ADDRESS; return(IDENTIFIERTYPE); } 5510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsubnet { YYD; yylval.num = IDTYPE_SUBNET; return(IDENTIFIERTYPE); } 5520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangasn1dn { YYD; yylval.num = IDTYPE_ASN1DN; return(IDENTIFIERTYPE); } 553c91307af2622f6625525f3c1f9c954376df950adChia-chi Yehcertname { YYD; yywarn("certname will be obsoleted in near future."); yylval.num = IDTYPE_ASN1DN; return(IDENTIFIERTYPE); } 5540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* identifier qualifier */ 5560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangtag { YYD; yylval.num = IDQUAL_TAG; return(IDENTIFIERQUAL); } 5570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangfile { YYD; yylval.num = IDQUAL_FILE; return(IDENTIFIERQUAL); } 5580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* units */ 5600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih WangB|byte|bytes { YYD; return(UNITTYPE_BYTE); } 5610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih WangKB { YYD; return(UNITTYPE_KBYTES); } 5620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih WangMB { YYD; return(UNITTYPE_MBYTES); } 5630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih WangTB { YYD; return(UNITTYPE_TBYTES); } 5640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangsec|secs|second|seconds { YYD; return(UNITTYPE_SEC); } 5650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangmin|mins|minute|minutes { YYD; return(UNITTYPE_MIN); } 5660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wanghour|hours { YYD; return(UNITTYPE_HOUR); } 5670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* boolean */ 5690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyes { YYD; yylval.num = TRUE; return(BOOLEAN); } 5700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangno { YYD; yylval.num = FALSE; return(BOOLEAN); } 5710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{decstring} { 5730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *bp; 5740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 576c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh yylval.num = strtol(yytext, &bp, 10); 5770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(NUMBER); 5780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 5790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{hexstring} { 5810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *p; 5820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 5840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.val = vmalloc(yyleng + (yyleng & 1) + 1); 5850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yylval.val == NULL) { 5860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("vmalloc failed"); 5870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 5880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 5890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang p = yylval.val->v; 5910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *p++ = '0'; 5920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *p++ = 'x'; 5930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* fixed string if length is odd. */ 5950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yyleng & 1) 5960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *p++ = '0'; 5970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang memcpy(p, &yytext[2], yyleng - 1); 5980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 5990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(HEXSTRING); 6000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{quotedstring} { 6030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *p = yytext; 6040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 6060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang while (*++p != '"') ; 6070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *p = '\0'; 6080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.val = vmalloc(yyleng - 1); 6100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yylval.val == NULL) { 6110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("vmalloc failed"); 6120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 6130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang memcpy(yylval.val->v, &yytext[1], yylval.val->l); 6150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(QUOTEDSTRING); 6170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{addrstring} { 6200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang YYD; 6210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yylval.val = vmalloc(yyleng + 1); 6230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yylval.val == NULL) { 6240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerror("vmalloc failed"); 6250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 6260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang memcpy(yylval.val->v, yytext, yylval.val->l); 6280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return(ADDRSTRING); 6300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang<<EOF>> { 6330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_delete_buffer(YY_CURRENT_BUFFER); 6340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp--; 6350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang nextfile: 6360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstack[incstackp].matchon < 6370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matches.gl_pathc) { 6380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char* filepath = incstack[incstackp].matches.gl_pathv[incstack[incstackp].matchon]; 6390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matchon++; 6400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp++; 6410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yycf_set_buffer(filepath) != 0) { 6420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp--; 6430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang goto nextfile; 6440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 6460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang BEGIN(S_INI); 6470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } else { 6480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang globfree(&incstack[incstackp].matches); 6490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstackp == 0) 6500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyterminate(); 6510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang else 6520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_switch_to_buffer(incstack[incstackp].prevstate); 6530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 6550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* ... */ 6570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ws} { ; } 6580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{nl} { incstack[incstackp].lineno++; } 6590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{comment} { YYD; } 6600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{semi} { return(EOS); } 6610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang. { yymore(); } 6620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang%% 6640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangvoid 6660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyyerror(char *s, ...) 6670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 6680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char fmt[512]; 6690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_list ap; 6710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_STDARG_H 6720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_start(ap, s); 6730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 6740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_start(ap); 6750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 6760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang snprintf(fmt, sizeof(fmt), "%s:%d: \"%s\" %s\n", 6770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].path, incstack[incstackp].lineno, 6780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yytext, s); 6790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plogv(LLV_ERROR, LOCATION, NULL, fmt, ap); 6800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_end(ap); 6810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyerrorcount++; 6830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 6840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangvoid 6860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyywarn(char *s, ...) 6870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 6880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char fmt[512]; 6890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 6900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_list ap; 6910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_STDARG_H 6920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_start(ap, s); 6930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else 6940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_start(ap); 6950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif 6960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang snprintf(fmt, sizeof(fmt), "%s:%d: \"%s\" %s\n", 6970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].path, incstack[incstackp].lineno, 6980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yytext, s); 6990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plogv(LLV_WARNING, LOCATION, NULL, fmt, ap); 7000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang va_end(ap); 7010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 7020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangint 7040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyycf_switch_buffer(path) 7050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *path; 7060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 7070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *filepath = NULL; 7080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* got the include file name */ 7100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstackp >= MAX_INCLUDE_DEPTH) { 7110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plog(LLV_ERROR, LOCATION, NULL, 7120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang "Includes nested too deeply"); 7130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 7140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (glob(path, GLOB_TILDE, NULL, &incstack[incstackp].matches) != 0 || 7170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matches.gl_pathc == 0) { 7180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plog(LLV_ERROR, LOCATION, NULL, 7190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang "glob found no matches for path \"%s\"\n", path); 7200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 7210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matchon = 0; 7230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].prevstate = YY_CURRENT_BUFFER; 7240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang nextmatch: 7260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstack[incstackp].matchon >= incstack[incstackp].matches.gl_pathc) 7270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 7280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang filepath = 7290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matches.gl_pathv[incstack[incstackp].matchon]; 7300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].matchon++; 7310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp++; 7320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yycf_set_buffer(filepath) != 0) { 7340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp--; 7350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang goto nextmatch; 7360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE)); 7390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang BEGIN(S_INI); 7410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return 0; 7430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 7440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangint 7460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyycf_set_buffer(path) 7470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang char *path; 7480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 7490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang yyin = fopen(path, "r"); 7500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (yyin == NULL) { 7510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang fprintf(stderr, "failed to open file %s (%s)\n", 7520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang path, strerror(errno)); 7530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plog(LLV_ERROR, LOCATION, NULL, 7540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang "failed to open file %s (%s)\n", 7550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang path, strerror(errno)); 7560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return -1; 7570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang /* initialize */ 7600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].fp = yyin; 7610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstack[incstackp].path != NULL) 7620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang racoon_free(incstack[incstackp].path); 7630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].path = racoon_strdup(path); 7640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang STRDUP_FATAL(incstack[incstackp].path); 7650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[incstackp].lineno = 1; 7660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang plog(LLV_DEBUG, LOCATION, NULL, 7670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang "reading config file %s\n", path); 7680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang return 0; 7700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 7710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangvoid 7730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyycf_init_buffer() 7740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 7750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang int i; 7760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang for (i = 0; i < MAX_INCLUDE_DEPTH; i++) 7780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang memset(&incstack[i], 0, sizeof(incstack[i])); 7790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstackp = 0; 7800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 7810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangvoid 7830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangyycf_clean_buffer() 7840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ 7850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang int i; 7860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 7870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang for (i = 0; i < MAX_INCLUDE_DEPTH; i++) { 7880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang if (incstack[i].path != NULL) { 7890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang fclose(incstack[i].fp); 7900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang racoon_free(incstack[i].path); 7910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang incstack[i].path = NULL; 7920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang } 7940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} 7950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 796