~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Nginx/http/ngx_http_script.h

Version: ~ [ nginx-0.6.26 ] ~ [ nginx-0.5.35 ] ~ [ nginx-0.5.20 ] ~ [ nginx-0.5.19 ] ~

  1 
  2 /*
  3  * Copyright (C) Igor Sysoev
  4  */
  5 
  6 
  7 #ifndef _NGX_HTTP_SCRIPT_H_INCLUDED_
  8 #define _NGX_HTTP_SCRIPT_H_INCLUDED_
  9 
 10 
 11 #include <ngx_config.h>
 12 #include <ngx_core.h>
 13 #include <ngx_http.h>
 14 
 15 
 16 typedef struct {
 17     u_char                     *ip;
 18     u_char                     *pos;
 19     ngx_http_variable_value_t  *sp;
 20 
 21     ngx_str_t                   buf;
 22     ngx_str_t                   line;
 23 
 24     /* the start of the rewritten arguments */
 25     u_char                     *args;
 26 
 27     unsigned                    flushed:1;
 28     unsigned                    skip:1;
 29     unsigned                    quote:1;
 30     unsigned                    log:1;
 31 
 32     int                        *captures;
 33     ngx_uint_t                  ncaptures;
 34 
 35     ngx_int_t                   status;
 36     ngx_http_request_t         *request;
 37 } ngx_http_script_engine_t;
 38 
 39 
 40 typedef struct {
 41     ngx_conf_t                 *cf;
 42     ngx_str_t                  *source;
 43 
 44     ngx_array_t               **flushes;
 45     ngx_array_t               **lengths;
 46     ngx_array_t               **values;
 47 
 48     ngx_uint_t                  variables;
 49     ngx_uint_t                  ncaptures;
 50     ngx_uint_t                  captures_mask;
 51     ngx_uint_t                  size;
 52 
 53     void                       *main;
 54 
 55     unsigned                    compile_args:1;
 56     unsigned                    complete_lengths:1;
 57     unsigned                    complete_values:1;
 58     unsigned                    dup_capture:1;
 59 
 60     unsigned                    args:1;
 61 } ngx_http_script_compile_t;
 62 
 63 
 64 typedef void (*ngx_http_script_code_pt) (ngx_http_script_engine_t *e);
 65 typedef size_t (*ngx_http_script_len_code_pt) (ngx_http_script_engine_t *e);
 66 
 67 
 68 typedef struct {
 69     ngx_http_script_code_pt         code;
 70     uintptr_t                       len;
 71 } ngx_http_script_copy_code_t;
 72 
 73 
 74 typedef struct {
 75     ngx_http_script_code_pt         code;
 76     uintptr_t                       index;
 77 } ngx_http_script_var_code_t;
 78 
 79 
 80 typedef struct {
 81     ngx_http_script_code_pt         code;
 82     ngx_http_set_variable_pt        handler;
 83     uintptr_t                       data;
 84 } ngx_http_script_var_handler_code_t;
 85 
 86 
 87 typedef struct {
 88     ngx_http_script_code_pt          code;
 89     uintptr_t                        n;
 90 } ngx_http_script_copy_capture_code_t;
 91 
 92 
 93 #if (NGX_PCRE)
 94 
 95 typedef struct {
 96     ngx_http_script_code_pt          code;
 97     ngx_regex_t                     *regex;
 98     ngx_array_t                     *lengths;
 99     uintptr_t                        size;
100     uintptr_t                        ncaptures;
101     uintptr_t                        status;
102     uintptr_t                        next;
103 
104     uintptr_t                        test:1;
105     uintptr_t                        negative_test:1;
106     uintptr_t                        uri:1;
107     uintptr_t                        args:1;
108 
109     /* add the r->args to the new arguments */
110     uintptr_t                        add_args:1;
111 
112     uintptr_t                        redirect:1;
113     uintptr_t                        break_cycle:1;
114 
115     ngx_str_t                        name;
116 } ngx_http_script_regex_code_t;
117 
118 
119 typedef struct {
120     ngx_http_script_code_pt          code;
121 
122     uintptr_t                        uri:1;
123     uintptr_t                        args:1;
124 
125     /* add the r->args to the new arguments */
126     uintptr_t                        add_args:1;
127 
128     uintptr_t                        redirect:1;
129 } ngx_http_script_regex_end_code_t;
130 
131 #endif
132 
133 
134 typedef struct {
135     ngx_http_script_code_pt          code;
136     uintptr_t                        status;
137     uintptr_t                        null;
138 } ngx_http_script_return_code_t;
139 
140 
141 typedef enum {
142     ngx_http_script_file_plain = 0,
143     ngx_http_script_file_not_plain,
144     ngx_http_script_file_dir,
145     ngx_http_script_file_not_dir,
146     ngx_http_script_file_exists,
147     ngx_http_script_file_not_exists,
148     ngx_http_script_file_exec,
149     ngx_http_script_file_not_exec
150 } ngx_http_script_file_op_e;
151 
152 
153 typedef struct {
154     ngx_http_script_code_pt          code;
155     uintptr_t                        op;
156 } ngx_http_script_file_code_t;
157 
158 
159 typedef struct {
160     ngx_http_script_code_pt          code;
161     uintptr_t                        next;
162     void                           **loc_conf;
163 } ngx_http_script_if_code_t;
164 
165 
166 typedef struct {
167     ngx_http_script_code_pt          code;
168     ngx_array_t                     *lengths;
169 } ngx_http_script_complex_value_code_t;
170 
171 
172 typedef struct {
173     ngx_http_script_code_pt          code;
174     uintptr_t                        value;
175     uintptr_t                        text_len;
176     uintptr_t                        text_data;
177 } ngx_http_script_value_code_t;
178 
179 
180 ngx_uint_t ngx_http_script_variables_count(ngx_str_t *value);
181 ngx_int_t ngx_http_script_compile(ngx_http_script_compile_t *sc);
182 u_char *ngx_http_script_run(ngx_http_request_t *r, ngx_str_t *value,
183     void *code_lengths, size_t reserved, void *code_values);
184 void ngx_http_script_flush_no_cacheable_variables(ngx_http_request_t *r,
185     ngx_array_t *indices);
186 
187 void *ngx_http_script_start_code(ngx_pool_t *pool, ngx_array_t **codes,
188     size_t size);
189 void *ngx_http_script_add_code(ngx_array_t *codes, size_t size, void *code);
190 
191 size_t ngx_http_script_copy_len_code(ngx_http_script_engine_t *e);
192 void ngx_http_script_copy_code(ngx_http_script_engine_t *e);
193 size_t ngx_http_script_copy_var_len_code(ngx_http_script_engine_t *e);
194 void ngx_http_script_copy_var_code(ngx_http_script_engine_t *e);
195 size_t ngx_http_script_copy_capture_len_code(ngx_http_script_engine_t *e);
196 void ngx_http_script_copy_capture_code(ngx_http_script_engine_t *e);
197 void ngx_http_script_start_args_code(ngx_http_script_engine_t *e);
198 #if (NGX_PCRE)
199 void ngx_http_script_regex_start_code(ngx_http_script_engine_t *e);
200 void ngx_http_script_regex_end_code(ngx_http_script_engine_t *e);
201 #endif
202 void ngx_http_script_return_code(ngx_http_script_engine_t *e);
203 void ngx_http_script_break_code(ngx_http_script_engine_t *e);
204 void ngx_http_script_if_code(ngx_http_script_engine_t *e);
205 void ngx_http_script_equal_code(ngx_http_script_engine_t *e);
206 void ngx_http_script_not_equal_code(ngx_http_script_engine_t *e);
207 void ngx_http_script_file_code(ngx_http_script_engine_t *e);
208 void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e);
209 void ngx_http_script_value_code(ngx_http_script_engine_t *e);
210 void ngx_http_script_set_var_code(ngx_http_script_engine_t *e);
211 void ngx_http_script_var_set_handler_code(ngx_http_script_engine_t *e);
212 void ngx_http_script_var_code(ngx_http_script_engine_t *e);
213 void ngx_http_script_nop_code(ngx_http_script_engine_t *e);
214 
215 
216 #endif /* _NGX_HTTP_SCRIPT_H_INCLUDED_ */
217 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.