Lines Matching refs:ch

112 nat64lsn_create(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
154 ni = CHAIN_TO_SRV(ch);
155 IPFW_UH_RLOCK(ch);
157 IPFW_UH_RUNLOCK(ch);
160 IPFW_UH_RUNLOCK(ch);
162 cfg = nat64lsn_init_instance(ch, 1 << (32 - uc->plen4));
196 IPFW_UH_WLOCK(ch);
199 IPFW_UH_WUNLOCK(ch);
204 if (ipfw_objhash_alloc_idx(CHAIN_TO_SRV(ch), &cfg->no.kidx) != 0) {
205 IPFW_UH_WUNLOCK(ch);
209 ipfw_objhash_add(CHAIN_TO_SRV(ch), &cfg->no);
212 SRV_OBJECT(ch, cfg->no.kidx) = cfg;
215 IPFW_UH_WUNLOCK(ch);
220 nat64lsn_detach_config(struct ip_fw_chain *ch, struct nat64lsn_cfg *cfg)
223 IPFW_UH_WLOCK_ASSERT(ch);
225 ipfw_objhash_del(CHAIN_TO_SRV(ch), &cfg->no);
226 ipfw_objhash_free_idx(CHAIN_TO_SRV(ch), cfg->no.kidx);
237 nat64lsn_destroy(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
248 IPFW_UH_WLOCK(ch);
249 cfg = nat64lsn_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
251 IPFW_UH_WUNLOCK(ch);
256 IPFW_UH_WUNLOCK(ch);
260 ipfw_reset_eaction_instance(ch, V_nat64lsn_eid, cfg->no.kidx);
261 SRV_OBJECT(ch, cfg->no.kidx) = NULL;
262 nat64lsn_detach_config(ch, cfg);
263 IPFW_UH_WUNLOCK(ch);
272 export_stats(struct ip_fw_chain *ch, struct nat64lsn_cfg *cfg,
310 nat64lsn_export_config(struct ip_fw_chain *ch, struct nat64lsn_cfg *cfg,
336 struct ip_fw_chain *ch;
349 nat64lsn_export_config(da->ch, (struct nat64lsn_cfg *)no, uc);
362 nat64lsn_list(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
374 IPFW_UH_RLOCK(ch);
375 olh->count = ipfw_objhash_count_type(CHAIN_TO_SRV(ch),
381 IPFW_UH_RUNLOCK(ch);
385 da.ch = ch;
387 ipfw_objhash_foreach_type(CHAIN_TO_SRV(ch), export_config_cb, &da,
389 IPFW_UH_RUNLOCK(ch);
403 nat64lsn_config(struct ip_fw_chain *ch, ip_fw3_opheader *op,
422 ni = CHAIN_TO_SRV(ch);
424 IPFW_UH_RLOCK(ch);
427 IPFW_UH_RUNLOCK(ch);
430 nat64lsn_export_config(ch, cfg, uc);
431 IPFW_UH_RUNLOCK(ch);
437 IPFW_UH_WLOCK(ch);
440 IPFW_UH_WUNLOCK(ch);
462 IPFW_UH_WUNLOCK(ch);
476 nat64lsn_stats(struct ip_fw_chain *ch, ip_fw3_opheader *op,
495 IPFW_UH_RLOCK(ch);
496 cfg = nat64lsn_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
498 IPFW_UH_RUNLOCK(ch);
502 export_stats(ch, cfg, &stats);
503 IPFW_UH_RUNLOCK(ch);
524 nat64lsn_reset_stats(struct ip_fw_chain *ch, ip_fw3_opheader *op,
537 IPFW_UH_WLOCK(ch);
538 cfg = nat64lsn_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
540 IPFW_UH_WUNLOCK(ch);
544 IPFW_UH_WUNLOCK(ch);
685 nat64lsn_states(struct ip_fw_chain *ch, ip_fw3_opheader *op3,
719 IPFW_UH_RLOCK(ch);
720 cfg = nat64lsn_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
722 IPFW_UH_RUNLOCK(ch);
732 IPFW_UH_RUNLOCK(ch);
753 IPFW_UH_RUNLOCK(ch);
766 IPFW_UH_RUNLOCK(ch);
781 IPFW_UH_RUNLOCK(ch);
818 nat64lsn_findbyname(struct ip_fw_chain *ch, struct tid_info *ti,
823 err = ipfw_objhash_find_type(CHAIN_TO_SRV(ch), ti,
829 nat64lsn_findbykidx(struct ip_fw_chain *ch, uint16_t idx)
834 IPFW_UH_WLOCK_ASSERT(ch);
835 ni = CHAIN_TO_SRV(ch);
843 nat64lsn_manage_sets(struct ip_fw_chain *ch, uint16_t set, uint8_t new_set,
847 return (ipfw_obj_manage_sets(CHAIN_TO_SRV(ch), IPFW_TLV_NAT64LSN_NAME,
868 struct ip_fw_chain *ch;
870 ch = (struct ip_fw_chain *)arg;
871 cfg = (struct nat64lsn_cfg *)SRV_OBJECT(ch, no->kidx);
872 SRV_OBJECT(ch, no->kidx) = NULL;
873 nat64lsn_detach_config(ch, cfg);
879 nat64lsn_init(struct ip_fw_chain *ch, int first)
884 V_nat64lsn_eid = ipfw_add_eaction(ch, ipfw_nat64lsn, "nat64lsn");
893 nat64lsn_uninit(struct ip_fw_chain *ch, int last)
898 ipfw_del_eaction(ch, V_nat64lsn_eid);
906 IPFW_UH_WLOCK(ch);
907 ipfw_objhash_foreach_type(CHAIN_TO_SRV(ch), destroy_config_cb, ch,
910 IPFW_UH_WUNLOCK(ch);