File: ipr_internal.h

package info (click to toggle)
ip4r 2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,108 kB
  • sloc: ansic: 6,552; sql: 4,324; makefile: 88; sed: 21; sh: 7
file content (312 lines) | stat: -rw-r--r-- 11,437 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
/* ipr_internal.h */
#ifndef IPR_INTERNAL_H
#define IPR_INTERNAL_H

#include "ipr.h"

#define IP4R_VERSION_STR "2.4.0"
#define IP4R_VERSION_NUM 20400

/* PG version dependencies */

#define INET_STRUCT_DATA(is_) ((inet_struct *)VARDATA_ANY(is_))

#define GISTENTRYCOUNT(v) ((v)->n)
#define GISTENTRYVEC(v) ((v)->vector)

/* hash_any_extended is new in pg11. On older pg, we don't care about what the
 * extended hash functions return, so just fake it.
 */

#if PG_VERSION_NUM < 110000

#ifndef ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE
#define ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE MAKE_SQLSTATE('2','2','0','1','3')
#endif

#ifndef DatumGetUInt64
#define DatumGetUInt64(d_) ((uint64) DatumGetInt64(d_))
#endif

#include "access/hash.h"

static inline
Datum hash_any_extended(register const unsigned char *k,
						register int keylen, uint64 seed)
{
	Datum d = hash_any(k, keylen);
	PG_RETURN_INT64((int64)(uint32) DatumGetInt32(d));
}

#endif

/* funcs */

Datum ip4_in(PG_FUNCTION_ARGS);
Datum ip4_out(PG_FUNCTION_ARGS);
Datum ip4_recv(PG_FUNCTION_ARGS);
Datum ip4_send(PG_FUNCTION_ARGS);
Datum ip4hash(PG_FUNCTION_ARGS);
Datum ip4_hash_extended(PG_FUNCTION_ARGS);
Datum ip4_cast_to_text(PG_FUNCTION_ARGS);
Datum ip4_cast_from_text(PG_FUNCTION_ARGS);
Datum ip4_cast_from_bit(PG_FUNCTION_ARGS);
Datum ip4_cast_to_bit(PG_FUNCTION_ARGS);
Datum ip4_cast_from_bytea(PG_FUNCTION_ARGS);
Datum ip4_cast_to_bytea(PG_FUNCTION_ARGS);
Datum ip4_cast_from_inet(PG_FUNCTION_ARGS);
Datum ip4_cast_to_cidr(PG_FUNCTION_ARGS);
Datum ip4_cast_to_bigint(PG_FUNCTION_ARGS);
Datum ip4_cast_to_numeric(PG_FUNCTION_ARGS);
Datum ip4_cast_from_bigint(PG_FUNCTION_ARGS);
Datum ip4_cast_from_numeric(PG_FUNCTION_ARGS);
Datum ip4_cast_to_double(PG_FUNCTION_ARGS);
Datum ip4_cast_from_double(PG_FUNCTION_ARGS);
Datum ip4r_in(PG_FUNCTION_ARGS);
Datum ip4r_out(PG_FUNCTION_ARGS);
Datum ip4r_recv(PG_FUNCTION_ARGS);
Datum ip4r_send(PG_FUNCTION_ARGS);
Datum ip4rhash(PG_FUNCTION_ARGS);
Datum ip4r_hash_extended(PG_FUNCTION_ARGS);
Datum ip4r_cast_to_text(PG_FUNCTION_ARGS);
Datum ip4r_cast_from_text(PG_FUNCTION_ARGS);
Datum ip4r_cast_from_bit(PG_FUNCTION_ARGS);
Datum ip4r_cast_to_bit(PG_FUNCTION_ARGS);
Datum ip4r_cast_from_cidr(PG_FUNCTION_ARGS);
Datum ip4r_cast_to_cidr(PG_FUNCTION_ARGS);
Datum ip4r_cast_from_ip4(PG_FUNCTION_ARGS);
Datum ip4r_from_ip4s(PG_FUNCTION_ARGS);
Datum ip4r_net_prefix(PG_FUNCTION_ARGS);
Datum ip4r_net_mask(PG_FUNCTION_ARGS);
Datum ip4r_lower(PG_FUNCTION_ARGS);
Datum ip4r_upper(PG_FUNCTION_ARGS);
Datum ip4r_is_cidr(PG_FUNCTION_ARGS);
Datum ip4r_cidr_split(PG_FUNCTION_ARGS);
Datum ip4_netmask(PG_FUNCTION_ARGS);
Datum ip4_net_lower(PG_FUNCTION_ARGS);
Datum ip4_net_upper(PG_FUNCTION_ARGS);
Datum ip4_plus_int(PG_FUNCTION_ARGS);
Datum ip4_plus_bigint(PG_FUNCTION_ARGS);
Datum ip4_plus_numeric(PG_FUNCTION_ARGS);
Datum ip4_minus_int(PG_FUNCTION_ARGS);
Datum ip4_minus_bigint(PG_FUNCTION_ARGS);
Datum ip4_minus_numeric(PG_FUNCTION_ARGS);
Datum ip4_minus_ip4(PG_FUNCTION_ARGS);
Datum ip4_and(PG_FUNCTION_ARGS);
Datum ip4_or(PG_FUNCTION_ARGS);
Datum ip4_xor(PG_FUNCTION_ARGS);
Datum ip4_not(PG_FUNCTION_ARGS);
Datum ip4_lt(PG_FUNCTION_ARGS);
Datum ip4_le(PG_FUNCTION_ARGS);
Datum ip4_gt(PG_FUNCTION_ARGS);
Datum ip4_ge(PG_FUNCTION_ARGS);
Datum ip4_eq(PG_FUNCTION_ARGS);
Datum ip4_neq(PG_FUNCTION_ARGS);
Datum ip4r_lt(PG_FUNCTION_ARGS);
Datum ip4r_le(PG_FUNCTION_ARGS);
Datum ip4r_gt(PG_FUNCTION_ARGS);
Datum ip4r_ge(PG_FUNCTION_ARGS);
Datum ip4r_eq(PG_FUNCTION_ARGS);
Datum ip4r_neq(PG_FUNCTION_ARGS);
Datum ip4r_overlaps(PG_FUNCTION_ARGS);
Datum ip4r_contains(PG_FUNCTION_ARGS);
Datum ip4r_contains_strict(PG_FUNCTION_ARGS);
Datum ip4r_contained_by(PG_FUNCTION_ARGS);
Datum ip4r_contained_by_strict(PG_FUNCTION_ARGS);
Datum ip4_contains(PG_FUNCTION_ARGS);
Datum ip4_contained_by(PG_FUNCTION_ARGS);
Datum ip4r_union(PG_FUNCTION_ARGS);
Datum ip4r_inter(PG_FUNCTION_ARGS);
Datum ip4r_size(PG_FUNCTION_ARGS);
Datum ip4r_size_exact(PG_FUNCTION_ARGS);
Datum ip4r_prefixlen(PG_FUNCTION_ARGS);
Datum ip4r_cmp(PG_FUNCTION_ARGS);
Datum ip4_cmp(PG_FUNCTION_ARGS);
Datum ip4_in_range_bigint(PG_FUNCTION_ARGS);
Datum ip4_in_range_ip4(PG_FUNCTION_ARGS);
Datum ip4r_left_of(PG_FUNCTION_ARGS);
Datum ip4r_right_of(PG_FUNCTION_ARGS);

Datum ip6_in(PG_FUNCTION_ARGS);
Datum ip6_out(PG_FUNCTION_ARGS);
Datum ip6_recv(PG_FUNCTION_ARGS);
Datum ip6_send(PG_FUNCTION_ARGS);
Datum ip6hash(PG_FUNCTION_ARGS);
Datum ip6_hash_extended(PG_FUNCTION_ARGS);
Datum ip6_cast_to_text(PG_FUNCTION_ARGS);
Datum ip6_cast_from_text(PG_FUNCTION_ARGS);
Datum ip6_cast_from_bit(PG_FUNCTION_ARGS);
Datum ip6_cast_to_bit(PG_FUNCTION_ARGS);
Datum ip6_cast_from_bytea(PG_FUNCTION_ARGS);
Datum ip6_cast_to_bytea(PG_FUNCTION_ARGS);
Datum ip6_cast_from_inet(PG_FUNCTION_ARGS);
Datum ip6_cast_to_cidr(PG_FUNCTION_ARGS);
Datum ip6_cast_to_numeric(PG_FUNCTION_ARGS);
Datum ip6_cast_from_numeric(PG_FUNCTION_ARGS);
Datum ip6r_in(PG_FUNCTION_ARGS);
Datum ip6r_out(PG_FUNCTION_ARGS);
Datum ip6r_recv(PG_FUNCTION_ARGS);
Datum ip6r_send(PG_FUNCTION_ARGS);
Datum ip6rhash(PG_FUNCTION_ARGS);
Datum ip6r_hash_extended(PG_FUNCTION_ARGS);
Datum ip6r_cast_to_text(PG_FUNCTION_ARGS);
Datum ip6r_cast_from_text(PG_FUNCTION_ARGS);
Datum ip6r_cast_from_bit(PG_FUNCTION_ARGS);
Datum ip6r_cast_to_bit(PG_FUNCTION_ARGS);
Datum ip6r_cast_from_cidr(PG_FUNCTION_ARGS);
Datum ip6r_cast_to_cidr(PG_FUNCTION_ARGS);
Datum ip6r_cast_from_ip6(PG_FUNCTION_ARGS);
Datum ip6r_from_ip6s(PG_FUNCTION_ARGS);
Datum ip6r_net_prefix(PG_FUNCTION_ARGS);
Datum ip6r_net_mask(PG_FUNCTION_ARGS);
Datum ip6r_lower(PG_FUNCTION_ARGS);
Datum ip6r_upper(PG_FUNCTION_ARGS);
Datum ip6r_is_cidr(PG_FUNCTION_ARGS);
Datum ip6r_cidr_split(PG_FUNCTION_ARGS);
Datum ip6_netmask(PG_FUNCTION_ARGS);
Datum ip6_net_lower(PG_FUNCTION_ARGS);
Datum ip6_net_upper(PG_FUNCTION_ARGS);
Datum ip6_plus_int(PG_FUNCTION_ARGS);
Datum ip6_plus_bigint(PG_FUNCTION_ARGS);
Datum ip6_plus_numeric(PG_FUNCTION_ARGS);
Datum ip6_minus_int(PG_FUNCTION_ARGS);
Datum ip6_minus_bigint(PG_FUNCTION_ARGS);
Datum ip6_minus_numeric(PG_FUNCTION_ARGS);
Datum ip6_minus_ip6(PG_FUNCTION_ARGS);
Datum ip6_and(PG_FUNCTION_ARGS);
Datum ip6_or(PG_FUNCTION_ARGS);
Datum ip6_xor(PG_FUNCTION_ARGS);
Datum ip6_not(PG_FUNCTION_ARGS);
Datum ip6_lt(PG_FUNCTION_ARGS);
Datum ip6_le(PG_FUNCTION_ARGS);
Datum ip6_gt(PG_FUNCTION_ARGS);
Datum ip6_ge(PG_FUNCTION_ARGS);
Datum ip6_eq(PG_FUNCTION_ARGS);
Datum ip6_neq(PG_FUNCTION_ARGS);
Datum ip6r_lt(PG_FUNCTION_ARGS);
Datum ip6r_le(PG_FUNCTION_ARGS);
Datum ip6r_gt(PG_FUNCTION_ARGS);
Datum ip6r_ge(PG_FUNCTION_ARGS);
Datum ip6r_eq(PG_FUNCTION_ARGS);
Datum ip6r_neq(PG_FUNCTION_ARGS);
Datum ip6r_overlaps(PG_FUNCTION_ARGS);
Datum ip6r_contains(PG_FUNCTION_ARGS);
Datum ip6r_contains_strict(PG_FUNCTION_ARGS);
Datum ip6r_contained_by(PG_FUNCTION_ARGS);
Datum ip6r_contained_by_strict(PG_FUNCTION_ARGS);
Datum ip6_contains(PG_FUNCTION_ARGS);
Datum ip6_contained_by(PG_FUNCTION_ARGS);
Datum ip6r_union(PG_FUNCTION_ARGS);
Datum ip6r_inter(PG_FUNCTION_ARGS);
Datum ip6r_size(PG_FUNCTION_ARGS);
Datum ip6r_size_exact(PG_FUNCTION_ARGS);
Datum ip6r_prefixlen(PG_FUNCTION_ARGS);
Datum ip6r_cmp(PG_FUNCTION_ARGS);
Datum ip6_cmp(PG_FUNCTION_ARGS);
Datum ip6_in_range_bigint(PG_FUNCTION_ARGS);
Datum ip6_in_range_ip6(PG_FUNCTION_ARGS);
#if 0
Datum ip6_in_range_numeric(PG_FUNCTION_ARGS);
#endif
Datum ip6r_left_of(PG_FUNCTION_ARGS);
Datum ip6r_right_of(PG_FUNCTION_ARGS);

Datum ipaddr_in(PG_FUNCTION_ARGS);
Datum ipaddr_out(PG_FUNCTION_ARGS);
Datum ipaddr_recv(PG_FUNCTION_ARGS);
Datum ipaddr_send(PG_FUNCTION_ARGS);
Datum ipaddr_hash(PG_FUNCTION_ARGS);
Datum ipaddr_hash_extended(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_text(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_text(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_bit(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_bit(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_bytea(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_bytea(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_inet(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_cidr(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_numeric(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_ip4(PG_FUNCTION_ARGS);
Datum ipaddr_cast_from_ip6(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_ip4(PG_FUNCTION_ARGS);
Datum ipaddr_cast_to_ip6(PG_FUNCTION_ARGS);
Datum ipaddr_net_lower(PG_FUNCTION_ARGS);
Datum ipaddr_net_upper(PG_FUNCTION_ARGS);
Datum ipaddr_family(PG_FUNCTION_ARGS);
Datum ipaddr_plus_int(PG_FUNCTION_ARGS);
Datum ipaddr_plus_bigint(PG_FUNCTION_ARGS);
Datum ipaddr_plus_numeric(PG_FUNCTION_ARGS);
Datum ipaddr_minus_int(PG_FUNCTION_ARGS);
Datum ipaddr_minus_bigint(PG_FUNCTION_ARGS);
Datum ipaddr_minus_numeric(PG_FUNCTION_ARGS);
Datum ipaddr_minus_ipaddr(PG_FUNCTION_ARGS);
Datum ipaddr_and(PG_FUNCTION_ARGS);
Datum ipaddr_or(PG_FUNCTION_ARGS);
Datum ipaddr_xor(PG_FUNCTION_ARGS);
Datum ipaddr_not(PG_FUNCTION_ARGS);
Datum ipaddr_lt(PG_FUNCTION_ARGS);
Datum ipaddr_le(PG_FUNCTION_ARGS);
Datum ipaddr_gt(PG_FUNCTION_ARGS);
Datum ipaddr_ge(PG_FUNCTION_ARGS);
Datum ipaddr_eq(PG_FUNCTION_ARGS);
Datum ipaddr_neq(PG_FUNCTION_ARGS);
Datum ipaddr_cmp(PG_FUNCTION_ARGS);

Datum iprange_in(PG_FUNCTION_ARGS);
Datum iprange_out(PG_FUNCTION_ARGS);
Datum iprange_recv(PG_FUNCTION_ARGS);
Datum iprange_send(PG_FUNCTION_ARGS);
Datum iprange_hash(PG_FUNCTION_ARGS);
Datum iprange_hash_new(PG_FUNCTION_ARGS);
Datum iprange_hash_extended(PG_FUNCTION_ARGS);
Datum iprange_cast_to_text(PG_FUNCTION_ARGS);
Datum iprange_cast_from_text(PG_FUNCTION_ARGS);
Datum iprange_cast_from_cidr(PG_FUNCTION_ARGS);
Datum iprange_cast_to_cidr(PG_FUNCTION_ARGS);
Datum iprange_cast_to_bit(PG_FUNCTION_ARGS);
Datum iprange_cast_from_ip4(PG_FUNCTION_ARGS);
Datum iprange_cast_from_ip6(PG_FUNCTION_ARGS);
Datum iprange_cast_from_ipaddr(PG_FUNCTION_ARGS);
Datum iprange_cast_from_ip4r(PG_FUNCTION_ARGS);
Datum iprange_cast_from_ip6r(PG_FUNCTION_ARGS);
Datum iprange_cast_to_ip4r(PG_FUNCTION_ARGS);
Datum iprange_cast_to_ip6r(PG_FUNCTION_ARGS);
Datum iprange_from_ip4s(PG_FUNCTION_ARGS);
Datum iprange_from_ip6s(PG_FUNCTION_ARGS);
Datum iprange_from_ipaddrs(PG_FUNCTION_ARGS);
Datum iprange_net_prefix_ip4(PG_FUNCTION_ARGS);
Datum iprange_net_prefix_ip6(PG_FUNCTION_ARGS);
Datum iprange_net_prefix(PG_FUNCTION_ARGS);
Datum iprange_net_mask_ip4(PG_FUNCTION_ARGS);
Datum iprange_net_mask_ip6(PG_FUNCTION_ARGS);
Datum iprange_net_mask(PG_FUNCTION_ARGS);
Datum iprange_lower(PG_FUNCTION_ARGS);
Datum iprange_upper(PG_FUNCTION_ARGS);
Datum iprange_is_cidr(PG_FUNCTION_ARGS);
Datum iprange_family(PG_FUNCTION_ARGS);
Datum iprange_cidr_split(PG_FUNCTION_ARGS);
Datum iprange_lt(PG_FUNCTION_ARGS);
Datum iprange_le(PG_FUNCTION_ARGS);
Datum iprange_gt(PG_FUNCTION_ARGS);
Datum iprange_ge(PG_FUNCTION_ARGS);
Datum iprange_eq(PG_FUNCTION_ARGS);
Datum iprange_neq(PG_FUNCTION_ARGS);
Datum iprange_overlaps(PG_FUNCTION_ARGS);
Datum iprange_contains(PG_FUNCTION_ARGS);
Datum iprange_contains_strict(PG_FUNCTION_ARGS);
Datum iprange_contained_by(PG_FUNCTION_ARGS);
Datum iprange_contained_by_strict(PG_FUNCTION_ARGS);
Datum iprange_contains_ip(PG_FUNCTION_ARGS);
Datum iprange_contains_ip4(PG_FUNCTION_ARGS);
Datum iprange_contains_ip6(PG_FUNCTION_ARGS);
Datum iprange_ip_contained_by(PG_FUNCTION_ARGS);
Datum iprange_ip4_contained_by(PG_FUNCTION_ARGS);
Datum iprange_ip6_contained_by(PG_FUNCTION_ARGS);
Datum iprange_union(PG_FUNCTION_ARGS);
Datum iprange_inter(PG_FUNCTION_ARGS);
Datum iprange_size(PG_FUNCTION_ARGS);
Datum iprange_size_exact(PG_FUNCTION_ARGS);
Datum iprange_prefixlen(PG_FUNCTION_ARGS);
Datum iprange_cmp(PG_FUNCTION_ARGS);

#endif