[rtems-libbsd commit] Userspace Makefile: Clean up yacc/ lex handling to avoid conflicts

Joel Sherrill joel at rtems.org
Thu Oct 11 22:24:28 UTC 2012


Module:    rtems-libbsd
Branch:    master
Commit:    82e1c695b61f4fd0f57d1c2ce0819fb1e75579ec
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=82e1c695b61f4fd0f57d1c2ce0819fb1e75579ec

Author:    Joel Sherrill <joel.sherrill at oarcorp.com>
Date:      Thu Oct 11 17:28:30 2012 -0500

Userspace Makefile: Clean up yacc/lex handling to avoid conflicts

---

 .gitignore                                    |   11 +-
 freebsd-userspace/Makefile                    |   20 +-
 freebsd-userspace/lib/libc/net/Makefile       |   12 +
 freebsd-userspace/lib/libipsec/Makefile       |   12 +
 freebsd-userspace/lib/libipsec/policy_parse.c |  966 ------------
 freebsd-userspace/lib/libipsec/policy_token.c | 2009 -------------------------
 freebsd-userspace/lib/libipsec/policy_token.l |    5 +-
 freebsd-userspace/y.tab.h                     |   26 -
 8 files changed, 41 insertions(+), 3020 deletions(-)

diff --git a/.gitignore b/.gitignore
index e106e7f..ec291bc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,13 @@
 o-optimize
 copied
 libbsd.html
+freebsd-userspace/commands/sbin/route/keywords.h
+freebsd-userspace/include/rpc/rpcb_prot.h
+freebsd-userspace/lib/libipsec/y.tab.h
+freebsd-userspace/lib/libc/net/y.tab.h
+freebsd-userspace/lib/libipsec/policy_parse.c
+freebsd-userspace/lib/libipsec/policy_token.c
+freebsd-userspace/lib/libipsec/y.tab.h
 rtemsbsd/freebsd/machine/rtems-bsd-config.h
 rtemsbsd/avr/avr/in_cksum.c
 rtemsbsd/avr/include/freebsd/machine/in_cksum.h
@@ -25,12 +32,10 @@ rtemsbsd/sparc/sparc/in_cksum.c
 rtemsbsd/sparc/include/freebsd/machine/in_cksum.h
 rtemsbsd/v850/v850/in_cksum.c
 rtemsbsd/v850/include/freebsd/machine/in_cksum.h
-freebsd-userspace/commands/sbin/route/keywords.h
-freebsd-userspace/include/rpc/rpcb_prot.h
 rtemsbsd/arm/include/freebsd/machine/legacyvar.h
 rtemsbsd/arm/include/freebsd/machine/pci_cfgreg.h
 rtemsbsd/avr/include/freebsd/machine/legacyvar.h
-rtemsbsd/avr/include/freebsd/machine/pci_cfgreg.h
+rtemsbsd/avr/include/freebsd/machine/pci_cfgreg.hs
 rtemsbsd/bfin/include/freebsd/machine/legacyvar.h
 rtemsbsd/bfin/include/freebsd/machine/pci_cfgreg.h
 rtemsbsd/h8300/include/freebsd/machine/legacyvar.h
diff --git a/freebsd-userspace/Makefile b/freebsd-userspace/Makefile
index 84f5f0f..df5e4f2 100644
--- a/freebsd-userspace/Makefile
+++ b/freebsd-userspace/Makefile
@@ -236,11 +236,13 @@ GEN_FILES += commands/sbin/route/keywords.h
 GEN_FILES += lib/libc/net/nslexer.c
 GEN_FILES += lib/libc/net/nsparser.c
 EXTRA_CLEAN = lib/libc/net/nsparser.i
+EXTRA_CLEAN += lib/libc/net/y.tab.h
 
 # lib/libipsec
 GEN_FILES += lib/libipsec/policy_token.c
 GEN_FILES += lib/libipsec/policy_parse.c
-EXTRA_CLEAN += lib/libc/net/policy_parse.i
+EXTRA_CLEAN += lib/libipsec/policy_parse.i
+EXTRA_CLEAN += lib/libipsec/y.tab.h
 
 all: $(LIB)
 
@@ -263,25 +265,17 @@ commands/sbin/route/keywords.h: commands/sbin/route/keywords
 
 # lib/libc/net Yacc and lex files
 lib/libc/net/nslexer.c: lib/libc/net/nslexer.l
-	${LEX} -P _nsyy -t $^ | \
-		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+	make -C lib/libc/net nslexer.c
 
 lib/libc/net/nsparser.c: lib/libc/net/nsparser.y
-	yacc -d -p_nsyy -o lib/libc/net/nsparser.i $^
-	cat lib/libc/net/nsparser.i | \
-		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
-	rm -f lib/libc/net/nsparser.i
+	make -C lib/libc/net nsparser.c
 
 # libipsec Yacc and lex files
 lib/libipsec/policy_token.c: lib/libipsec/policy_token.l
-	${LEX} -P __libipsecyy -t $^ | \
-		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+	make -C lib/libipsec policy_token.c
 
 lib/libipsec/policy_parse.c: lib/libipsec/policy_parse.y
-	yacc -d -p __libipsecyy -o lib/libipsec/policy_parse.i $^
-	cat lib/libipsec/policy_parse.i | \
-		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
-	rm -f lib/libipsec/policy_parse.i
+	make -C lib/libipsec policy_parse.c
 
 install: $(LIB)
 	install -d $(INSTALL_BASE)/include
diff --git a/freebsd-userspace/lib/libc/net/Makefile b/freebsd-userspace/lib/libc/net/Makefile
new file mode 100644
index 0000000..895d167
--- /dev/null
+++ b/freebsd-userspace/lib/libc/net/Makefile
@@ -0,0 +1,12 @@
+# lib/libc/net Yacc and lex files
+
+nslexer.c: nslexer.l
+	${LEX} -P _nsyy -t $^ | \
+		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+
+nsparser.c: nsparser.y
+	yacc -d -p_nsyy -o nsparser.i $^
+	cat nsparser.i | \
+		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+	rm -f nsparser.i
+
diff --git a/freebsd-userspace/lib/libipsec/Makefile b/freebsd-userspace/lib/libipsec/Makefile
new file mode 100644
index 0000000..f4084a1
--- /dev/null
+++ b/freebsd-userspace/lib/libipsec/Makefile
@@ -0,0 +1,12 @@
+# libipsec Yacc and lex files
+
+policy_token.c: policy_token.l
+	${LEX} -P __libipsecyy -t $^ | \
+		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+
+policy_parse.c: policy_parse.y
+	yacc -d -p __libipsecyy -o policy_parse.i $^
+	cat policy_parse.i | \
+		sed -e '/YY_BUF_SIZE/s/16384/1024/' >$@
+	rm -f policy_parse.i
+
diff --git a/freebsd-userspace/lib/libipsec/policy_parse.c b/freebsd-userspace/lib/libipsec/policy_parse.c
deleted file mode 100644
index 0de9e88..0000000
--- a/freebsd-userspace/lib/libipsec/policy_parse.c
+++ /dev/null
@@ -1,966 +0,0 @@
-#ifndef lint
-static const char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
-#endif
-
-#define YYBYACC 1
-#define YYMAJOR 1
-#define YYMINOR 9
-#define YYPATCH 20101229
-
-#define YYEMPTY        (-1)
-#define yyclearin      (yychar = YYEMPTY)
-#define yyerrok        (yyerrflag = 0)
-#define YYRECOVERING() (yyerrflag != 0)
-
-
-#ifndef yyparse
-#define yyparse    __libipsecyyparse
-#endif /* yyparse */
-
-#ifndef yylex
-#define yylex      __libipsecyylex
-#endif /* yylex */
-
-#ifndef yyerror
-#define yyerror    __libipsecyyerror
-#endif /* yyerror */
-
-#ifndef yychar
-#define yychar     __libipsecyychar
-#endif /* yychar */
-
-#ifndef yyval
-#define yyval      __libipsecyyval
-#endif /* yyval */
-
-#ifndef yylval
-#define yylval     __libipsecyylval
-#endif /* yylval */
-
-#ifndef yydebug
-#define yydebug    __libipsecyydebug
-#endif /* yydebug */
-
-#ifndef yynerrs
-#define yynerrs    __libipsecyynerrs
-#endif /* yynerrs */
-
-#ifndef yyerrflag
-#define yyerrflag  __libipsecyyerrflag
-#endif /* yyerrflag */
-
-#ifndef yylhs
-#define yylhs      __libipsecyylhs
-#endif /* yylhs */
-
-#ifndef yylen
-#define yylen      __libipsecyylen
-#endif /* yylen */
-
-#ifndef yydefred
-#define yydefred   __libipsecyydefred
-#endif /* yydefred */
-
-#ifndef yydgoto
-#define yydgoto    __libipsecyydgoto
-#endif /* yydgoto */
-
-#ifndef yysindex
-#define yysindex   __libipsecyysindex
-#endif /* yysindex */
-
-#ifndef yyrindex
-#define yyrindex   __libipsecyyrindex
-#endif /* yyrindex */
-
-#ifndef yygindex
-#define yygindex   __libipsecyygindex
-#endif /* yygindex */
-
-#ifndef yytable
-#define yytable    __libipsecyytable
-#endif /* yytable */
-
-#ifndef yycheck
-#define yycheck    __libipsecyycheck
-#endif /* yycheck */
-
-#ifndef yyname
-#define yyname     __libipsecyyname
-#endif /* yyname */
-
-#ifndef yyrule
-#define yyrule     __libipsecyyrule
-#endif /* yyrule */
-#define YYPREFIX "__libipsecyy"
-
-#define YYPURE 0
-
-#line 52 "lib/libipsec/policy_parse.y"
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#ifdef __rtems__
-#include <freebsd/netipsec/ipsec.h>
-#else
-#include <netipsec/ipsec.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <netdb.h>
-
-#include "ipsec_strerror.h"
-
-#define ATOX(c) \
-  (isdigit(c) ? (c - '0') : (isupper(c) ? (c - 'A' + 10) : (c - 'a' + 10) ))
-
-static caddr_t pbuf = NULL;		/* sadb_x_policy buffer */
-static int tlen = 0;			/* total length of pbuf */
-static int offset = 0;			/* offset of pbuf */
-static int p_dir, p_type, p_protocol, p_mode, p_level, p_reqid;
-static struct sockaddr *p_src = NULL;
-static struct sockaddr *p_dst = NULL;
-
-struct _val;
-extern void yyerror(char *msg);
-static struct sockaddr *parse_sockaddr(struct _val *buf);
-static int rule_check(void);
-static int init_x_policy(void);
-static int set_x_request(struct sockaddr *src, struct sockaddr *dst);
-static int set_sockaddr(struct sockaddr *addr);
-static void policy_parse_request_init(void);
-static caddr_t policy_parse(char *msg, int msglen);
-
-extern void __policy__strbuffer__init__(char *msg);
-extern void __policy__strbuffer__free__(void);
-extern int yyparse(void);
-extern int yylex(void);
-
-extern char *__libipsecyytext;	/*XXX*/
-
-#line 102 "lib/libipsec/policy_parse.y"
-#ifdef YYSTYPE
-#undef  YYSTYPE_IS_DECLARED
-#define YYSTYPE_IS_DECLARED 1
-#endif
-#ifndef YYSTYPE_IS_DECLARED
-#define YYSTYPE_IS_DECLARED 1
-typedef union {
-	u_int num;
-	struct _val {
-		int len;
-		char *buf;
-	} val;
-} YYSTYPE;
-#endif /* !YYSTYPE_IS_DECLARED */
-#line 163 "lib/libipsec/policy_parse.i"
-/* compatibility with bison */
-#ifdef YYPARSE_PARAM
-/* compatibility with FreeBSD */
-# ifdef YYPARSE_PARAM_TYPE
-#  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
-# else
-#  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
-# endif
-#else
-# define YYPARSE_DECL() yyparse(void)
-#endif
-
-/* Parameters sent to lex. */
-#ifdef YYLEX_PARAM
-# define YYLEX_DECL() yylex(void *YYLEX_PARAM)
-# define YYLEX yylex(YYLEX_PARAM)
-#else
-# define YYLEX_DECL() yylex(void)
-# define YYLEX yylex()
-#endif
-
-/* Parameters sent to yyerror. */
-#define YYERROR_DECL() yyerror(const char *s)
-#define YYERROR_CALL(msg) yyerror(msg)
-
-extern int YYPARSE_DECL();
-
-#define DIR 257
-#define ACTION 258
-#define PROTOCOL 259
-#define MODE 260
-#define LEVEL 261
-#define LEVEL_SPECIFY 262
-#define IPADDRESS 263
-#define ME 264
-#define ANY 265
-#define SLASH 266
-#define HYPHEN 267
-#define YYERRCODE 256
-static const short __libipsecyylhs[] = {                 -1,
-    2,    0,    0,    1,    1,    3,    3,    3,    3,    3,
-    3,    3,    3,    4,    5,    7,    7,    8,    6,    6,
-    6,
-};
-static const short __libipsecyylen[] = {                  2,
-    0,    4,    1,    0,    2,    7,    6,    5,    4,    6,
-    3,    2,    1,    1,    1,    1,    1,    0,    4,    3,
-    3,
-};
-static const short __libipsecyydefred[] = {               0,
-    0,    0,    1,    4,    0,   14,    5,    0,    0,   15,
-    0,    0,   18,    0,    0,    0,    0,    0,    0,    0,
-   16,   17,   10,    0,    0,   20,   21,    6,   19,
-};
-static const short __libipsecyydgoto[] = {                2,
-    5,    4,    7,    8,   11,   17,   23,   18,
-};
-static const short __libipsecyysindex[] = {            -257,
- -245,    0,    0,    0, -244,    0,    0, -252, -243,    0,
- -248, -256,    0, -251, -247, -250, -242, -246, -240, -241,
-    0,    0,    0, -250, -237,    0,    0,    0,    0,
-};
-static const short __libipsecyyrindex[] = {               0,
-   19,    0,    0,    0,   22,    0,    0,    1,    2,    0,
-    3,    4,    0,    0,    0,    0,    5,    0,    0,    0,
-    0,    0,    0,    6,    0,    0,    0,    0,    0,
-};
-static const short __libipsecyygindex[] = {               0,
-    0,    0,    0,    0,    0,    0,    7,    0,
-};
-#define YYTABLESIZE 265
-static const short __libipsecyytable[] = {                1,
-   13,   12,   11,    9,    8,    7,   13,   14,   15,   16,
-   21,   22,    3,    9,    6,   19,   10,   12,    3,   20,
-   25,    2,   27,   24,   26,   29,    0,    0,    0,    0,
-   28,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,
-   12,   11,    9,    8,    7,
-};
-static const short __libipsecyycheck[] = {              257,
-    0,    0,    0,    0,    0,    0,  263,  264,  265,  266,
-  261,  262,  258,  266,  259,  267,  260,  266,    0,  267,
-  267,    0,  264,  266,  265,  263,   -1,   -1,   -1,   -1,
-   24,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  259,
-  259,  259,  259,  259,  259,
-};
-#define YYFINAL 2
-#ifndef YYDEBUG
-#define YYDEBUG 0
-#endif
-#define YYMAXTOKEN 267
-#if YYDEBUG
-static const char *yyname[] = {
-
-"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"DIR","ACTION","PROTOCOL","MODE",
-"LEVEL","LEVEL_SPECIFY","IPADDRESS","ME","ANY","SLASH","HYPHEN",
-};
-static const char *yyrule[] = {
-"$accept : policy_spec",
-"$$1 :",
-"policy_spec : DIR ACTION $$1 rules",
-"policy_spec : DIR",
-"rules :",
-"rules : rules rule",
-"rule : protocol SLASH mode SLASH addresses SLASH level",
-"rule : protocol SLASH mode SLASH addresses SLASH",
-"rule : protocol SLASH mode SLASH addresses",
-"rule : protocol SLASH mode SLASH",
-"rule : protocol SLASH mode SLASH SLASH level",
-"rule : protocol SLASH mode",
-"rule : protocol SLASH",
-"rule : protocol",
-"protocol : PROTOCOL",
-"mode : MODE",
-"level : LEVEL",
-"level : LEVEL_SPECIFY",
-"$$2 :",
-"addresses : IPADDRESS $$2 HYPHEN IPADDRESS",
-"addresses : ME HYPHEN ANY",
-"addresses : ANY HYPHEN ME",
-
-};
-#endif
-/* define the initial stack-sizes */
-#ifdef YYSTACKSIZE
-#undef YYMAXDEPTH
-#define YYMAXDEPTH  YYSTACKSIZE
-#else
-#ifdef YYMAXDEPTH
-#define YYSTACKSIZE YYMAXDEPTH
-#else
-#define YYSTACKSIZE 500
-#define YYMAXDEPTH  500
-#endif
-#endif
-
-#define YYINITSTACKSIZE 500
-
-int      yydebug;
-int      yynerrs;
-
-typedef struct {
-    unsigned stacksize;
-    short    *s_base;
-    short    *s_mark;
-    short    *s_last;
-    YYSTYPE  *l_base;
-    YYSTYPE  *l_mark;
-} YYSTACKDATA;
-int      yyerrflag;
-int      yychar;
-YYSTYPE  yyval;
-YYSTYPE  yylval;
-
-/* variables for the parser stack */
-static YYSTACKDATA yystack;
-#line 217 "lib/libipsec/policy_parse.y"
-
-void
-yyerror(msg)
-	char *msg;
-{
-	fprintf(stderr, "libipsec: %s while parsing \"%s\"\n",
-		msg, __libipsecyytext);
-
-	return;
-}
-
-static struct sockaddr *
-parse_sockaddr(buf)
-	struct _val *buf;
-{
-	struct addrinfo hints, *res;
-	char *serv = NULL;
-	int error;
-	struct sockaddr *newaddr = NULL;
-
-	memset(&hints, 0, sizeof(hints));
-	hints.ai_family = PF_UNSPEC;
-	hints.ai_flags = AI_NUMERICHOST;
-	error = getaddrinfo(buf->buf, serv, &hints, &res);
-	if (error != 0) {
-		yyerror("invalid IP address");
-		__ipsec_set_strerror(gai_strerror(error));
-		return NULL;
-	}
-
-	if (res->ai_addr == NULL) {
-		yyerror("invalid IP address");
-		__ipsec_set_strerror(gai_strerror(error));
-		return NULL;
-	}
-
-	newaddr = malloc(res->ai_addr->sa_len);
-	if (newaddr == NULL) {
-		__ipsec_errcode = EIPSEC_NO_BUFS;
-		freeaddrinfo(res);
-		return NULL;
-	}
-	memcpy(newaddr, res->ai_addr, res->ai_addr->sa_len);
-
-	freeaddrinfo(res);
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return newaddr;
-}
-
-static int
-rule_check()
-{
-	if (p_type == IPSEC_POLICY_IPSEC) {
-		if (p_protocol == IPPROTO_IP) {
-			__ipsec_errcode = EIPSEC_NO_PROTO;
-			return -1;
-		}
-
-		if (p_mode != IPSEC_MODE_TRANSPORT
-		 && p_mode != IPSEC_MODE_TUNNEL) {
-			__ipsec_errcode = EIPSEC_INVAL_MODE;
-			return -1;
-		}
-
-		if (p_src == NULL && p_dst == NULL) {
-			 if (p_mode != IPSEC_MODE_TRANSPORT) {
-				__ipsec_errcode = EIPSEC_INVAL_ADDRESS;
-				return -1;
-			}
-		}
-		else if (p_src->sa_family != p_dst->sa_family) {
-			__ipsec_errcode = EIPSEC_FAMILY_MISMATCH;
-			return -1;
-		}
-	}
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return 0;
-}
-
-static int
-init_x_policy()
-{
-	struct sadb_x_policy *p;
-
-	tlen = sizeof(struct sadb_x_policy);
-
-	pbuf = malloc(tlen);
-	if (pbuf == NULL) {
-		__ipsec_errcode = EIPSEC_NO_BUFS;
-		return -1;
-	}
-	memset(pbuf, 0, tlen);
-	p = (struct sadb_x_policy *)pbuf;
-	p->sadb_x_policy_len = 0;	/* must update later */
-	p->sadb_x_policy_exttype = SADB_X_EXT_POLICY;
-	p->sadb_x_policy_type = p_type;
-	p->sadb_x_policy_dir = p_dir;
-	p->sadb_x_policy_id = 0;
-
-	offset = tlen;
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return 0;
-}
-
-static int
-set_x_request(src, dst)
-	struct sockaddr *src, *dst;
-{
-	struct sadb_x_ipsecrequest *p;
-	int reqlen;
-
-	reqlen = sizeof(*p)
-		+ (src ? src->sa_len : 0)
-		+ (dst ? dst->sa_len : 0);
-	tlen += reqlen;		/* increment to total length */
-
-	pbuf = realloc(pbuf, tlen);
-	if (pbuf == NULL) {
-		__ipsec_errcode = EIPSEC_NO_BUFS;
-		return -1;
-	}
-	p = (struct sadb_x_ipsecrequest *)&pbuf[offset];
-	p->sadb_x_ipsecrequest_len = reqlen;
-	p->sadb_x_ipsecrequest_proto = p_protocol;
-	p->sadb_x_ipsecrequest_mode = p_mode;
-	p->sadb_x_ipsecrequest_level = p_level;
-	p->sadb_x_ipsecrequest_reqid = p_reqid;
-	offset += sizeof(*p);
-
-	if (set_sockaddr(src) || set_sockaddr(dst))
-		return -1;
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return 0;
-}
-
-static int
-set_sockaddr(addr)
-	struct sockaddr *addr;
-{
-	if (addr == NULL) {
-		__ipsec_errcode = EIPSEC_NO_ERROR;
-		return 0;
-	}
-
-	/* tlen has already incremented */
-
-	memcpy(&pbuf[offset], addr, addr->sa_len);
-
-	offset += addr->sa_len;
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return 0;
-}
-
-static void
-policy_parse_request_init()
-{
-	p_protocol = IPPROTO_IP;
-	p_mode = IPSEC_MODE_ANY;
-	p_level = IPSEC_LEVEL_DEFAULT;
-	p_reqid = 0;
-	if (p_src != NULL) {
-		free(p_src);
-		p_src = NULL;
-	}
-	if (p_dst != NULL) {
-		free(p_dst);
-		p_dst = NULL;
-	}
-
-	return;
-}
-
-static caddr_t
-policy_parse(msg, msglen)
-	char *msg;
-	int msglen;
-{
-	int error;
-	pbuf = NULL;
-	tlen = 0;
-
-	/* initialize */
-	p_dir = IPSEC_DIR_INVALID;
-	p_type = IPSEC_POLICY_DISCARD;
-	policy_parse_request_init();
-	__policy__strbuffer__init__(msg);
-
-	error = yyparse();	/* it must be set errcode. */
-	__policy__strbuffer__free__();
-
-	if (error) {
-		if (pbuf != NULL)
-			free(pbuf);
-		return NULL;
-	}
-
-	/* update total length */
-	((struct sadb_x_policy *)pbuf)->sadb_x_policy_len = PFKEY_UNIT64(tlen);
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-
-	return pbuf;
-}
-
-caddr_t
-ipsec_set_policy(msg, msglen)
-	char *msg;
-	int msglen;
-{
-	caddr_t policy;
-
-	policy = policy_parse(msg, msglen);
-	if (policy == NULL) {
-		if (__ipsec_errcode == EIPSEC_NO_ERROR)
-			__ipsec_errcode = EIPSEC_INVAL_ARGUMENT;
-		return NULL;
-	}
-
-	__ipsec_errcode = EIPSEC_NO_ERROR;
-	return policy;
-}
-
-#line 597 "lib/libipsec/policy_parse.i"
-
-#if YYDEBUG
-#include <stdio.h>		/* needed for printf */
-#endif
-
-#include <stdlib.h>	/* needed for malloc, etc */
-#include <string.h>	/* needed for memset */
-
-/* allocate initial stack or double stack size, up to YYMAXDEPTH */
-static int yygrowstack(YYSTACKDATA *data)
-{
-    int i;
-    unsigned newsize;
-    short *newss;
-    YYSTYPE *newvs;
-
-    if ((newsize = data->stacksize) == 0)
-        newsize = YYINITSTACKSIZE;
-    else if (newsize >= YYMAXDEPTH)
-        return -1;
-    else if ((newsize *= 2) > YYMAXDEPTH)
-        newsize = YYMAXDEPTH;
-
-    i = data->s_mark - data->s_base;
-    newss = (short *)realloc(data->s_base, newsize * sizeof(*newss));
-    if (newss == 0)
-        return -1;
-
-    data->s_base = newss;
-    data->s_mark = newss + i;
-
-    newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
-    if (newvs == 0)
-        return -1;
-
-    data->l_base = newvs;
-    data->l_mark = newvs + i;
-
-    data->stacksize = newsize;
-    data->s_last = data->s_base + newsize - 1;
-    return 0;
-}
-
-#if YYPURE || defined(YY_NO_LEAKS)
-static void yyfreestack(YYSTACKDATA *data)
-{
-    free(data->s_base);
-    free(data->l_base);
-    memset(data, 0, sizeof(*data));
-}
-#else
-#define yyfreestack(data) /* nothing */
-#endif
-
-#define YYABORT  goto yyabort
-#define YYREJECT goto yyabort
-#define YYACCEPT goto yyaccept
-#define YYERROR  goto yyerrlab
-
-int
-YYPARSE_DECL()
-{
-    int yym, yyn, yystate;
-#if YYDEBUG
-    const char *yys;
-
-    if ((yys = getenv("YYDEBUG")) != 0)
-    {
-        yyn = *yys;
-        if (yyn >= '0' && yyn <= '9')
-            yydebug = yyn - '0';
-    }
-#endif
-
-    yynerrs = 0;
-    yyerrflag = 0;
-    yychar = YYEMPTY;
-    yystate = 0;
-
-#if YYPURE
-    memset(&yystack, 0, sizeof(yystack));
-#endif
-
-    if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow;
-    yystack.s_mark = yystack.s_base;
-    yystack.l_mark = yystack.l_base;
-    yystate = 0;
-    *yystack.s_mark = 0;
-
-yyloop:
-    if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
-    if (yychar < 0)
-    {
-        if ((yychar = YYLEX) < 0) yychar = 0;
-#if YYDEBUG
-        if (yydebug)
-        {
-            yys = 0;
-            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-            if (!yys) yys = "illegal-symbol";
-            printf("%sdebug: state %d, reading %d (%s)\n",
-                    YYPREFIX, yystate, yychar, yys);
-        }
-#endif
-    }
-    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
-            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
-    {
-#if YYDEBUG
-        if (yydebug)
-            printf("%sdebug: state %d, shifting to state %d\n",
-                    YYPREFIX, yystate, yytable[yyn]);
-#endif
-        if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
-        {
-            goto yyoverflow;
-        }
-        yystate = yytable[yyn];
-        *++yystack.s_mark = yytable[yyn];
-        *++yystack.l_mark = yylval;
-        yychar = YYEMPTY;
-        if (yyerrflag > 0)  --yyerrflag;
-        goto yyloop;
-    }
-    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
-            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
-    {
-        yyn = yytable[yyn];
-        goto yyreduce;
-    }
-    if (yyerrflag) goto yyinrecovery;
-
-    yyerror("syntax error");
-
-    goto yyerrlab;
-
-yyerrlab:
-    ++yynerrs;
-
-yyinrecovery:
-    if (yyerrflag < 3)
-    {
-        yyerrflag = 3;
-        for (;;)
-        {
-            if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 &&
-                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
-            {
-#if YYDEBUG
-                if (yydebug)
-                    printf("%sdebug: state %d, error recovery shifting\
- to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
-#endif
-                if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
-                {
-                    goto yyoverflow;
-                }
-                yystate = yytable[yyn];
-                *++yystack.s_mark = yytable[yyn];
-                *++yystack.l_mark = yylval;
-                goto yyloop;
-            }
-            else
-            {
-#if YYDEBUG
-                if (yydebug)
-                    printf("%sdebug: error recovery discarding state %d\n",
-                            YYPREFIX, *yystack.s_mark);
-#endif
-                if (yystack.s_mark <= yystack.s_base) goto yyabort;
-                --yystack.s_mark;
-                --yystack.l_mark;
-            }
-        }
-    }
-    else
-    {
-        if (yychar == 0) goto yyabort;
-#if YYDEBUG
-        if (yydebug)
-        {
-            yys = 0;
-            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-            if (!yys) yys = "illegal-symbol";
-            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
-                    YYPREFIX, yystate, yychar, yys);
-        }
-#endif
-        yychar = YYEMPTY;
-        goto yyloop;
-    }
-
-yyreduce:
-#if YYDEBUG
-    if (yydebug)
-        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
-                YYPREFIX, yystate, yyn, yyrule[yyn]);
-#endif
-    yym = yylen[yyn];
-    if (yym)
-        yyval = yystack.l_mark[1-yym];
-    else
-        memset(&yyval, 0, sizeof yyval);
-    switch (yyn)
-    {
-case 1:
-#line 120 "lib/libipsec/policy_parse.y"
-	{
-			p_dir = yystack.l_mark[-1].num;
-			p_type = yystack.l_mark[0].num;
-
-			if (init_x_policy())
-				return -1;
-		}
-break;
-case 3:
-#line 129 "lib/libipsec/policy_parse.y"
-	{
-			p_dir = yystack.l_mark[0].num;
-			p_type = 0;	/* ignored it by kernel */
-
-			if (init_x_policy())
-				return -1;
-		}
-break;
-case 5:
-#line 140 "lib/libipsec/policy_parse.y"
-	{
-			if (rule_check() < 0)
-				return -1;
-
-			if (set_x_request(p_src, p_dst) < 0)
-				return -1;
-
-			policy_parse_request_init();
-		}
-break;
-case 12:
-#line 158 "lib/libipsec/policy_parse.y"
-	{
-			__ipsec_errcode = EIPSEC_FEW_ARGUMENTS;
-			return -1;
-		}
-break;
-case 13:
-#line 162 "lib/libipsec/policy_parse.y"
-	{
-			__ipsec_errcode = EIPSEC_FEW_ARGUMENTS;
-			return -1;
-		}
-break;
-case 14:
-#line 169 "lib/libipsec/policy_parse.y"
-	{ p_protocol = yystack.l_mark[0].num; }
-break;
-case 15:
-#line 173 "lib/libipsec/policy_parse.y"
-	{ p_mode = yystack.l_mark[0].num; }
-break;
-case 16:
-#line 177 "lib/libipsec/policy_parse.y"
-	{
-			p_level = yystack.l_mark[0].num;
-			p_reqid = 0;
-		}
-break;
-case 17:
-#line 181 "lib/libipsec/policy_parse.y"
-	{
-			p_level = IPSEC_LEVEL_UNIQUE;
-			p_reqid = atol(yystack.l_mark[0].val.buf);	/* atol() is good. */
-		}
-break;
-case 18:
-#line 188 "lib/libipsec/policy_parse.y"
-	{
-			p_src = parse_sockaddr(&yystack.l_mark[0].val);
-			if (p_src == NULL)
-				return -1;
-		}
-break;
-case 19:
-#line 194 "lib/libipsec/policy_parse.y"
-	{
-			p_dst = parse_sockaddr(&yystack.l_mark[0].val);
-			if (p_dst == NULL)
-				return -1;
-		}
-break;
-case 20:
-#line 199 "lib/libipsec/policy_parse.y"
-	{
-			if (p_dir != IPSEC_DIR_OUTBOUND) {
-				__ipsec_errcode = EIPSEC_INVAL_DIR;
-				return -1;
-			}
-		}
-break;
-case 21:
-#line 205 "lib/libipsec/policy_parse.y"
-	{
-			if (p_dir != IPSEC_DIR_INBOUND) {
-				__ipsec_errcode = EIPSEC_INVAL_DIR;
-				return -1;
-			}
-		}
-break;
-#line 905 "lib/libipsec/policy_parse.i"
-    }
-    yystack.s_mark -= yym;
-    yystate = *yystack.s_mark;
-    yystack.l_mark -= yym;
-    yym = yylhs[yyn];
-    if (yystate == 0 && yym == 0)
-    {
-#if YYDEBUG
-        if (yydebug)
-            printf("%sdebug: after reduction, shifting from state 0 to\
- state %d\n", YYPREFIX, YYFINAL);
-#endif
-        yystate = YYFINAL;
-        *++yystack.s_mark = YYFINAL;
-        *++yystack.l_mark = yyval;
-        if (yychar < 0)
-        {
-            if ((yychar = YYLEX) < 0) yychar = 0;
-#if YYDEBUG
-            if (yydebug)
-            {
-                yys = 0;
-                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
-                if (!yys) yys = "illegal-symbol";
-                printf("%sdebug: state %d, reading %d (%s)\n",
-                        YYPREFIX, YYFINAL, yychar, yys);
-            }
-#endif
-        }
-        if (yychar == 0) goto yyaccept;
-        goto yyloop;
-    }
-    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
-            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
-        yystate = yytable[yyn];
-    else
-        yystate = yydgoto[yym];
-#if YYDEBUG
-    if (yydebug)
-        printf("%sdebug: after reduction, shifting from state %d \
-to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
-#endif
-    if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack))
-    {
-        goto yyoverflow;
-    }
-    *++yystack.s_mark = (short) yystate;
-    *++yystack.l_mark = yyval;
-    goto yyloop;
-
-yyoverflow:
-    yyerror("yacc stack overflow");
-
-yyabort:
-    yyfreestack(&yystack);
-    return (1);
-
-yyaccept:
-    yyfreestack(&yystack);
-    return (0);
-}
diff --git a/freebsd-userspace/lib/libipsec/policy_token.c b/freebsd-userspace/lib/libipsec/policy_token.c
deleted file mode 100644
index 9c0a004..0000000
--- a/freebsd-userspace/lib/libipsec/policy_token.c
+++ /dev/null
@@ -1,2009 +0,0 @@
-
-#line 3 "<stdout>"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer __libipsecyy_create_buffer
-#define yy_delete_buffer __libipsecyy_delete_buffer
-#define yy_flex_debug __libipsecyy_flex_debug
-#define yy_init_buffer __libipsecyy_init_buffer
-#define yy_flush_buffer __libipsecyy_flush_buffer
-#define yy_load_buffer_state __libipsecyy_load_buffer_state
-#define yy_switch_to_buffer __libipsecyy_switch_to_buffer
-#define yyin __libipsecyyin
-#define yyleng __libipsecyyleng
-#define yylex __libipsecyylex
-#define yylineno __libipsecyylineno
-#define yyout __libipsecyyout
-#define yyrestart __libipsecyyrestart
-#define yytext __libipsecyytext
-#define yywrap __libipsecyywrap
-#define yyalloc __libipsecyyalloc
-#define yyrealloc __libipsecyyrealloc
-#define yyfree __libipsecyyfree
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE __libipsecyyrestart(__libipsecyyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 1024
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int __libipsecyyleng;
-
-extern FILE *__libipsecyyin, *__libipsecyyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    #define YY_LESS_LINENO(n)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up __libipsecyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up __libipsecyytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via __libipsecyyrestart()), so that the user can continue scanning by
-	 * just pointing __libipsecyyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when __libipsecyytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int __libipsecyyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow __libipsecyywrap()'s to do buffer switches
- * instead of setting up a fresh __libipsecyyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void __libipsecyyrestart (FILE *input_file  );
-void __libipsecyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE __libipsecyy_create_buffer (FILE *file,int size  );
-void __libipsecyy_delete_buffer (YY_BUFFER_STATE b  );
-void __libipsecyy_flush_buffer (YY_BUFFER_STATE b  );
-void __libipsecyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void __libipsecyypop_buffer_state (void );
-
-static void __libipsecyyensure_buffer_stack (void );
-static void __libipsecyy_load_buffer_state (void );
-static void __libipsecyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER __libipsecyy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE __libipsecyy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE __libipsecyy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE __libipsecyy_scan_bytes (yyconst char *bytes,int len  );
-
-void *__libipsecyyalloc (yy_size_t  );
-void *__libipsecyyrealloc (void *,yy_size_t  );
-void __libipsecyyfree (void *  );
-
-#define yy_new_buffer __libipsecyy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        __libipsecyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            __libipsecyy_create_buffer(__libipsecyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        __libipsecyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            __libipsecyy_create_buffer(__libipsecyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-/* Begin user sect3 */
-
-#define __libipsecyywrap(n) 1
-#define YY_SKIP_YYWRAP
-
-typedef unsigned char YY_CHAR;
-
-FILE *__libipsecyyin = (FILE *) 0, *__libipsecyyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int __libipsecyylineno;
-
-int __libipsecyylineno = 1;
-
-extern char *__libipsecyytext;
-#define yytext_ptr __libipsecyytext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up __libipsecyytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	__libipsecyyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 26
-#define YY_END_OF_BUFFER 27
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[99] =
-    {   0,
-        0,    0,   27,   26,   24,   25,   23,   22,   21,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       24,    0,   22,    9,   22,   22,   22,   22,   22,   22,
-        1,   22,   14,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   15,   22,   22,   22,   22,    8,   22,   22,
-       22,    2,   22,   11,   22,   22,   22,   17,   22,   22,
-       22,   22,   22,   22,    4,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,    5,   22,   22,   22,   22,    6,
-       22,   22,   22,   10,   22,   22,   13,   20,   16,    3,
-        7,   18,   22,   22,   22,   19,   12,    0
-
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    1,    1,    1,    4,    1,    1,    1,
-        1,    1,    1,    1,    5,    6,    7,    8,    8,    8,
-        8,    8,    8,    8,    8,    8,    8,    9,    1,    1,
-        1,    1,    1,    1,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-        1,    1,    1,    1,    6,    1,   11,   12,   13,   14,
-
-       15,   16,   10,   17,   18,   10,   10,   19,   20,   21,
-       22,   23,   24,   25,   26,   27,   28,   10,   10,   10,
-       29,   10,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst flex_int32_t yy_meta[30] =
-    {   0,
-        1,    1,    1,    2,    1,    2,    1,    3,    2,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3
-    } ;
-
-static yyconst flex_int16_t yy_base[101] =
-    {   0,
-        0,    0,  195,  196,  192,  196,  196,  189,  196,   26,
-       27,   30,   28,   29,   31,   33,   32,   36,   40,   37,
-      190,    0,  187,  186,   35,   34,   55,   57,   58,   63,
-      185,   62,  184,   66,   65,   69,   68,   70,   73,   72,
-       74,    0,  183,   91,   92,   93,   75,  179,   76,   95,
-       97,  178,   80,  177,  100,  101,  103,  176,  105,  107,
-      109,  110,  112,  111,  175,  115,  113,  114,  119,  122,
-      121,  124,  126,  130,  174,  132,  133,  139,  140,  173,
-      137,  146,  138,  172,  147,  141,  171,  150,  170,  169,
-      167,  165,  142,  162,  157,  164,   78,  196,  183,   39
-
-    } ;
-
-static yyconst flex_int16_t yy_def[101] =
-    {   0,
-       98,    1,   98,   98,   98,   98,   98,   99,   98,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       98,  100,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,  100,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,    0,   98,   98
-
-    } ;
-
-static yyconst flex_int16_t yy_nxt[226] =
-    {   0,
-        4,    5,    6,    4,    7,    8,    9,    8,    8,    8,
-       10,   11,    8,   12,   13,    8,    8,   14,    8,   15,
-       16,   17,    8,    8,   18,    8,   19,   20,    8,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   42,   24,   22,   27,   33,   25,   28,   29,   31,
-       36,   32,   37,   30,   34,   26,   44,   40,   22,   35,
-       22,   22,   41,   43,   38,   22,   22,   39,   22,   22,
-       45,   22,   22,   22,   49,   22,   22,   22,   22,   22,
-       55,   22,   46,   22,   47,   48,   51,   50,   58,   57,
-       54,   52,   53,   56,   22,   22,   22,   63,   22,   62,
-
-       22,   59,   60,   22,   22,   61,   22,   66,   22,   64,
-       22,   65,   22,   22,   22,   22,   22,   22,   22,   72,
-       67,   68,   22,   75,   22,   22,   69,   22,   78,   22,
-       70,   74,   76,   22,   71,   22,   22,   73,   77,   81,
-       22,   22,   22,   22,   22,   22,   79,   80,   82,   22,
-       22,   83,   84,   22,   88,   86,   85,   87,   94,   90,
-       22,   92,   93,   89,   91,   22,   95,   22,   22,   96,
-       22,   96,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   97,   23,   23,   22,   22,   22,   22,
-       22,   21,   22,   21,   98,    3,   98,   98,   98,   98,
-
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98
-    } ;
-
-static yyconst flex_int16_t yy_chk[226] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,   10,
-       11,   13,   14,   12,   15,   17,   16,   26,   25,   18,
-       20,  100,   10,   19,   12,   15,   10,   12,   13,   14,
-       18,   14,   19,   13,   16,   11,   26,   20,   27,   17,
-       28,   29,   20,   25,   19,   32,   30,   19,   35,   34,
-       27,   37,   36,   38,   32,   40,   39,   41,   47,   49,
-       38,   97,   28,   53,   29,   30,   34,   32,   41,   40,
-       37,   35,   36,   39,   44,   45,   46,   49,   50,   47,
-
-       51,   44,   45,   55,   56,   46,   57,   53,   59,   50,
-       60,   51,   61,   62,   64,   63,   67,   68,   66,   61,
-       55,   56,   69,   64,   71,   70,   57,   72,   68,   73,
-       59,   63,   66,   74,   60,   76,   77,   62,   67,   71,
-       81,   83,   78,   79,   86,   93,   69,   70,   72,   82,
-       85,   73,   74,   88,   79,   77,   76,   78,   88,   82,
-       95,   85,   86,   81,   83,   94,   93,   96,   92,   94,
-       91,   96,   90,   89,   87,   84,   80,   75,   65,   58,
-       54,   52,   48,   95,   99,   99,   43,   33,   31,   24,
-       23,   21,    8,    5,    3,   98,   98,   98,   98,   98,
-
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int __libipsecyy_flex_debug;
-int __libipsecyy_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *__libipsecyytext;
-#line 1 "lib/libipsec/policy_token.l"
-/*	$FreeBSD$	*/
-/*	$KAME: policy_token.l,v 1.13 2003/05/09 05:19:55 sakane Exp $	*/
-/*
- * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. Neither the name of the project 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 PROJECT 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 PROJECT 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.
- */
-#line 34 "lib/libipsec/policy_token.l"
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/socket.h>
-#include <net/route.h>
-#ifdef __rtems__
-#include <freebsd/net/pfkeyv2.h>
-#include <freebsd/netipsec/keydb.h>
-#include <freebsd/netinet/in.h>
-#include <freebsd/netipsec/ipsec.h>
-#else
-#include <net/pfkeyv2.h>
-#include <netipsec/keydb.h>
-#include <netinet/in.h>
-#include <netipsec/ipsec.h>
-#endif
-
-#include <stdlib.h>
-#include <limits.h>
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-
-#ifdef __rtems__
-#include "../../y.tab.h"
-/* XXX - Jennifer doesn't know where to get this from */
-YY_BUFFER_STATE yy_current_buffer; 
-#else
-#include "y.tab.h"
-#endif
-
-#define yylval __libipsecyylval	/* XXX */
-
-int __libipsecyylex(void);
-/* common section */
-#line 616 "<stdout>"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int __libipsecyylex_destroy (void );
-
-int __libipsecyyget_debug (void );
-
-void __libipsecyyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE __libipsecyyget_extra (void );
-
-void __libipsecyyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *__libipsecyyget_in (void );
-
-void __libipsecyyset_in  (FILE * in_str  );
-
-FILE *__libipsecyyget_out (void );
-
-void __libipsecyyset_out  (FILE * out_str  );
-
-int __libipsecyyget_leng (void );
-
-char *__libipsecyyget_text (void );
-
-int __libipsecyyget_lineno (void );
-
-void __libipsecyyset_lineno (int line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int __libipsecyywrap (void );
-#else
-extern int __libipsecyywrap (void );
-#endif
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( __libipsecyytext, __libipsecyyleng, 1, __libipsecyyout )) {} } while (0)
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		unsigned n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( __libipsecyyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( __libipsecyyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, __libipsecyyin))==0 && ferror(__libipsecyyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(__libipsecyyin); \
-			} \
-		}\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int __libipsecyylex (void);
-
-#define YY_DECL int __libipsecyylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after __libipsecyytext and __libipsecyyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-#line 100 "lib/libipsec/policy_token.l"
-
-
-#line 799 "<stdout>"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! __libipsecyyin )
-			__libipsecyyin = stdin;
-
-		if ( ! __libipsecyyout )
-			__libipsecyyout = stdout;
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			__libipsecyyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				__libipsecyy_create_buffer(__libipsecyyin,YY_BUF_SIZE );
-		}
-
-		__libipsecyy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of __libipsecyytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = (yy_start);
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 99 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 196 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-do_action:	/* This label is used only to access EOF actions. */
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 102 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_DIR_INBOUND; return(DIR); }
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 103 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_DIR_OUTBOUND; return(DIR); }
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 105 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_POLICY_DISCARD; return(ACTION); }
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 106 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_POLICY_NONE; return(ACTION); }
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 107 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_POLICY_IPSEC; return(ACTION); }
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 108 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_POLICY_BYPASS; return(ACTION); }
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 109 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_POLICY_ENTRUST; return(ACTION); }
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 111 "lib/libipsec/policy_token.l"
-{ yylval.num = IPPROTO_ESP; return(PROTOCOL); }
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 112 "lib/libipsec/policy_token.l"
-{ yylval.num = IPPROTO_AH; return(PROTOCOL); }
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 113 "lib/libipsec/policy_token.l"
-{ yylval.num = IPPROTO_IPCOMP; return(PROTOCOL); }
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 114 "lib/libipsec/policy_token.l"
-{ yylval.num = IPPROTO_TCP; return(PROTOCOL); }
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 116 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_MODE_TRANSPORT; return(MODE); }
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 117 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_MODE_TUNNEL; return(MODE); }
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 119 "lib/libipsec/policy_token.l"
-{ return(ME); }
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 120 "lib/libipsec/policy_token.l"
-{ return(ANY); }
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 122 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_LEVEL_DEFAULT; return(LEVEL); }
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 123 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_LEVEL_USE; return(LEVEL); }
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 124 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_LEVEL_REQUIRE; return(LEVEL); }
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 125 "lib/libipsec/policy_token.l"
-{
-			yylval.val.len = strlen(__libipsecyytext + 7);
-			yylval.val.buf = __libipsecyytext + 7;
-			return(LEVEL_SPECIFY);
-		}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 130 "lib/libipsec/policy_token.l"
-{ yylval.num = IPSEC_LEVEL_UNIQUE; return(LEVEL); }
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 131 "lib/libipsec/policy_token.l"
-{ return(SLASH); }
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 133 "lib/libipsec/policy_token.l"
-{
-			yylval.val.len = strlen(__libipsecyytext);
-			yylval.val.buf = __libipsecyytext;
-			return(IPADDRESS);
-		}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 139 "lib/libipsec/policy_token.l"
-{ return(HYPHEN); }
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 141 "lib/libipsec/policy_token.l"
-{ ; }
-	YY_BREAK
-case 25:
-/* rule 25 can match eol */
-YY_RULE_SETUP
-#line 142 "lib/libipsec/policy_token.l"
-{ ; }
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 144 "lib/libipsec/policy_token.l"
-ECHO;
-	YY_BREAK
-#line 1021 "<stdout>"
-case YY_STATE_EOF(INITIAL):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed __libipsecyyin at a new source and called
-			 * __libipsecyylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = __libipsecyyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = (yy_c_buf_p);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( __libipsecyywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * __libipsecyytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of __libipsecyylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					__libipsecyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-						number_to_move - 1;
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			__libipsecyyrestart(__libipsecyyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) __libipsecyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 99 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 99 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 98);
-
-	return yy_is_jam ? 0 : yy_current_state;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					__libipsecyyrestart(__libipsecyyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( __libipsecyywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve __libipsecyytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void __libipsecyyrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        __libipsecyyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            __libipsecyy_create_buffer(__libipsecyyin,YY_BUF_SIZE );
-	}
-
-	__libipsecyy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	__libipsecyy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void __libipsecyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		__libipsecyypop_buffer_state();
-	 *		__libipsecyypush_buffer_state(new_buffer);
-     */
-	__libipsecyyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	__libipsecyy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (__libipsecyywrap()) processing, but the only time this flag
-	 * is looked at is after __libipsecyywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void __libipsecyy_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	__libipsecyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE __libipsecyy_create_buffer  (FILE * file, int  size )
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) __libipsecyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in __libipsecyy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) __libipsecyyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in __libipsecyy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	__libipsecyy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with __libipsecyy_create_buffer()
- * 
- */
-    void __libipsecyy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		__libipsecyyfree((void *) b->yy_ch_buf  );
-
-	__libipsecyyfree((void *) b  );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a __libipsecyyrestart() or at EOF.
- */
-    static void __libipsecyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-	int oerrno = errno;
-    
-	__libipsecyy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then __libipsecyy_init_buffer was _probably_
-     * called from __libipsecyyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void __libipsecyy_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		__libipsecyy_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void __libipsecyypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	__libipsecyyensure_buffer_stack();
-
-	/* This block is copied from __libipsecyy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from __libipsecyy_switch_to_buffer. */
-	__libipsecyy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void __libipsecyypop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	__libipsecyy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		__libipsecyy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void __libipsecyyensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)__libipsecyyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in __libipsecyyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)__libipsecyyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in __libipsecyyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE __libipsecyy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) __libipsecyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in __libipsecyy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	__libipsecyy_switch_to_buffer(b  );
-
-	return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to __libipsecyylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       __libipsecyy_scan_bytes() instead.
- */
-YY_BUFFER_STATE __libipsecyy_scan_string (yyconst char * yystr )
-{
-    
-	return __libipsecyy_scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to __libipsecyylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE __libipsecyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) __libipsecyyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in __libipsecyy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = __libipsecyy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in __libipsecyy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up __libipsecyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		__libipsecyytext[__libipsecyyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = __libipsecyytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		__libipsecyyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int __libipsecyyget_lineno  (void)
-{
-        
-    return __libipsecyylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *__libipsecyyget_in  (void)
-{
-        return __libipsecyyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *__libipsecyyget_out  (void)
-{
-        return __libipsecyyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int __libipsecyyget_leng  (void)
-{
-        return __libipsecyyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *__libipsecyyget_text  (void)
-{
-        return __libipsecyytext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void __libipsecyyset_lineno (int  line_number )
-{
-    
-    __libipsecyylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see __libipsecyy_switch_to_buffer
- */
-void __libipsecyyset_in (FILE *  in_str )
-{
-        __libipsecyyin = in_str ;
-}
-
-void __libipsecyyset_out (FILE *  out_str )
-{
-        __libipsecyyout = out_str ;
-}
-
-int __libipsecyyget_debug  (void)
-{
-        return __libipsecyy_flex_debug;
-}
-
-void __libipsecyyset_debug (int  bdebug )
-{
-        __libipsecyy_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from __libipsecyylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    __libipsecyyin = stdin;
-    __libipsecyyout = stdout;
-#else
-    __libipsecyyin = (FILE *) 0;
-    __libipsecyyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * __libipsecyylex_init()
-     */
-    return 0;
-}
-
-/* __libipsecyylex_destroy is for both reentrant and non-reentrant scanners. */
-int __libipsecyylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		__libipsecyy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		__libipsecyypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	__libipsecyyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * __libipsecyylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *__libipsecyyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *__libipsecyyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void __libipsecyyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see __libipsecyyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 144 "lib/libipsec/policy_token.l"
-
-
-
-void __policy__strbuffer__init__(char *);
-void __policy__strbuffer__free__(void);
-
-static YY_BUFFER_STATE strbuffer;
-
-void
-__policy__strbuffer__init__(msg)
-	char *msg;
-{
-	if (yy_current_buffer)
-		__libipsecyy_delete_buffer(yy_current_buffer);
-	strbuffer = (YY_BUFFER_STATE)__libipsecyy_scan_string(msg);
-	__libipsecyy_switch_to_buffer(strbuffer);
-
-	return;
-}
-
-void
-__policy__strbuffer__free__()
-{
-	__libipsecyy_delete_buffer(strbuffer);
-
-	return;
-}
-
diff --git a/freebsd-userspace/lib/libipsec/policy_token.l b/freebsd-userspace/lib/libipsec/policy_token.l
index 0d24a8f..d28ea72 100644
--- a/freebsd-userspace/lib/libipsec/policy_token.l
+++ b/freebsd-userspace/lib/libipsec/policy_token.l
@@ -54,13 +54,12 @@
 #include <errno.h>
 
 #ifdef __rtems__
-#include "../../y.tab.h"
 /* XXX - Jennifer doesn't know where to get this from */
 YY_BUFFER_STATE yy_current_buffer; 
-#else
-#include "y.tab.h"
 #endif
 
+#include "y.tab.h"
+
 #define yylval __libipsecyylval	/* XXX */
 
 int yylex(void);
diff --git a/freebsd-userspace/y.tab.h b/freebsd-userspace/y.tab.h
deleted file mode 100644
index 1ec0e18..0000000
--- a/freebsd-userspace/y.tab.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#define DIR 257
-#define ACTION 258
-#define PROTOCOL 259
-#define MODE 260
-#define LEVEL 261
-#define LEVEL_SPECIFY 262
-#define IPADDRESS 263
-#define ME 264
-#define ANY 265
-#define SLASH 266
-#define HYPHEN 267
-#ifdef YYSTYPE
-#undef  YYSTYPE_IS_DECLARED
-#define YYSTYPE_IS_DECLARED 1
-#endif
-#ifndef YYSTYPE_IS_DECLARED
-#define YYSTYPE_IS_DECLARED 1
-typedef union {
-	u_int num;
-	struct _val {
-		int len;
-		char *buf;
-	} val;
-} YYSTYPE;
-#endif /* !YYSTYPE_IS_DECLARED */
-extern YYSTYPE __libipsecyylval;




More information about the vc mailing list