source: rtems-libbsd/ipsec-tools/src/libipsec/policy_token.l @ ff36f5e

55-freebsd-126-freebsd-12
Last change on this file since ff36f5e was ff36f5e, checked in by Christian Mauderer <christian.mauderer@…>, on 05/30/18 at 12:27:35

Import ipsec-tools 0.8.2.

Import unchanged ipsec-tools sources in the release version 0.8.2. The
homepage of ipsec-tools is http://ipsec-tools.sourceforge.net/. The
sources can be obtained from there.

  • Property mode set to 100644
File size: 5.1 KB
Line 
1/*      $NetBSD: policy_token.l,v 1.7 2007/07/18 12:07:50 vanhu Exp $   */
2
3/* Id: policy_token.l,v 1.12 2005/05/05 12:32:18 manubsd Exp */
4
5/*
6 * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the project nor the names of its contributors
18 *    may be used to endorse or promote products derived from this software
19 *    without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33
34%{
35#ifdef HAVE_CONFIG_H
36#include "config.h"
37#endif
38
39#include <sys/types.h>
40#include <sys/param.h>
41#include <sys/socket.h>
42#include <net/pfkeyv2.h>
43#include <netinet/in.h>
44#include PATH_IPSEC_H
45
46#include <stdlib.h>
47#include <limits.h>
48#include <string.h>
49#include <unistd.h>
50#include <errno.h>
51
52#include "libpfkey.h"
53
54#if !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__linux__)  && \
55!defined(__APPLE__) && !defined(__MACH__)
56#include "y.tab.h"
57#else
58#include "policy_parse.h"
59#endif
60#define yylval __libipseclval   /* XXX */
61
62int yylex __P((void));
63%}
64
65%option noyywrap
66%option nounput
67
68/* common section */
69nl              \n
70ws              [ \t]+
71digit           [0-9]
72hexdigit        [0-9A-Fa-f]
73special         [()+\|\?\*,]
74dot             \.
75comma           \,
76hyphen          \-
77colon           \:
78slash           \/
79bcl             \{
80ecl             \}
81blcl            \[
82elcl            \]
83percent         \%
84semi            \;
85plus    \+
86usec            {dot}{digit}{1,6}
87comment         \#.*
88ccomment        "/*"
89bracketstring   \<[^>]*\>
90quotedstring    \"[^"]*\"
91decstring       {digit}+
92hexpair         {hexdigit}{hexdigit}
93hexstring       0[xX]{hexdigit}+
94octetstring     {octet}({dot}{octet})+
95ipaddress       [a-zA-Z0-9:\._][a-zA-Z0-9:\._]*(%[a-zA-Z0-9]+)?
96
97%%
98
99in              { yylval.num = IPSEC_DIR_INBOUND; return(DIR); }
100out             { yylval.num = IPSEC_DIR_OUTBOUND; return(DIR); }
101fwd             {
102#ifdef HAVE_POLICY_FWD
103                  yylval.num = IPSEC_DIR_FWD; return(DIR);
104#else
105                  yylval.num = IPSEC_DIR_INBOUND; return(DIR);
106#endif
107                }
108
109priority        { return(PRIORITY); }
110prio    { return(PRIORITY); }
111low     { yylval.num32 = PRIORITY_LOW; return(PRIO_BASE); }
112def { yylval.num32 = PRIORITY_DEFAULT; return(PRIO_BASE); }
113high    { yylval.num32 = PRIORITY_HIGH; return(PRIO_BASE); }
114{plus}  { return(PLUS); }
115{decstring}     {
116                        yylval.val.len = strlen(yytext);
117                        yylval.val.buf = yytext;
118                        return(PRIO_OFFSET);
119}
120
121discard         { yylval.num = IPSEC_POLICY_DISCARD; return(ACTION); }
122none            { yylval.num = IPSEC_POLICY_NONE; return(ACTION); }
123ipsec           { yylval.num = IPSEC_POLICY_IPSEC; return(ACTION); }
124bypass          { yylval.num = IPSEC_POLICY_BYPASS; return(ACTION); }
125entrust         { yylval.num = IPSEC_POLICY_ENTRUST; return(ACTION); }
126
127esp             { yylval.num = IPPROTO_ESP; return(PROTOCOL); }
128ah              { yylval.num = IPPROTO_AH; return(PROTOCOL); }
129ipcomp          { yylval.num = IPPROTO_IPCOMP; return(PROTOCOL); }
130
131transport       { yylval.num = IPSEC_MODE_TRANSPORT; return(MODE); }
132tunnel          { yylval.num = IPSEC_MODE_TUNNEL; return(MODE); }
133
134me              { return(ME); }
135any             { return(ANY); }
136
137default         { yylval.num = IPSEC_LEVEL_DEFAULT; return(LEVEL); }
138use             { yylval.num = IPSEC_LEVEL_USE; return(LEVEL); }
139require         { yylval.num = IPSEC_LEVEL_REQUIRE; return(LEVEL); }
140unique{colon}{decstring} {
141                        yylval.val.len = strlen(yytext + 7);
142                        yylval.val.buf = yytext + 7;
143                        return(LEVEL_SPECIFY);
144                }
145unique          { yylval.num = IPSEC_LEVEL_UNIQUE; return(LEVEL); }
146{slash}         { return(SLASH); }
147
148{ipaddress}     {
149                        yylval.val.len = strlen(yytext);
150                        yylval.val.buf = yytext;
151                        return(IPADDRESS);
152                }
153
154{hyphen}        { return(HYPHEN); }
155
156{blcl}{decstring}{elcl} {
157                        /* Remove leading '[' and trailing ']' */
158                        yylval.val.buf = yytext + 1;
159                        yylval.val.len = strlen(yytext) - 2;
160
161                        return(PORT);
162                }
163
164{ws}            { ; }
165{nl}            { ; }
166
167%%
168
169void __policy__strbuffer__init__ __P((char *));
170void __policy__strbuffer__free__ __P((void));
171
172static YY_BUFFER_STATE strbuffer;
173
174void
175__policy__strbuffer__init__(msg)
176        char *msg;
177{
178        if (YY_CURRENT_BUFFER)
179                yy_delete_buffer(YY_CURRENT_BUFFER);
180        strbuffer = (YY_BUFFER_STATE)yy_scan_string(msg);
181        yy_switch_to_buffer(strbuffer);
182
183        return;
184}
185
186void
187__policy__strbuffer__free__()
188{
189        yy_delete_buffer(strbuffer);
190
191        return;
192}
Note: See TracBrowser for help on using the repository browser.