Lines Matching refs:cfg

71 static void nat64stl_free_config(struct nat64stl_cfg *cfg);
78 struct nat64stl_cfg *cfg;
80 cfg = malloc(sizeof(struct nat64stl_cfg), M_IPFW, M_WAITOK | M_ZERO);
81 COUNTER_ARRAY_ALLOC(cfg->base.stats.cnt, NAT64STATS, M_WAITOK);
82 cfg->no.name = cfg->name;
83 cfg->no.etlv = IPFW_TLV_NAT64STL_NAME;
84 cfg->no.set = set;
85 strlcpy(cfg->name, name, sizeof(cfg->name));
86 return (cfg);
90 nat64stl_free_config(struct nat64stl_cfg *cfg)
93 COUNTER_ARRAY_FREE(cfg->base.stats.cnt, NAT64STATS);
94 free(cfg, M_IPFW);
98 nat64stl_export_config(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg,
103 uc->prefix6 = cfg->base.plat_prefix;
104 uc->plen6 = cfg->base.plat_plen;
105 uc->flags = cfg->base.flags & NAT64STL_FLAGSMASK;
106 uc->set = cfg->no.set;
107 strlcpy(uc->name, cfg->no.name, sizeof(uc->name));
109 no = ipfw_objhash_lookup_table_kidx(ch, cfg->map64);
111 no = ipfw_objhash_lookup_table_kidx(ch, cfg->map46);
135 struct nat64stl_cfg *cfg;
137 cfg = (struct nat64stl_cfg *)ipfw_objhash_lookup_name_type(ni, set,
140 return (cfg);
145 nat64stl_create_internal(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg,
151 if (ipfw_objhash_alloc_idx(CHAIN_TO_SRV(ch), &cfg->no.kidx) != 0)
153 cfg->base.flags |= NAT64STL_KIDX;
155 if (ipfw_ref_table(ch, &i->ntlv4, &cfg->map46) != 0)
157 cfg->base.flags |= NAT64STL_46T;
159 if (ipfw_ref_table(ch, &i->ntlv6, &cfg->map64) != 0)
161 cfg->base.flags |= NAT64STL_64T;
163 ipfw_objhash_add(CHAIN_TO_SRV(ch), &cfg->no);
182 struct nat64stl_cfg *cfg;
209 cfg = nat64stl_alloc_config(uc->name, uc->set);
210 cfg->base.plat_prefix = uc->prefix6;
211 cfg->base.plat_plen = uc->plen6;
212 cfg->base.flags = (uc->flags & NAT64STL_FLAGSMASK) | NAT64_PLATPFX;
213 if (IN6_IS_ADDR_WKPFX(&cfg->base.plat_prefix))
214 cfg->base.flags |= NAT64_WKPFX;
220 nat64stl_free_config(cfg);
223 error = nat64stl_create_internal(ch, cfg, uc);
226 SRV_OBJECT(ch, cfg->no.kidx) = cfg;
231 if (cfg->base.flags & NAT64STL_KIDX)
232 ipfw_objhash_free_idx(ni, cfg->no.kidx);
233 if (cfg->base.flags & NAT64STL_46T)
234 ipfw_unref_table(ch, cfg->map46);
235 if (cfg->base.flags & NAT64STL_64T)
236 ipfw_unref_table(ch, cfg->map64);
239 nat64stl_free_config(cfg);
257 struct nat64stl_cfg *cfg;
274 cfg = nat64stl_find(ni, oh->ntlv.name, oh->ntlv.set);
275 if (cfg == NULL) {
279 nat64stl_export_config(ch, cfg, uc);
285 cfg = nat64stl_find(ni, oh->ntlv.name, oh->ntlv.set);
286 if (cfg == NULL) {
295 cfg->base.flags &= ~NAT64STL_FLAGSMASK;
296 cfg->base.flags |= uc->flags & NAT64STL_FLAGSMASK;
303 nat64stl_detach_config(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg)
308 ipfw_objhash_del(CHAIN_TO_SRV(ch), &cfg->no);
309 ipfw_objhash_free_idx(CHAIN_TO_SRV(ch), cfg->no.kidx);
310 ipfw_unref_table(ch, cfg->map46);
311 ipfw_unref_table(ch, cfg->map64);
326 struct nat64stl_cfg *cfg;
336 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
337 if (cfg == NULL) {
341 if (cfg->no.refcnt > 0) {
346 ipfw_reset_eaction_instance(ch, V_nat64stl_eid, cfg->no.kidx);
347 SRV_OBJECT(ch, cfg->no.kidx) = NULL;
348 nat64stl_detach_config(ch, cfg);
351 nat64stl_free_config(cfg);
399 export_stats(struct ip_fw_chain *ch, struct nat64stl_cfg *cfg,
403 __COPY_STAT_FIELD(cfg, stats, opcnt64);
404 __COPY_STAT_FIELD(cfg, stats, opcnt46);
405 __COPY_STAT_FIELD(cfg, stats, ofrags);
406 __COPY_STAT_FIELD(cfg, stats, ifrags);
407 __COPY_STAT_FIELD(cfg, stats, oerrors);
408 __COPY_STAT_FIELD(cfg, stats, noroute4);
409 __COPY_STAT_FIELD(cfg, stats, noroute6);
410 __COPY_STAT_FIELD(cfg, stats, noproto);
411 __COPY_STAT_FIELD(cfg, stats, nomem);
412 __COPY_STAT_FIELD(cfg, stats, dropped);
428 struct nat64stl_cfg *cfg;
444 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
445 if (cfg == NULL) {
449 export_stats(ch, cfg, &stats);
474 struct nat64stl_cfg *cfg;
485 cfg = nat64stl_find(CHAIN_TO_SRV(ch), oh->ntlv.name, oh->ntlv.set);
486 if (cfg == NULL) {
490 COUNTER_ARRAY_ZERO(cfg->base.stats.cnt, NAT64STATS);
577 struct nat64stl_cfg *cfg;
581 cfg = (struct nat64stl_cfg *)SRV_OBJECT(ch, no->kidx);
583 nat64stl_detach_config(ch, cfg);
584 nat64stl_free_config(cfg);