Lines Matching defs:softa

169 	ipf_auth_softc_t *softa;
171 KMALLOC(softa, ipf_auth_softc_t *);
172 if (softa == NULL)
175 bzero((char *)softa, sizeof(*softa));
177 softa->ipf_auth_size = FR_NUMAUTH;
178 softa->ipf_auth_defaultage = 600;
180 RWLOCK_INIT(&softa->ipf_authlk, "ipf IP User-Auth rwlock");
181 MUTEX_INIT(&softa->ipf_auth_mx, "ipf auth log mutex");
183 cv_init(&softa->ipf_auth_wait, "ipf auth condvar", CV_DRIVER, NULL);
186 return softa;
203 ipf_auth_softc_t *softa = arg;
205 KMALLOCS(softa->ipf_auth, frauth_t *,
206 softa->ipf_auth_size * sizeof(*softa->ipf_auth));
207 if (softa->ipf_auth == NULL)
209 bzero((char *)softa->ipf_auth,
210 softa->ipf_auth_size * sizeof(*softa->ipf_auth));
212 KMALLOCS(softa->ipf_auth_pkts, mb_t **,
213 softa->ipf_auth_size * sizeof(*softa->ipf_auth_pkts));
214 if (softa->ipf_auth_pkts == NULL)
216 bzero((char *)softa->ipf_auth_pkts,
217 softa->ipf_auth_size * sizeof(*softa->ipf_auth_pkts));
239 ipf_auth_softc_t *softa = arg;
245 if (softa->ipf_auth != NULL) {
246 KFREES(softa->ipf_auth,
247 softa->ipf_auth_size * sizeof(*softa->ipf_auth));
248 softa->ipf_auth = NULL;
251 if (softa->ipf_auth_pkts != NULL) {
252 for (i = 0; i < softa->ipf_auth_size; i++) {
253 m = softa->ipf_auth_pkts[i];
256 softa->ipf_auth_pkts[i] = NULL;
259 KFREES(softa->ipf_auth_pkts,
260 softa->ipf_auth_size * sizeof(*softa->ipf_auth_pkts));
261 softa->ipf_auth_pkts = NULL;
264 faep = &softa->ipf_auth_entries;
269 softa->ipf_auth_ip = NULL;
271 if (softa->ipf_auth_rules != NULL) {
272 for (frp = &softa->ipf_auth_rules; ((fr = *frp) != NULL); ) {
299 ipf_auth_softc_t *softa = arg;
302 cv_destroy(&softa->ipf_auth_wait);
304 MUTEX_DESTROY(&softa->ipf_auth_mx);
305 RW_DESTROY(&softa->ipf_authlk);
307 KFREE(softa);
323 ipf_auth_softc_t *softa = arg;
325 softa->ipf_auth_lock = tmp;
345 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
353 if (softa->ipf_auth_lock || !softa->ipf_auth_used)
359 READ_ENTER(&softa->ipf_authlk);
360 for (i = softa->ipf_auth_start; i != softa->ipf_auth_end; ) {
366 fra = softa->ipf_auth + i;
402 RWLOCK_EXIT(&softa->ipf_authlk);
404 WRITE_ENTER(&softa->ipf_authlk);
410 fr->fr_next = softa->ipf_auth_rules;
411 softa->ipf_auth_rules = fr;
413 softa->ipf_auth_stats.fas_hits++;
415 softa->ipf_auth_used--;
416 softa->ipf_auth_replies--;
417 if (i == softa->ipf_auth_start) {
421 if (i == softa->ipf_auth_size) {
423 fra = softa->ipf_auth;
425 softa->ipf_auth_start = i;
426 if (i == softa->ipf_auth_end)
429 if (softa->ipf_auth_start ==
430 softa->ipf_auth_end) {
431 softa->ipf_auth_next = 0;
432 softa->ipf_auth_start = 0;
433 softa->ipf_auth_end = 0;
436 RWLOCK_EXIT(&softa->ipf_authlk);
439 softa->ipf_auth_stats.fas_hits++;
443 if (i == softa->ipf_auth_size)
446 RWLOCK_EXIT(&softa->ipf_authlk);
447 softa->ipf_auth_stats.fas_miss++;
468 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
478 if (softa->ipf_auth_lock)
481 WRITE_ENTER(&softa->ipf_authlk);
482 if (((softa->ipf_auth_end + 1) % softa->ipf_auth_size) ==
483 softa->ipf_auth_start) {
484 softa->ipf_auth_stats.fas_nospace++;
485 RWLOCK_EXIT(&softa->ipf_authlk);
489 softa->ipf_auth_stats.fas_added++;
490 softa->ipf_auth_used++;
491 i = softa->ipf_auth_end++;
492 if (softa->ipf_auth_end == softa->ipf_auth_size)
493 softa->ipf_auth_end = 0;
495 fra = softa->ipf_auth + i;
501 fra->fra_age = softa->ipf_auth_defaultage;
529 softa->ipf_auth_pkts[i] = *(mblk_t **)fin->fin_mp;
530 RWLOCK_EXIT(&softa->ipf_authlk);
531 cv_signal(&softa->ipf_auth_wait);
534 softa->ipf_auth_pkts[i] = m;
535 RWLOCK_EXIT(&softa->ipf_authlk);
536 WAKEUP(&softa->ipf_auth_next, 0);
562 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
609 error = ipf_lock(data, &softa->ipf_auth_lock);
614 softa->ipf_auth_stats.fas_faelist = softa->ipf_auth_entries;
615 error = ipf_outobj(softc, data, &softa->ipf_auth_stats,
621 WRITE_ENTER(&softa->ipf_authlk);
622 i = ipf_auth_flush(softa);
623 RWLOCK_EXIT(&softa->ipf_authlk);
633 error = ipf_auth_wait(softc, softa, data);
637 error = ipf_auth_reply(softc, softa, data);
661 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
669 if (softa->ipf_auth_lock)
672 WRITE_ENTER(&softa->ipf_authlk);
673 for (i = 0, fra = softa->ipf_auth; i < softa->ipf_auth_size;
677 (softa->ipf_auth[i].fra_index != -1)) {
678 if ((m = softa->ipf_auth_pkts[i]) != NULL) {
680 softa->ipf_auth_pkts[i] = NULL;
681 } else if (softa->ipf_auth[i].fra_index == -2) {
682 softa->ipf_auth_replies--;
684 softa->ipf_auth[i].fra_index = -1;
685 softa->ipf_auth_stats.fas_expire++;
686 softa->ipf_auth_used--;
693 for (faep = &softa->ipf_auth_entries; ((fae = *faep) != NULL); ) {
697 softa->ipf_auth_stats.fas_expire++;
701 if (softa->ipf_auth_entries != NULL)
702 softa->ipf_auth_ip = &softa->ipf_auth_entries->fae_fr;
704 softa->ipf_auth_ip = NULL;
706 for (frp = &softa->ipf_auth_rules; ((fr = *frp) != NULL); ) {
714 RWLOCK_EXIT(&softa->ipf_authlk);
733 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
743 for (faep = &softa->ipf_auth_entries; ((fae = *faep) != NULL); ) {
761 WRITE_ENTER(&softa->ipf_authlk);
763 if (softa->ipf_auth_ip == &fae->fae_fr)
764 softa->ipf_auth_ip = softa->ipf_auth_entries ?
765 &softa->ipf_auth_entries->fae_fr : NULL;
766 RWLOCK_EXIT(&softa->ipf_authlk);
777 WRITE_ENTER(&softa->ipf_authlk);
778 fae->fae_age = softa->ipf_auth_defaultage;
785 softa->ipf_auth_ip = &softa->ipf_auth_entries->fae_fr;
786 RWLOCK_EXIT(&softa->ipf_authlk);
816 ipf_auth_softc_t *softa = arg;
820 if (softa->ipf_auth_lock)
825 for (i = 0 ; i < softa->ipf_auth_size; i++) {
826 if (softa->ipf_auth[i].fra_index != -1) {
827 m = softa->ipf_auth_pkts[i];
830 softa->ipf_auth_pkts[i] = NULL;
833 softa->ipf_auth[i].fra_index = -1;
835 softa->ipf_auth_stats.fas_expire++;
840 softa->ipf_auth_start = 0;
841 softa->ipf_auth_end = 0;
842 softa->ipf_auth_next = 0;
843 softa->ipf_auth_used = 0;
844 softa->ipf_auth_replies = 0;
862 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
864 return (softa->ipf_auth_used != 0);
886 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
904 READ_ENTER(&softa->ipf_authlk);
908 next = softa->ipf_auth_entries;
926 RWLOCK_EXIT(&softa->ipf_authlk);
930 ipf_auth_deref_unlocked(softa, &fae);
947 ipf_auth_deref_unlocked(softa, faep)
948 ipf_auth_softc_t *softa;
951 WRITE_ENTER(&softa->ipf_authlk);
953 RWLOCK_EXIT(&softa->ipf_authlk);
995 ipf_auth_wait(softc, softa, data)
997 ipf_auth_softc_t *softa;
1018 READ_ENTER(&softa->ipf_authlk);
1025 if (softa->ipf_auth_used > 0) {
1026 while (softa->ipf_auth_pkts[softa->ipf_auth_next] == NULL) {
1027 softa->ipf_auth_next++;
1028 if (softa->ipf_auth_next == softa->ipf_auth_size)
1029 softa->ipf_auth_next = 0;
1033 &softa->ipf_auth[softa->ipf_auth_next],
1036 RWLOCK_EXIT(&softa->ipf_authlk);
1046 m = softa->ipf_auth_pkts[softa->ipf_auth_next];
1059 RWLOCK_EXIT(&softa->ipf_authlk);
1066 RWLOCK_EXIT(&softa->ipf_authlk);
1069 WRITE_ENTER(&softa->ipf_authlk);
1070 softa->ipf_auth_next++;
1071 if (softa->ipf_auth_next == softa->ipf_auth_size)
1072 softa->ipf_auth_next = 0;
1073 RWLOCK_EXIT(&softa->ipf_authlk);
1078 RWLOCK_EXIT(&softa->ipf_authlk);
1081 MUTEX_ENTER(&softa->ipf_auth_mx);
1085 if (!cv_wait_sig(&softa->ipf_auth_wait, &softa->ipf_auth_mx.ipf_lk)) {
1090 error = SLEEP(&softa->ipf_auth_next, "ipf_auth_next");
1093 MUTEX_EXIT(&softa->ipf_auth_mx);
1111 ipf_auth_reply(softc, softa, data)
1113 ipf_auth_softc_t *softa;
1127 WRITE_ENTER(&softa->ipf_authlk);
1130 fra = softa->ipf_auth + i;
1138 if ((i < 0) || (i >= softa->ipf_auth_size)) {
1139 RWLOCK_EXIT(&softa->ipf_authlk);
1145 RWLOCK_EXIT(&softa->ipf_authlk);
1151 m = softa->ipf_auth_pkts[i];
1154 softa->ipf_auth_pkts[i] = NULL;
1155 softa->ipf_auth_replies++;
1158 RWLOCK_EXIT(&softa->ipf_authlk);
1173 softa->ipf_auth_stats.fas_sendfail++;
1175 softa->ipf_auth_stats.fas_sendok++;
1182 softa->ipf_auth_stats.fas_quefail++;
1184 softa->ipf_auth_stats.fas_queok++;
1196 WRITE_ENTER(&softa->ipf_authlk);
1197 softa->ipf_auth_used--;
1200 if (i == softa->ipf_auth_start) {
1203 if (i == softa->ipf_auth_size)
1205 softa->ipf_auth_start = i;
1206 if (i == softa->ipf_auth_end)
1209 if (softa->ipf_auth_start == softa->ipf_auth_end) {
1210 softa->ipf_auth_next = 0;
1211 softa->ipf_auth_start = 0;
1212 softa->ipf_auth_end = 0;
1215 RWLOCK_EXIT(&softa->ipf_authlk);
1230 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
1232 if (softa->ipf_auth_ip != NULL)
1243 ipf_auth_softc_t *softa = softc->ipf_auth_soft;
1245 return &softa->ipf_auth_ip;