MCPcopy Create free account
hub / github.com/F-Stack/f-stack / nat64stl_create

Function nat64stl_create

tools/ipfw/nat64stl.c:219–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217#define NAT64STL_HAS_TABLE6 0x02
218#define NAT64STL_HAS_PREFIX6 0x04
219static void
220nat64stl_create(const char *name, uint8_t set, int ac, char *av[])
221{
222 char buf[sizeof(ipfw_obj_lheader) + sizeof(ipfw_nat64stl_cfg)];
223 ipfw_nat64stl_cfg *cfg;
224 ipfw_obj_lheader *olh;
225 int tcmd, flags;
226 char *p;
227
228 memset(buf, 0, sizeof(buf));
229 olh = (ipfw_obj_lheader *)buf;
230 cfg = (ipfw_nat64stl_cfg *)(olh + 1);
231
232 /* Some reasonable defaults */
233 inet_pton(AF_INET6, "64:ff9b::", &cfg->prefix6);
234 cfg->plen6 = 96;
235 cfg->set = set;
236 flags = NAT64STL_HAS_PREFIX6;
237 while (ac > 0) {
238 tcmd = get_token(nat64newcmds, *av, "option");
239 ac--; av++;
240
241 switch (tcmd) {
242 case TOK_TABLE4:
243 NEED1("table name required");
244 table_fill_ntlv(&cfg->ntlv4, *av, set, 4);
245 flags |= NAT64STL_HAS_TABLE4;
246 ac--; av++;
247 break;
248 case TOK_TABLE6:
249 NEED1("table name required");
250 table_fill_ntlv(&cfg->ntlv6, *av, set, 6);
251 flags |= NAT64STL_HAS_TABLE6;
252 ac--; av++;
253 break;
254 case TOK_PREFIX6:
255 NEED1("IPv6 prefix6 required");
256 if ((p = strchr(*av, '/')) != NULL)
257 *p++ = '\0';
258 else
259 errx(EX_USAGE,
260 "Prefix length required: %s", *av);
261 if (inet_pton(AF_INET6, *av, &cfg->prefix6) != 1)
262 errx(EX_USAGE,
263 "Bad prefix: %s", *av);
264 cfg->plen6 = strtol(p, NULL, 10);
265 if (ipfw_check_nat64prefix(&cfg->prefix6,
266 cfg->plen6) != 0)
267 errx(EX_USAGE,
268 "Bad prefix length: %s", p);
269 flags |= NAT64STL_HAS_PREFIX6;
270 ac--; av++;
271 break;
272 case TOK_LOG:
273 cfg->flags |= NAT64_LOG;
274 break;
275 case TOK_LOGOFF:
276 cfg->flags &= ~NAT64_LOG;

Callers 1

ipfw_nat64stl_handlerFunction · 0.70

Calls 9

memsetFunction · 0.85
inet_ptonFunction · 0.85
table_fill_ntlvFunction · 0.85
strchrFunction · 0.85
strtolFunction · 0.85
ipfw_check_nat64prefixFunction · 0.85
do_set3Function · 0.85
get_tokenFunction · 0.70
strlcpyFunction · 0.50

Tested by

no test coverage detected