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

Function nat64lsn_create

tools/ipfw/nat64lsn.c:405–539  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

403#define NAT64LSN_HAS_PREFIX4 0x01
404#define NAT64LSN_HAS_PREFIX6 0x02
405static void
406nat64lsn_create(const char *name, uint8_t set, int ac, char **av)
407{
408 char buf[sizeof(ipfw_obj_lheader) + sizeof(ipfw_nat64lsn_cfg)];
409 ipfw_nat64lsn_cfg *cfg;
410 ipfw_obj_lheader *olh;
411 int tcmd, flags;
412 char *opt;
413
414 memset(&buf, 0, sizeof(buf));
415 olh = (ipfw_obj_lheader *)buf;
416 cfg = (ipfw_nat64lsn_cfg *)(olh + 1);
417
418 /* Some reasonable defaults */
419 inet_pton(AF_INET6, "64:ff9b::", &cfg->prefix6);
420 cfg->plen6 = 96;
421 cfg->set = set;
422 cfg->max_ports = NAT64LSN_MAX_PORTS;
423 cfg->jmaxlen = NAT64LSN_JMAXLEN;
424 cfg->nh_delete_delay = NAT64LSN_HOST_AGE;
425 cfg->pg_delete_delay = NAT64LSN_PG_AGE;
426 cfg->st_syn_ttl = NAT64LSN_TCP_SYN_AGE;
427 cfg->st_estab_ttl = NAT64LSN_TCP_EST_AGE;
428 cfg->st_close_ttl = NAT64LSN_TCP_FIN_AGE;
429 cfg->st_udp_ttl = NAT64LSN_UDP_AGE;
430 cfg->st_icmp_ttl = NAT64LSN_ICMP_AGE;
431 flags = NAT64LSN_HAS_PREFIX6;
432 while (ac > 0) {
433 tcmd = get_token(nat64newcmds, *av, "option");
434 opt = *av;
435 ac--; av++;
436
437 switch (tcmd) {
438 case TOK_PREFIX4:
439 NEED1("IPv4 prefix required");
440 nat64lsn_parse_prefix(*av, AF_INET, &cfg->prefix4,
441 &cfg->plen4);
442 flags |= NAT64LSN_HAS_PREFIX4;
443 ac--; av++;
444 break;
445 case TOK_PREFIX6:
446 NEED1("IPv6 prefix required");
447 nat64lsn_parse_prefix(*av, AF_INET6, &cfg->prefix6,
448 &cfg->plen6);
449 if (ipfw_check_nat64prefix(&cfg->prefix6,
450 cfg->plen6) != 0 &&
451 !IN6_IS_ADDR_UNSPECIFIED(&cfg->prefix6))
452 errx(EX_USAGE, "Bad prefix6 %s", *av);
453
454 ac--; av++;
455 break;
456 case TOK_JMAXLEN:
457 NEED1("job queue length required");
458 cfg->jmaxlen = nat64lsn_parse_int(*av, opt);
459 ac--; av++;
460 break;
461 case TOK_MAX_PORTS:
462 NEED1("Max per-user ports required");

Callers 1

ipfw_nat64lsn_handlerFunction · 0.70

Calls 8

memsetFunction · 0.85
inet_ptonFunction · 0.85
nat64lsn_parse_prefixFunction · 0.85
ipfw_check_nat64prefixFunction · 0.85
nat64lsn_parse_intFunction · 0.85
do_set3Function · 0.85
get_tokenFunction · 0.70
strlcpyFunction · 0.50

Tested by

no test coverage detected