Annotation of embedaddon/ipsec-tools/src/libipsec/policy_token.c, revision 1.1
1.1 ! misho 1: #line 2 "policy_token.c"
! 2:
! 3: #line 4 "policy_token.c"
! 4:
! 5: #define YY_INT_ALIGNED short int
! 6:
! 7: /* A lexical scanner generated by flex */
! 8:
! 9: #define yy_create_buffer __libipsec_create_buffer
! 10: #define yy_delete_buffer __libipsec_delete_buffer
! 11: #define yy_flex_debug __libipsec_flex_debug
! 12: #define yy_init_buffer __libipsec_init_buffer
! 13: #define yy_flush_buffer __libipsec_flush_buffer
! 14: #define yy_load_buffer_state __libipsec_load_buffer_state
! 15: #define yy_switch_to_buffer __libipsec_switch_to_buffer
! 16: #define yyin __libipsecin
! 17: #define yyleng __libipsecleng
! 18: #define yylex __libipseclex
! 19: #define yylineno __libipseclineno
! 20: #define yyout __libipsecout
! 21: #define yyrestart __libipsecrestart
! 22: #define yytext __libipsectext
! 23: #define yywrap __libipsecwrap
! 24: #define yyalloc __libipsecalloc
! 25: #define yyrealloc __libipsecrealloc
! 26: #define yyfree __libipsecfree
! 27:
! 28: #define FLEX_SCANNER
! 29: #define YY_FLEX_MAJOR_VERSION 2
! 30: #define YY_FLEX_MINOR_VERSION 5
! 31: #define YY_FLEX_SUBMINOR_VERSION 35
! 32: #if YY_FLEX_SUBMINOR_VERSION > 0
! 33: #define FLEX_BETA
! 34: #endif
! 35:
! 36: /* First, we deal with platform-specific or compiler-specific issues. */
! 37:
! 38: /* begin standard C headers. */
! 39: #include <stdio.h>
! 40: #include <string.h>
! 41: #include <errno.h>
! 42: #include <stdlib.h>
! 43:
! 44: /* end standard C headers. */
! 45:
! 46: /* flex integer type definitions */
! 47:
! 48: #ifndef FLEXINT_H
! 49: #define FLEXINT_H
! 50:
! 51: /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
! 52:
! 53: #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
! 54:
! 55: /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
! 56: * if you want the limit (max/min) macros for int types.
! 57: */
! 58: #ifndef __STDC_LIMIT_MACROS
! 59: #define __STDC_LIMIT_MACROS 1
! 60: #endif
! 61:
! 62: #include <inttypes.h>
! 63: typedef int8_t flex_int8_t;
! 64: typedef uint8_t flex_uint8_t;
! 65: typedef int16_t flex_int16_t;
! 66: typedef uint16_t flex_uint16_t;
! 67: typedef int32_t flex_int32_t;
! 68: typedef uint32_t flex_uint32_t;
! 69: #else
! 70: typedef signed char flex_int8_t;
! 71: typedef short int flex_int16_t;
! 72: typedef int flex_int32_t;
! 73: typedef unsigned char flex_uint8_t;
! 74: typedef unsigned short int flex_uint16_t;
! 75: typedef unsigned int flex_uint32_t;
! 76:
! 77: /* Limits of integral types. */
! 78: #ifndef INT8_MIN
! 79: #define INT8_MIN (-128)
! 80: #endif
! 81: #ifndef INT16_MIN
! 82: #define INT16_MIN (-32767-1)
! 83: #endif
! 84: #ifndef INT32_MIN
! 85: #define INT32_MIN (-2147483647-1)
! 86: #endif
! 87: #ifndef INT8_MAX
! 88: #define INT8_MAX (127)
! 89: #endif
! 90: #ifndef INT16_MAX
! 91: #define INT16_MAX (32767)
! 92: #endif
! 93: #ifndef INT32_MAX
! 94: #define INT32_MAX (2147483647)
! 95: #endif
! 96: #ifndef UINT8_MAX
! 97: #define UINT8_MAX (255U)
! 98: #endif
! 99: #ifndef UINT16_MAX
! 100: #define UINT16_MAX (65535U)
! 101: #endif
! 102: #ifndef UINT32_MAX
! 103: #define UINT32_MAX (4294967295U)
! 104: #endif
! 105:
! 106: #endif /* ! C99 */
! 107:
! 108: #endif /* ! FLEXINT_H */
! 109:
! 110: #ifdef __cplusplus
! 111:
! 112: /* The "const" storage-class-modifier is valid. */
! 113: #define YY_USE_CONST
! 114:
! 115: #else /* ! __cplusplus */
! 116:
! 117: /* C99 requires __STDC__ to be defined as 1. */
! 118: #if defined (__STDC__)
! 119:
! 120: #define YY_USE_CONST
! 121:
! 122: #endif /* defined (__STDC__) */
! 123: #endif /* ! __cplusplus */
! 124:
! 125: #ifdef YY_USE_CONST
! 126: #define yyconst const
! 127: #else
! 128: #define yyconst
! 129: #endif
! 130:
! 131: /* Returned upon end-of-file. */
! 132: #define YY_NULL 0
! 133:
! 134: /* Promotes a possibly negative, possibly signed char to an unsigned
! 135: * integer for use as an array index. If the signed char is negative,
! 136: * we want to instead treat it as an 8-bit unsigned char, hence the
! 137: * double cast.
! 138: */
! 139: #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
! 140:
! 141: /* Enter a start condition. This macro really ought to take a parameter,
! 142: * but we do it the disgusting crufty way forced on us by the ()-less
! 143: * definition of BEGIN.
! 144: */
! 145: #define BEGIN (yy_start) = 1 + 2 *
! 146:
! 147: /* Translate the current start state into a value that can be later handed
! 148: * to BEGIN to return to the state. The YYSTATE alias is for lex
! 149: * compatibility.
! 150: */
! 151: #define YY_START (((yy_start) - 1) / 2)
! 152: #define YYSTATE YY_START
! 153:
! 154: /* Action number for EOF rule of a given start state. */
! 155: #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
! 156:
! 157: /* Special action meaning "start processing a new file". */
! 158: #define YY_NEW_FILE __libipsecrestart(__libipsecin )
! 159:
! 160: #define YY_END_OF_BUFFER_CHAR 0
! 161:
! 162: /* Size of default input buffer. */
! 163: #ifndef YY_BUF_SIZE
! 164: #ifdef __ia64__
! 165: /* On IA-64, the buffer size is 16k, not 8k.
! 166: * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
! 167: * Ditto for the __ia64__ case accordingly.
! 168: */
! 169: #define YY_BUF_SIZE 32768
! 170: #else
! 171: #define YY_BUF_SIZE 16384
! 172: #endif /* __ia64__ */
! 173: #endif
! 174:
! 175: /* The state buf must be large enough to hold one state per character in the main buffer.
! 176: */
! 177: #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
! 178:
! 179: #ifndef YY_TYPEDEF_YY_BUFFER_STATE
! 180: #define YY_TYPEDEF_YY_BUFFER_STATE
! 181: typedef struct yy_buffer_state *YY_BUFFER_STATE;
! 182: #endif
! 183:
! 184: extern int __libipsecleng;
! 185:
! 186: extern FILE *__libipsecin, *__libipsecout;
! 187:
! 188: #define EOB_ACT_CONTINUE_SCAN 0
! 189: #define EOB_ACT_END_OF_FILE 1
! 190: #define EOB_ACT_LAST_MATCH 2
! 191:
! 192: #define YY_LESS_LINENO(n)
! 193:
! 194: /* Return all but the first "n" matched characters back to the input stream. */
! 195: #define yyless(n) \
! 196: do \
! 197: { \
! 198: /* Undo effects of setting up __libipsectext. */ \
! 199: int yyless_macro_arg = (n); \
! 200: YY_LESS_LINENO(yyless_macro_arg);\
! 201: *yy_cp = (yy_hold_char); \
! 202: YY_RESTORE_YY_MORE_OFFSET \
! 203: (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
! 204: YY_DO_BEFORE_ACTION; /* set up __libipsectext again */ \
! 205: } \
! 206: while ( 0 )
! 207:
! 208: #define unput(c) yyunput( c, (yytext_ptr) )
! 209:
! 210: #ifndef YY_TYPEDEF_YY_SIZE_T
! 211: #define YY_TYPEDEF_YY_SIZE_T
! 212: typedef size_t yy_size_t;
! 213: #endif
! 214:
! 215: #ifndef YY_STRUCT_YY_BUFFER_STATE
! 216: #define YY_STRUCT_YY_BUFFER_STATE
! 217: struct yy_buffer_state
! 218: {
! 219: FILE *yy_input_file;
! 220:
! 221: char *yy_ch_buf; /* input buffer */
! 222: char *yy_buf_pos; /* current position in input buffer */
! 223:
! 224: /* Size of input buffer in bytes, not including room for EOB
! 225: * characters.
! 226: */
! 227: yy_size_t yy_buf_size;
! 228:
! 229: /* Number of characters read into yy_ch_buf, not including EOB
! 230: * characters.
! 231: */
! 232: int yy_n_chars;
! 233:
! 234: /* Whether we "own" the buffer - i.e., we know we created it,
! 235: * and can realloc() it to grow it, and should free() it to
! 236: * delete it.
! 237: */
! 238: int yy_is_our_buffer;
! 239:
! 240: /* Whether this is an "interactive" input source; if so, and
! 241: * if we're using stdio for input, then we want to use getc()
! 242: * instead of fread(), to make sure we stop fetching input after
! 243: * each newline.
! 244: */
! 245: int yy_is_interactive;
! 246:
! 247: /* Whether we're considered to be at the beginning of a line.
! 248: * If so, '^' rules will be active on the next match, otherwise
! 249: * not.
! 250: */
! 251: int yy_at_bol;
! 252:
! 253: int yy_bs_lineno; /**< The line count. */
! 254: int yy_bs_column; /**< The column count. */
! 255:
! 256: /* Whether to try to fill the input buffer when we reach the
! 257: * end of it.
! 258: */
! 259: int yy_fill_buffer;
! 260:
! 261: int yy_buffer_status;
! 262:
! 263: #define YY_BUFFER_NEW 0
! 264: #define YY_BUFFER_NORMAL 1
! 265: /* When an EOF's been seen but there's still some text to process
! 266: * then we mark the buffer as YY_EOF_PENDING, to indicate that we
! 267: * shouldn't try reading from the input source any more. We might
! 268: * still have a bunch of tokens to match, though, because of
! 269: * possible backing-up.
! 270: *
! 271: * When we actually see the EOF, we change the status to "new"
! 272: * (via __libipsecrestart()), so that the user can continue scanning by
! 273: * just pointing __libipsecin at a new input file.
! 274: */
! 275: #define YY_BUFFER_EOF_PENDING 2
! 276:
! 277: };
! 278: #endif /* !YY_STRUCT_YY_BUFFER_STATE */
! 279:
! 280: /* Stack of input buffers. */
! 281: static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
! 282: static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
! 283: static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
! 284:
! 285: /* We provide macros for accessing buffer states in case in the
! 286: * future we want to put the buffer states in a more general
! 287: * "scanner state".
! 288: *
! 289: * Returns the top of the stack, or NULL.
! 290: */
! 291: #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
! 292: ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
! 293: : NULL)
! 294:
! 295: /* Same as previous macro, but useful when we know that the buffer stack is not
! 296: * NULL or when we need an lvalue. For internal use only.
! 297: */
! 298: #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
! 299:
! 300: /* yy_hold_char holds the character lost when __libipsectext is formed. */
! 301: static char yy_hold_char;
! 302: static int yy_n_chars; /* number of characters read into yy_ch_buf */
! 303: int __libipsecleng;
! 304:
! 305: /* Points to current character in buffer. */
! 306: static char *yy_c_buf_p = (char *) 0;
! 307: static int yy_init = 0; /* whether we need to initialize */
! 308: static int yy_start = 0; /* start state number */
! 309:
! 310: /* Flag which is used to allow __libipsecwrap()'s to do buffer switches
! 311: * instead of setting up a fresh __libipsecin. A bit of a hack ...
! 312: */
! 313: static int yy_did_buffer_switch_on_eof;
! 314:
! 315: void __libipsecrestart (FILE *input_file );
! 316: void __libipsec_switch_to_buffer (YY_BUFFER_STATE new_buffer );
! 317: YY_BUFFER_STATE __libipsec_create_buffer (FILE *file,int size );
! 318: void __libipsec_delete_buffer (YY_BUFFER_STATE b );
! 319: void __libipsec_flush_buffer (YY_BUFFER_STATE b );
! 320: void __libipsecpush_buffer_state (YY_BUFFER_STATE new_buffer );
! 321: void __libipsecpop_buffer_state (void );
! 322:
! 323: static void __libipsecensure_buffer_stack (void );
! 324: static void __libipsec_load_buffer_state (void );
! 325: static void __libipsec_init_buffer (YY_BUFFER_STATE b,FILE *file );
! 326:
! 327: #define YY_FLUSH_BUFFER __libipsec_flush_buffer(YY_CURRENT_BUFFER )
! 328:
! 329: YY_BUFFER_STATE __libipsec_scan_buffer (char *base,yy_size_t size );
! 330: YY_BUFFER_STATE __libipsec_scan_string (yyconst char *yy_str );
! 331: YY_BUFFER_STATE __libipsec_scan_bytes (yyconst char *bytes,int len );
! 332:
! 333: void *__libipsecalloc (yy_size_t );
! 334: void *__libipsecrealloc (void *,yy_size_t );
! 335: void __libipsecfree (void * );
! 336:
! 337: #define yy_new_buffer __libipsec_create_buffer
! 338:
! 339: #define yy_set_interactive(is_interactive) \
! 340: { \
! 341: if ( ! YY_CURRENT_BUFFER ){ \
! 342: __libipsecensure_buffer_stack (); \
! 343: YY_CURRENT_BUFFER_LVALUE = \
! 344: __libipsec_create_buffer(__libipsecin,YY_BUF_SIZE ); \
! 345: } \
! 346: YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
! 347: }
! 348:
! 349: #define yy_set_bol(at_bol) \
! 350: { \
! 351: if ( ! YY_CURRENT_BUFFER ){\
! 352: __libipsecensure_buffer_stack (); \
! 353: YY_CURRENT_BUFFER_LVALUE = \
! 354: __libipsec_create_buffer(__libipsecin,YY_BUF_SIZE ); \
! 355: } \
! 356: YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
! 357: }
! 358:
! 359: #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
! 360:
! 361: /* Begin user sect3 */
! 362:
! 363: #define __libipsecwrap(n) 1
! 364: #define YY_SKIP_YYWRAP
! 365:
! 366: typedef unsigned char YY_CHAR;
! 367:
! 368: FILE *__libipsecin = (FILE *) 0, *__libipsecout = (FILE *) 0;
! 369:
! 370: typedef int yy_state_type;
! 371:
! 372: extern int __libipseclineno;
! 373:
! 374: int __libipseclineno = 1;
! 375:
! 376: extern char *__libipsectext;
! 377: #define yytext_ptr __libipsectext
! 378:
! 379: static yy_state_type yy_get_previous_state (void );
! 380: static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
! 381: static int yy_get_next_buffer (void );
! 382: static void yy_fatal_error (yyconst char msg[] );
! 383:
! 384: /* Done after the current pattern has been matched and before the
! 385: * corresponding action - sets up __libipsectext.
! 386: */
! 387: #define YY_DO_BEFORE_ACTION \
! 388: (yytext_ptr) = yy_bp; \
! 389: __libipsecleng = (size_t) (yy_cp - yy_bp); \
! 390: (yy_hold_char) = *yy_cp; \
! 391: *yy_cp = '\0'; \
! 392: (yy_c_buf_p) = yy_cp;
! 393:
! 394: #define YY_NUM_RULES 34
! 395: #define YY_END_OF_BUFFER 35
! 396: /* This struct is not used in this scanner,
! 397: but its presence is necessary. */
! 398: struct yy_trans_info
! 399: {
! 400: flex_int32_t yy_verify;
! 401: flex_int32_t yy_nxt;
! 402: };
! 403: static yyconst flex_int16_t yy_accept[121] =
! 404: { 0,
! 405: 0, 0, 35, 34, 32, 33, 9, 30, 29, 28,
! 406: 10, 34, 29, 29, 29, 29, 29, 29, 29, 29,
! 407: 29, 29, 29, 29, 29, 29, 29, 32, 0, 29,
! 408: 10, 0, 17, 29, 29, 29, 29, 29, 29, 29,
! 409: 29, 1, 29, 29, 21, 29, 29, 29, 29, 29,
! 410: 29, 29, 29, 29, 31, 22, 29, 7, 29, 29,
! 411: 16, 3, 29, 29, 29, 6, 29, 2, 29, 29,
! 412: 29, 29, 29, 24, 29, 29, 29, 29, 8, 29,
! 413: 29, 12, 5, 29, 29, 29, 29, 29, 29, 29,
! 414: 29, 29, 13, 29, 29, 29, 29, 29, 14, 29,
! 415:
! 416: 29, 29, 18, 29, 29, 29, 20, 27, 23, 11,
! 417: 15, 29, 25, 29, 29, 4, 29, 26, 19, 0
! 418: } ;
! 419:
! 420: static yyconst flex_int32_t yy_ec[256] =
! 421: { 0,
! 422: 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
! 423: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 424: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 425: 1, 2, 1, 1, 1, 1, 4, 1, 1, 1,
! 426: 1, 1, 5, 1, 6, 7, 8, 9, 9, 9,
! 427: 9, 9, 9, 9, 9, 9, 9, 10, 1, 1,
! 428: 1, 1, 1, 1, 11, 11, 11, 11, 11, 11,
! 429: 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
! 430: 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
! 431: 12, 1, 13, 1, 7, 1, 14, 15, 16, 17,
! 432:
! 433: 18, 19, 20, 21, 22, 11, 11, 23, 24, 25,
! 434: 26, 27, 28, 29, 30, 31, 32, 11, 33, 11,
! 435: 34, 11, 1, 1, 1, 1, 1, 1, 1, 1,
! 436: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 437: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 438: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 439: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 440: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 441: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 442: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 443:
! 444: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 445: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 446: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 447: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 448: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 449: 1, 1, 1, 1, 1
! 450: } ;
! 451:
! 452: static yyconst flex_int32_t yy_meta[35] =
! 453: { 0,
! 454: 1, 1, 1, 2, 1, 1, 2, 1, 3, 2,
! 455: 3, 1, 1, 3, 3, 3, 3, 3, 3, 3,
! 456: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
! 457: 3, 3, 3, 3
! 458: } ;
! 459:
! 460: static yyconst flex_int16_t yy_base[123] =
! 461: { 0,
! 462: 0, 0, 235, 236, 232, 236, 236, 236, 229, 236,
! 463: 31, 223, 32, 33, 34, 35, 37, 39, 41, 38,
! 464: 40, 43, 42, 44, 45, 46, 47, 229, 0, 226,
! 465: 50, 67, 225, 51, 67, 77, 58, 75, 78, 80,
! 466: 79, 224, 82, 83, 223, 85, 86, 87, 91, 88,
! 467: 89, 96, 97, 0, 236, 222, 99, 107, 104, 100,
! 468: 221, 220, 103, 118, 119, 219, 121, 218, 122, 123,
! 469: 124, 126, 128, 217, 127, 129, 131, 130, 216, 134,
! 470: 136, 215, 137, 132, 138, 142, 139, 143, 146, 149,
! 471: 155, 159, 214, 160, 161, 166, 168, 163, 213, 170,
! 472:
! 473: 171, 172, 212, 173, 176, 179, 211, 185, 206, 204,
! 474: 202, 175, 196, 183, 188, 195, 180, 198, 194, 236,
! 475: 211, 193
! 476: } ;
! 477:
! 478: static yyconst flex_int16_t yy_def[123] =
! 479: { 0,
! 480: 120, 1, 120, 120, 120, 120, 120, 120, 121, 120,
! 481: 121, 120, 121, 121, 121, 121, 121, 121, 121, 121,
! 482: 121, 121, 121, 121, 121, 121, 121, 120, 122, 121,
! 483: 121, 120, 121, 121, 121, 121, 121, 121, 121, 121,
! 484: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 485: 121, 121, 121, 122, 120, 121, 121, 121, 121, 121,
! 486: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 487: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 488: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 489: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 490:
! 491: 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
! 492: 121, 121, 121, 121, 121, 121, 121, 121, 121, 0,
! 493: 120, 120
! 494: } ;
! 495:
! 496: static yyconst flex_int16_t yy_nxt[271] =
! 497: { 0,
! 498: 4, 5, 6, 4, 7, 8, 9, 10, 11, 9,
! 499: 9, 12, 4, 13, 14, 9, 15, 16, 17, 9,
! 500: 18, 19, 20, 21, 22, 23, 24, 9, 25, 9,
! 501: 26, 27, 9, 9, 29, 29, 29, 29, 29, 31,
! 502: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
! 503: 29, 36, 33, 29, 29, 37, 34, 45, 31, 38,
! 504: 41, 29, 49, 44, 39, 42, 35, 43, 46, 40,
! 505: 29, 52, 48, 47, 50, 32, 53, 51, 29, 55,
! 506: 29, 29, 29, 29, 56, 29, 29, 59, 29, 29,
! 507: 29, 29, 29, 57, 29, 58, 62, 64, 63, 29,
! 508:
! 509: 29, 71, 29, 29, 61, 60, 29, 29, 69, 67,
! 510: 29, 65, 75, 72, 74, 66, 68, 73, 70, 77,
! 511: 76, 29, 29, 79, 29, 29, 29, 29, 78, 29,
! 512: 29, 29, 29, 29, 29, 29, 81, 29, 82, 29,
! 513: 29, 29, 29, 80, 90, 29, 29, 83, 85, 29,
! 514: 86, 93, 29, 95, 84, 87, 88, 92, 29, 97,
! 515: 89, 91, 29, 29, 29, 94, 29, 96, 100, 29,
! 516: 98, 29, 99, 29, 29, 29, 29, 101, 29, 29,
! 517: 108, 104, 29, 29, 102, 103, 29, 110, 29, 105,
! 518: 107, 29, 106, 113, 115, 54, 118, 29, 29, 29,
! 519:
! 520: 109, 29, 111, 112, 114, 29, 118, 29, 116, 29,
! 521: 119, 117, 30, 30, 29, 29, 29, 29, 29, 29,
! 522: 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
! 523: 28, 32, 29, 28, 120, 3, 120, 120, 120, 120,
! 524: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
! 525: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
! 526: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120
! 527: } ;
! 528:
! 529: static yyconst flex_int16_t yy_chk[271] =
! 530: { 0,
! 531: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 532: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 533: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
! 534: 1, 1, 1, 1, 11, 13, 14, 15, 16, 11,
! 535: 17, 20, 18, 21, 19, 23, 22, 24, 25, 26,
! 536: 27, 15, 13, 31, 34, 15, 13, 21, 31, 16,
! 537: 18, 37, 25, 20, 16, 19, 14, 19, 22, 17,
! 538: 35, 27, 24, 23, 26, 32, 27, 26, 38, 32,
! 539: 36, 39, 41, 40, 34, 43, 44, 37, 46, 47,
! 540: 48, 50, 51, 35, 49, 36, 40, 43, 41, 52,
! 541:
! 542: 53, 50, 57, 60, 39, 38, 63, 59, 48, 46,
! 543: 58, 43, 57, 51, 53, 44, 47, 52, 49, 59,
! 544: 58, 64, 65, 63, 67, 69, 70, 71, 60, 72,
! 545: 75, 73, 76, 78, 77, 84, 65, 80, 67, 81,
! 546: 83, 85, 87, 64, 77, 86, 88, 69, 71, 89,
! 547: 72, 81, 90, 84, 70, 73, 75, 80, 91, 86,
! 548: 76, 78, 92, 94, 95, 83, 98, 85, 89, 96,
! 549: 87, 97, 88, 100, 101, 102, 104, 90, 112, 105,
! 550: 98, 94, 106, 117, 91, 92, 114, 101, 108, 95,
! 551: 97, 115, 96, 105, 108, 122, 115, 119, 116, 113,
! 552:
! 553: 100, 118, 102, 104, 106, 111, 118, 110, 112, 109,
! 554: 117, 114, 121, 121, 107, 103, 99, 93, 82, 79,
! 555: 74, 68, 66, 62, 61, 56, 45, 42, 33, 30,
! 556: 28, 12, 9, 5, 3, 120, 120, 120, 120, 120,
! 557: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
! 558: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
! 559: 120, 120, 120, 120, 120, 120, 120, 120, 120, 120
! 560: } ;
! 561:
! 562: static yy_state_type yy_last_accepting_state;
! 563: static char *yy_last_accepting_cpos;
! 564:
! 565: extern int __libipsec_flex_debug;
! 566: int __libipsec_flex_debug = 0;
! 567:
! 568: /* The intent behind this definition is that it'll catch
! 569: * any uses of REJECT which flex missed.
! 570: */
! 571: #define REJECT reject_used_but_not_detected
! 572: #define yymore() yymore_used_but_not_detected
! 573: #define YY_MORE_ADJ 0
! 574: #define YY_RESTORE_YY_MORE_OFFSET
! 575: char *__libipsectext;
! 576: #line 1 "policy_token.l"
! 577: /* $NetBSD: policy_token.l,v 1.7 2007/07/18 12:07:50 vanhu Exp $ */
! 578: /* Id: policy_token.l,v 1.12 2005/05/05 12:32:18 manubsd Exp */
! 579: /*
! 580: * Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
! 581: * All rights reserved.
! 582: *
! 583: * Redistribution and use in source and binary forms, with or without
! 584: * modification, are permitted provided that the following conditions
! 585: * are met:
! 586: * 1. Redistributions of source code must retain the above copyright
! 587: * notice, this list of conditions and the following disclaimer.
! 588: * 2. Redistributions in binary form must reproduce the above copyright
! 589: * notice, this list of conditions and the following disclaimer in the
! 590: * documentation and/or other materials provided with the distribution.
! 591: * 3. Neither the name of the project nor the names of its contributors
! 592: * may be used to endorse or promote products derived from this software
! 593: * without specific prior written permission.
! 594: *
! 595: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
! 596: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 597: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 598: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
! 599: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 600: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 601: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 602: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 603: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 604: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 605: * SUCH DAMAGE.
! 606: */
! 607: #line 35 "policy_token.l"
! 608: #ifdef HAVE_CONFIG_H
! 609: #include "config.h"
! 610: #endif
! 611:
! 612: #include <sys/types.h>
! 613: #include <sys/param.h>
! 614: #include <sys/socket.h>
! 615: #include <net/pfkeyv2.h>
! 616: #include <netinet/in.h>
! 617: #include PATH_IPSEC_H
! 618:
! 619: #include <stdlib.h>
! 620: #include <limits.h>
! 621: #include <string.h>
! 622: #include <unistd.h>
! 623: #include <errno.h>
! 624:
! 625: #include "libpfkey.h"
! 626:
! 627: #if !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__linux__) && \
! 628: !defined(__APPLE__) && !defined(__MACH__)
! 629: #include "y.tab.h"
! 630: #else
! 631: #include "policy_parse.h"
! 632: #endif
! 633: #define yylval __libipseclval /* XXX */
! 634:
! 635: int __libipseclex __P((void));
! 636: /* common section */
! 637: #line 638 "policy_token.c"
! 638:
! 639: #define INITIAL 0
! 640:
! 641: #ifndef YY_NO_UNISTD_H
! 642: /* Special case for "unistd.h", since it is non-ANSI. We include it way
! 643: * down here because we want the user's section 1 to have been scanned first.
! 644: * The user has a chance to override it with an option.
! 645: */
! 646: #include <unistd.h>
! 647: #endif
! 648:
! 649: #ifndef YY_EXTRA_TYPE
! 650: #define YY_EXTRA_TYPE void *
! 651: #endif
! 652:
! 653: static int yy_init_globals (void );
! 654:
! 655: /* Accessor methods to globals.
! 656: These are made visible to non-reentrant scanners for convenience. */
! 657:
! 658: int __libipseclex_destroy (void );
! 659:
! 660: int __libipsecget_debug (void );
! 661:
! 662: void __libipsecset_debug (int debug_flag );
! 663:
! 664: YY_EXTRA_TYPE __libipsecget_extra (void );
! 665:
! 666: void __libipsecset_extra (YY_EXTRA_TYPE user_defined );
! 667:
! 668: FILE *__libipsecget_in (void );
! 669:
! 670: void __libipsecset_in (FILE * in_str );
! 671:
! 672: FILE *__libipsecget_out (void );
! 673:
! 674: void __libipsecset_out (FILE * out_str );
! 675:
! 676: int __libipsecget_leng (void );
! 677:
! 678: char *__libipsecget_text (void );
! 679:
! 680: int __libipsecget_lineno (void );
! 681:
! 682: void __libipsecset_lineno (int line_number );
! 683:
! 684: /* Macros after this point can all be overridden by user definitions in
! 685: * section 1.
! 686: */
! 687:
! 688: #ifndef YY_SKIP_YYWRAP
! 689: #ifdef __cplusplus
! 690: extern "C" int __libipsecwrap (void );
! 691: #else
! 692: extern int __libipsecwrap (void );
! 693: #endif
! 694: #endif
! 695:
! 696: #ifndef yytext_ptr
! 697: static void yy_flex_strncpy (char *,yyconst char *,int );
! 698: #endif
! 699:
! 700: #ifdef YY_NEED_STRLEN
! 701: static int yy_flex_strlen (yyconst char * );
! 702: #endif
! 703:
! 704: #ifndef YY_NO_INPUT
! 705:
! 706: #ifdef __cplusplus
! 707: static int yyinput (void );
! 708: #else
! 709: static int input (void );
! 710: #endif
! 711:
! 712: #endif
! 713:
! 714: /* Amount of stuff to slurp up with each read. */
! 715: #ifndef YY_READ_BUF_SIZE
! 716: #ifdef __ia64__
! 717: /* On IA-64, the buffer size is 16k, not 8k */
! 718: #define YY_READ_BUF_SIZE 16384
! 719: #else
! 720: #define YY_READ_BUF_SIZE 8192
! 721: #endif /* __ia64__ */
! 722: #endif
! 723:
! 724: /* Copy whatever the last rule matched to the standard output. */
! 725: #ifndef ECHO
! 726: /* This used to be an fputs(), but since the string might contain NUL's,
! 727: * we now use fwrite().
! 728: */
! 729: #define ECHO do { if (fwrite( __libipsectext, __libipsecleng, 1, __libipsecout )) {} } while (0)
! 730: #endif
! 731:
! 732: /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
! 733: * is returned in "result".
! 734: */
! 735: #ifndef YY_INPUT
! 736: #define YY_INPUT(buf,result,max_size) \
! 737: if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
! 738: { \
! 739: int c = '*'; \
! 740: size_t n; \
! 741: for ( n = 0; n < max_size && \
! 742: (c = getc( __libipsecin )) != EOF && c != '\n'; ++n ) \
! 743: buf[n] = (char) c; \
! 744: if ( c == '\n' ) \
! 745: buf[n++] = (char) c; \
! 746: if ( c == EOF && ferror( __libipsecin ) ) \
! 747: YY_FATAL_ERROR( "input in flex scanner failed" ); \
! 748: result = n; \
! 749: } \
! 750: else \
! 751: { \
! 752: errno=0; \
! 753: while ( (result = fread(buf, 1, max_size, __libipsecin))==0 && ferror(__libipsecin)) \
! 754: { \
! 755: if( errno != EINTR) \
! 756: { \
! 757: YY_FATAL_ERROR( "input in flex scanner failed" ); \
! 758: break; \
! 759: } \
! 760: errno=0; \
! 761: clearerr(__libipsecin); \
! 762: } \
! 763: }\
! 764: \
! 765:
! 766: #endif
! 767:
! 768: /* No semi-colon after return; correct usage is to write "yyterminate();" -
! 769: * we don't want an extra ';' after the "return" because that will cause
! 770: * some compilers to complain about unreachable statements.
! 771: */
! 772: #ifndef yyterminate
! 773: #define yyterminate() return YY_NULL
! 774: #endif
! 775:
! 776: /* Number of entries by which start-condition stack grows. */
! 777: #ifndef YY_START_STACK_INCR
! 778: #define YY_START_STACK_INCR 25
! 779: #endif
! 780:
! 781: /* Report a fatal error. */
! 782: #ifndef YY_FATAL_ERROR
! 783: #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
! 784: #endif
! 785:
! 786: /* end tables serialization structures and prototypes */
! 787:
! 788: /* Default declaration of generated scanner - a define so the user can
! 789: * easily add parameters.
! 790: */
! 791: #ifndef YY_DECL
! 792: #define YY_DECL_IS_OURS 1
! 793:
! 794: extern int __libipseclex (void);
! 795:
! 796: #define YY_DECL int __libipseclex (void)
! 797: #endif /* !YY_DECL */
! 798:
! 799: /* Code executed at the beginning of each rule, after __libipsectext and __libipsecleng
! 800: * have been set up.
! 801: */
! 802: #ifndef YY_USER_ACTION
! 803: #define YY_USER_ACTION
! 804: #endif
! 805:
! 806: /* Code executed at the end of each rule. */
! 807: #ifndef YY_BREAK
! 808: #define YY_BREAK break;
! 809: #endif
! 810:
! 811: #define YY_RULE_SETUP \
! 812: YY_USER_ACTION
! 813:
! 814: /** The main scanner function which does all the work.
! 815: */
! 816: YY_DECL
! 817: {
! 818: register yy_state_type yy_current_state;
! 819: register char *yy_cp, *yy_bp;
! 820: register int yy_act;
! 821:
! 822: #line 97 "policy_token.l"
! 823:
! 824:
! 825: #line 826 "policy_token.c"
! 826:
! 827: if ( !(yy_init) )
! 828: {
! 829: (yy_init) = 1;
! 830:
! 831: #ifdef YY_USER_INIT
! 832: YY_USER_INIT;
! 833: #endif
! 834:
! 835: if ( ! (yy_start) )
! 836: (yy_start) = 1; /* first start state */
! 837:
! 838: if ( ! __libipsecin )
! 839: __libipsecin = stdin;
! 840:
! 841: if ( ! __libipsecout )
! 842: __libipsecout = stdout;
! 843:
! 844: if ( ! YY_CURRENT_BUFFER ) {
! 845: __libipsecensure_buffer_stack ();
! 846: YY_CURRENT_BUFFER_LVALUE =
! 847: __libipsec_create_buffer(__libipsecin,YY_BUF_SIZE );
! 848: }
! 849:
! 850: __libipsec_load_buffer_state( );
! 851: }
! 852:
! 853: while ( 1 ) /* loops until end-of-file is reached */
! 854: {
! 855: yy_cp = (yy_c_buf_p);
! 856:
! 857: /* Support of __libipsectext. */
! 858: *yy_cp = (yy_hold_char);
! 859:
! 860: /* yy_bp points to the position in yy_ch_buf of the start of
! 861: * the current run.
! 862: */
! 863: yy_bp = yy_cp;
! 864:
! 865: yy_current_state = (yy_start);
! 866: yy_match:
! 867: do
! 868: {
! 869: register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
! 870: if ( yy_accept[yy_current_state] )
! 871: {
! 872: (yy_last_accepting_state) = yy_current_state;
! 873: (yy_last_accepting_cpos) = yy_cp;
! 874: }
! 875: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
! 876: {
! 877: yy_current_state = (int) yy_def[yy_current_state];
! 878: if ( yy_current_state >= 121 )
! 879: yy_c = yy_meta[(unsigned int) yy_c];
! 880: }
! 881: yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
! 882: ++yy_cp;
! 883: }
! 884: while ( yy_base[yy_current_state] != 236 );
! 885:
! 886: yy_find_action:
! 887: yy_act = yy_accept[yy_current_state];
! 888: if ( yy_act == 0 )
! 889: { /* have to back up */
! 890: yy_cp = (yy_last_accepting_cpos);
! 891: yy_current_state = (yy_last_accepting_state);
! 892: yy_act = yy_accept[yy_current_state];
! 893: }
! 894:
! 895: YY_DO_BEFORE_ACTION;
! 896:
! 897: do_action: /* This label is used only to access EOF actions. */
! 898:
! 899: switch ( yy_act )
! 900: { /* beginning of action switch */
! 901: case 0: /* must back up */
! 902: /* undo the effects of YY_DO_BEFORE_ACTION */
! 903: *yy_cp = (yy_hold_char);
! 904: yy_cp = (yy_last_accepting_cpos);
! 905: yy_current_state = (yy_last_accepting_state);
! 906: goto yy_find_action;
! 907:
! 908: case 1:
! 909: YY_RULE_SETUP
! 910: #line 99 "policy_token.l"
! 911: { yylval.num = IPSEC_DIR_INBOUND; return(DIR); }
! 912: YY_BREAK
! 913: case 2:
! 914: YY_RULE_SETUP
! 915: #line 100 "policy_token.l"
! 916: { yylval.num = IPSEC_DIR_OUTBOUND; return(DIR); }
! 917: YY_BREAK
! 918: case 3:
! 919: YY_RULE_SETUP
! 920: #line 101 "policy_token.l"
! 921: {
! 922: #ifdef HAVE_POLICY_FWD
! 923: yylval.num = IPSEC_DIR_FWD; return(DIR);
! 924: #else
! 925: yylval.num = IPSEC_DIR_INBOUND; return(DIR);
! 926: #endif
! 927: }
! 928: YY_BREAK
! 929: case 4:
! 930: YY_RULE_SETUP
! 931: #line 109 "policy_token.l"
! 932: { return(PRIORITY); }
! 933: YY_BREAK
! 934: case 5:
! 935: YY_RULE_SETUP
! 936: #line 110 "policy_token.l"
! 937: { return(PRIORITY); }
! 938: YY_BREAK
! 939: case 6:
! 940: YY_RULE_SETUP
! 941: #line 111 "policy_token.l"
! 942: { yylval.num32 = PRIORITY_LOW; return(PRIO_BASE); }
! 943: YY_BREAK
! 944: case 7:
! 945: YY_RULE_SETUP
! 946: #line 112 "policy_token.l"
! 947: { yylval.num32 = PRIORITY_DEFAULT; return(PRIO_BASE); }
! 948: YY_BREAK
! 949: case 8:
! 950: YY_RULE_SETUP
! 951: #line 113 "policy_token.l"
! 952: { yylval.num32 = PRIORITY_HIGH; return(PRIO_BASE); }
! 953: YY_BREAK
! 954: case 9:
! 955: YY_RULE_SETUP
! 956: #line 114 "policy_token.l"
! 957: { return(PLUS); }
! 958: YY_BREAK
! 959: case 10:
! 960: YY_RULE_SETUP
! 961: #line 115 "policy_token.l"
! 962: {
! 963: yylval.val.len = strlen(__libipsectext);
! 964: yylval.val.buf = __libipsectext;
! 965: return(PRIO_OFFSET);
! 966: }
! 967: YY_BREAK
! 968: case 11:
! 969: YY_RULE_SETUP
! 970: #line 121 "policy_token.l"
! 971: { yylval.num = IPSEC_POLICY_DISCARD; return(ACTION); }
! 972: YY_BREAK
! 973: case 12:
! 974: YY_RULE_SETUP
! 975: #line 122 "policy_token.l"
! 976: { yylval.num = IPSEC_POLICY_NONE; return(ACTION); }
! 977: YY_BREAK
! 978: case 13:
! 979: YY_RULE_SETUP
! 980: #line 123 "policy_token.l"
! 981: { yylval.num = IPSEC_POLICY_IPSEC; return(ACTION); }
! 982: YY_BREAK
! 983: case 14:
! 984: YY_RULE_SETUP
! 985: #line 124 "policy_token.l"
! 986: { yylval.num = IPSEC_POLICY_BYPASS; return(ACTION); }
! 987: YY_BREAK
! 988: case 15:
! 989: YY_RULE_SETUP
! 990: #line 125 "policy_token.l"
! 991: { yylval.num = IPSEC_POLICY_ENTRUST; return(ACTION); }
! 992: YY_BREAK
! 993: case 16:
! 994: YY_RULE_SETUP
! 995: #line 127 "policy_token.l"
! 996: { yylval.num = IPPROTO_ESP; return(PROTOCOL); }
! 997: YY_BREAK
! 998: case 17:
! 999: YY_RULE_SETUP
! 1000: #line 128 "policy_token.l"
! 1001: { yylval.num = IPPROTO_AH; return(PROTOCOL); }
! 1002: YY_BREAK
! 1003: case 18:
! 1004: YY_RULE_SETUP
! 1005: #line 129 "policy_token.l"
! 1006: { yylval.num = IPPROTO_IPCOMP; return(PROTOCOL); }
! 1007: YY_BREAK
! 1008: case 19:
! 1009: YY_RULE_SETUP
! 1010: #line 131 "policy_token.l"
! 1011: { yylval.num = IPSEC_MODE_TRANSPORT; return(MODE); }
! 1012: YY_BREAK
! 1013: case 20:
! 1014: YY_RULE_SETUP
! 1015: #line 132 "policy_token.l"
! 1016: { yylval.num = IPSEC_MODE_TUNNEL; return(MODE); }
! 1017: YY_BREAK
! 1018: case 21:
! 1019: YY_RULE_SETUP
! 1020: #line 134 "policy_token.l"
! 1021: { return(ME); }
! 1022: YY_BREAK
! 1023: case 22:
! 1024: YY_RULE_SETUP
! 1025: #line 135 "policy_token.l"
! 1026: { return(ANY); }
! 1027: YY_BREAK
! 1028: case 23:
! 1029: YY_RULE_SETUP
! 1030: #line 137 "policy_token.l"
! 1031: { yylval.num = IPSEC_LEVEL_DEFAULT; return(LEVEL); }
! 1032: YY_BREAK
! 1033: case 24:
! 1034: YY_RULE_SETUP
! 1035: #line 138 "policy_token.l"
! 1036: { yylval.num = IPSEC_LEVEL_USE; return(LEVEL); }
! 1037: YY_BREAK
! 1038: case 25:
! 1039: YY_RULE_SETUP
! 1040: #line 139 "policy_token.l"
! 1041: { yylval.num = IPSEC_LEVEL_REQUIRE; return(LEVEL); }
! 1042: YY_BREAK
! 1043: case 26:
! 1044: YY_RULE_SETUP
! 1045: #line 140 "policy_token.l"
! 1046: {
! 1047: yylval.val.len = strlen(__libipsectext + 7);
! 1048: yylval.val.buf = __libipsectext + 7;
! 1049: return(LEVEL_SPECIFY);
! 1050: }
! 1051: YY_BREAK
! 1052: case 27:
! 1053: YY_RULE_SETUP
! 1054: #line 145 "policy_token.l"
! 1055: { yylval.num = IPSEC_LEVEL_UNIQUE; return(LEVEL); }
! 1056: YY_BREAK
! 1057: case 28:
! 1058: YY_RULE_SETUP
! 1059: #line 146 "policy_token.l"
! 1060: { return(SLASH); }
! 1061: YY_BREAK
! 1062: case 29:
! 1063: YY_RULE_SETUP
! 1064: #line 148 "policy_token.l"
! 1065: {
! 1066: yylval.val.len = strlen(__libipsectext);
! 1067: yylval.val.buf = __libipsectext;
! 1068: return(IPADDRESS);
! 1069: }
! 1070: YY_BREAK
! 1071: case 30:
! 1072: YY_RULE_SETUP
! 1073: #line 154 "policy_token.l"
! 1074: { return(HYPHEN); }
! 1075: YY_BREAK
! 1076: case 31:
! 1077: YY_RULE_SETUP
! 1078: #line 156 "policy_token.l"
! 1079: {
! 1080: /* Remove leading '[' and trailing ']' */
! 1081: yylval.val.buf = __libipsectext + 1;
! 1082: yylval.val.len = strlen(__libipsectext) - 2;
! 1083:
! 1084: return(PORT);
! 1085: }
! 1086: YY_BREAK
! 1087: case 32:
! 1088: YY_RULE_SETUP
! 1089: #line 164 "policy_token.l"
! 1090: { ; }
! 1091: YY_BREAK
! 1092: case 33:
! 1093: /* rule 33 can match eol */
! 1094: YY_RULE_SETUP
! 1095: #line 165 "policy_token.l"
! 1096: { ; }
! 1097: YY_BREAK
! 1098: case 34:
! 1099: YY_RULE_SETUP
! 1100: #line 167 "policy_token.l"
! 1101: ECHO;
! 1102: YY_BREAK
! 1103: #line 1104 "policy_token.c"
! 1104: case YY_STATE_EOF(INITIAL):
! 1105: yyterminate();
! 1106:
! 1107: case YY_END_OF_BUFFER:
! 1108: {
! 1109: /* Amount of text matched not including the EOB char. */
! 1110: int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
! 1111:
! 1112: /* Undo the effects of YY_DO_BEFORE_ACTION. */
! 1113: *yy_cp = (yy_hold_char);
! 1114: YY_RESTORE_YY_MORE_OFFSET
! 1115:
! 1116: if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
! 1117: {
! 1118: /* We're scanning a new file or input source. It's
! 1119: * possible that this happened because the user
! 1120: * just pointed __libipsecin at a new source and called
! 1121: * __libipseclex(). If so, then we have to assure
! 1122: * consistency between YY_CURRENT_BUFFER and our
! 1123: * globals. Here is the right place to do so, because
! 1124: * this is the first action (other than possibly a
! 1125: * back-up) that will match for the new input source.
! 1126: */
! 1127: (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
! 1128: YY_CURRENT_BUFFER_LVALUE->yy_input_file = __libipsecin;
! 1129: YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
! 1130: }
! 1131:
! 1132: /* Note that here we test for yy_c_buf_p "<=" to the position
! 1133: * of the first EOB in the buffer, since yy_c_buf_p will
! 1134: * already have been incremented past the NUL character
! 1135: * (since all states make transitions on EOB to the
! 1136: * end-of-buffer state). Contrast this with the test
! 1137: * in input().
! 1138: */
! 1139: if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
! 1140: { /* This was really a NUL. */
! 1141: yy_state_type yy_next_state;
! 1142:
! 1143: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
! 1144:
! 1145: yy_current_state = yy_get_previous_state( );
! 1146:
! 1147: /* Okay, we're now positioned to make the NUL
! 1148: * transition. We couldn't have
! 1149: * yy_get_previous_state() go ahead and do it
! 1150: * for us because it doesn't know how to deal
! 1151: * with the possibility of jamming (and we don't
! 1152: * want to build jamming into it because then it
! 1153: * will run more slowly).
! 1154: */
! 1155:
! 1156: yy_next_state = yy_try_NUL_trans( yy_current_state );
! 1157:
! 1158: yy_bp = (yytext_ptr) + YY_MORE_ADJ;
! 1159:
! 1160: if ( yy_next_state )
! 1161: {
! 1162: /* Consume the NUL. */
! 1163: yy_cp = ++(yy_c_buf_p);
! 1164: yy_current_state = yy_next_state;
! 1165: goto yy_match;
! 1166: }
! 1167:
! 1168: else
! 1169: {
! 1170: yy_cp = (yy_c_buf_p);
! 1171: goto yy_find_action;
! 1172: }
! 1173: }
! 1174:
! 1175: else switch ( yy_get_next_buffer( ) )
! 1176: {
! 1177: case EOB_ACT_END_OF_FILE:
! 1178: {
! 1179: (yy_did_buffer_switch_on_eof) = 0;
! 1180:
! 1181: if ( __libipsecwrap( ) )
! 1182: {
! 1183: /* Note: because we've taken care in
! 1184: * yy_get_next_buffer() to have set up
! 1185: * __libipsectext, we can now set up
! 1186: * yy_c_buf_p so that if some total
! 1187: * hoser (like flex itself) wants to
! 1188: * call the scanner after we return the
! 1189: * YY_NULL, it'll still work - another
! 1190: * YY_NULL will get returned.
! 1191: */
! 1192: (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
! 1193:
! 1194: yy_act = YY_STATE_EOF(YY_START);
! 1195: goto do_action;
! 1196: }
! 1197:
! 1198: else
! 1199: {
! 1200: if ( ! (yy_did_buffer_switch_on_eof) )
! 1201: YY_NEW_FILE;
! 1202: }
! 1203: break;
! 1204: }
! 1205:
! 1206: case EOB_ACT_CONTINUE_SCAN:
! 1207: (yy_c_buf_p) =
! 1208: (yytext_ptr) + yy_amount_of_matched_text;
! 1209:
! 1210: yy_current_state = yy_get_previous_state( );
! 1211:
! 1212: yy_cp = (yy_c_buf_p);
! 1213: yy_bp = (yytext_ptr) + YY_MORE_ADJ;
! 1214: goto yy_match;
! 1215:
! 1216: case EOB_ACT_LAST_MATCH:
! 1217: (yy_c_buf_p) =
! 1218: &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
! 1219:
! 1220: yy_current_state = yy_get_previous_state( );
! 1221:
! 1222: yy_cp = (yy_c_buf_p);
! 1223: yy_bp = (yytext_ptr) + YY_MORE_ADJ;
! 1224: goto yy_find_action;
! 1225: }
! 1226: break;
! 1227: }
! 1228:
! 1229: default:
! 1230: YY_FATAL_ERROR(
! 1231: "fatal flex scanner internal error--no action found" );
! 1232: } /* end of action switch */
! 1233: } /* end of scanning one token */
! 1234: } /* end of __libipseclex */
! 1235:
! 1236: /* yy_get_next_buffer - try to read in a new buffer
! 1237: *
! 1238: * Returns a code representing an action:
! 1239: * EOB_ACT_LAST_MATCH -
! 1240: * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
! 1241: * EOB_ACT_END_OF_FILE - end of file
! 1242: */
! 1243: static int yy_get_next_buffer (void)
! 1244: {
! 1245: register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
! 1246: register char *source = (yytext_ptr);
! 1247: register int number_to_move, i;
! 1248: int ret_val;
! 1249:
! 1250: if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
! 1251: YY_FATAL_ERROR(
! 1252: "fatal flex scanner internal error--end of buffer missed" );
! 1253:
! 1254: if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
! 1255: { /* Don't try to fill the buffer, so this is an EOF. */
! 1256: if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
! 1257: {
! 1258: /* We matched a single character, the EOB, so
! 1259: * treat this as a final EOF.
! 1260: */
! 1261: return EOB_ACT_END_OF_FILE;
! 1262: }
! 1263:
! 1264: else
! 1265: {
! 1266: /* We matched some text prior to the EOB, first
! 1267: * process it.
! 1268: */
! 1269: return EOB_ACT_LAST_MATCH;
! 1270: }
! 1271: }
! 1272:
! 1273: /* Try to read more data. */
! 1274:
! 1275: /* First move last chars to start of buffer. */
! 1276: number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
! 1277:
! 1278: for ( i = 0; i < number_to_move; ++i )
! 1279: *(dest++) = *(source++);
! 1280:
! 1281: if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
! 1282: /* don't do the read, it's not guaranteed to return an EOF,
! 1283: * just force an EOF
! 1284: */
! 1285: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
! 1286:
! 1287: else
! 1288: {
! 1289: int num_to_read =
! 1290: YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
! 1291:
! 1292: while ( num_to_read <= 0 )
! 1293: { /* Not enough room in the buffer - grow it. */
! 1294:
! 1295: /* just a shorter name for the current buffer */
! 1296: YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
! 1297:
! 1298: int yy_c_buf_p_offset =
! 1299: (int) ((yy_c_buf_p) - b->yy_ch_buf);
! 1300:
! 1301: if ( b->yy_is_our_buffer )
! 1302: {
! 1303: int new_size = b->yy_buf_size * 2;
! 1304:
! 1305: if ( new_size <= 0 )
! 1306: b->yy_buf_size += b->yy_buf_size / 8;
! 1307: else
! 1308: b->yy_buf_size *= 2;
! 1309:
! 1310: b->yy_ch_buf = (char *)
! 1311: /* Include room in for 2 EOB chars. */
! 1312: __libipsecrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
! 1313: }
! 1314: else
! 1315: /* Can't grow it, we don't own it. */
! 1316: b->yy_ch_buf = 0;
! 1317:
! 1318: if ( ! b->yy_ch_buf )
! 1319: YY_FATAL_ERROR(
! 1320: "fatal error - scanner input buffer overflow" );
! 1321:
! 1322: (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
! 1323:
! 1324: num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
! 1325: number_to_move - 1;
! 1326:
! 1327: }
! 1328:
! 1329: if ( num_to_read > YY_READ_BUF_SIZE )
! 1330: num_to_read = YY_READ_BUF_SIZE;
! 1331:
! 1332: /* Read in more data. */
! 1333: YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
! 1334: (yy_n_chars), (size_t) num_to_read );
! 1335:
! 1336: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
! 1337: }
! 1338:
! 1339: if ( (yy_n_chars) == 0 )
! 1340: {
! 1341: if ( number_to_move == YY_MORE_ADJ )
! 1342: {
! 1343: ret_val = EOB_ACT_END_OF_FILE;
! 1344: __libipsecrestart(__libipsecin );
! 1345: }
! 1346:
! 1347: else
! 1348: {
! 1349: ret_val = EOB_ACT_LAST_MATCH;
! 1350: YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
! 1351: YY_BUFFER_EOF_PENDING;
! 1352: }
! 1353: }
! 1354:
! 1355: else
! 1356: ret_val = EOB_ACT_CONTINUE_SCAN;
! 1357:
! 1358: if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
! 1359: /* Extend the array by 50%, plus the number we really need. */
! 1360: yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
! 1361: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) __libipsecrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
! 1362: if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
! 1363: YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
! 1364: }
! 1365:
! 1366: (yy_n_chars) += number_to_move;
! 1367: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
! 1368: YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
! 1369:
! 1370: (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
! 1371:
! 1372: return ret_val;
! 1373: }
! 1374:
! 1375: /* yy_get_previous_state - get the state just before the EOB char was reached */
! 1376:
! 1377: static yy_state_type yy_get_previous_state (void)
! 1378: {
! 1379: register yy_state_type yy_current_state;
! 1380: register char *yy_cp;
! 1381:
! 1382: yy_current_state = (yy_start);
! 1383:
! 1384: for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
! 1385: {
! 1386: register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
! 1387: if ( yy_accept[yy_current_state] )
! 1388: {
! 1389: (yy_last_accepting_state) = yy_current_state;
! 1390: (yy_last_accepting_cpos) = yy_cp;
! 1391: }
! 1392: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
! 1393: {
! 1394: yy_current_state = (int) yy_def[yy_current_state];
! 1395: if ( yy_current_state >= 121 )
! 1396: yy_c = yy_meta[(unsigned int) yy_c];
! 1397: }
! 1398: yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
! 1399: }
! 1400:
! 1401: return yy_current_state;
! 1402: }
! 1403:
! 1404: /* yy_try_NUL_trans - try to make a transition on the NUL character
! 1405: *
! 1406: * synopsis
! 1407: * next_state = yy_try_NUL_trans( current_state );
! 1408: */
! 1409: static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
! 1410: {
! 1411: register int yy_is_jam;
! 1412: register char *yy_cp = (yy_c_buf_p);
! 1413:
! 1414: register YY_CHAR yy_c = 1;
! 1415: if ( yy_accept[yy_current_state] )
! 1416: {
! 1417: (yy_last_accepting_state) = yy_current_state;
! 1418: (yy_last_accepting_cpos) = yy_cp;
! 1419: }
! 1420: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
! 1421: {
! 1422: yy_current_state = (int) yy_def[yy_current_state];
! 1423: if ( yy_current_state >= 121 )
! 1424: yy_c = yy_meta[(unsigned int) yy_c];
! 1425: }
! 1426: yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
! 1427: yy_is_jam = (yy_current_state == 120);
! 1428:
! 1429: return yy_is_jam ? 0 : yy_current_state;
! 1430: }
! 1431:
! 1432: #ifndef YY_NO_INPUT
! 1433: #ifdef __cplusplus
! 1434: static int yyinput (void)
! 1435: #else
! 1436: static int input (void)
! 1437: #endif
! 1438:
! 1439: {
! 1440: int c;
! 1441:
! 1442: *(yy_c_buf_p) = (yy_hold_char);
! 1443:
! 1444: if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
! 1445: {
! 1446: /* yy_c_buf_p now points to the character we want to return.
! 1447: * If this occurs *before* the EOB characters, then it's a
! 1448: * valid NUL; if not, then we've hit the end of the buffer.
! 1449: */
! 1450: if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
! 1451: /* This was really a NUL. */
! 1452: *(yy_c_buf_p) = '\0';
! 1453:
! 1454: else
! 1455: { /* need more input */
! 1456: int offset = (yy_c_buf_p) - (yytext_ptr);
! 1457: ++(yy_c_buf_p);
! 1458:
! 1459: switch ( yy_get_next_buffer( ) )
! 1460: {
! 1461: case EOB_ACT_LAST_MATCH:
! 1462: /* This happens because yy_g_n_b()
! 1463: * sees that we've accumulated a
! 1464: * token and flags that we need to
! 1465: * try matching the token before
! 1466: * proceeding. But for input(),
! 1467: * there's no matching to consider.
! 1468: * So convert the EOB_ACT_LAST_MATCH
! 1469: * to EOB_ACT_END_OF_FILE.
! 1470: */
! 1471:
! 1472: /* Reset buffer status. */
! 1473: __libipsecrestart(__libipsecin );
! 1474:
! 1475: /*FALLTHROUGH*/
! 1476:
! 1477: case EOB_ACT_END_OF_FILE:
! 1478: {
! 1479: if ( __libipsecwrap( ) )
! 1480: return EOF;
! 1481:
! 1482: if ( ! (yy_did_buffer_switch_on_eof) )
! 1483: YY_NEW_FILE;
! 1484: #ifdef __cplusplus
! 1485: return yyinput();
! 1486: #else
! 1487: return input();
! 1488: #endif
! 1489: }
! 1490:
! 1491: case EOB_ACT_CONTINUE_SCAN:
! 1492: (yy_c_buf_p) = (yytext_ptr) + offset;
! 1493: break;
! 1494: }
! 1495: }
! 1496: }
! 1497:
! 1498: c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
! 1499: *(yy_c_buf_p) = '\0'; /* preserve __libipsectext */
! 1500: (yy_hold_char) = *++(yy_c_buf_p);
! 1501:
! 1502: return c;
! 1503: }
! 1504: #endif /* ifndef YY_NO_INPUT */
! 1505:
! 1506: /** Immediately switch to a different input stream.
! 1507: * @param input_file A readable stream.
! 1508: *
! 1509: * @note This function does not reset the start condition to @c INITIAL .
! 1510: */
! 1511: void __libipsecrestart (FILE * input_file )
! 1512: {
! 1513:
! 1514: if ( ! YY_CURRENT_BUFFER ){
! 1515: __libipsecensure_buffer_stack ();
! 1516: YY_CURRENT_BUFFER_LVALUE =
! 1517: __libipsec_create_buffer(__libipsecin,YY_BUF_SIZE );
! 1518: }
! 1519:
! 1520: __libipsec_init_buffer(YY_CURRENT_BUFFER,input_file );
! 1521: __libipsec_load_buffer_state( );
! 1522: }
! 1523:
! 1524: /** Switch to a different input buffer.
! 1525: * @param new_buffer The new input buffer.
! 1526: *
! 1527: */
! 1528: void __libipsec_switch_to_buffer (YY_BUFFER_STATE new_buffer )
! 1529: {
! 1530:
! 1531: /* TODO. We should be able to replace this entire function body
! 1532: * with
! 1533: * __libipsecpop_buffer_state();
! 1534: * __libipsecpush_buffer_state(new_buffer);
! 1535: */
! 1536: __libipsecensure_buffer_stack ();
! 1537: if ( YY_CURRENT_BUFFER == new_buffer )
! 1538: return;
! 1539:
! 1540: if ( YY_CURRENT_BUFFER )
! 1541: {
! 1542: /* Flush out information for old buffer. */
! 1543: *(yy_c_buf_p) = (yy_hold_char);
! 1544: YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
! 1545: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
! 1546: }
! 1547:
! 1548: YY_CURRENT_BUFFER_LVALUE = new_buffer;
! 1549: __libipsec_load_buffer_state( );
! 1550:
! 1551: /* We don't actually know whether we did this switch during
! 1552: * EOF (__libipsecwrap()) processing, but the only time this flag
! 1553: * is looked at is after __libipsecwrap() is called, so it's safe
! 1554: * to go ahead and always set it.
! 1555: */
! 1556: (yy_did_buffer_switch_on_eof) = 1;
! 1557: }
! 1558:
! 1559: static void __libipsec_load_buffer_state (void)
! 1560: {
! 1561: (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
! 1562: (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
! 1563: __libipsecin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
! 1564: (yy_hold_char) = *(yy_c_buf_p);
! 1565: }
! 1566:
! 1567: /** Allocate and initialize an input buffer state.
! 1568: * @param file A readable stream.
! 1569: * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
! 1570: *
! 1571: * @return the allocated buffer state.
! 1572: */
! 1573: YY_BUFFER_STATE __libipsec_create_buffer (FILE * file, int size )
! 1574: {
! 1575: YY_BUFFER_STATE b;
! 1576:
! 1577: b = (YY_BUFFER_STATE) __libipsecalloc(sizeof( struct yy_buffer_state ) );
! 1578: if ( ! b )
! 1579: YY_FATAL_ERROR( "out of dynamic memory in __libipsec_create_buffer()" );
! 1580:
! 1581: b->yy_buf_size = size;
! 1582:
! 1583: /* yy_ch_buf has to be 2 characters longer than the size given because
! 1584: * we need to put in 2 end-of-buffer characters.
! 1585: */
! 1586: b->yy_ch_buf = (char *) __libipsecalloc(b->yy_buf_size + 2 );
! 1587: if ( ! b->yy_ch_buf )
! 1588: YY_FATAL_ERROR( "out of dynamic memory in __libipsec_create_buffer()" );
! 1589:
! 1590: b->yy_is_our_buffer = 1;
! 1591:
! 1592: __libipsec_init_buffer(b,file );
! 1593:
! 1594: return b;
! 1595: }
! 1596:
! 1597: /** Destroy the buffer.
! 1598: * @param b a buffer created with __libipsec_create_buffer()
! 1599: *
! 1600: */
! 1601: void __libipsec_delete_buffer (YY_BUFFER_STATE b )
! 1602: {
! 1603:
! 1604: if ( ! b )
! 1605: return;
! 1606:
! 1607: if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
! 1608: YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
! 1609:
! 1610: if ( b->yy_is_our_buffer )
! 1611: __libipsecfree((void *) b->yy_ch_buf );
! 1612:
! 1613: __libipsecfree((void *) b );
! 1614: }
! 1615:
! 1616: #ifndef __cplusplus
! 1617: extern int isatty (int );
! 1618: #endif /* __cplusplus */
! 1619:
! 1620: /* Initializes or reinitializes a buffer.
! 1621: * This function is sometimes called more than once on the same buffer,
! 1622: * such as during a __libipsecrestart() or at EOF.
! 1623: */
! 1624: static void __libipsec_init_buffer (YY_BUFFER_STATE b, FILE * file )
! 1625:
! 1626: {
! 1627: int oerrno = errno;
! 1628:
! 1629: __libipsec_flush_buffer(b );
! 1630:
! 1631: b->yy_input_file = file;
! 1632: b->yy_fill_buffer = 1;
! 1633:
! 1634: /* If b is the current buffer, then __libipsec_init_buffer was _probably_
! 1635: * called from __libipsecrestart() or through yy_get_next_buffer.
! 1636: * In that case, we don't want to reset the lineno or column.
! 1637: */
! 1638: if (b != YY_CURRENT_BUFFER){
! 1639: b->yy_bs_lineno = 1;
! 1640: b->yy_bs_column = 0;
! 1641: }
! 1642:
! 1643: b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
! 1644:
! 1645: errno = oerrno;
! 1646: }
! 1647:
! 1648: /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
! 1649: * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
! 1650: *
! 1651: */
! 1652: void __libipsec_flush_buffer (YY_BUFFER_STATE b )
! 1653: {
! 1654: if ( ! b )
! 1655: return;
! 1656:
! 1657: b->yy_n_chars = 0;
! 1658:
! 1659: /* We always need two end-of-buffer characters. The first causes
! 1660: * a transition to the end-of-buffer state. The second causes
! 1661: * a jam in that state.
! 1662: */
! 1663: b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
! 1664: b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
! 1665:
! 1666: b->yy_buf_pos = &b->yy_ch_buf[0];
! 1667:
! 1668: b->yy_at_bol = 1;
! 1669: b->yy_buffer_status = YY_BUFFER_NEW;
! 1670:
! 1671: if ( b == YY_CURRENT_BUFFER )
! 1672: __libipsec_load_buffer_state( );
! 1673: }
! 1674:
! 1675: /** Pushes the new state onto the stack. The new state becomes
! 1676: * the current state. This function will allocate the stack
! 1677: * if necessary.
! 1678: * @param new_buffer The new state.
! 1679: *
! 1680: */
! 1681: void __libipsecpush_buffer_state (YY_BUFFER_STATE new_buffer )
! 1682: {
! 1683: if (new_buffer == NULL)
! 1684: return;
! 1685:
! 1686: __libipsecensure_buffer_stack();
! 1687:
! 1688: /* This block is copied from __libipsec_switch_to_buffer. */
! 1689: if ( YY_CURRENT_BUFFER )
! 1690: {
! 1691: /* Flush out information for old buffer. */
! 1692: *(yy_c_buf_p) = (yy_hold_char);
! 1693: YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
! 1694: YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
! 1695: }
! 1696:
! 1697: /* Only push if top exists. Otherwise, replace top. */
! 1698: if (YY_CURRENT_BUFFER)
! 1699: (yy_buffer_stack_top)++;
! 1700: YY_CURRENT_BUFFER_LVALUE = new_buffer;
! 1701:
! 1702: /* copied from __libipsec_switch_to_buffer. */
! 1703: __libipsec_load_buffer_state( );
! 1704: (yy_did_buffer_switch_on_eof) = 1;
! 1705: }
! 1706:
! 1707: /** Removes and deletes the top of the stack, if present.
! 1708: * The next element becomes the new top.
! 1709: *
! 1710: */
! 1711: void __libipsecpop_buffer_state (void)
! 1712: {
! 1713: if (!YY_CURRENT_BUFFER)
! 1714: return;
! 1715:
! 1716: __libipsec_delete_buffer(YY_CURRENT_BUFFER );
! 1717: YY_CURRENT_BUFFER_LVALUE = NULL;
! 1718: if ((yy_buffer_stack_top) > 0)
! 1719: --(yy_buffer_stack_top);
! 1720:
! 1721: if (YY_CURRENT_BUFFER) {
! 1722: __libipsec_load_buffer_state( );
! 1723: (yy_did_buffer_switch_on_eof) = 1;
! 1724: }
! 1725: }
! 1726:
! 1727: /* Allocates the stack if it does not exist.
! 1728: * Guarantees space for at least one push.
! 1729: */
! 1730: static void __libipsecensure_buffer_stack (void)
! 1731: {
! 1732: int num_to_alloc;
! 1733:
! 1734: if (!(yy_buffer_stack)) {
! 1735:
! 1736: /* First allocation is just for 2 elements, since we don't know if this
! 1737: * scanner will even need a stack. We use 2 instead of 1 to avoid an
! 1738: * immediate realloc on the next call.
! 1739: */
! 1740: num_to_alloc = 1;
! 1741: (yy_buffer_stack) = (struct yy_buffer_state**)__libipsecalloc
! 1742: (num_to_alloc * sizeof(struct yy_buffer_state*)
! 1743: );
! 1744: if ( ! (yy_buffer_stack) )
! 1745: YY_FATAL_ERROR( "out of dynamic memory in __libipsecensure_buffer_stack()" );
! 1746:
! 1747: memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
! 1748:
! 1749: (yy_buffer_stack_max) = num_to_alloc;
! 1750: (yy_buffer_stack_top) = 0;
! 1751: return;
! 1752: }
! 1753:
! 1754: if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
! 1755:
! 1756: /* Increase the buffer to prepare for a possible push. */
! 1757: int grow_size = 8 /* arbitrary grow size */;
! 1758:
! 1759: num_to_alloc = (yy_buffer_stack_max) + grow_size;
! 1760: (yy_buffer_stack) = (struct yy_buffer_state**)__libipsecrealloc
! 1761: ((yy_buffer_stack),
! 1762: num_to_alloc * sizeof(struct yy_buffer_state*)
! 1763: );
! 1764: if ( ! (yy_buffer_stack) )
! 1765: YY_FATAL_ERROR( "out of dynamic memory in __libipsecensure_buffer_stack()" );
! 1766:
! 1767: /* zero only the new slots.*/
! 1768: memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
! 1769: (yy_buffer_stack_max) = num_to_alloc;
! 1770: }
! 1771: }
! 1772:
! 1773: /** Setup the input buffer state to scan directly from a user-specified character buffer.
! 1774: * @param base the character buffer
! 1775: * @param size the size in bytes of the character buffer
! 1776: *
! 1777: * @return the newly allocated buffer state object.
! 1778: */
! 1779: YY_BUFFER_STATE __libipsec_scan_buffer (char * base, yy_size_t size )
! 1780: {
! 1781: YY_BUFFER_STATE b;
! 1782:
! 1783: if ( size < 2 ||
! 1784: base[size-2] != YY_END_OF_BUFFER_CHAR ||
! 1785: base[size-1] != YY_END_OF_BUFFER_CHAR )
! 1786: /* They forgot to leave room for the EOB's. */
! 1787: return 0;
! 1788:
! 1789: b = (YY_BUFFER_STATE) __libipsecalloc(sizeof( struct yy_buffer_state ) );
! 1790: if ( ! b )
! 1791: YY_FATAL_ERROR( "out of dynamic memory in __libipsec_scan_buffer()" );
! 1792:
! 1793: b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
! 1794: b->yy_buf_pos = b->yy_ch_buf = base;
! 1795: b->yy_is_our_buffer = 0;
! 1796: b->yy_input_file = 0;
! 1797: b->yy_n_chars = b->yy_buf_size;
! 1798: b->yy_is_interactive = 0;
! 1799: b->yy_at_bol = 1;
! 1800: b->yy_fill_buffer = 0;
! 1801: b->yy_buffer_status = YY_BUFFER_NEW;
! 1802:
! 1803: __libipsec_switch_to_buffer(b );
! 1804:
! 1805: return b;
! 1806: }
! 1807:
! 1808: /** Setup the input buffer state to scan a string. The next call to __libipseclex() will
! 1809: * scan from a @e copy of @a str.
! 1810: * @param yystr a NUL-terminated string to scan
! 1811: *
! 1812: * @return the newly allocated buffer state object.
! 1813: * @note If you want to scan bytes that may contain NUL values, then use
! 1814: * __libipsec_scan_bytes() instead.
! 1815: */
! 1816: YY_BUFFER_STATE __libipsec_scan_string (yyconst char * yystr )
! 1817: {
! 1818:
! 1819: return __libipsec_scan_bytes(yystr,strlen(yystr) );
! 1820: }
! 1821:
! 1822: /** Setup the input buffer state to scan the given bytes. The next call to __libipseclex() will
! 1823: * scan from a @e copy of @a bytes.
! 1824: * @param yybytes the byte buffer to scan
! 1825: * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
! 1826: *
! 1827: * @return the newly allocated buffer state object.
! 1828: */
! 1829: YY_BUFFER_STATE __libipsec_scan_bytes (yyconst char * yybytes, int _yybytes_len )
! 1830: {
! 1831: YY_BUFFER_STATE b;
! 1832: char *buf;
! 1833: yy_size_t n;
! 1834: int i;
! 1835:
! 1836: /* Get memory for full buffer, including space for trailing EOB's. */
! 1837: n = _yybytes_len + 2;
! 1838: buf = (char *) __libipsecalloc(n );
! 1839: if ( ! buf )
! 1840: YY_FATAL_ERROR( "out of dynamic memory in __libipsec_scan_bytes()" );
! 1841:
! 1842: for ( i = 0; i < _yybytes_len; ++i )
! 1843: buf[i] = yybytes[i];
! 1844:
! 1845: buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
! 1846:
! 1847: b = __libipsec_scan_buffer(buf,n );
! 1848: if ( ! b )
! 1849: YY_FATAL_ERROR( "bad buffer in __libipsec_scan_bytes()" );
! 1850:
! 1851: /* It's okay to grow etc. this buffer, and we should throw it
! 1852: * away when we're done.
! 1853: */
! 1854: b->yy_is_our_buffer = 1;
! 1855:
! 1856: return b;
! 1857: }
! 1858:
! 1859: #ifndef YY_EXIT_FAILURE
! 1860: #define YY_EXIT_FAILURE 2
! 1861: #endif
! 1862:
! 1863: static void yy_fatal_error (yyconst char* msg )
! 1864: {
! 1865: (void) fprintf( stderr, "%s\n", msg );
! 1866: exit( YY_EXIT_FAILURE );
! 1867: }
! 1868:
! 1869: /* Redefine yyless() so it works in section 3 code. */
! 1870:
! 1871: #undef yyless
! 1872: #define yyless(n) \
! 1873: do \
! 1874: { \
! 1875: /* Undo effects of setting up __libipsectext. */ \
! 1876: int yyless_macro_arg = (n); \
! 1877: YY_LESS_LINENO(yyless_macro_arg);\
! 1878: __libipsectext[__libipsecleng] = (yy_hold_char); \
! 1879: (yy_c_buf_p) = __libipsectext + yyless_macro_arg; \
! 1880: (yy_hold_char) = *(yy_c_buf_p); \
! 1881: *(yy_c_buf_p) = '\0'; \
! 1882: __libipsecleng = yyless_macro_arg; \
! 1883: } \
! 1884: while ( 0 )
! 1885:
! 1886: /* Accessor methods (get/set functions) to struct members. */
! 1887:
! 1888: /** Get the current line number.
! 1889: *
! 1890: */
! 1891: int __libipsecget_lineno (void)
! 1892: {
! 1893:
! 1894: return __libipseclineno;
! 1895: }
! 1896:
! 1897: /** Get the input stream.
! 1898: *
! 1899: */
! 1900: FILE *__libipsecget_in (void)
! 1901: {
! 1902: return __libipsecin;
! 1903: }
! 1904:
! 1905: /** Get the output stream.
! 1906: *
! 1907: */
! 1908: FILE *__libipsecget_out (void)
! 1909: {
! 1910: return __libipsecout;
! 1911: }
! 1912:
! 1913: /** Get the length of the current token.
! 1914: *
! 1915: */
! 1916: int __libipsecget_leng (void)
! 1917: {
! 1918: return __libipsecleng;
! 1919: }
! 1920:
! 1921: /** Get the current token.
! 1922: *
! 1923: */
! 1924:
! 1925: char *__libipsecget_text (void)
! 1926: {
! 1927: return __libipsectext;
! 1928: }
! 1929:
! 1930: /** Set the current line number.
! 1931: * @param line_number
! 1932: *
! 1933: */
! 1934: void __libipsecset_lineno (int line_number )
! 1935: {
! 1936:
! 1937: __libipseclineno = line_number;
! 1938: }
! 1939:
! 1940: /** Set the input stream. This does not discard the current
! 1941: * input buffer.
! 1942: * @param in_str A readable stream.
! 1943: *
! 1944: * @see __libipsec_switch_to_buffer
! 1945: */
! 1946: void __libipsecset_in (FILE * in_str )
! 1947: {
! 1948: __libipsecin = in_str ;
! 1949: }
! 1950:
! 1951: void __libipsecset_out (FILE * out_str )
! 1952: {
! 1953: __libipsecout = out_str ;
! 1954: }
! 1955:
! 1956: int __libipsecget_debug (void)
! 1957: {
! 1958: return __libipsec_flex_debug;
! 1959: }
! 1960:
! 1961: void __libipsecset_debug (int bdebug )
! 1962: {
! 1963: __libipsec_flex_debug = bdebug ;
! 1964: }
! 1965:
! 1966: static int yy_init_globals (void)
! 1967: {
! 1968: /* Initialization is the same as for the non-reentrant scanner.
! 1969: * This function is called from __libipseclex_destroy(), so don't allocate here.
! 1970: */
! 1971:
! 1972: (yy_buffer_stack) = 0;
! 1973: (yy_buffer_stack_top) = 0;
! 1974: (yy_buffer_stack_max) = 0;
! 1975: (yy_c_buf_p) = (char *) 0;
! 1976: (yy_init) = 0;
! 1977: (yy_start) = 0;
! 1978:
! 1979: /* Defined in main.c */
! 1980: #ifdef YY_STDINIT
! 1981: __libipsecin = stdin;
! 1982: __libipsecout = stdout;
! 1983: #else
! 1984: __libipsecin = (FILE *) 0;
! 1985: __libipsecout = (FILE *) 0;
! 1986: #endif
! 1987:
! 1988: /* For future reference: Set errno on error, since we are called by
! 1989: * __libipseclex_init()
! 1990: */
! 1991: return 0;
! 1992: }
! 1993:
! 1994: /* __libipseclex_destroy is for both reentrant and non-reentrant scanners. */
! 1995: int __libipseclex_destroy (void)
! 1996: {
! 1997:
! 1998: /* Pop the buffer stack, destroying each element. */
! 1999: while(YY_CURRENT_BUFFER){
! 2000: __libipsec_delete_buffer(YY_CURRENT_BUFFER );
! 2001: YY_CURRENT_BUFFER_LVALUE = NULL;
! 2002: __libipsecpop_buffer_state();
! 2003: }
! 2004:
! 2005: /* Destroy the stack itself. */
! 2006: __libipsecfree((yy_buffer_stack) );
! 2007: (yy_buffer_stack) = NULL;
! 2008:
! 2009: /* Reset the globals. This is important in a non-reentrant scanner so the next time
! 2010: * __libipseclex() is called, initialization will occur. */
! 2011: yy_init_globals( );
! 2012:
! 2013: return 0;
! 2014: }
! 2015:
! 2016: /*
! 2017: * Internal utility routines.
! 2018: */
! 2019:
! 2020: #ifndef yytext_ptr
! 2021: static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
! 2022: {
! 2023: register int i;
! 2024: for ( i = 0; i < n; ++i )
! 2025: s1[i] = s2[i];
! 2026: }
! 2027: #endif
! 2028:
! 2029: #ifdef YY_NEED_STRLEN
! 2030: static int yy_flex_strlen (yyconst char * s )
! 2031: {
! 2032: register int n;
! 2033: for ( n = 0; s[n]; ++n )
! 2034: ;
! 2035:
! 2036: return n;
! 2037: }
! 2038: #endif
! 2039:
! 2040: void *__libipsecalloc (yy_size_t size )
! 2041: {
! 2042: return (void *) malloc( size );
! 2043: }
! 2044:
! 2045: void *__libipsecrealloc (void * ptr, yy_size_t size )
! 2046: {
! 2047: /* The cast to (char *) in the following accommodates both
! 2048: * implementations that use char* generic pointers, and those
! 2049: * that use void* generic pointers. It works with the latter
! 2050: * because both ANSI C and C++ allow castless assignment from
! 2051: * any pointer type to void*, and deal with argument conversions
! 2052: * as though doing an assignment.
! 2053: */
! 2054: return (void *) realloc( (char *) ptr, size );
! 2055: }
! 2056:
! 2057: void __libipsecfree (void * ptr )
! 2058: {
! 2059: free( (char *) ptr ); /* see __libipsecrealloc() for (char *) cast */
! 2060: }
! 2061:
! 2062: #define YYTABLES_NAME "yytables"
! 2063:
! 2064: #line 167 "policy_token.l"
! 2065:
! 2066:
! 2067:
! 2068: void __policy__strbuffer__init__ __P((char *));
! 2069: void __policy__strbuffer__free__ __P((void));
! 2070:
! 2071: static YY_BUFFER_STATE strbuffer;
! 2072:
! 2073: void
! 2074: __policy__strbuffer__init__(msg)
! 2075: char *msg;
! 2076: {
! 2077: if (YY_CURRENT_BUFFER)
! 2078: __libipsec_delete_buffer(YY_CURRENT_BUFFER);
! 2079: strbuffer = (YY_BUFFER_STATE)__libipsec_scan_string(msg);
! 2080: __libipsec_switch_to_buffer(strbuffer);
! 2081:
! 2082: return;
! 2083: }
! 2084:
! 2085: void
! 2086: __policy__strbuffer__free__()
! 2087: {
! 2088: __libipsec_delete_buffer(strbuffer);
! 2089:
! 2090: return;
! 2091: }
! 2092:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>