nxt_http_route_addr.c (1324:73562b05bf48) nxt_http_route_addr.c (1343:8cc299d14325)
1
2/*
3 * Copyright (C) Axel Duch
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8#include <nxt_http_route_addr.h>

--- 4 unchanged lines hidden (view full) ---

13static nxt_bool_t nxt_valid_ipv6_blocks(u_char *c, size_t len);
14#endif
15
16
17nxt_int_t
18nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
19 nxt_http_route_addr_pattern_t *pattern, nxt_conf_value_t *cv)
20{
1
2/*
3 * Copyright (C) Axel Duch
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8#include <nxt_http_route_addr.h>

--- 4 unchanged lines hidden (view full) ---

13static nxt_bool_t nxt_valid_ipv6_blocks(u_char *c, size_t len);
14#endif
15
16
17nxt_int_t
18nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
19 nxt_http_route_addr_pattern_t *pattern, nxt_conf_value_t *cv)
20{
21 u_char *delim, *end;
21 u_char *delim;
22 nxt_int_t ret, cidr_prefix;
23 nxt_str_t addr, port;
24 nxt_http_route_addr_base_t *base;
25 nxt_http_route_addr_range_t *inet;
26
27 if (nxt_conf_type(cv) != NXT_CONF_STRING) {
28 return NXT_ADDR_PATTERN_CV_TYPE_ERROR;
29 }

--- 24 unchanged lines hidden (view full) ---

54 base->addr_family = AF_UNSPEC;
55 base->match_type = NXT_HTTP_ROUTE_ADDR_ANY;
56
57 goto parse_port;
58 }
59
60 if (nxt_str_looks_like_ipv6(&addr)) {
61#if (NXT_INET6)
22 nxt_int_t ret, cidr_prefix;
23 nxt_str_t addr, port;
24 nxt_http_route_addr_base_t *base;
25 nxt_http_route_addr_range_t *inet;
26
27 if (nxt_conf_type(cv) != NXT_CONF_STRING) {
28 return NXT_ADDR_PATTERN_CV_TYPE_ERROR;
29 }

--- 24 unchanged lines hidden (view full) ---

54 base->addr_family = AF_UNSPEC;
55 base->match_type = NXT_HTTP_ROUTE_ADDR_ANY;
56
57 goto parse_port;
58 }
59
60 if (nxt_str_looks_like_ipv6(&addr)) {
61#if (NXT_INET6)
62 u_char *end;
62 uint8_t i;
63 nxt_int_t len;
64 nxt_http_route_in6_addr_range_t *inet6;
65
66 base->addr_family = AF_INET6;
67
68 if (addr.start[0] == '[') {
69 addr.start++;

--- 104 unchanged lines hidden (view full) ---

174 }
175
176 base->match_type = NXT_HTTP_ROUTE_ADDR_EXACT;
177
178 if (nxt_slow_path(!nxt_valid_ipv6_blocks(addr.start, addr.length))) {
179 return NXT_ADDR_PATTERN_FORMAT_ERROR;
180 }
181
63 uint8_t i;
64 nxt_int_t len;
65 nxt_http_route_in6_addr_range_t *inet6;
66
67 base->addr_family = AF_INET6;
68
69 if (addr.start[0] == '[') {
70 addr.start++;

--- 104 unchanged lines hidden (view full) ---

175 }
176
177 base->match_type = NXT_HTTP_ROUTE_ADDR_EXACT;
178
179 if (nxt_slow_path(!nxt_valid_ipv6_blocks(addr.start, addr.length))) {
180 return NXT_ADDR_PATTERN_FORMAT_ERROR;
181 }
182
182 nxt_inet6_addr(&inet6->start, addr.start, addr.length);
183 ret = nxt_inet6_addr(&inet6->start, addr.start, addr.length);
184 if (nxt_slow_path(ret != NXT_OK)) {
185 return NXT_ADDR_PATTERN_FORMAT_ERROR;
186 }
183
184 goto parse_port;
185#endif
186 return NXT_ADDR_PATTERN_NO_IPv6_ERROR;
187 }
188
189 base->addr_family = AF_INET;
190

--- 159 unchanged lines hidden ---
187
188 goto parse_port;
189#endif
190 return NXT_ADDR_PATTERN_NO_IPv6_ERROR;
191 }
192
193 base->addr_family = AF_INET;
194

--- 159 unchanged lines hidden ---