| /* Copyright 2001-2005 The Apache Software Foundation or its licensors, as |
| * applicable. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /* _ _ |
| * _ __ ___ ___ __| | ___ ___| | mod_ssl |
| * | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL |
| * | | | | | | (_) | (_| | \__ \__ \ | |
| * |_| |_| |_|\___/ \__,_|___|___/___/_| |
| * |_____| |
| * ssl_expr.h |
| * Expression Handling (Header) |
| */ |
| /* ``May all your PUSHes be POPed.'' */ |
| |
| #ifndef __SSL_EXPR_H__ |
| #define __SSL_EXPR_H__ |
| |
| #ifndef FALSE |
| #define FALSE 0 |
| #endif |
| |
| #ifndef TRUE |
| #define TRUE !FALSE |
| #endif |
| |
| #ifndef YY_NULL |
| #define YY_NULL 0 |
| #endif |
| |
| #ifndef MIN |
| #define MIN(a,b) (((a)<(b))?(a):(b)) |
| #endif |
| |
| #ifndef BOOL |
| #define BOOL unsigned int |
| #endif |
| |
| #ifndef NULL |
| #define NULL (void *)0 |
| #endif |
| |
| #ifndef NUL |
| #define NUL '\0' |
| #endif |
| |
| #ifndef YYDEBUG |
| #define YYDEBUG 0 |
| #endif |
| |
| typedef enum { |
| op_NOP, op_ListElement, |
| op_True, op_False, op_Not, op_Or, op_And, op_Comp, |
| op_EQ, op_NE, op_LT, op_LE, op_GT, op_GE, op_IN, op_REG, op_NRE, |
| op_Digit, op_String, op_Regex, op_Var, op_Func |
| } ssl_expr_node_op; |
| |
| typedef struct { |
| ssl_expr_node_op node_op; |
| void *node_arg1; |
| void *node_arg2; |
| apr_pool_t *p; |
| } ssl_expr_node; |
| |
| typedef ssl_expr_node ssl_expr; |
| |
| typedef struct { |
| apr_pool_t *pool; |
| char *inputbuf; |
| int inputlen; |
| char *inputptr; |
| ssl_expr *expr; |
| } ssl_expr_info_type; |
| |
| extern ssl_expr_info_type ssl_expr_info; |
| extern char *ssl_expr_error; |
| |
| #define yylval ssl_expr_yylval |
| #define yyerror ssl_expr_yyerror |
| #define yyinput ssl_expr_yyinput |
| |
| extern int ssl_expr_yyparse(void); |
| extern int ssl_expr_yyerror(char *); |
| extern int ssl_expr_yylex(void); |
| |
| extern ssl_expr *ssl_expr_comp(apr_pool_t *, char *); |
| extern int ssl_expr_exec(request_rec *, ssl_expr *); |
| extern char *ssl_expr_get_error(void); |
| extern ssl_expr *ssl_expr_make(ssl_expr_node_op, void *, void *); |
| extern BOOL ssl_expr_eval(request_rec *, ssl_expr *); |
| |
| #endif /* __SSL_EXPR_H__ */ |