Lines Matching refs:V_tcp_hostcache

117 #define	V_tcp_hostcache		VNET(tcp_hostcache)
187 (jenkins_hash32((uint32_t *)(ip), 1, V_tcp_hostcache.hashsalt) & \
188 V_tcp_hostcache.hashmask)
192 V_tcp_hostcache.hashsalt) & \
193 V_tcp_hostcache.hashmask)
207 atomic_store_int(&V_tcp_hostcache.cache_count, 0);
208 V_tcp_hostcache.hashsize = TCP_HOSTCACHE_HASHSIZE;
209 V_tcp_hostcache.bucket_limit = TCP_HOSTCACHE_BUCKETLIMIT;
210 V_tcp_hostcache.expire = TCP_HOSTCACHE_EXPIRE;
211 V_tcp_hostcache.prune = TCP_HOSTCACHE_PRUNE;
212 V_tcp_hostcache.hashsalt = arc4random();
215 &V_tcp_hostcache.hashsize);
216 if (!powerof2(V_tcp_hostcache.hashsize)) {
218 V_tcp_hostcache.hashsize = TCP_HOSTCACHE_HASHSIZE; /* default */
220 V_tcp_hostcache.hashmask = V_tcp_hostcache.hashsize - 1;
223 &V_tcp_hostcache.bucket_limit);
225 cache_limit = V_tcp_hostcache.hashsize * V_tcp_hostcache.bucket_limit;
226 V_tcp_hostcache.cache_limit = cache_limit;
228 &V_tcp_hostcache.cache_limit);
229 if (V_tcp_hostcache.cache_limit > cache_limit)
230 V_tcp_hostcache.cache_limit = cache_limit;
235 V_tcp_hostcache.hashbase = (struct hc_head *)
236 malloc(V_tcp_hostcache.hashsize * sizeof(struct hc_head),
242 for (i = 0; i < V_tcp_hostcache.hashsize; i++) {
243 TAILQ_INIT(&V_tcp_hostcache.hashbase[i].hch_bucket);
244 V_tcp_hostcache.hashbase[i].hch_length = 0;
245 mtx_init(&V_tcp_hostcache.hashbase[i].hch_mtx, "tcp_hc_entry",
252 V_tcp_hostcache.zone =
255 uma_zone_set_max(V_tcp_hostcache.zone, V_tcp_hostcache.cache_limit);
261 callout_reset(&V_tcp_hc_callout, V_tcp_hostcache.prune * hz,
277 uma_zdestroy(V_tcp_hostcache.zone);
279 for (i = 0; i < V_tcp_hostcache.hashsize; i++)
280 mtx_destroy(&V_tcp_hostcache.hashbase[i].hch_mtx);
281 free(V_tcp_hostcache.hashbase, M_HOSTCACHE);
311 hc_head = &V_tcp_hostcache.hashbase[hash];
370 hc_head = &V_tcp_hostcache.hashbase[hash];
382 if (hc_head->hch_length >= V_tcp_hostcache.bucket_limit ||
383 atomic_load_int(&V_tcp_hostcache.cache_count) >= V_tcp_hostcache.cache_limit) {
399 KASSERT(V_tcp_hostcache.hashbase[hash].hch_length > 0 &&
400 V_tcp_hostcache.hashbase[hash].hch_length <=
401 V_tcp_hostcache.bucket_limit,
403 hash, V_tcp_hostcache.hashbase[hash].hch_length));
404 V_tcp_hostcache.hashbase[hash].hch_length--;
405 atomic_subtract_int(&V_tcp_hostcache.cache_count, 1);
408 uma_zfree(V_tcp_hostcache.zone, hc_entry);
414 hc_entry = uma_zalloc(V_tcp_hostcache.zone, M_NOWAIT);
431 hc_entry->rmx_expire = V_tcp_hostcache.expire;
437 V_tcp_hostcache.hashbase[hash].hch_length++;
438 KASSERT(V_tcp_hostcache.hashbase[hash].hch_length <
439 V_tcp_hostcache.bucket_limit,
441 hash, V_tcp_hostcache.hashbase[hash].hch_length));
442 atomic_add_int(&V_tcp_hostcache.cache_count, 1);
476 hc_entry->rmx_expire = V_tcp_hostcache.expire; /* start over again */
511 hc_entry->rmx_expire = V_tcp_hostcache.expire; /* start over again */
544 hc_entry->rmx_expire = V_tcp_hostcache.expire; /* start over again */
579 hc_entry->rmx_expire = V_tcp_hostcache.expire; /* start over again */
658 len = (atomic_load_int(&V_tcp_hostcache.cache_count) + 1) *
669 sbuf_new_for_sysctl(&sb, NULL, V_tcp_hostcache.bucket_limit *
678 for (i = 0; i < V_tcp_hostcache.hashsize; i++) {
679 THC_LOCK(&V_tcp_hostcache.hashbase[i].hch_mtx);
680 TAILQ_FOREACH(hc_entry, &V_tcp_hostcache.hashbase[i].hch_bucket,
705 THC_UNLOCK(&V_tcp_hostcache.hashbase[i].hch_mtx);
730 histo = (int *)malloc(sizeof(int) * (V_tcp_hostcache.bucket_limit + 1),
735 for (i = 0; i < V_tcp_hostcache.hashsize; i++) {
736 hch_length = V_tcp_hostcache.hashbase[i].hch_length;
737 KASSERT(hch_length <= V_tcp_hostcache.bucket_limit,
747 for (i = 0; i <= V_tcp_hostcache.bucket_limit; i++) {
765 for (i = 0; i < V_tcp_hostcache.hashsize; i++) {
766 THC_LOCK(&V_tcp_hostcache.hashbase[i].hch_mtx);
768 &V_tcp_hostcache.hashbase[i].hch_bucket, rmx_q, hc_next) {
769 KASSERT(V_tcp_hostcache.hashbase[i].hch_length > 0 &&
770 V_tcp_hostcache.hashbase[i].hch_length <=
771 V_tcp_hostcache.bucket_limit,
773 i, V_tcp_hostcache.hashbase[i].hch_length));
775 TAILQ_REMOVE(&V_tcp_hostcache.hashbase[i].hch_bucket,
777 uma_zfree(V_tcp_hostcache.zone, hc_entry);
778 V_tcp_hostcache.hashbase[i].hch_length--;
779 atomic_subtract_int(&V_tcp_hostcache.cache_count, 1);
781 hc_entry->rmx_expire -= V_tcp_hostcache.prune;
783 THC_UNLOCK(&V_tcp_hostcache.hashbase[i].hch_mtx);
797 if (V_tcp_hostcache.purgeall) {
798 if (V_tcp_hostcache.purgeall == 2)
799 V_tcp_hostcache.hashsalt = arc4random();
801 V_tcp_hostcache.purgeall = 0;
806 callout_reset(&V_tcp_hc_callout, V_tcp_hostcache.prune * hz,
825 V_tcp_hostcache.hashsalt = arc4random();
828 callout_reset(&V_tcp_hc_callout, V_tcp_hostcache.prune * hz,