/*ARGSUSED*/ static int gather_map(void *ignored, const prmap_t *map, const char *objname) { mapdata_t *data; /* Skip mappings which are outside the range specified by -A */ if (!address_in_range(map->pr_vaddr, map->pr_vaddr + map->pr_size, map->pr_pagesize)) return (0); data = nextmap(); data->md_map = *map; if (data->md_objname != NULL) free(data->md_objname); data->md_objname = objname ? strdup(objname) : NULL; return (0); }
/*ARGSUSED*/ static int gather_xmap(void *ignored, const prxmap_t *xmap, const char *objname, int last, int doswap) { mapdata_t *data; /* Skip mappings which are outside the range specified by -A */ if (!address_in_range(xmap->pr_vaddr, xmap->pr_vaddr + xmap->pr_size, xmap->pr_pagesize)) return (0); data = nextmap(); data->md_xmap = *xmap; if (data->md_objname != NULL) free(data->md_objname); data->md_objname = objname ? strdup(objname) : NULL; data->md_last = last; data->md_doswap = doswap; return (0); }
int checkCIDR(redisContext *context, const char *actor, char *reason, char *list, expanding_vector *ev, time_t *last_update_time) { int ip = ip_address_to_integer(actor); if (ip == BAD_ADDRESS) return BAD_ADDRESS; int rc = check_and_update_cache(context, actor, reason, list, ev, last_update_time); if (rc != 0) { return rc; } for(int i = 0; i < ev->size; ++ i) { range *range = &(ev->data[i]); if (address_in_range(range, ip) > 0) { redisReply* value = redisCommand(context, "GET %s:repsheet:cidr:%s", range->block, list); if (value) { populate_reason(value, reason); freeReplyObject(value); } return TRUE; } } return FALSE; }