Lines Matching defs:state
39 * This structure preserves state from the previous GeoIP lookup,
90 geoip_state_t *state = arg;
91 if (state != NULL && state->record != NULL)
92 GeoIPRecord_delete(state->record);
93 if (state != NULL)
94 isc_mem_putanddetach(&state->mctx,
95 state, sizeof(geoip_state_t));
136 clean_state(geoip_state_t *state) {
137 if (state == NULL)
140 if (state->record != NULL) {
141 GeoIPRecord_delete(state->record);
142 state->record = NULL;
144 if (state->region != NULL) {
145 GeoIPRegion_delete(state->region);
146 state->region = NULL;
148 if (state->name != NULL) {
149 free (state->name);
150 state->name = NULL;
152 state->ipnum = 0;
153 state->text = NULL;
154 state->id = 0;
162 geoip_state_t *state = NULL;
170 state = (geoip_state_t *) isc_thread_key_getspecific(state_key);
171 if (state == NULL) {
172 state = (geoip_state_t *) isc_mem_get(state_mctx,
174 if (state == NULL)
176 memset(state, 0, sizeof(*state));
178 result = isc_thread_key_setspecific(state_key, state);
180 isc_mem_put(state_mctx, state, sizeof(geoip_state_t));
184 isc_mem_attach(state_mctx, &state->mctx);
186 clean_state(state);
188 state = &saved_state;
189 clean_state(state);
193 state->ipnum = ipnum;
195 state->ipnum6 = *ipnum6;
197 state->family = family;
198 state->subtype = subtype;
199 state->scope = scope;
200 state->record = record;
201 state->region = region;
202 state->name = name;
203 state->text = text;
204 state->id = id;
213 geoip_state_t *state;
222 state = (geoip_state_t *) isc_thread_key_getspecific(state_key);
223 if (state == NULL)
226 state = &saved_state;
229 if (state->family == family &&
230 ((state->family == AF_INET && state->ipnum == ipnum) ||
231 (state->family == AF_INET6 && ipnum6 != NULL &&
232 memcmp(state->ipnum6.s6_addr, ipnum6->s6_addr, 16) == 0)))
233 return (state);