Home | History | Annotate | Download | only in netinet

Lines Matching defs:softs

150 #define	SINCL(x)	ATOMIC_INCL(softs->x)
151 #define SBUMP(x) (softs->x)++
152 #define SBUMPD(x, y) do { (softs->x.y)++; DT(y); } while (0)
153 #define SBUMPDX(x, y, z)do { (softs->x.y)++; DT(z); } while (0)
193 #define DOUBLE_HASH(x) (((x) + softs->ipf_state_seed[(x) % \
194 softs->ipf_state_size]) % softs->ipf_state_size)
238 ipf_state_softc_t *softs;
240 KMALLOC(softs, ipf_state_softc_t *);
241 if (softs == NULL)
244 bzero((char *)softs, sizeof(*softs));
246 softs->ipf_state_tune = ipf_tune_array_copy(softs,
249 if (softs->ipf_state_tune == NULL) {
250 ipf_state_soft_destroy(softc, softs);
253 if (ipf_tune_array_link(softc, softs->ipf_state_tune) == -1) {
254 ipf_state_soft_destroy(softc, softs);
259 softs->ipf_state_logging = 1;
261 softs->ipf_state_logging = 0;
263 softs->ipf_state_size = IPSTATE_SIZE,
264 softs->ipf_state_maxbucket = 0;
265 softs->ipf_state_wm_freq = IPF_TTLVAL(10);
266 softs->ipf_state_max = IPSTATE_MAX;
267 softs->ipf_state_wm_last = 0;
268 softs->ipf_state_wm_high = 99;
269 softs->ipf_state_wm_low = 90;
270 softs->ipf_state_inited = 0;
271 softs->ipf_state_lock = 0;
272 softs->ipf_state_doflush = 0;
274 return softs;
290 ipf_state_softc_t *softs = arg;
292 if (softs->ipf_state_tune != NULL) {
293 ipf_tune_array_unlink(softc, softs->ipf_state_tune);
294 KFREES(softs->ipf_state_tune, sizeof(ipf_state_tuneables));
295 softs->ipf_state_tune = NULL;
298 KFREE(softs);
346 ipf_state_softc_t *softs = arg;
349 KMALLOCS(softs->ipf_state_table,
350 ipstate_t **, softs->ipf_state_size * sizeof(ipstate_t *));
351 if (softs->ipf_state_table == NULL)
354 bzero((char *)softs->ipf_state_table,
355 softs->ipf_state_size * sizeof(ipstate_t *));
357 softs->ipf_state_seed = ipf_state_seed_alloc(softs->ipf_state_size,
358 softs->ipf_state_max);
359 if (softs->ipf_state_seed == NULL)
362 KMALLOCS(softs->ipf_state_stats.iss_bucketlen, u_int *,
363 softs->ipf_state_size * sizeof(u_int));
364 if (softs->ipf_state_stats.iss_bucketlen == NULL)
367 bzero((char *)softs->ipf_state_stats.iss_bucketlen,
368 softs->ipf_state_size * sizeof(u_int));
370 if (softs->ipf_state_maxbucket == 0) {
371 for (i = softs->ipf_state_size; i > 0; i >>= 1)
372 softs->ipf_state_maxbucket++;
373 softs->ipf_state_maxbucket *= 2;
376 ipf_sttab_init(softc, softs->ipf_state_tcptq);
377 softs->ipf_state_stats.iss_tcptab = softs->ipf_state_tcptq;
378 softs->ipf_state_tcptq[IPF_TCP_NSTATES - 1].ifq_next =
379 &softs->ipf_state_udptq;
381 IPFTQ_INIT(&softs->ipf_state_udptq, softc->ipf_udptimeout,
383 softs->ipf_state_udptq.ifq_next = &softs->ipf_state_udpacktq;
385 IPFTQ_INIT(&softs->ipf_state_udpacktq, softc->ipf_udpacktimeout,
387 softs->ipf_state_udpacktq.ifq_next = &softs->ipf_state_icmptq;
389 IPFTQ_INIT(&softs->ipf_state_icmptq, softc->ipf_icmptimeout,
391 softs->ipf_state_icmptq.ifq_next = &softs->ipf_state_icmpacktq;
393 IPFTQ_INIT(&softs->ipf_state_icmpacktq, softc->ipf_icmpacktimeout,
395 softs->ipf_state_icmpacktq.ifq_next = &softs->ipf_state_iptq;
397 IPFTQ_INIT(&softs->ipf_state_iptq, softc->ipf_iptimeout,
399 softs->ipf_state_iptq.ifq_next = &softs->ipf_state_pending;
401 IPFTQ_INIT(&softs->ipf_state_pending, IPF_HZ_DIVIDE, "ipftq pending");
402 softs->ipf_state_pending.ifq_next = &softs->ipf_state_deletetq;
404 IPFTQ_INIT(&softs->ipf_state_deletetq, 1, "ipftq delete");
405 softs->ipf_state_deletetq.ifq_next = NULL;
407 MUTEX_INIT(&softs->ipf_stinsert, "ipf state insert mutex");
410 softs->ipf_state_wm_last = softc->ipf_ticks;
411 softs->ipf_state_inited = 1;
429 ipf_state_softc_t *softs = arg;
433 while ((is = softs->ipf_state_list) != NULL)
443 for (ifq = softs->ipf_state_usertq; ifq != NULL; ifq = ifqnext) {
450 softs->ipf_state_stats.iss_inuse = 0;
451 softs->ipf_state_stats.iss_active = 0;
453 if (softs->ipf_state_inited == 1) {
454 softs->ipf_state_inited = 0;
455 ipf_sttab_destroy(softs->ipf_state_tcptq);
456 MUTEX_DESTROY(&softs->ipf_state_udptq.ifq_lock);
457 MUTEX_DESTROY(&softs->ipf_state_icmptq.ifq_lock);
458 MUTEX_DESTROY(&softs->ipf_state_udpacktq.ifq_lock);
459 MUTEX_DESTROY(&softs->ipf_state_icmpacktq.ifq_lock);
460 MUTEX_DESTROY(&softs->ipf_state_iptq.ifq_lock);
461 MUTEX_DESTROY(&softs
462 MUTEX_DESTROY(&softs->ipf_state_pending.ifq_lock);
463 MUTEX_DESTROY(&softs->ipf_stinsert);
466 if (softs->ipf_state_table != NULL) {
467 KFREES(softs->ipf_state_table,
468 softs->ipf_state_size * sizeof(*softs->ipf_state_table));
469 softs->ipf_state_table = NULL;
472 if (softs->ipf_state_seed != NULL) {
473 KFREES(softs->ipf_state_seed,
474 softs->ipf_state_size * sizeof(*softs->ipf_state_seed));
475 softs->ipf_state_seed = NULL;
478 if (softs->ipf_state_stats.iss_bucketlen != NULL) {
479 KFREES(softs->ipf_state_stats.iss_bucketlen,
480 softs->ipf_state_size * sizeof(u_int));
481 softs->ipf_state_stats.iss_bucketlen = NULL;
499 ipf_state_softc_t *softs = arg;
501 softs->ipf_state_lock = tmp;
516 ipf_state_softc_t *softs = softc->ipf_state_soft;
517 ips_stat_t *issp = &softs->ipf_state_stats;
519 issp->iss_state_size = softs->ipf_state_size;
520 issp->iss_state_max = softs->ipf_state_max;
521 issp->iss_table = softs->ipf_state_table;
522 issp->iss_list = softs->ipf_state_list;
547 ipf_state_softc_t *softs = softc->ipf_state_soft;
557 for (sp = softs->ipf_state_list; sp; sp = sp->is_next)
592 ipf_state_softc_t *softs = softc->ipf_state_soft;
682 error = BCOPYIN(data, &softs->ipf_state_logging,
683 sizeof(softs->ipf_state_logging));
695 error = BCOPYOUT(&softs->ipf_state_logging, data,
696 sizeof(softs->ipf_state_logging));
733 error = ipf_lock(data, &softs->ipf_state_lock);
741 if (!softs->ipf_state_lock || !(mode &FWRITE)) {
746 error = ipf_state_putent(softc, softs, data);
753 if (!softs->ipf_state_lock) {
758 error = ipf_state_getent(softc, softs, data);
765 error = BCOPYOUT(softs->ipf_state_stats.iss_bucketlen, data,
766 softs->ipf_state_size * sizeof(u_int));
799 error = ipf_state_gettable(softc, softs, data);
815 error = ipf_outobj(softc, data, softs->ipf_state_tcptq,
832 /* softs(I) - pointer to state context structure */
842 ipf_state_getent(ipf_main_softc_t *softc, ipf_state_softc_t *softs, void *data)
855 isn = softs->ipf_state_list;
870 for (is = softs->ipf_state_list; is; is = is->is_next)
895 /* softs(I) - pointer to state context structure */
904 ipf_state_putent(ipf_main_softc_t *softc, ipf_state_softc_t *softs, void *data)
1009 for (is = softs->ipf_state_list; is; is = is->is_next)
1052 ipf_state_softc_t *softs = softc->ipf_state_soft;
1071 hv = is->is_hv % softs->ipf_state_size;
1082 MUTEX_ENTER(&softs->ipf_stinsert);
1090 MUTEX_EXIT(&softs->ipf_stinsert);
1111 if (softs->ipf_state_list != NULL)
1112 softs->ipf_state_list->is_pnext = &is->is_next;
1113 is->is_pnext = &softs->ipf_state_list;
1114 is->is_next = softs->ipf_state_list;
1115 softs->ipf_state_list = is;
1117 if (softs->ipf_state_table[hv] != NULL)
1118 softs->ipf_state_table[hv]->is_phnext = &is->is_hnext;
1120 softs->ipf_state_stats.iss_inuse++;
1121 is->is_phnext = softs->ipf_state_table + hv;
1122 is->is_hnext = softs->ipf_state_table[hv];
1123 softs->ipf_state_table[hv] = is;
1124 softs->ipf_state_stats.iss_bucketlen[hv]++;
1125 softs->ipf_state_stats.iss_active++;
1126 MUTEX_EXIT(&softs->ipf_stinsert);
1351 ipf_state_softc_t *softs = softc->ipf_state_soft;
1367 if (softs->ipf_state_lock) {
1383 if ((softs->ipf_state_stats.iss_active * 100 / softs->ipf_state_max) >
1384 softs->ipf_state_wm_high) {
1385 softs->ipf_state_doflush = 1;
1400 if ((softs->ipf_state_stats.iss_active >=
1401 softs->ipf_state_max) && (fr->fr_statemax == 0)) {
1588 if (ipf_tcpoptions(softs, fin, tcp,
1635 for (is = softs->ipf_state_table[hv % softs->ipf_state_size];
1645 if (softs->ipf_state_stats.iss_bucketlen[hv] >=
1646 softs->ipf_state_maxbucket) {
1674 &softs->ipf_state_usertq,
1681 &softs->ipf_state_usertq,
1809 (void) ipf_tcp_age(&is->is_sti, fin, softs->ipf_state_tcptq,
1815 if (softs->ipf_state_logging)
1858 /* Parameters: softs(I) - pointer to state context structure */
1867 ipf_tcpoptions(ipf_state_softc_t *softs, fr_info_t *fin, tcphdr_t *tcp,
1961 /* softs(I) - pointer to state context structure */
1971 ipf_state_tcp(ipf_main_softc_t *softc, ipf_state_softc_t *softs, fr_info_t *fin,
1996 &softs->ipf_state_deletetq);
2013 ret = ipf_tcp_age(&is->is_sti, fin, softs->ipf_state_tcptq,
2022 if (softs->ipf_state_logging > 4)
2038 if (ipf_tcpoptions(softs, fin, tcp,
2047 if (ipf_tcpoptions(softs, fin, tcp,
2119 ipf_state_softc_t *softs = softc->ipf_state_soft;
2301 ipf_state_softc_t *softs = softc->ipf_state_soft;
2305 if (softs->ipf_state_stats.iss_active == softs->ipf_state_max) {
2307 softs->ipf_state_doflush = 1;
2361 (void) ipf_tcp_age(&clone->is_sti, fin, softs->ipf_state_tcptq,
2392 ipf_state_softc_t *softs = softc->ipf_state_soft;
2402 if (is->is_sti.tqe_ifq == &softs->ipf_state_deletetq)
2519 ATOMIC_DECL(softs->ipf_state_stats.iss_wild);
2556 ATOMIC_DECL(softs->ipf_state_stats.iss_wild);
2579 if ((flags & SI_CLONED) && softs->ipf_state_logging)
2626 ipf_state_softc_t *softs = softc->ipf_state_soft;
2777 for (isp = &softs->ipf_state_table[hv];
2808 for (isp = &softs->ipf_state_table[hv]; ((is = *isp) != NULL); ) {
2847 ipf_state_softc_t *softs = softc->ipf_state_soft;
2912 ipf_ipsmove(ipf_state_softc_t *softs, ipstate_t *is, u_int hv)
2928 if (softs->ipf_state_table[hvm] == NULL)
2929 softs->ipf_state_stats.iss_inuse--;
2930 softs->ipf_state_stats.iss_bucketlen[hvm]--;
2940 isp = &softs->ipf_state_table[hvm];
2944 softs->ipf_state_stats.iss_inuse++;
2945 softs->ipf_state_stats.iss_bucketlen[hvm]++;
2971 ipf_state_softc_t *softs = softc->ipf_state_soft;
3035 for (isp = &softs->ipf_state_table[hvm];
3045 ifq = &softs->ipf_state_icmpacktq;
3047 ifq = &softs->ipf_state_icmptq;
3058 ipf_ipsmove(softs, is, hv);
3075 if ((softs->ipf_state_stats.iss_wild != 0) &&
3099 for (isp = &softs->ipf_state_table[hv];
3110 ifq = &softs->ipf_state_icmpacktq;
3112 ifq = &softs->ipf_state_icmptq;
3136 for (isp = &softs->ipf_state_table[hvm];
3145 if (!ipf_state_tcp(softc, softs, fin,
3159 ipf_ipsmove(softs, is, hv);
3166 if ((softs->ipf_state_stats.iss_wild != 0) &&
3208 for (isp = &softs->ipf_state_table[hvm];
3215 ifq = &softs->ipf_state_iptq;
3251 ipf_state_softc_t *softs = softc->ipf_state_soft;
3260 if (softs->ipf_state_lock || (softs->ipf_state_list == NULL))
3318 ifq = &softs->ipf_state_udpacktq;
3320 ifq = &softs->ipf_state_udptq;
3487 ipf_state_softc_t *softs = softc->ipf_state_soft;
3501 for (is = softs->ipf_state_list; is; is = is->is_next) {
3531 ipf_state_softc_t *softs = softc->ipf_state_soft;
3543 if (softs->ipf_state_table[is->is_hv] == NULL)
3544 softs->ipf_state_stats.iss_inuse--;
3545 softs->ipf_state_stats.iss_bucketlen[is->is_hv]--;
3559 ATOMIC_DECL(softs->ipf_state_stats.iss_wild);
3591 softs->ipf_state_stats.iss_orphan++;
3632 if (softs->ipf_state_logging != 0 && why != 0)
3636 softs->ipf_state_stats.iss_fin++;
3638 softs->ipf_state_stats.iss_expire++;
3640 softs->ipf_state_stats.iss_orphan--;
3647 softs->ipf_state_stats.iss_active_proto[is->is_p]--;
3651 softs->ipf_state_stats.iss_active--;
3670 ipf_state_softc_t *softs = softc->ipf_state_soft;
3678 for (ifq = softs->ipf_state_tcptq; ifq != NULL; ifq = ifq->ifq_next)
3687 for (ifq = softs->ipf_state_usertq; ifq != NULL; ifq = ifqnext) {
3699 for (ifq = softs->ipf_state_usertq; ifq != NULL; ifq = ifqnext) {
3708 if (softs->ipf_state_doflush) {
3710 softs->ipf_state_doflush = 0;
3711 softs->ipf_state_wm_last = softc->ipf_ticks;
3741 ipf_state_softc_t *softs = softc->ipf_state_soft;
3759 for (isp = &softs->ipf_state_list; ((is = *isp) != NULL); ) {
3777 for (ifq = softs->ipf_state_tcptq + IPF_TCPS_CLOSE_WAIT;
3793 for (ifq = softs->ipf_state_usertq; ifq != NULL;
3826 tqn = softs->ipf_state_tcptq[which].ifq_head;
3847 for (isp = &softs->ipf_state_list; ((is = *isp) != NULL); ) {
3875 if (softc->ipf_ticks - softs->ipf_state_wm_last >
3876 softs->ipf_state_wm_freq) {
3878 softs->ipf_state_tcptq,
3879 softs->ipf_state_usertq,
3880 &softs->ipf_state_stats.iss_active,
3881 softs->ipf_state_size,
3882 softs->ipf_state_wm_low);
3883 softs->ipf_state_wm_last = softc->ipf_ticks;
4367 ipf_state_softc_t *softs = softc->ipf_state_soft;
4463 for (isp = &softs->ipf_state_table[hv];
4529 for (isp = &softs->ipf_state_table[hv]; ((is = *isp) != NULL); ) {
4677 ipf_state_softc_t *softs = softc->ipf_state_soft;
4691 nifq = &softs->ipf_state_icmpacktq;
4693 nifq = &softs->ipf_state_icmptq;
4698 nifq = &softs->ipf_state_icmpacktq;
4700 nifq = &softs->ipf_state_icmptq;
4703 nifq = softs->ipf_state_tcptq + is->is_state[rev];
4708 nifq = &softs->ipf_state_udpacktq;
4710 nifq = &softs->ipf_state_udptq;
4714 nifq = &softs->ipf_state_iptq;
4741 /* walks through the list of entries in the state table list (softs->ipf_state_list.) */
4747 ipf_state_softc_t *softs = softc->ipf_state_soft;
4780 next = softs->ipf_state_list;
4817 /* softs(I) - pointer to state context structure */
4824 ipf_state_gettable(ipf_main_softc_t *softc, ipf_state_softc_t *softs,
4839 error = COPYOUT(softs->ipf_state_stats.iss_bucketlen, table.ita_table,
4840 softs->ipf_state_size * sizeof(u_int));
4863 ipf_state_softc_t *softs = softc->ipf_state_soft;
4869 &softs->ipf_state_pending);
4872 &softs->ipf_state_pending, is);
4897 ipf_state_softc_t *softs = softc->ipf_state_soft;
4908 for (state = softs->ipf_state_list; state != NULL; state = statenext) {
5099 ipf_state_softc_t *softs = softc->ipf_state_soft;
5108 return ipf_settimeout_tcp(t, p, softs->ipf_state_tcptq);
5111 ipf_apply_timeout(&softs->ipf_state_udptq, p->ipftu_int);
5113 ipf_apply_timeout(&softs->ipf_state_udpacktq, p->ipftu_int);
5115 ipf_apply_timeout(&softs->ipf_state_icmptq, p->ipftu_int);
5117 ipf_apply_timeout(&softs->ipf_state_icmpacktq, p->ipftu_int);
5119 ipf_apply_timeout(&softs->ipf_state_iptq, p->ipftu_int);
5148 ipf_state_softc_t *softs = softc->ipf_state_soft;
5161 if (newsize == softs->ipf_state_size)
5172 KFREES(newtab, newsize * sizeof(*softs->ipf_state_table));
5177 newseed = ipf_state_seed_alloc(newsize, softs->ipf_state_max);
5194 if (softs->ipf_state_table != NULL) {
5195 KFREES(softs->ipf_state_table,
5196 softs->ipf_state_size * sizeof(*softs->ipf_state_table));
5198 softs->ipf_state_table = newtab;
5200 if (softs->ipf_state_seed != NULL) {
5201 KFREES(softs->ipf_state_seed,
5202 softs->ipf_state_size * sizeof(*softs->ipf_state_seed));
5204 softs->ipf_state_seed = newseed;
5206 if (softs->ipf_state_stats.iss_bucketlen != NULL) {
5207 KFREES(softs->ipf_state_stats.iss_bucketlen,
5208 softs->ipf_state_size * sizeof(u_int));
5210 softs->ipf_state_stats.iss_bucketlen = bucketlens;
5211 softs->ipf_state_maxbucket = maxbucket;
5212 softs->ipf_state_size = newsize;
5219 softs->ipf_state_stats.iss_inuse = 0;
5220 for (is = softs->ipf_state_list; is != NULL; is = is->is_next) {
5223 hv = is->is_hv % softs->ipf_state_size;
5225 if (softs->ipf_state_table[hv] != NULL)
5226 softs->ipf_state_table[hv]->is_phnext = &is->is_hnext;
5228 softs->ipf_state_stats.iss_inuse++;
5229 is->is_phnext = softs->ipf_state_table + hv;
5230 is->is_hnext = softs->ipf_state_table[hv];
5231 softs->ipf_state_table[hv] = is;
5232 softs->ipf_state_stats.iss_bucketlen[hv]++;
5254 ipf_state_softc_t *softs = softc->ipf_state_soft;
5256 return ipf_addtimeoutqueue(softc, &softs->ipf_state_usertq, ttl);
5267 ipf_state_softc_t *softs = arg;
5271 for (ips = softs->ipf_state_list; ips != NULL; )