Lines Matching refs:cfg

68 static void nat64stl_free_config(struct nat64stl_cfg *cfg);
75 struct nat64stl_cfg *cfg; in nat64stl_alloc_config() local
77 cfg = malloc(sizeof(struct nat64stl_cfg), M_IPFW, M_WAITOK | M_ZERO); in nat64stl_alloc_config()
78 COUNTER_ARRAY_ALLOC(cfg->base.stats.cnt, NAT64STATS, M_WAITOK); in nat64stl_alloc_config()
79 cfg->no.name = cfg->name; in nat64stl_alloc_config()
80 cfg->no.etlv = IPFW_TLV_NAT64STL_NAME; in nat64stl_alloc_config()
81 cfg->no.set = set; in nat64stl_alloc_config()
82 strlcpy(cfg->name, name, sizeof(cfg->name)); in nat64stl_alloc_config()
83 return (cfg); in nat64stl_alloc_config()
87 nat64stl_free_config(struct nat64stl_cfg *cfg) in nat64stl_free_config() argument
90 COUNTER_ARRAY_FREE(cfg->base.stats.cnt, NAT64STATS); in nat64stl_free_config()
91 free(cfg, M_IPFW); in nat64stl_free_config()
95 nat64stl_export_config(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg, in nat64stl_export_config() argument
100 uc->prefix6 = cfg->base.plat_prefix; in nat64stl_export_config()
101 uc->plen6 = cfg->base.plat_plen; in nat64stl_export_config()
102 uc->flags = cfg->base.flags & NAT64STL_FLAGSMASK; in nat64stl_export_config()
103 uc->set = cfg->no.set; in nat64stl_export_config()
104 strlcpy(uc->name, cfg->no.name, sizeof(uc->name)); in nat64stl_export_config()
106 no = ipfw_objhash_lookup_table_kidx(ch, cfg->map64); in nat64stl_export_config()
108 no = ipfw_objhash_lookup_table_kidx(ch, cfg->map46); in nat64stl_export_config()
132 struct nat64stl_cfg *cfg; in nat64stl_find() local
134 cfg = (struct nat64stl_cfg *)ipfw_objhash_lookup_name_type(ni, set, in nat64stl_find()
137 return (cfg); in nat64stl_find()
141 nat64stl_create_internal(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg, in nat64stl_create_internal() argument
147 if (ipfw_objhash_alloc_idx(CHAIN_TO_SRV(ch), &cfg->no.kidx) != 0) in nat64stl_create_internal()
149 cfg->base.flags |= NAT64STL_KIDX; in nat64stl_create_internal()
151 if (ipfw_ref_table(ch, &i->ntlv4, &cfg->map46) != 0) in nat64stl_create_internal()
153 cfg->base.flags |= NAT64STL_46T; in nat64stl_create_internal()
155 if (ipfw_ref_table(ch, &i->ntlv6, &cfg->map64) != 0) in nat64stl_create_internal()
157 cfg->base.flags |= NAT64STL_64T; in nat64stl_create_internal()
159 ipfw_objhash_add(CHAIN_TO_SRV(ch), &cfg->no); in nat64stl_create_internal()
178 struct nat64stl_cfg *cfg; in nat64stl_create() local
205 cfg = nat64stl_alloc_config(uc->name, uc->set); in nat64stl_create()
206 cfg->base.plat_prefix = uc->prefix6; in nat64stl_create()
207 cfg->base.plat_plen = uc->plen6; in nat64stl_create()
208 cfg->base.flags = (uc->flags & NAT64STL_FLAGSMASK) | NAT64_PLATPFX; in nat64stl_create()
209 if (IN6_IS_ADDR_WKPFX(&cfg->base.plat_prefix)) in nat64stl_create()
210 cfg->base.flags |= NAT64_WKPFX; in nat64stl_create()
216 nat64stl_free_config(cfg); in nat64stl_create()
219 error = nat64stl_create_internal(ch, cfg, uc); in nat64stl_create()
222 SRV_OBJECT(ch, cfg->no.kidx) = cfg; in nat64stl_create()
227 if (cfg->base.flags & NAT64STL_KIDX) in nat64stl_create()
228 ipfw_objhash_free_idx(ni, cfg->no.kidx); in nat64stl_create()
229 if (cfg->base.flags & NAT64STL_46T) in nat64stl_create()
230 ipfw_unref_table(ch, cfg->map46); in nat64stl_create()
231 if (cfg->base.flags & NAT64STL_64T) in nat64stl_create()
232 ipfw_unref_table(ch, cfg->map64); in nat64stl_create()
235 nat64stl_free_config(cfg); in nat64stl_create()
253 struct nat64stl_cfg *cfg; in nat64stl_config() local
270 cfg = nat64stl_find(ni, oh->ntlv.name, oh->ntlv.set); in nat64stl_config()
271 if (cfg == NULL) { in nat64stl_config()
275 nat64stl_export_config(ch, cfg, uc); in nat64stl_config()
281 cfg = nat64stl_find(ni, oh->ntlv.name, oh->ntlv.set); in nat64stl_config()
282 if (cfg == NULL) { in nat64stl_config()
291 cfg->base.flags &= ~NAT64STL_FLAGSMASK; in nat64stl_config()
292 cfg->base.flags |= uc->flags & NAT64STL_FLAGSMASK; in nat64stl_config()
299 nat64stl_detach_config(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg) in nat64stl_detach_config() argument
304 ipfw_objhash_del(CHAIN_TO_SRV(ch), &cfg->no); in nat64stl_detach_config()
305 ipfw_objhash_free_idx(CHAIN_TO_SRV(ch), cfg->no.kidx); in nat64stl_detach_config()
306 ipfw_unref_table(ch, cfg->map46); in nat64stl_detach_config()
307 ipfw_unref_table(ch, cfg->map64); in nat64stl_detach_config()
322 struct nat64stl_cfg *cfg; in nat64stl_destroy() local
332 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set); in nat64stl_destroy()
333 if (cfg == NULL) { in nat64stl_destroy()
337 if (cfg->no.refcnt > 0) { in nat64stl_destroy()
342 ipfw_reset_eaction_instance(ch, V_nat64stl_eid, cfg->no.kidx); in nat64stl_destroy()
343 SRV_OBJECT(ch, cfg->no.kidx) = NULL; in nat64stl_destroy()
344 nat64stl_detach_config(ch, cfg); in nat64stl_destroy()
347 nat64stl_free_config(cfg); in nat64stl_destroy()
395 export_stats(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg, in export_stats() argument
399 __COPY_STAT_FIELD(cfg, stats, opcnt64); in export_stats()
400 __COPY_STAT_FIELD(cfg, stats, opcnt46); in export_stats()
401 __COPY_STAT_FIELD(cfg, stats, ofrags); in export_stats()
402 __COPY_STAT_FIELD(cfg, stats, ifrags); in export_stats()
403 __COPY_STAT_FIELD(cfg, stats, oerrors); in export_stats()
404 __COPY_STAT_FIELD(cfg, stats, noroute4); in export_stats()
405 __COPY_STAT_FIELD(cfg, stats, noroute6); in export_stats()
406 __COPY_STAT_FIELD(cfg, stats, noproto); in export_stats()
407 __COPY_STAT_FIELD(cfg, stats, nomem); in export_stats()
408 __COPY_STAT_FIELD(cfg, stats, dropped); in export_stats()
424 struct nat64stl_cfg *cfg; in nat64stl_stats() local
440 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set); in nat64stl_stats()
441 if (cfg == NULL) { in nat64stl_stats()
445 export_stats(ch, cfg, &stats); in nat64stl_stats()
470 struct nat64stl_cfg *cfg; in nat64stl_reset_stats() local
481 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set); in nat64stl_reset_stats()
482 if (cfg == NULL) { in nat64stl_reset_stats()
486 COUNTER_ARRAY_ZERO(cfg->base.stats.cnt, NAT64STATS); in nat64stl_reset_stats()
514 struct nat64stl_cfg *cfg; in destroy_config_cb() local
518 cfg = (struct nat64stl_cfg *)SRV_OBJECT(ch, no->kidx); in destroy_config_cb()
520 nat64stl_detach_config(ch, cfg); in destroy_config_cb()
521 nat64stl_free_config(cfg); in destroy_config_cb()