annotate ngx_http_ip_tos_filter_module.c @ 1:a23404790f33 default tip

Whitespace cleanup, no functional changes.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 24 Nov 2009 13:52:31 +0300
parents 18515436c0f1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2 /*
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 * Copyright (C) Maxim Dounin
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4 */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 #include <ngx_config.h>
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 #include <ngx_core.h>
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 #include <ngx_http.h>
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 typedef struct {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 ngx_flag_t enable;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 ngx_uint_t tos;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 } ngx_http_ip_tos_conf_t;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 static void *ngx_http_ip_tos_create_conf(ngx_conf_t *cf);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 static char *ngx_http_ip_tos_merge_conf(ngx_conf_t *cf, void *parent,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 void *child);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20 static char *ngx_http_ip_tos(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 static ngx_int_t ngx_http_ip_tos_init(ngx_conf_t *cf);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 static ngx_command_t ngx_http_ip_tos_commands[] = {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 { ngx_string("ip_tos"),
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ngx_http_ip_tos,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29 NGX_HTTP_LOC_CONF_OFFSET,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 0,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31 NULL },
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 ngx_null_command
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 };
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 static ngx_http_module_t ngx_http_ip_tos_module_ctx = {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 NULL, /* preconfiguration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 ngx_http_ip_tos_init, /* postconfiguration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 NULL, /* create main configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 NULL, /* init main configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 NULL, /* create server configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 NULL, /* merge server configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 ngx_http_ip_tos_create_conf, /* create location configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 ngx_http_ip_tos_merge_conf /* merge location configuration */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 };
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 ngx_module_t ngx_http_ip_tos_filter_module = {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 NGX_MODULE_V1,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 &ngx_http_ip_tos_module_ctx, /* module context */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 ngx_http_ip_tos_commands, /* module directives */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 NGX_HTTP_MODULE, /* module type */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 NULL, /* init master */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 NULL, /* init module */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 NULL, /* init process */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60 NULL, /* init thread */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 NULL, /* exit thread */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 NULL, /* exit process */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 NULL, /* exit master */
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 NGX_MODULE_V1_PADDING
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 };
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 static ngx_http_output_header_filter_pt ngx_http_next_header_filter;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 static ngx_int_t
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 ngx_http_ip_tos_header_filter(ngx_http_request_t *r)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 int tos;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 ngx_http_ip_tos_conf_t *conf;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 if (r != r->main) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 return ngx_http_next_header_filter(r);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 conf = ngx_http_get_module_loc_conf(r, ngx_http_ip_tos_filter_module);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 if (!conf->enable) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 return ngx_http_next_header_filter(r);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 tos = conf->tos;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 "ip tos: 0x%02Xi", tos);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 if (setsockopt(r->connection->fd, IPPROTO_IP, IP_TOS,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 (const void *) &tos, sizeof(tos)) == -1)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_socket_errno,
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 "setsockopt(IP_TOS) failed");
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 return ngx_http_next_header_filter(r);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 static void *
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 ngx_http_ip_tos_create_conf(ngx_conf_t *cf)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 ngx_http_ip_tos_conf_t *conf;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_ip_tos_conf_t));
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 if (conf == NULL) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 return NULL;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 conf->enable = NGX_CONF_UNSET;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 conf->tos = NGX_CONF_UNSET_UINT;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 return conf;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 static char *
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 ngx_http_ip_tos_merge_conf(ngx_conf_t *cf, void *parent, void *child)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 ngx_http_ip_tos_conf_t *prev = parent;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 ngx_http_ip_tos_conf_t *conf = child;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 ngx_conf_merge_value(conf->enable, prev->enable, 0);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127 ngx_conf_merge_uint_value(conf->tos, prev->tos, 0);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129 return NGX_CONF_OK;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
130 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
131
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133 static char *
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 ngx_http_ip_tos(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 ngx_http_ip_tos_conf_t *itcf = conf;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138 ngx_int_t n;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
139 ngx_str_t *value;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
140
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
141 if (itcf->enable != NGX_CONF_UNSET) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
142 return "is duplicate";
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
143 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
144
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 value = cf->args->elts;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147 if (ngx_strcasecmp(value[1].data, (u_char *) "off") == 0) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
148 itcf->enable = 0;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
149 return NGX_CONF_OK;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
150 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
151
1
a23404790f33 Whitespace cleanup, no functional changes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 0
diff changeset
152 if (value[1].len != 4 || value[1].data[0] != '0' ||
0
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
153 (value[1].data[1] != 'x' && value[1].data[1] != 'X'))
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
154 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
155 return "invalid argument 1";
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
156 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
158 n = ngx_hextoi(value[1].data + 2, value[1].len - 2);
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
159 if (n == NGX_ERROR || n < 0 || n > 255) {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 return "invalid argument 2";
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 itcf->enable = 1;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 itcf->tos = n;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166 return NGX_CONF_OK;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167 }
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170 static ngx_int_t
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
171 ngx_http_ip_tos_init(ngx_conf_t *cf)
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
172 {
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
173 ngx_http_next_header_filter = ngx_http_top_header_filter;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
174 ngx_http_top_header_filter = ngx_http_ip_tos_header_filter;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
175
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
176 return NGX_OK;
18515436c0f1 Ip tos filter module.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
177 }