Home | History | Annotate | Download | only in server

Lines Matching refs:cfile

40 static int parse_binding_value(struct parse *cfile,
43 static void parse_authoring_byte_order (struct parse *cfile);
44 static void parse_lease_id_format (struct parse *cfile);
46 static int parse_iaid_duid(struct parse *cfile, struct ia_xx** ia,
88 struct parse *cfile;
140 cfile = (struct parse *)0;
178 status = new_parse(&cfile, -1, fbuf, ulen, filename, 0); /* XXX */
180 status = new_parse(&cfile, file, NULL, 0, filename, 0);
182 if (status != ISC_R_SUCCESS || cfile == NULL)
186 status = lease_file_subparse (cfile);
188 status = conf_file_subparse (cfile, group, group_type);
189 end_parse (&cfile);
202 struct parse *cfile = (struct parse *)0;
217 status = new_parse(&cfile, -1, fbuf, flen, data, 0);
218 if (status == ISC_R_SUCCESS || cfile != NULL) {
220 lease_file_subparse (cfile);
222 conf_file_subparse (cfile, root_group, ROOT_GROUP);
223 end_parse (&cfile);
247 isc_result_t conf_file_subparse (struct parse *cfile, struct group *group,
256 token = peek_token (&val, (unsigned *)0, cfile);
259 declaration = parse_statement (cfile, group, group_type,
263 skip_token(&val, (unsigned *)0, cfile);
265 status = cfile->warnings_occurred ? DHCP_R_BADPARSE : ISC_R_SUCCESS;
274 isc_result_t lease_file_subparse (struct parse *cfile)
281 token = next_token (&val, (unsigned *)0, cfile);
286 if (parse_lease_declaration (&lease, cfile)) {
290 parse_warn (cfile,
293 parse_ia_na_declaration(cfile);
295 parse_ia_ta_declaration(cfile);
297 parse_ia_pd_declaration(cfile);
299 parse_class_declaration(0, cfile, root_group,
302 parse_class_declaration(0, cfile, root_group,
305 parse_host_declaration (cfile, root_group);
307 parse_group_declaration (cfile, root_group);
311 (cfile, (dhcp_failover_state_t *)0);
315 parse_server_duid(cfile);
318 parse_authoring_byte_order(cfile);
321 skip_to_semi (cfile);
326 status = cfile->warnings_occurred ? DHCP_R_BADPARSE : ISC_R_SUCCESS;
361 int parse_statement (cfile, group, type, host_decl, declaration)
362 struct parse *cfile;
381 token = peek_token (&val, (unsigned *)0, cfile);
385 skip_token(&val, (unsigned *)0, cfile);
386 token = next_token (&val, (unsigned *)0, cfile);
388 parse_warn (cfile, "filename string expected.");
389 skip_to_semi (cfile);
393 parse_warn (cfile, "%s: bad parse.", val);
394 parse_semi (cfile);
399 skip_token(&val, (unsigned *)0, cfile);
409 parse_host_declaration (cfile, group);
411 parse_warn (cfile,
413 skip_to_semi (cfile);
418 skip_token(&val, (unsigned *)0, cfile);
420 parse_group_declaration (cfile, group);
422 parse_warn (cfile,
424 skip_to_semi (cfile);
429 skip_token(&val, (unsigned *)0, cfile);
434 parse_warn (cfile, "shared-network parameters not %s.",
436 skip_to_semi (cfile);
440 parse_shared_net_declaration (cfile, group);
445 skip_token(&val, (unsigned *)0, cfile);
448 parse_warn (cfile,
450 skip_to_semi (cfile);
457 parse_subnet_declaration(cfile,
460 parse_subnet6_declaration(cfile,
491 parse_subnet_declaration(cfile, share);
493 parse_subnet6_declaration(cfile, share);
527 skip_token(&val, (unsigned *)0, cfile);
529 parse_warn (cfile,
531 skip_to_semi (cfile);
534 parse_class_declaration(NULL, cfile, group, CLASS_TYPE_VENDOR);
538 skip_token(&val, (unsigned *)0, cfile);
540 parse_warn (cfile,
542 skip_to_semi (cfile);
545 parse_class_declaration(NULL, cfile, group, CLASS_TYPE_USER);
549 skip_token(&val, (unsigned *)0, cfile);
551 parse_warn (cfile,
553 skip_to_semi (cfile);
556 parse_class_declaration(NULL, cfile, group, CLASS_TYPE_CLASS);
560 skip_token(&val, (unsigned *)0, cfile);
562 parse_warn (cfile,
564 skip_to_semi (cfile);
567 parse_class_declaration(NULL, cfile, group,
572 skip_token(&val, (unsigned *)0, cfile);
576 parse_warn(cfile, "Host %s hardware address already "
581 parse_hardware_param (cfile, &hardware);
585 parse_warn (cfile, "hardware address parameter %s",
591 skip_token(&val, NULL, cfile);
593 if (parse_fixed_addr_param(&cache, cfile, token)) {
597 parse_warn(cfile,
604 parse_warn(cfile,
613 skip_token(&val, (unsigned *)0, cfile);
615 parse_warn (cfile, "pool declared within pool.");
616 skip_to_semi(cfile);
618 parse_warn (cfile, "pool declared outside of network");
619 skip_to_semi(cfile);
621 parse_pool_statement (cfile, group, type);
626 skip_token(&val, (unsigned *)0, cfile);
628 parse_warn (cfile,
630 skip_to_semi (cfile);
633 parse_address_range (cfile, group, type, (struct pool *)0,
639 skip_token(NULL, NULL, cfile);
641 parse_warn (cfile,
643 skip_to_semi(cfile);
646 parse_address_range6(cfile, group, NULL);
650 skip_token(NULL, NULL, cfile);
652 parse_warn (cfile,
654 skip_to_semi(cfile);
657 parse_prefix6(cfile, group, NULL);
661 skip_token(&val, NULL, cfile);
663 parse_warn (cfile,
666 skip_to_semi(cfile);
669 parse_fixed_prefix6(cfile, host_decl);
673 skip_token(&val, NULL, cfile);
675 parse_warn (cfile, "pool6 declared within pool.");
676 skip_to_semi(cfile);
678 parse_warn (cfile, "pool6 declared outside of network");
679 skip_to_semi(cfile);
681 parse_pool6_statement (cfile, group, type);
688 skip_token(&val, (unsigned *)0, cfile);
689 token = next_token (&val, (unsigned *)0, cfile);
695 parse_warn (cfile, "expecting assertion");
696 skip_to_semi (cfile);
701 skip_token(&val, (unsigned *)0, cfile);
705 parse_warn (cfile, "authority makes no sense here.");
706 parse_semi (cfile);
717 skip_token(&val, (unsigned *)0, cfile);
721 skip_token(&val, (unsigned *)0, cfile);
722 token = peek_token (&val, (unsigned *)0, cfile);
725 parse_warn (cfile,
728 skip_to_semi (cfile);
731 parse_option_space_decl (cfile);
736 status = parse_option_name(cfile, 1, &known, &option);
738 token = peek_token (&val, (unsigned *)0, cfile);
741 parse_warn (cfile,
744 skip_to_semi (cfile);
748 skip_token(&val, (unsigned *)0, cfile);
763 parse_option_code_definition(cfile, option);
771 parse_warn (cfile, "unknown option %s.%s",
774 skip_to_semi (cfile);
782 (&et, cfile, 1, option,
797 parse_warn (cfile, "failover peers may only be %s",
800 skip_to_semi (cfile);
803 token = next_token (&val, (unsigned *)0, cfile);
805 parse_failover_peer (cfile, group, type);
807 parse_warn (cfile, "No failover support.");
808 skip_to_semi (cfile);
814 parse_server_duid_conf(cfile);
819 token = next_token (&val, (unsigned *)0, cfile);
820 parse_lease_id_format(cfile);
825 skip_to_semi (cfile);
831 if (!parse_executable_statement (&et, cfile, &lose,
835 parse_warn (cfile,
838 parse_warn (cfile,
841 skip_to_semi (cfile);
893 void parse_failover_peer (cfile, group, type)
894 struct parse *cfile;
911 token = next_token (&val, (unsigned *)0, cfile);
913 parse_warn (cfile, "expecting \"peer\"");
914 skip_to_semi (cfile);
918 token = next_token (&val, (unsigned *)0, cfile);
925 parse_warn (cfile, "expecting failover peer name.");
926 skip_to_semi (cfile);
934 token = next_token (&val, (unsigned *)0, cfile);
937 parse_warn (cfile, "failover peer reference not %s",
941 parse_warn (cfile, "reference to unknown%s%s",
955 parse_warn (cfile, "state declaration for unknown%s%s",
960 parse_failover_state_declaration (cfile, peer);
965 parse_warn (cfile, "expecting left brace");
966 skip_to_semi (cfile);
971 parse_warn (cfile, "redeclaration of failover peer %s", name);
972 skip_to_rbrace (cfile, 1);
989 token = next_token (&val, (unsigned *)0, cfile);
1001 parse_warn (cfile,
1012 if (!parse_ip_addr_or_hostname (&expr, cfile, 0)) {
1013 skip_to_rbrace (cfile, 1);
1024 token = next_token (&val, (unsigned *)0, cfile);
1026 parse_warn (cfile, "expecting number");
1027 skip_to_rbrace (cfile, 1);
1055 token = next_token (&val, (unsigned *)0, cfile);
1057 parse_warn (cfile, "expecting number.");
1058 skip_to_rbrace (cfile, 1);
1076 parse_warn (cfile,
1079 if (!parse_numeric_aggregate (cfile, hba, &hba_len,
1081 skip_to_rbrace (cfile, 1);
1086 parse_warn (cfile,
1100 token = next_token (&val, (unsigned *)0, cfile);
1102 parse_warn (cfile,
1106 parse_warn (cfile, "expecting number");
1107 skip_to_rbrace (cfile, 1);
1113 parse_warn (cfile, "split must be between "
1126 token = next_token (&val, (unsigned *)0, cfile);
1128 parse_warn (cfile, "expecting 'balance'");
1130 skip_to_rbrace (cfile, 1);
1133 token = next_token (&val, (unsigned *)0, cfile);
1135 parse_warn (cfile, "expecting 'max'");
1138 token = next_token (&val, (unsigned *)0, cfile);
1140 parse_warn (cfile, "expecting 'secs'");
1143 token = next_token (&val, (unsigned *)0, cfile);
1145 parse_warn (cfile, "expecting number");
1152 parse_warn (cfile,
1154 skip_to_rbrace (cfile, 1);
1158 if (token != RBRACE && !parse_semi (cfile)) {
1159 skip_to_rbrace (cfile, 1);
1169 parse_warn (cfile, "peer address may not be omitted");
1178 parse_warn (cfile,
1181 parse_warn (cfile,
1210 parse_warn (cfile
1215 void parse_failover_state_declaration (struct parse *cfile,
1225 token = next_token (&val, (unsigned *)0, cfile);
1227 parse_warn (cfile, "expecting \"peer\"");
1228 skip_to_semi (cfile);
1232 token = next_token (&val, (unsigned *)0, cfile);
1240 parse_warn (cfile, "expecting failover peer name.");
1241 skip_to_semi (cfile);
1249 parse_warn (cfile, "unknown failover peer: %s", name);
1250 skip_to_semi (cfile);
1254 token = next_token (&val, (unsigned *)0, cfile);
1256 parse_warn (cfile, "expecting 'state'");
1258 skip_to_semi (cfile);
1265 token = next_token (&val, (unsigned *)0, cfile);
1267 parse_warn (cfile, "expecting left brace");
1269 skip_to_semi (cfile);
1274 token = next_token (&val, (unsigned *)0, cfile);
1281 token = next_token (&val, (unsigned *)0, cfile);
1283 parse_warn (cfile, "expecting 'state'");
1286 parse_failover_state (cfile,
1296 parse_warn (cfile,
1300 token = next_token (&val, (unsigned *)0, cfile);
1302 parse_warn (cfile, "expecting a number.");
1306 parse_semi (cfile);
1310 parse_warn (cfile, "expecting state setting.");
1312 skip_to_rbrace (cfile, 1);
1320 void parse_failover_state (cfile, state, stos)
1321 struct parse *cfile;
1330 token = next_token (&val, (unsigned *)0, cfile);
1385 parse_warn (cfile, "unknown failover state");
1386 skip_to_semi (cfile);
1390 token = next_token (&val, (unsigned *)0, cfile);
1395 parse_warn (cfile, "expecting \"at\"");
1396 skip_to_semi (cfile);
1400 stos_in = parse_date (cfile);
1431 * \param cfile the current parse file
1434 void parse_authoring_byte_order (struct parse *cfile)
1442 parse_warn (cfile,
1445 skip_to_semi (cfile);
1449 token = next_token(&val, (unsigned *)0, cfile);
1458 parse_warn(cfile, "authoring-byte-order is invalid: "
1460 skip_to_semi(cfile);
1469 token = next_token(&val, &len, cfile);
1471 parse_warn(cfile, "corrupt lease file; expecting a semicolon");
1472 skip_to_semi(cfile);
1488 * \param cfile the current parse file
1491 void parse_lease_id_format (struct parse *cfile)
1497 token = next_token(&val, NULL, cfile);
1506 parse_warn(cfile, "lease-id-format is invalid: "
1508 skip_to_semi(cfile);
1515 token = next_token(&val, &len, cfile);
1517 parse_warn(cfile, "corrupt lease file; expecting a semicolon");
1518 skip_to_semi(cfile);
1545 * \param[in] cfile = the configuration file being parsed
1555 static void get_permit(struct parse *cfile, struct permit **permit_head,
1569 token = next_token(&val, NULL, cfile);
1603 if (next_token (&val, NULL, cfile) != TOKEN_BOOTP) {
1604 parse_warn (cfile, "expecting \"bootp\"");
1605 skip_to_semi (cfile);
1613 if (next_token (&val, NULL, cfile) != OF) {
1614 parse_warn (cfile, "expecting \"of\"");
1615 skip_to_semi (cfile);
1619 if (next_token (&val, NULL, cfile) != STRING) {
1620 parse_warn (cfile, "expecting class name.");
1621 skip_to_semi (cfile);
1629 parse_warn(cfile, "no such class: %s", val);
1635 parse_warn(cfile, "duplicate \"after\" clause.");
1636 skip_to_semi(cfile);
1640 t = parse_date_core(cfile);
1651 parse_warn (cfile, "expecting permit type.");
1652 skip_to_semi (cfile);
1662 (next_token (&val, NULL, cfile) != CLIENTS)) {
1663 parse_warn (cfile, "expecting \"clients\"");
1664 skip_to_semi (cfile);
1672 parse_semi (cfile);
1716 * \param[in] cfile = the configuration file being parsed
1726 void parse_pool_statement (cfile, group, type)
1727 struct parse *cfile;
1753 parse_warn(cfile, "Dynamic pools are only valid inside "
1755 skip_to_semi(cfile);
1771 if (!parse_lbrace(cfile)) {
1777 token = peek_token(&val, NULL, cfile);
1780 skip_token(&val, NULL, cfile);
1781 token = next_token(&val, NULL, cfile);
1783 (token = next_token(&val, NULL, cfile)) != PEER) {
1784 parse_warn(cfile,
1786 skip_to_semi(cfile);
1798 skip_token(&val, NULL, cfile);
1799 token = next_token (&val, NULL, cfile);
1801 parse_warn(cfile, "expecting 'peer'.");
1802 skip_to_semi(cfile);
1805 token = next_token(&val, NULL, cfile);
1807 parse_warn(cfile, "expecting string.");
1808 skip_to_semi(cfile);
1817 parse_warn(cfile,
1822 parse_semi(cfile);
1827 skip_token(&val, NULL, cfile);
1828 parse_address_range (cfile, group, type,
1832 skip_token(&val, NULL, cfile);
1833 get_permit(cfile, &pool->permit_list, 1,
1838 skip_token(&val, NULL, cfile);
1839 get_permit(cfile, &pool->prohibit_list, 0,
1844 skip_token(&val, NULL, cfile);
1854 parse_warn(cfile, "unexpected end of file");
1858 declaration = parse_statement(cfile, pool->group,
1912 parse_warn(cfile, "Pool declaration with no address range.");
1935 int parse_lbrace (cfile)
1936 struct parse *cfile;
1941 token = next_token (&val, (unsigned *)0, cfile);
1943 parse_warn (cfile, "expecting left brace.");
1944 skip_to_semi (cfile);
1953 void parse_host_declaration (cfile, group)
1954 struct parse *cfile;
1969 name = parse_host_name (cfile);
1971 parse_warn (cfile, "expecting a name for host declaration.");
1972 skip_to_semi (cfile);
1989 if (!parse_lbrace (cfile))
1993 token = peek_token (&val, (unsigned *)0, cfile);
1995 skip_token(&val, (unsigned *)0, cfile);
1999 skip_token(&val, (unsigned *)0, cfile);
2000 parse_warn (cfile, "unexpected end of file");
2007 skip_token(&val, (unsigned *)0, cfile);
2008 if (!parse_semi (cfile))
2016 skip_token(&val, (unsigned *)0, cfile);
2017 if (!parse_semi (cfile))
2024 skip_token(&val, (unsigned *)0, cfile);
2025 token = next_token (&val, (unsigned *)0, cfile);
2027 parse_warn (cfile,
2029 skip_to_rbrace (cfile, 1);
2035 parse_warn (cfile, "unknown group %s in host %s",
2045 if (!parse_semi (cfile))
2055 skip_token(&val, (unsigned *)0, cfile);
2061 parse_warn(cfile,
2064 skip_to_rbrace(cfile, 1);
2069 token = peek_token (&val, (unsigned *)0, cfile);
2071 skip_token(&val, &len, cfile);
2077 (cfile,
2080 parse_warn (cfile,
2082 skip_to_semi (cfile);
2099 if (!parse_semi (cfile))
2106 parse_warn(cfile,
2109 skip_to_rbrace(cfile, 1);
2112 skip_token(&val, NULL, cfile);
2113 token = next_token(&val, NULL, cfile);
2115 token = next_token(&val, NULL, cfile);
2117 parse_warn(cfile,
2120 skip_to_rbrace(cfile, 1);
2125 parse_warn(cfile,
2128 skip_to_rbrace(cfile, 1);
2132 parse_warn(cfile,
2135 skip_to_rbrace(cfile, 1);
2140 status = parse_option_name(cfile, 1, &known, &option);
2145 parse_warn(cfile, "unknown option %s.%s",
2148 skip_to_rbrace(cfile, 1);
2152 if (! parse_option_data(&expr, cfile, 1, option)) {
2153 skip_to_rbrace(cfile, 1);
2158 if (!parse_semi(cfile)) {
2159 skip_to_rbrace(cfile, 1);
2173 declaration = parse_statement(cfile, host->group, HOST_DECL,
2211 parse_warn (cfile, "host %s: %s", host -> name,
2220 int parse_class_declaration (cp, cfile, group, type)
2222 struct parse *cfile;
2241 token = next_token (&val, NULL, cfile);
2243 parse_warn (cfile, "Expecting class name");
2244 skip_to_semi (cfile);
2260 parse_warn(cfile, "no class named %s", val);
2261 skip_to_semi(cfile);
2299 token = peek_token (&val, NULL, cfile);
2301 skip_token(&val, &data.len, cfile);
2317 if (!parse_cshl (&data, cfile)) {
2323 parse_warn (cfile, "Expecting string or hex list.");
2406 token = peek_token (&val, NULL, cfile);
2408 skip_token(&val, NULL, cfile);
2423 if (!parse_lbrace (cfile)) {
2431 token = peek_token (&val, NULL, cfile);
2433 skip_token(&val, NULL, cfile);
2436 skip_token(&val, NULL, cfile);
2437 parse_warn (cfile, "unexpected end of file");
2441 skip_token(&val, NULL, cfile);
2442 if (!parse_semi (cfile))
2447 skip_token(&val, NULL, cfile);
2448 if (!parse_semi (cfile))
2453 parse_warn (cfile,
2455 skip_to_semi (cfile);
2458 skip_token(&val, NULL, cfile);
2459 token = peek_token (&val, NULL, cfile);
2462 skip_token(&val, NULL, cfile);
2464 cfile, "A class may only have "
2466 skip_to_semi(cfile);
2472 if (!parse_boolean_expression (&class->expr, cfile,
2475 parse_warn (cfile,
2477 skip_to_semi (cfile);
2484 parse_semi (cfile);
2487 skip_token(&val, NULL, cfile);
2489 parse_warn (cfile,
2491 skip_to_semi (cfile);
2495 token = next_token (&val, NULL, cfile);
2497 parse_warn (cfile,
2499 skip_to_semi (cfile);
2504 parse_warn (cfile,
2507 skip_to_semi (cfile);
2514 cfile, &lose)) {
2516 parse_warn (cfile,
2518 skip_to_semi (cfile);
2525 parse_semi (cfile);
2528 skip_token(&val, NULL, cfile);
2529 token = next_token (&val, NULL, cfile);
2531 parse_warn (cfile, "expecting \"limit\"");
2533 skip_to_semi (cfile);
2536 token = next_token (&val, NULL, cfile);
2538 parse_warn (cfile, "expecting a number");
2540 skip_to_semi (cfile);
2555 parse_semi (cfile);
2557 declaration = parse_statement (cfile, class -> group,
2600 void parse_shared_net_declaration (cfile, group)
2601 struct parse *cfile;
2623 token = peek_token (&val, (unsigned *)0, cfile);
2625 skip_token(&val, (unsigned *)0, cfile);
2628 parse_warn (cfile, "zero-length shared network name");
2636 name = parse_host_name (cfile);
2638 parse_warn (cfile,
2640 skip_to_semi (cfile);
2647 if (!parse_lbrace (cfile)) {
2653 token = peek_token (&val, (unsigned *)0, cfile);
2655 skip_token(&val, (unsigned *)0, cfile);
2657 parse_warn (cfile,
2664 skip_token(&val, (unsigned *)0, cfile);
2665 parse_warn (cfile, "unexpected end of file");
2668 skip_token(&val, (unsigned *)0, cfile);
2669 token = next_token (&val, (unsigned *)0, cfile);
2670 new_shared_network_interface (cfile, share, val);
2671 if (!parse_semi (cfile))
2676 declaration = parse_statement (cfile, share -> group,
2686 common_subnet_parsing(struct parse *cfile,
2696 if (!parse_lbrace(cfile)) {
2702 token = peek_token(&val, NULL, cfile);
2704 skip_token(&val, NULL, cfile);
2707 skip_token(&val, NULL, cfile);
2708 parse_warn (cfile, "unexpected end of file");
2711 skip_token(&val, NULL, cfile);
2712 token = next_token(&val, NULL, cfile);
2713 new_shared_network_interface(cfile, share, val);
2714 if (!parse_semi(cfile))
2718 declaration = parse_statement(cfile, subnet->group,
2757 void parse_subnet_declaration (cfile, share)
2758 struct parse *cfile;
2794 if (!parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8)) {
2802 token = next_token (&val, (unsigned *)0, cfile);
2804 parse_warn (cfile, "Expecting netmask");
2805 skip_to_semi (cfile);
2811 if (!parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8)) {
2830 parse_warn (cfile,
2835 skip_to_semi (cfile);
2839 common_subnet_parsing(cfile, share, subnet);
2846 parse_subnet6_declaration(struct parse *cfile, struct shared_network *share) {
2848 parse_warn(cfile, "No DHCPv6 support.");
2849 skip_to_semi(cfile);
2863 parse_warn(cfile, "subnet6 statement is only supported "
2865 skip_to_semi(cfile);
2870 parse_warn(cfile, "subnet6 statement is only supported "
2872 skip_to_semi(cfile);
2902 if (!parse_ip6_addr(cfile, &subnet->net)) {
2907 token = next_token(&val, NULL, cfile);
2909 parse_warn(cfile, "Expecting a '/'.");
2911 skip_to_semi(cfile);
2915 token = next_token(&val, NULL, cfile);
2917 parse_warn(cfile, "Expecting a number.");
2919 skip_to_semi(cfile);
2927 parse_warn(cfile, "Expecting a number between 0 and 128.");
2929 skip_to_semi(cfile);
2934 parse_warn(cfile, "New subnet mask too short.");
2936 skip_to_semi(cfile);
2955 parse_warn(cfile,
2959 skip_to_semi(cfile);
2963 if (!common_subnet_parsing(cfile, share, subnet)) {
2971 void parse_group_declaration (cfile, group)
2972 struct parse *cfile;
2990 token = peek_token(&val, NULL, cfile);
2992 skip_token(&val, NULL, cfile);
3000 if (!parse_lbrace(cfile)) {
3006 token = peek_token(&val, NULL, cfile);
3008 skip_token(&val, NULL, cfile);
3011 skip_token(&val, NULL, cfile);
3012 parse_warn(cfile, "unexpected end of file");
3015 skip_token(&val, NULL, cfile);
3016 parse_semi(cfile);
3019 skip_token(&val, NULL, cfile);
3020 parse_semi(cfile);
3023 skip_token(&val, NULL, cfile);
3024 parse_semi(cfile);
3027 declaration = parse_statement(cfile, g, GROUP_DECL,
3065 struct parse *cfile,
3077 parse_ok = parse_ip_addr_or_hostname(&tmp, cfile, 1);
3080 parse_ok = parse_ip6_addr_expr(&tmp, cfile);
3101 token = peek_token(&val, NULL, cfile);
3103 token = next_token(&val, NULL, cfile);
3107 if (!parse_semi(cfile)) {
3135 int parse_lease_declaration (struct lease **lp, struct parse *cfile)
3164 if (!parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8)) {
3171 if (!parse_lbrace (cfile)) {
3177 token = next_token (&val, (unsigned *)0, cfile);
3181 parse_warn (cfile, "unexpected end of file");
3196 t = parse_date (cfile);
3237 token = peek_token (&val, (unsigned *)0, cfile);
3240 skip_token(&val, &buflen, cfile);
3262 (cfile, (unsigned char *)0,
3272 parse_warn (cfile, "zero-length uid");
3274 parse_semi (cfile);
3278 parse_semi (cfile);
3286 token = next_token (&val, (unsigned *)0, cfile);
3289 skip_to_rbrace (cfile, 1);
3293 parse_semi (cfile);
3299 parse_hardware_param (cfile,
3306 parse_semi(cfile);
3312 parse_semi (cfile);
3320 parse_semi (cfile);
3325 token = next_token (&val, (unsigned *)0, cfile);
3327 parse_warn (cfile, "expecting 'binding'");
3328 skip_to_semi (cfile);
3335 token = next_token(&val, NULL, cfile);
3337 parse_warn(cfile, "expecting 'binding'");
3338 skip_to_semi(cfile);
3347 token = next_token (&val, (unsigned *)0, cfile);
3349 parse_warn (cfile, "expecting 'state'");
3350 skip_to_semi (cfile);
3353 token = next_token (&val, (unsigned *)0, cfile);
3390 parse_warn (cfile,
3393 skip_to_semi (cfile);
3420 parse_semi (cfile);
3425 token = peek_token (&val, (unsigned *)0, cfile);
3427 if (!parse_string (cfile,
3435 parse_host_name (cfile);
3437 parse_semi (cfile);
3439 parse_warn (cfile,
3441 skip_to_semi (cfile);
3451 token = next_token (&val, (unsigned *)0, cfile);
3454 (unsigned *)0, cfile);
3456 parse_warn (cfile, "expecting string");
3458 skip_to_semi (cfile);
3467 parse_warn (cfile,
3469 parse_semi (cfile);
3474 parse_class_declaration(&class, cfile, NULL,
3477 parse_warn (cfile, "expecting \"class\"");
3479 skip_to_semi (cfile);
3491 if (!parse_on_statement (&on, cfile, &lose)) {
3492 skip_to_rbrace (cfile, 1);
3519 if (parse_option_decl (&oc, cfile)) {
3522 parse_warn (cfile,
3546 token = next_token (&val, (unsigned *)0, cfile);
3548 parse_warn (cfile,
3552 skip_to_semi (cfile);
3590 token = next_token (&val, (unsigned *)0, cfile);
3592 parse_warn (cfile,
3603 if (!parse_binding_value(cfile, nv)) {
3625 parse_semi(cfile);
3639 parse_warn(cfile, "Unexpected configuration "
3641 skip_to_semi (cfile);
3648 parse_warn (cfile,
3696 parse_binding_value(struct parse *cfile, struct binding_value *value)
3704 if ((cfile == NULL) || (value == NULL))
3707 token = peek_token(&val, NULL, cfile);
3709 skip_token(&val, &buflen, cfile);
3727 s = parse_numeric_aggregate(cfile, NULL, &data->len,
3730 skip_to_semi(cfile);
3745 skip_token(&val, NULL, cfile);
3746 token = next_token(&val, NULL, cfile);
3748 parse_warn(cfile, "expecting decimal number.");
3750 skip_to_semi(cfile);
3756 token = next_token(&val, NULL, cfile);
3763 parse_warn(cfile, "expecting true or false");
3765 skip_to_semi(cfile);
3769 cfile, "expecting a constant value.");
3771 skip_to_semi (cfile);
3781 void parse_address_range (cfile, group, type, inpool, lpchain)
3782 struct parse *cfile;
3800 (unsigned *)0, cfile)) == DYNAMIC_BOOTP) {
3801 skip_token(&val, (unsigned *)0, cfile);
3806 if (!parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8))
3812 token = peek_token (&val, (unsigned *)0, cfile);
3817 if (!parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8))
3823 token = next_token (&val, (unsigned *)0, cfile);
3825 parse_warn (cfile, "semicolon expected.");
3826 skip_to_semi (cfile);
3842 parse_warn (cfile, "address range not on network %s",
3917 parse_warn (cfile, "dynamic-bootp flag is %s",
3939 new_address_range (cfile, low, high, subnet, pool, lpchain);
4132 parse_address_range6(struct parse *cfile,
4145 parse_warn(cfile, "range6 statement is only supported "
4147 skip_to_semi(cfile);
4158 if (!parse_ip6_addr(cfile, &lo)) {
4165 parse_warn(cfile, "range6 start address is outside the subnet");
4166 skip_to_semi(cfile);
4179 token = peek_token(&val, NULL, cfile);
4184 skip_token(NULL, NULL, cfile);
4185 token = next_token(&val, NULL, cfile);
4187 parse_warn(cfile, "expecting number");
4188 skip_to_semi(cfile);
4194 parse_warn(cfile, "networks have 0 to 128 bits");
4195 skip_to_semi(cfile);
4199 parse_warn(cfile,
4201 skip_to_semi(cfile);
4205 parse_warn(cfile, "network mask too short");
4206 skip_to_semi(cfile);
4212 token = peek_token(&val, NULL, cfile);
4215 parse_warn(cfile, "temporary mask too short");
4217 parse_warn(cfile, "temporary singleton?");
4218 skip_token(NULL, NULL, cfile);
4229 skip_token(NULL, NULL, cfile);
4233 parse_warn(cfile, "network mask too short");
4234 skip_to_semi(cfile);
4245 if (!parse_ip6_addr(cfile, &hi)) {
4252 parse_warn(cfile,
4254 skip_to_semi(cfile);
4293 token = next_token(NULL, NULL, cfile);
4295 parse_warn(cfile, "semicolon expected.");
4296 skip_to_semi(cfile);
4304 parse_prefix6(struct parse *cfile,
4316 parse_warn(cfile, "prefix6 statement is only supported "
4318 skip_to_semi(cfile);
4329 if (!parse_ip6_addr(cfile, &lo)) {
4342 parse_warn(cfile, "prefix6 start prefix"
4344 skip_to_semi(cfile);
4349 if (!parse_ip6_addr(cfile, &hi)) {
4362 parse_warn(cfile, "prefix6 end prefix"
4364 skip_to_semi(cfile);
4372 cfile);
4374 parse_warn(cfile, "expecting '/'");
4376 skip_to_semi(cfile);
4379 token = next_token(&val, NULL, cfile);
4381 parse_warn(cfile, "expecting number");
4383 skip_to_semi(cfile);
4388 parse_warn(cfile, "networks have 0 to 128 bits (exclusive)");
4399 parse_warn(cfile, "network mask smaller than subnet mask");
4400 skip_to_semi(cfile);
4407 parse_warn(cfile, "network mask too short");
4408 skip_to_semi(cfile);
4411 token = next_token(NULL, NULL, cfile);
4413 parse_warn(cfile, "semicolon expected.");
4414 skip_to_semi(cfile);
4444 parse_warn(cfile, "impossible mask length");
4458 parse_fixed_prefix6(struct parse *cfile, struct host_decl *host_decl) {
4486 if (!parse_ip6_addr(cfile, &ia->cidrnet.lo_addr)) {
4490 token = next_token(NULL, NULL, cfile);
4493 parse_warn(cfile, "expecting '/'");
4495 skip_to_semi(cfile);
4498 token = next_token(&val, NULL, cfile);
4501 parse_warn(cfile, "expecting number");
4503 skip_to_semi(cfile);
4506 token = next_token(NULL, NULL, cfile);
4509 parse_warn(cfile, "semicolon expected.");
4510 skip_to_semi(cfile);
4520 parse_warn(cfile, "networks have 0 to 128 bits");
4525 parse_warn(cfile, "network mask too short");
4545 * \param[in] cfile = the configuration file being parsed
4555 void parse_pool6_statement (cfile, group, type)
4556 struct parse *cfile;
4578 parse_warn(cfile, "pool6s are only valid inside "
4581 skip_to_semi(cfile);
4588 if (parse_lbrace(cfile) == 0) {
4594 token = peek_token(&val, NULL, cfile);
4597 skip_token(NULL, NULL, cfile);
4598 parse_address_range6(cfile, group, pond);
4602 skip_token(NULL, NULL, cfile);
4603 parse_prefix6(cfile, group, pond);
4607 skip_token(NULL, NULL, cfile);
4608 get_permit(cfile, &pond->permit_list, 1,
4613 skip_token(NULL, NULL, cfile);
4614 get_permit(cfile, &pond->prohibit_list, 0,
4619 skip_token(&val, NULL, cfile);
4629 parse_warn(cfile, "unexpected end of file");
4633 declaration = parse_statement(cfile, pond->group,
4659 parse_warn (cfile, "Pool6 declaration with no %s.",
4678 int parse_allow_deny (oc, cfile, flag)
4680 struct parse *cfile;
4694 token = next_token (&val, (unsigned *)0, cfile);
4729 parse_warn (cfile, "expecting allow/deny key");
4730 skip_to_semi (cfile);
4741 parse_semi (cfile);
4746 parse_ia_na_declaration(struct parse *cfile) {
4748 parse_warn(cfile, "No DHCPv6 support.");
4749 skip_to_semi(cfile);
4772 parse_warn(cfile, "IA_NA is only supported in DHCPv6 mode.");
4773 skip_to_semi(cfile);
4777 if (!parse_iaid_duid(cfile, &ia, &iaid, MDL)) {
4783 token = next_token(&val, NULL, cfile);
4785 parse_warn(cfile, "corrupt lease file; expecting left brace");
4786 skip_to_semi(cfile);
4792 token = next_token(&val, NULL, cfile);
4796 ia->cltt = parse_date (cfile);
4801 parse_warn(cfile, "corrupt lease file; "
4803 skip_to_semi(cfile);
4807 if (!parse_ip6_addr(cfile, &iaddr)) {
4808 parse_warn(cfile, "corrupt lease file; "
4810 skip_to_semi(cfile);
4814 token = next_token(&val, NULL, cfile);
4816 parse_warn(cfile, "corrupt lease file; "
4818 skip_to_semi(cfile);
4826 token = next_token(&val, NULL, cfile);
4835 parse_warn(cfile, "corrupt lease file; "
4841 token = next_token(&val, NULL, cfile);
4843 parse_warn(cfile, "corrupt lease file; "
4845 skip_to_semi(cfile);
4848 token = next_token(&val, NULL, cfile);
4866 parse_warn(cfile,
4871 skip_to_semi(cfile);
4875 token = next_token(&val, NULL, cfile);
4877 parse_warn(cfile, "corrupt lease file; "
4885 token = next_token(&val, NULL, cfile);
4887 parse_warn(cfile, "%s is not a valid "
4890 skip_to_semi(cfile);
4901 token = peek_token(&val, NULL, cfile);
4903 skip_token(&val, NULL, cfile);
4905 parse_warn(cfile,
4913 token = next_token(&val, NULL, cfile);
4915 parse_warn(cfile, "%s is not a valid "
4918 skip_to_semi(cfile);
4929 token = peek_token(&val, NULL, cfile);
4931 skip_token(&val, NULL, cfile);
4933 parse_warn(cfile,
4941 end_time = parse_date(cfile);
4946 token = next_token(&val, NULL, cfile);
4949 parse_warn(cfile, "%s is not a valid "
4952 skip_to_semi(cfile);
4995 token = next_token(NULL, NULL, cfile);
4997 parse_warn(cfile, "expecting '=' in "
5002 if (!parse_binding_value(cfile, nv)) {
5022 parse_semi(cfile);
5036 cfile,
5038 parse_warn(cfile,
5042 skip_to_rbrace (cfile, 1);
5047 cfile,
5049 parse_warn(cfile,
5053 skip_to_rbrace (cfile, 1);
5061 parse_warn(cfile, "corrupt lease file; "
5064 skip_to_semi(cfile);
5070 parse_warn(cfile, "corrupt lease file; "
5075 parse_warn(cfile, "corrupt lease file; "
5149 parse_warn(cfile, "duplicate na lease for address %s",
5194 parse_ia_ta_declaration(struct parse *cfile) {
5196 parse_warn(cfile, "No DHCPv6 support.");
5197 skip_to_semi(cfile);
5220 parse_warn(cfile, "IA_TA is only supported in DHCPv6 mode.");
5221 skip_to_semi(cfile);
5225 if (!parse_iaid_duid(cfile, &ia, &iaid, MDL)) {
5231 token = next_token(&val, NULL, cfile);
5233 parse_warn(cfile, "corrupt lease file; expecting left brace");
5234 skip_to_semi(cfile);
5240 token = next_token(&val, NULL, cfile);
5244 ia->cltt = parse_date (cfile);
5249 parse_warn(cfile, "corrupt lease file; "
5251 skip_to_semi(cfile);
5255 if (!parse_ip6_addr(cfile, &iaddr)) {
5256 parse_warn(cfile, "corrupt lease file; "
5258 skip_to_semi(cfile);
5262 token = next_token(&val, NULL, cfile);
5264 parse_warn(cfile, "corrupt lease file; "
5266 skip_to_semi(cfile);
5274 token = next_token(&val, NULL, cfile);
5283 parse_warn(cfile, "corrupt lease file; "
5289 token = next_token(&val, NULL, cfile);
5291 parse_warn(cfile, "corrupt lease file; "
5293 skip_to_semi(cfile);
5296 token = next_token(&val, NULL, cfile);
5314 parse_warn(cfile,
5319 skip_to_semi(cfile);
5323 token = next_token(&val, NULL, cfile);
5325 parse_warn(cfile, "corrupt lease file; "
5333 token = next_token(&val, NULL, cfile);
5335 parse_warn(cfile, "%s is not a valid "
5338 skip_to_semi(cfile);
5349 token = peek_token(&val, NULL, cfile);
5351 skip_token(&val, NULL, cfile);
5353 parse_warn(cfile,
5361 token = next_token(&val, NULL, cfile);
5363 parse_warn(cfile, "%s is not a valid "
5366 skip_to_semi(cfile);
5377 token = peek_token(&val, NULL, cfile);
5379 skip_token(&val, NULL, cfile);
5381 parse_warn(cfile,
5389 end_time = parse_date(cfile);
5394 token = next_token(&val, NULL, cfile);
5397 parse_warn(cfile, "%s is not a valid "
5400 skip_to_semi(cfile);
5443 token = next_token(NULL, NULL, cfile);
5445 parse_warn(cfile, "expecting '=' in "
5450 if (!parse_binding_value(cfile, nv)) {
5470 parse_semi(cfile);
5484 cfile,
5486 parse_warn(cfile,
5490 skip_to_rbrace (cfile, 1);
5495 cfile,
5497 parse_warn(cfile,
5501 skip_to_rbrace (cfile, 1);
5509 parse_warn(cfile, "corrupt lease file; "
5512 skip_to_semi(cfile);
5518 parse_warn(cfile, "corrupt lease file; "
5523 parse_warn(cfile, "corrupt lease file; "
5586 parse_warn(cfile, "duplicate ta lease for address %s",
5631 parse_ia_pd_declaration(struct parse *cfile) {
5633 parse_warn(cfile, "No DHCPv6 support.");
5634 skip_to_semi(cfile);
5658 parse_warn(cfile, "IA_PD is only supported in DHCPv6 mode.");
5659 skip_to_semi(cfile);
5663 if (!parse_iaid_duid(cfile, &ia, &iaid, MDL)) {
5669 token = next_token(&val, NULL, cfile);
5671 parse_warn(cfile, "corrupt lease file; expecting left brace");
5672 skip_to_semi(cfile);
5678 token = next_token(&val, NULL, cfile);
5682 ia->cltt = parse_date (cfile);
5687 parse_warn(cfile, "corrupt lease file; expecting "
5689 skip_to_semi(cfile);
5693 if (!parse_ip6_prefix(cfile, &iaddr, &plen)) {
5694 parse_warn(cfile, "corrupt lease file; "
5696 skip_to_semi(cfile);
5700 token = next_token(&val, NULL, cfile);
5702 parse_warn(cfile, "corrupt lease file; "
5704 skip_to_semi(cfile);
5712 token = next_token(&val, NULL, cfile);
5721 parse_warn(cfile, "corrupt lease file; "
5727 token = next_token(&val, NULL, cfile);
5729 parse_warn(cfile, "corrupt lease file; "
5731 skip_to_semi(cfile);
5734 token = next_token(&val, NULL, cfile);
5752 parse_warn(cfile,
5757 skip_to_semi(cfile);
5761 token = next_token(&val, NULL, cfile);
5763 parse_warn(cfile, "corrupt lease file; "
5771 token = next_token(&val, NULL, cfile);
5773 parse_warn(cfile, "%s is not a valid "
5776 skip_to_semi(cfile);
5787 token = peek_token(&val, NULL, cfile);
5789 skip_token(&val, NULL, cfile);
5791 parse_warn(cfile,
5799 token = next_token(&val, NULL, cfile);
5801 parse_warn(cfile, "%s is not a valid "
5804 skip_to_semi(cfile);
5815 token = peek_token(&val, NULL, cfile);
5817 skip_token(&val, NULL, cfile);
5819 parse_warn(cfile,
5827 end_time = parse_date(cfile);
5832 token = next_token(&val, NULL, cfile);
5835 parse_warn(cfile, "%s is not a valid "
5838 skip_to_semi(cfile);
5881 token = next_token(NULL, NULL, cfile);
5883 parse_warn(cfile, "expecting '=' in "
5888 if (!parse_binding_value(cfile, nv)) {
5908 parse_semi(cfile);
5922 cfile,
5924 parse_warn(cfile,
5928 skip_to_rbrace (cfile, 1);
5933 cfile,
5935 parse_warn(cfile,
5939 skip_to_rbrace (cfile, 1);
5947 parse_warn(cfile, "corrupt lease file; "
5950 skip_to_semi(cfile);
5956 parse_warn(cfile, "corrupt lease file; "
5961 parse_warn(cfile, "corrupt lease file; "
6026 parse_warn(cfile, "duplicate pd lease for address %s",
6084 parse_server_duid(struct parse *cfile) {
6089 len = parse_X(cfile, bytes, sizeof(bytes));
6091 parse_warn(cfile, "Invalid duid contents");
6092 skip_to_semi(cfile);
6108 parse_semi(cfile);
6123 parse_server_duid_conf(struct parse *cfile) {
6137 skip_token(NULL, NULL, cfile);
6142 token = next_token(&val, NULL, cfile);
6152 token = next_token(&val, NULL, cfile);
6154 parse_warn(cfile, "enterprise number expected");
6155 skip_to_semi(cfile);
6160 token = next_token(&val, &len, cfile);
6162 parse_warn(cfile, "identifier expected");
6163 skip_to_semi(cfile);
6192 if (peek_token(NULL, NULL, cfile) == SEMI) {
6198 token = next_token(NULL, NULL, cfile);
6210 parse_warn(cfile, "hardware type expected");
6211 skip_to_semi(cfile);
6215 if (!parse_cshl(&ll_addr, cfile)) {
6247 if (peek_token(NULL, NULL, cfile) == SEMI) {
6253 token = next_token(NULL, NULL, cfile);
6265 parse_warn(cfile, "hardware type expected");
6266 skip_to_semi(cfile);
6270 token = next_token(&val, NULL, cfile);
6272 parse_warn(cfile, "timestamp expected");
6273 skip_to_semi(cfile);
6279 if (!parse_cshl(&ll_addr, cfile)) {
6316 token = next_token(&val, &len, cfile);
6318 parse_warn(cfile, "identifier expected");
6319 skip_to_semi(cfile);
6343 parse_warn(cfile, "DUID type of LLT, EN, or LL expected");
6344 skip_to_semi(cfile);
6351 token = next_token(NULL, NULL, cfile);
6353 parse_warn(cfile, "semicolon expected");
6354 skip_to_semi(cfile);
6401 * \param cfile - file being parsed
6410 parse_iaid_duid(struct parse* cfile, struct ia_xx** ia, u_int32_t *iaid,
6421 len = parse_X(cfile, bytes, sizeof(bytes));
6423 parse_warn(cfile, "corrupt lease file; "
6425 skip_to_semi(cfile);