Lines Matching refs:cfile
82 skip_to_semi(struct parse *cfile)
84 skip_to_rbrace(cfile, 0);
99 skip_to_rbrace(struct parse *cfile, int brace_count)
105 token = peek_token(&val, NULL, cfile);
113 skip_token(&val, NULL, cfile);
120 skip_token(&val, NULL, cfile);
126 skip_token(&val, NULL, cfile);
131 token = next_token(&val, NULL, cfile);
136 parse_semi(struct parse *cfile)
141 token = next_token(&val, NULL, cfile);
143 parse_error(cfile, "semicolon expected.");
149 parse_string(struct parse *cfile, char **sptr, unsigned *lptr)
156 token = next_token(&val, &len, cfile);
158 parse_error(cfile, "expecting a string");
160 parse_error(cfile, "no memory for string %s.", val);
163 parse_semi(cfile);
179 parse_host_name(struct parse *cfile)
188 token = peek_token(&val, NULL, cfile);
191 skip_token(&val, NULL, cfile);
200 token = peek_token(&val, NULL, cfile);
202 token = next_token(&val, NULL, cfile);
220 parse_ip_addr_or_hostname(struct parse *cfile, isc_boolean_t check_multi)
229 token = peek_token(&val, NULL, cfile);
238 save_parse_state(cfile);
239 skip_token(NULL, NULL, cfile);
240 if (next_token(NULL, NULL, cfile) == DOT &&
241 next_token(NULL, NULL, cfile) == NUMBER)
243 restore_parse_state(cfile);
246 bin = parse_numeric_aggregate(cfile, addr, &len,
254 name = parse_host_name(cfile);
259 parse_error(cfile, "expected IPv4 address. got "
267 parse_error(cfile, "%s: host unknown.", name->content);
276 TAILQ_INSERT_TAIL(&cfile->comments, comment);
283 token = next_token(&val, NULL, cfile);
284 parse_error(cfile, "%s (%d): expecting IP address or hostname",
296 parse_ip_addr(struct parse *cfile)
301 return parse_numeric_aggregate(cfile, addr, &len, DOT, 10, 8);
330 parse_ip6_addr(struct parse *cfile)
343 token = peek_token(&val, NULL, cfile);
357 next_raw_token(&val, NULL, cfile);
360 parse_error(cfile, "Invalid IPv6 address.");
367 token = peek_raw_token(&val, NULL, cfile);
375 parse_error(cfile, "Invalid IPv6 address.");
384 parse_ip6_addr_txt(struct parse *cfile)
388 bin = parse_ip6_addr(cfile);
400 parse_hardware_param(struct parse *cfile)
409 token = next_token(&val, NULL, cfile);
425 token = peek_token(&val, NULL, cfile);
427 parse_error(cfile, "empty hardware address");
428 t = parse_numeric_aggregate(cfile, NULL, &hlen, COLON, 16, 8);
430 parse_error(cfile, "can't get hardware address");
432 parse_error(cfile, "hardware address too long");
433 token = next_token(&val, NULL, cfile);
435 parse_error(cfile, "expecting semicolon.");
441 TAILQ_CONCAT(&hw->comments, &cfile->comments);
444 cfile->issue_counter++;
470 parse_numeric_aggregate(struct parse *cfile, unsigned char *buf,
483 parse_error(cfile, "no space for numeric aggregate");
493 token = peek_token(&val, NULL, cfile);
498 token = next_token(&val, NULL, cfile);
499 parse_error(cfile, "too few numbers.");
501 skip_token(&val, NULL, cfile);
503 token = next_token(&val, NULL, cfile);
506 parse_error(cfile, "unexpected end of file");
511 parse_error(cfile, "expecting numeric value.");
515 convert_num(cfile, s, val, base, size);
518 convert_num(cfile, (unsigned char *)t->content,
532 convert_num(struct parse *cfile, unsigned char *buf, const char *str,
573 parse_error(cfile, "Bogus number: %s.", str);
575 parse_error(cfile,
588 parse_error(cfile,
594 parse_error(cfile,
600 parse_error(cfile,
620 cfile,
636 parse_error(cfile,
648 parse_option_name(struct parse *cfile,
659 token = next_token(&val, NULL, cfile);
661 parse_error(cfile,
666 parse_error(cfile, "no memory for uname information.");
667 token = peek_token(&val, NULL, cfile);
670 skip_token(&val, NULL, cfile);
673 token = next_token(&val, NULL, cfile);
675 parse_error(cfile, "expecting identifier after '.'");
681 parse_error(cfile, "no option space named %s.", uname);
695 parse_error(cfile, "unknown server option %s.", val);
710 parse_error(cfile, "Option code 0 is illegal "
713 parse_error(cfile, "Option code 255 is illegal "
745 TAILQ_INSERT_TAIL(&cfile->comments, comment);
762 parse_error(cfile, "no option named %s in space %s",
774 parse_option_space_decl(struct parse *cfile)
783 skip_token(&val, NULL, cfile); /* Discard the SPACE token,
786 token = next_token(&val, NULL, cfile);
788 parse_error(cfile, "expecting identifier.");
795 parse_error(cfile, "No memory for new option space.");
802 token = next_token(&val, NULL, cfile);
809 cfile->issue_counter++;
815 token = next_token(&val, NULL, cfile);
817 parse_error(cfile, "expecting width token.");
819 token = next_token(&val, NULL, cfile);
821 parse_error(cfile,
848 cfile->issue_counter++;
854 token = next_token(&val, NULL, cfile);
856 parse_error(cfile, "expecting width token.");
858 token = next_token(&val, NULL, cfile);
860 parse_error(cfile, "expecting number 1 or 2.");
887 token = next_token(&val, NULL, cfile);
889 parse_error(cfile, "expecting size token.");
891 token = next_token(&val, NULL, cfile);
893 parse_error(cfile,
898 parse_error(cfile, "Unexpected token.");
903 mapSet(cfile->stack[1], nu, "option-space");
940 parse_option_code_definition(struct parse *cfile, struct option *option)
961 parse_vendor_code_definition(cfile, option);
971 TAILQ_CONCAT(&def->comments, &cfile->comments);
974 token = next_token(&val, NULL, cfile);
976 parse_error(cfile, "expecting option code number.");
977 TAILQ_CONCAT(&def->comments, &cfile->comments);
1002 cfile->issue_counter++;
1007 token = next_token(&val, NULL, cfile);
1009 parse_error(cfile, "expecting \"=\"");
1013 token = next_token(&val, NULL, cfile);
1015 token = next_token(&val, NULL, cfile);
1017 parse_error(cfile, "expecting \"of\".");
1019 token = next_token(&val, NULL, cfile);
1025 token = next_token(&val, NULL, cfile);
1040 parse_error(cfile,
1046 parse_error(cfile, "no nested arrays.");
1054 cfile->issue_counter++;
1056 token = next_token(&val, NULL, cfile);
1058 parse_error(cfile, "expecting \"of\".");
1060 token = next_token(&val, NULL, cfile);
1062 parse_error(cfile,
1072 cfile->issue_counter++;
1083 token = next_token(&val, NULL, cfile);
1085 parse_error(cfile, "expecting number.");
1115 parse_error(cfile,
1122 token = next_token(&val, NULL, cfile);
1124 parse_error(cfile, "expecting \"integer\" keyword.");
1144 token = peek_token(&val, NULL, cfile);
1150 parse_error(cfile, "domain list in DHCPv6 "
1152 skip_token(&val, NULL, cfile);
1163 parse_error(cfile, "arrays of text strings not %s",
1174 token = next_token(&val, NULL, cfile);
1176 parse_error(cfile,
1193 parse_error(cfile, "array incompatible with zerolen.");
1198 parse_error(cfile, "unknown data type %s", val);
1204 token = next_token(&val, NULL, cfile);
1215 parse_error(cfile,
1219 token = next_token(&val, NULL, cfile);
1225 parse_error(cfile, "expecting right brace.");
1228 parse_semi(cfile);
1230 parse_error(cfile,
1272 optdef = mapGet(cfile->stack[1], "option-def");
1275 mapSet(cfile->stack[1], optdef, "option-def");
1288 parse_vendor_code_definition(struct parse *cfile, struct option *option)
1302 token = next_token(&val, NULL, cfile);
1304 parse_error(cfile, "expecting option code number.");
1309 token = next_token(&val, NULL, cfile);
1311 parse_error(cfile, "expecting \"=\"");
1312 token = next_token(&val, NULL, cfile);
1314 parse_error(cfile, "expecting encapsulate");
1315 token = next_token(&val, NULL, cfile);
1317 parse_error(cfile, "expecting option space identifier");
1320 parse_error(cfile, "unknown option space %s", val);
1339 parse_semi(cfile);
1439 parse_base64(struct parse *cfile)
1468 (void)next_token(&val, &l, cfile);
1471 (void)peek_token(&val, NULL, cfile);
1494 parse_cshl(struct parse *cfile)
1506 token = next_token(&val, NULL, cfile);
1508 parse_error(cfile, "expecting hexadecimal number.");
1509 convert_num(cfile, &ibuf, val, 16, 8);
1517 token = peek_token(&val, NULL, cfile);
1520 skip_token(&val, NULL, cfile);
1529 parse_hexa(struct parse *cfile)
1540 token = next_token(&val, NULL, cfile);
1542 parse_error(cfile, "expecting hexadecimal number.");
1543 convert_num(cfile, &ibuf, val, 16, 8);
1547 token = peek_token(&val, NULL, cfile);
1550 skip_token(&val, NULL, cfile);
1572 struct parse *cfile, isc_boolean_t *lose,
1576 parse_error(cfile, "statements is not a list?");
1581 TAILQ_CONCAT(&statement->comments, &cfile->comments);
1582 if (!parse_executable_statement(statement, cfile, lose,
1585 TAILQ_CONCAT(&statement->comments, &cfile->comments);
1596 struct parse *cfile, isc_boolean_t *lose,
1615 token = peek_token(&val, NULL, cfile);
1618 skip_token(&val, NULL, cfile);
1619 token = next_token(&val, NULL, cfile);
1625 parse_error(cfile, "Expecting 'local' or 'default'.");
1627 token = next_token(&val, NULL, cfile);
1629 parse_error(cfile, "Expecting a semicolon.");
1632 cfile->issue_counter++;
1639 skip_token(&val, NULL, cfile);
1640 return parse_if_statement(result, cfile, lose);
1643 skip_token(&val, NULL, cfile);
1644 token = next_token(&val, NULL, cfile);
1646 parse_error(cfile, "expecting class name.");
1648 parse_semi(cfile);
1651 cfile->issue_counter++;
1656 skip_token(&val, NULL, cfile);
1658 parse_semi(cfile);
1661 cfile->issue_counter++;
1666 skip_token(&val, NULL, cfile);
1668 option = parse_option_name(cfile, ISC_FALSE, &known);
1673 return parse_option_statement(result, cfile, option,
1678 skip_token(&val, NULL, cfile);
1680 option = parse_option_name(cfile, ISC_FALSE, &known);
1685 return parse_option_statement(result, cfile, option,
1697 skip_token(&val, NULL, cfile);
1698 st = parse_allow_deny(cfile, flag);
1703 skip_token(&val, NULL, cfile);
1704 token = peek_token(&val, NULL, cfile);
1708 option = parse_option_name(cfile, ISC_FALSE, &known);
1713 return parse_option_statement(result, cfile, option,
1716 skip_token(&val, NULL, cfile);
1718 option = parse_option_name(cfile, ISC_FALSE, &known);
1723 return parse_option_statement(result, cfile, option,
1726 skip_token(&val, NULL, cfile);
1728 option = parse_option_name(cfile, ISC_FALSE, &known);
1733 return parse_option_statement(result, cfile, option,
1737 skip_token(&val, NULL, cfile);
1738 return parse_on_statement(result, cfile, lose);
1741 skip_token(&val, NULL, cfile);
1742 return parse_switch_statement(result, cfile, lose);
1745 skip_token(&val, NULL, cfile);
1747 parse_error(cfile,
1750 cfile, lose, case_context);
1753 skip_token(&val, NULL, cfile);
1755 parse_error(cfile, "switch default statement in %s",
1760 cfile->issue_counter++;
1766 skip_token(&val, NULL, cfile);
1772 token = next_token(&val, NULL, cfile);
1774 parse_error(cfile,
1778 cfile->issue_counter++;
1782 token = next_token(&val, NULL, cfile);
1791 token = next_token(&val, NULL, cfile);
1795 parse_error(cfile,
1800 token = next_token(&val, NULL, cfile);
1804 parse_error(cfile, "expecting right paren.");
1806 skip_to_semi(cfile);
1812 token = next_token(&val, NULL, cfile);
1814 parse_error(cfile, "expecting left brace.");
1817 if (!parse_executable_statements(expr, cfile,
1825 token = next_token(&val, NULL, cfile);
1827 parse_error(cfile, "expecting rigt brace.");
1830 parse_error(cfile,
1835 if (!parse_expression(expr, cfile, lose, context_any,
1838 parse_error(cfile,
1842 skip_to_semi(cfile);
1846 parse_semi(cfile);
1851 skip_token(&val, NULL, cfile);
1852 token = next_token(&val, NULL, cfile);
1854 parse_error(cfile, "%s can't be a variable name", val);
1858 cfile->issue_counter++;
1862 parse_semi(cfile);
1866 skip_token(&val, NULL, cfile);
1869 if (!parse_expression(expr, cfile, lose,
1873 parse_error(cfile,
1877 skip_to_semi(cfile);
1881 parse_semi(cfile);
1885 skip_token(&val, NULL, cfile);
1888 token = next_token(&val, NULL, cfile);
1890 parse_error(cfile, "left parenthesis expected.");
1892 token = next_token(&val, &len, cfile);
1894 parse_error(cfile, "Expecting a quoted string.");
1899 while ((token = next_token(&val, NULL, cfile)) == COMMA) {
1901 if (!parse_data_expression(var, cfile, lose)) {
1903 parse_error(cfile,
1905 skip_to_semi(cfile);
1914 cfile, "right parenthesis expected.");
1915 parse_semi(cfile);
1920 skip_token(&val, NULL, cfile);
1924 if (!parse_expression(expr, cfile, lose, context_data,
1927 parse_error(cfile,
1931 skip_to_semi(cfile);
1935 parse_semi(cfile);
1939 skip_token(&val, NULL, cfile);
1943 cfile->issue_counter++;
1956 token = next_token(&val, NULL, cfile);
1958 parse_error(cfile, "left parenthesis expected.");
1960 token = peek_token(&val, NULL, cfile);
1975 skip_token(&val, NULL, cfile);
1976 token = next_token(&val, NULL, cfile);
1978 parse_error(cfile, "comma expected.");
1984 if (!parse_data_expression(expr, cfile, lose)) {
1985 skip_to_semi(cfile);
1991 token = next_token(&val, NULL, cfile);
1993 parse_error(cfile, "right parenthesis expected.");
1995 token = next_token(&val, NULL, cfile);
1997 parse_error(cfile, "semicolon expected.");
2005 skip_token(&val, NULL, cfile);
2006 parse_semi(cfile);
2016 skip_token(&val, NULL, cfile);
2019 cfile->issue_counter++;
2022 s = parse_host_name(cfile);
2024 parse_error(cfile, "expecting hostname.");
2027 skip_to_semi(cfile);
2033 if (!parse_zone(zone, cfile))
2039 skip_token(&val, NULL, cfile);
2040 if (!parse_key(result, cfile)) {
2052 skip_token(&val, NULL, cfile);
2054 cfile->issue_counter++;
2057 cfile, option,
2067 if (!parse_expression(expr, cfile, lose, context_data,
2070 parse_error(cfile, "expecting "
2074 skip_to_semi(cfile);
2078 parse_semi(cfile);
2103 parse_zone(struct element *zone, struct parse *cfile)
2111 token = next_token(&val, NULL, cfile);
2113 parse_error(cfile, "expecting left brace");
2116 token = peek_token(&val, NULL, cfile);
2120 parse_error(cfile, "more than one primary.");
2127 parse_error(cfile, "more than one secondary.");
2131 skip_token(&val, NULL, cfile);
2135 value = parse_ip_addr_or_hostname(cfile,
2138 parse_error(cfile,
2142 token = next_token(&val, NULL, cfile);
2145 parse_error(cfile, "expecting semicolon.");
2150 parse_error(cfile, "more than one primary6.");
2157 parse_error(cfile, "more than one secondary6.");
2161 skip_token(&val, NULL, cfile);
2165 addr = parse_ip6_addr_txt(cfile);
2167 parse_error(cfile, "expecting IPv6 addr.");
2169 token = next_token(&val, NULL, cfile);
2172 parse_error(cfile, "expecting semicolon.");
2176 skip_token(&val, NULL, cfile);
2177 token = peek_token(&val, NULL, cfile);
2179 skip_token(&val, NULL, cfile);
2182 key_name = parse_host_name(cfile);
2184 parse_error(cfile, "expecting key name.");
2187 parse_error(cfile, "Multiple key definitions");
2189 parse_semi(cfile);
2198 token = next_token(&val, NULL, cfile);
2200 parse_error(cfile, "expecting right brace.");
2215 parse_key(struct element* result, struct parse *cfile)
2228 cfile->issue_counter++;
2230 token = peek_token(&val, NULL, cfile);
2232 skip_token(&val, NULL, cfile);
2237 name = parse_host_name(cfile);
2239 parse_error(cfile, "expecting key name.");
2243 token = next_token(&val, NULL, cfile);
2245 parse_error(cfile, "expecting left brace");
2248 token = next_token(&val, NULL, cfile);
2252 parse_error(cfile, "key: too many algorithms");
2253 alg = parse_host_name(cfile);
2255 parse_error(cfile,
2257 parse_semi(cfile);
2271 parse_error(cfile, "key: too many secrets");
2273 sec = parse_base64(cfile);
2275 skip_to_rbrace(cfile, 1);
2280 parse_semi(cfile);
2289 parse_error(cfile, "expecting right brace.");
2292 token = peek_token(&val, NULL, cfile);
2294 skip_token(&val, NULL, cfile);
2315 struct parse *cfile,
2326 cfile->issue_counter++;
2331 token = next_token(&val, NULL, cfile);
2341 parse_error(cfile, "expecting a lease event type");
2343 token = next_token(&val, NULL, cfile);
2355 parse_error(cfile, "left brace expected.");
2358 if (!parse_executable_statements(body, cfile, lose, context_any)) {
2362 token = next_token(&val, NULL, cfile);
2368 token = next_token(&val, NULL, cfile);
2370 parse_error(cfile, "right brace expected.");
2381 struct parse *cfile,
2392 cfile->issue_counter++;
2395 token = next_token(&val, NULL, cfile);
2397 parse_error(cfile, "expecting left brace.");
2399 skip_to_semi(cfile);
2404 if (!parse_expression(cond, cfile, lose, context_data_or_numeric,
2407 parse_error(cfile,
2413 token = next_token(&val, NULL, cfile);
2415 parse_error(cfile, "right paren expected.");
2417 token = next_token(&val, NULL, cfile);
2419 parse_error(cfile, "left brace expected.");
2422 if (!parse_executable_statements(body, cfile, lose,
2425 skip_to_rbrace(cfile, 1);
2430 token = next_token(&val, NULL, cfile);
2432 parse_error(cfile, "right brace expected.");
2443 struct parse *cfile,
2452 if (!parse_expression(expr, cfile, lose, case_context,
2456 parse_error(cfile, "expecting %s expression.",
2460 skip_to_semi(cfile);
2464 token = next_token(&val, NULL, cfile);
2466 parse_error(cfile, "colon expected.");
2483 struct parse *cfile,
2495 cfile->issue_counter++;
2499 token = peek_token(&val, NULL, cfile);
2502 skip_token(&val, NULL, cfile);
2507 if (!parse_boolean_expression(cond, cfile, lose)) {
2509 parse_error(cfile, "boolean expression expected.");
2515 token = next_token(&val, NULL, cfile);
2517 parse_error(cfile, "expecting right paren.");
2519 token = next_token(&val, NULL, cfile);
2521 parse_error(cfile, "left brace expected.");
2523 if (!parse_executable_statements(branch, cfile, lose, context_any)) {
2527 token = next_token(&val, NULL, cfile);
2533 token = next_token(&val, NULL, cfile);
2535 parse_error(cfile, "right brace expected.");
2536 token = peek_token(&val, NULL, cfile);
2538 skip_token(&val, NULL, cfile);
2539 token = peek_token(&val, NULL, cfile);
2541 skip_token(&val, NULL, cfile);
2543 if (!parse_if_statement(branch, cfile, lose)) {
2545 parse_error(cfile,
2551 parse_error(cfile, "left brace or if expected.");
2553 skip_token(&val, NULL, cfile);
2555 if (!parse_executable_statements(branch, cfile,
2558 token = next_token(&val, NULL, cfile);
2560 parse_error(cfile, "right brace expected.");
2564 skip_token(&val, NULL, cfile);
2566 if (!parse_if_statement(branch, cfile, lose)) {
2568 parse_error(cfile,
2592 struct parse *cfile,
2596 if (!parse_expression(expr, cfile, lose, context_boolean,
2603 parse_error(cfile, "Expecting a boolean expression.");
2610 parse_boolean(struct parse *cfile)
2615 (void)next_token(&val, NULL, cfile);
2623 parse_error(cfile,
2625 parse_semi(cfile);
2651 struct parse *cfile,
2655 if (!parse_expression(expr, cfile, lose, context_data,
2662 parse_error(cfile, "Expecting a data expression.");
2674 struct parse *cfile,
2678 if (!parse_expression(expr, cfile, lose, context_numeric,
2685 parse_error(cfile, "Expecting a numeric expression.");
2693 struct parse *cfile,
2708 token = peek_token(&val, NULL, cfile);
2713 skip_token(&val, NULL, cfile);
2714 token = next_token(&val, NULL, cfile);
2716 parse_error(cfile, "string expected.");
2719 cfile->issue_counter++;
2724 skip_token(&val, NULL, cfile);
2727 if (!parse_non_binary(nexp, cfile, lose, context_boolean)) {
2729 parse_error(cfile, "expression expected");
2734 parse_error(cfile, "boolean expression expected");
2737 cfile->issue_counter++;
2743 skip_token(&val, NULL, cfile);
2744 if (!parse_expression(expr, cfile, lose, context,
2747 parse_error(cfile, "expression expected");
2751 token = next_token(&val, NULL, cfile);
2753 parse_error(cfile, "right paren expected");
2757 skip_token(&val, NULL, cfile);
2759 option = parse_option_name(cfile, ISC_FALSE, &known);
2774 cfile->issue_counter++;
2779 skip_token(&val, NULL, cfile);
2782 cfile->issue_counter++;
2787 skip_token(&val, NULL, cfile);
2790 cfile->issue_counter++;
2795 skip_token(&val, NULL, cfile);
2798 cfile->issue_counter++;
2801 token = next_token(&val, NULL, cfile);
2804 parse_error(cfile, "left parenthesis expected.");
2808 if (!parse_data_expression(arg, cfile, lose)) {
2811 parse_error(cfile,
2817 token = next_token(&val, NULL, cfile);
2820 parse_error(cfile, "comma expected.");
2824 if (!parse_numeric_expression(arg, cfile, lose)) {
2827 parse_error(cfile,
2833 token = next_token(&val, NULL, cfile);
2838 if (!parse_numeric_expression(arg, cfile, lose))
2842 token = next_token(&val, NULL, cfile);
2845 parse_error(cfile, "right parenthesis expected.");
2850 skip_token(&val, NULL, cfile);
2853 cfile->issue_counter++;
2856 token = next_token(&val, NULL, cfile);
2861 if (!parse_data_expression(arg, cfile, lose))
2865 token = next_token(&val, NULL, cfile);
2870 if (!parse_numeric_expression(arg, cfile, lose))
2874 token = next_token(&val, NULL, cfile);
2880 skip_token(&val, NULL, cfile);
2883 token = next_token(&val, NULL, cfile);
2887 if (!parse_data_expression(nexp, cfile, lose))
2890 token = next_token(&val, NULL, cfile);
2895 cfile->issue_counter++;
2901 skip_token(&val, NULL, cfile);
2904 token = next_token(&val, NULL, cfile);
2908 if (!parse_data_expression(nexp, cfile, lose))
2911 token = next_token(&val, NULL, cfile);
2916 cfile->issue_counter++;
2922 skip_token(&val, NULL, cfile);
2925 cfile->issue_counter++;
2928 token = next_token(&val, NULL, cfile);
2933 if (!parse_data_expression(arg, cfile, lose))
2937 token = next_token(&val, NULL, cfile);
2943 if (!parse_data_expression(arg, cfile, lose))
2946 token = next_token(&val, NULL, cfile);
2963 skip_token(&val, NULL, cfile);
2966 cfile->issue_counter++;
2969 token = next_token(&val, NULL, cfile);
2974 if (!parse_numeric_expression(arg, cfile, lose))
2978 token = next_token(&val, NULL, cfile);
2983 if (!parse_numeric_expression(arg, cfile, lose))
2987 token = next_token(&val, NULL, cfile);
2992 if (!parse_data_expression(arg, cfile, lose))
2996 token = next_token(&val, NULL, cfile);
3001 if (!parse_data_expression(arg, cfile, lose))
3005 token = next_token(&val, NULL, cfile);
3011 skip_token(&val, NULL, cfile);
3014 cfile->issue_counter++;
3017 token = next_token(&val, NULL, cfile);
3022 if (!(parse_numeric_expression(arg, cfile, lose)))
3026 token = next_token(&val, NULL, cfile);
3031 if (!(parse_data_expression(arg, cfile, lose)))
3035 token = next_token(&val, NULL, cfile);
3043 skip_token(&val, NULL, cfile);
3046 cfile->issue_counter++;
3049 token = next_token(&val, NULL, cfile);
3055 if (!(parse_data_expression(arg, cfile, lose)))
3059 token = next_token(&val, NULL, cfile);
3068 skip_token(&val, NULL, cfile);
3070 option = parse_option_name(cfile, ISC_FALSE, &known);
3084 cfile->issue_counter++;
3090 TAILQ_CONCAT(&nexp->comments, &cfile->comments);
3096 skip_token(&val, NULL, cfile);
3099 cfile->issue_counter++;
3104 skip_token(&val, NULL, cfile);
3107 cfile->issue_counter++;
3112 skip_token(&val, NULL, cfile);
3115 cfile->issue_counter++;
3120 skip_token(&val, NULL, cfile);
3123 cfile->issue_counter++;
3128 skip_token(&val, NULL, cfile);
3131 cfile->issue_counter++;
3136 skip_token(&val, NULL, cfile);
3139 cfile->issue_counter++;
3144 skip_token(&val, NULL, cfile);
3148 cfile->issue_counter++;
3153 skip_token(&val, NULL, cfile);
3156 cfile->issue_counter++;
3161 skip_token(&val, NULL, cfile);
3164 cfile->issue_counter++;
3167 token = next_token(&val, NULL, cfile);
3172 if (!parse_numeric_expression(arg, cfile, lose))
3176 token = next_token(&val, NULL, cfile);
3181 if (!parse_numeric_expression(arg, cfile, lose))
3185 token = next_token(&val, NULL, cfile);
3191 skip_token(&val, &len, cfile);
3196 skip_token(&val, NULL, cfile);
3199 cfile->issue_counter++;
3201 token = next_token(&val, NULL, cfile);
3203 parse_error(cfile, "left parenthesis expected.");
3205 if (!parse_data_expression(nexp, cfile, lose)) {
3207 parse_error(cfile,
3212 token = next_token(&val, NULL, cfile);
3214 parse_error(cfile, "comma expected.");
3216 token = next_token(&val, NULL, cfile);
3218 parse_error(cfile, "number expected.");
3233 parse_error(cfile, "unsupported integer size %s", val);
3236 token = next_token(&val, NULL, cfile);
3238 parse_error(cfile, "right parenthesis expected.");
3242 skip_token(&val, NULL, cfile);
3245 cfile->issue_counter++;
3247 token = next_token(&val, NULL, cfile);
3249 parse_error(cfile, "left parenthesis expected.");
3251 if (!parse_numeric_expression(nexp, cfile, lose))
3252 parse_error(cfile, "expecting numeric expression.");
3254 token = next_token(&val, NULL, cfile);
3256 parse_error(cfile, "comma expected.");
3258 token = next_token(&val, NULL, cfile);
3260 parse_error(cfile, "number expected.");
3275 parse_error(cfile, "unsupported integer size %s", val);
3278 token = next_token(&val, NULL, cfile);
3280 parse_error(cfile, "right parenthesis expected.");
3288 skip_token(&val, NULL, cfile);
3297 mapSet(expr, createHexa(parse_hexa(cfile)), "const-data");
3301 skip_token(&val, NULL, cfile);
3311 skip_token(&val, NULL, cfile);
3321 skip_token(&val, NULL, cfile);
3331 skip_token(&val, NULL, cfile);
3341 skip_token(&val, NULL, cfile);
3351 skip_token(&val, NULL, cfile);
3361 skip_token(&val, NULL, cfile);
3371 skip_token(&val, NULL, cfile);
3381 skip_token(&val, NULL, cfile);
3391 skip_token(&val, NULL, cfile);
3401 skip_token(&val, NULL, cfile);
3411 skip_token(&val, NULL, cfile);
3421 skip_token(&val, NULL, cfile);
3431 skip_token(&val, NULL, cfile);
3441 skip_token(&val, NULL, cfile);
3451 skip_token(&val, NULL, cfile);
3461 skip_token(&val, NULL, cfile);
3471 skip_token(&val, NULL, cfile);
3481 skip_token(&val, NULL, cfile);
3482 token = next_token(&val, NULL, cfile);
3486 token = next_token(&val, NULL, cfile);
3488 parse_error(cfile, "%s can't be a variable name", val);
3492 cfile->issue_counter++;
3494 token = next_token(&val, NULL, cfile);
3501 skip_token(&val, NULL, cfile);
3504 cfile->issue_counter++;
3507 token = next_token(NULL, NULL, cfile);
3511 token = next_token(NULL, NULL, cfile);
3517 skip_token(&val, NULL, cfile);
3518 token = next_token(NULL, NULL, cfile);
3523 token = next_token(&val, NULL, cfile);
3525 parse_error(cfile, "Expecting quoted literal: "
3529 cfile->issue_counter++;
3532 token = next_token(NULL, NULL, cfile);
3538 skip_token(&val, NULL, cfile);
3541 cfile->issue_counter++;
3544 token = next_token(&val, NULL, cfile);
3549 if (!parse_numeric_expression(arg, cfile, lose))
3553 token = next_token(&val, NULL, cfile);
3558 if (!parse_data_expression(arg, cfile, lose))
3562 token = next_token(&val, NULL, cfile);
3573 skip_token(&val, NULL, cfile);
3579 token = peek_token(&val, NULL, cfile);
3583 cfile->issue_counter++;
3588 skip_token(&val, NULL, cfile);
3591 cfile->issue_counter++;
3600 if (!parse_expression(arg, cfile, lose, context_any,
3603 parse_error(cfile,
3605 skip_to_semi(cfile);
3609 token = next_token(&val, NULL, cfile);
3612 parse_error(cfile, "Right parenthesis expected.");
3622 parse_expression(struct element *expr, struct parse *cfile,
3637 if (!parse_non_binary(rhs, cfile, lose, context)) {
3643 parse_error(cfile,
3652 token = peek_token(&val, NULL, cfile);
3655 skip_token(&val, NULL, cfile);
3656 token = peek_token(&val, NULL, cfile);
3658 parse_error(cfile, "! in boolean context without =");
3669 skip_token(&val, NULL, cfile);
3670 token = peek_token(&val, NULL, cfile);
3677 parse_error(cfile, "expecting ~= or ~~ operator");
3748 skip_token(&val, NULL, cfile);
3763 skip_token(&val, NULL, cfile);
3768 if (!parse_expression(rhs, cfile, lose, op_context(next_op),
3771 parse_error(cfile,
3786 parse_error(cfile, "illegal expression relating "
3800 parse_error(cfile, "expecting data/numeric "
3811 parse_error(cfile,
3823 parse_error(cfile,
3854 parse_error(cfile,
3879 skip_token(&val, NULL, cfile);
3935 struct parse *cfile,
3953 save_parse_state(cfile);
3955 token = next_raw_token(&val, &len, cfile);
3966 restore_parse_state(cfile);
3977 parse_error(cfile, "unknown format for option %s.%s\n",
3983 return parse_option_binary(expr, cfile, option, ISC_FALSE);
3986 parse_error(cfile, "unsupported format %s for option %s.%s\n",
3991 save_parse_state(cfile);
4003 item = parse_option_token(cfile, fmt, &require_binary,
4008 restore_parse_state(cfile);
4009 return parse_option_binary(expr, cfile, option,
4013 parse_error(cfile, "parse_option_data failed");
4019 token = peek_token(&val, NULL, cfile);
4022 skip_token(&val, NULL, cfile);
4052 parse_option_binary(struct element *expr, struct parse *cfile,
4097 token = peek_token(&val, NULL, cfile);
4104 item = parse_option_token_binary(cfile, fmt);
4109 parse_error(cfile,
4121 parse_error(cfile,
4130 parse_error(cfile, "parse_option_token_binary "
4136 token = peek_token(&val, NULL, cfile);
4139 skip_token(&val, NULL, cfile);
4166 cfile->issue_counter++;
4174 parse_option_textbin(struct parse *cfile, struct option *option)
4184 parse_error(cfile, "unknown format for option %s.%s\n",
4188 if (!parse_option_binary(expr, cfile, option, ISC_FALSE))
4189 parse_error(cfile, "can't parse binary option data");
4192 parse_error(cfile, "can't get binary option data");
4194 parse_error(cfile, "option data must be binary");
4198 if (!parse_option_data(expr, cfile, option))
4199 parse_error(cfile, "can't parse text option data");
4202 parse_error(cfile, "can't get test option data");
4204 parse_error(cfile, "option data must be a string");
4217 struct parse *cfile,
4230 return parse_config_statement(result, cfile, option, op);
4233 TAILQ_CONCAT(&opt_data->comments, &cfile->comments);
4240 cfile->issue_counter++;
4299 token = peek_token(&val, NULL, cfile);
4309 skip_token(&val, NULL, cfile);
4315 skip_token(&val, NULL, cfile);
4319 if (!parse_data_expression(expr, cfile, &lose)) {
4324 parse_error(cfile,
4351 parse_error(cfile, "can't get const-data");
4357 cfile->issue_counter++;
4361 if (!parse_option_data(opt_data, cfile, option))
4365 parse_semi(cfile);
4373 for (where = cfile->stack_top; where > 0; --where) {
4374 if (cfile->stack[where]->kind != PARAMETER)
4378 opt_data_list = mapGet(cfile->stack[where], "option-data");
4381 mapSet(cfile->stack[where], opt_data_list, "option-data");
4393 parse_option_token(struct parse *cfile, const char *fmt,
4405 token = next_token(&val, &len, cfile);
4407 parse_error(cfile, "expecting identifier.");
4410 token = peek_token(&val, NULL, cfile);
4415 token = next_token(&val, &len, cfile);
4417 parse_error(cfile, "expecting string "
4423 token = peek_token(&val, NULL, cfile);
4425 return parse_hexa(cfile);
4427 token = next_token(&val, &len, cfile);
4429 parse_error(cfile, "expecting string "
4435 return parse_domain_list(cfile, ISC_FALSE);
4439 item = parse_host_name(cfile);
4441 parse_error(cfile, "not a valid domain name.");
4445 token = next_token(&val, &len, cfile);
4447 parse_error(cfile, "expecting string.");
4454 return parse_ip_addr_or_hostname(cfile, ISC_FALSE);
4458 return parse_ip6_addr_txt(cfile);
4461 token = next_token(&val, NULL, cfile);
4472 token = next_token(&val, NULL, cfile);
4475 parse_error(cfile, "expecting number.");
4482 token = next_token(&val, NULL, cfile);
4484 parse_error(cfile, "expecting identifier.");
4499 parse_error(cfile, "expecting boolean.");
4502 token = peek_token(&val, NULL, cfile);
4504 parse_error(cfile, "semicolon expected.");
4508 parse_error(cfile, "Bad format '%c' in parse_option_token.",
4516 parse_option_token_binary(struct parse *cfile, const char *fmt)
4526 token = next_token(&val, &len, cfile);
4530 parse_error(cfile, "expecting identifier.");
4537 token = peek_token(&val, NULL, cfile);
4539 return parse_hexa(cfile);
4540 token = next_token(&val, &len, cfile);
4544 parse_error(cfile, "expecting string "
4550 item = parse_domain_list(cfile, ISC_TRUE);
4554 parse_error(cfile, "parse_domain_list failed");
4559 item = parse_host_name(cfile);
4561 parse_error(cfile, "not a valid domain name.");
4564 cfile, "too long domain name.");
4568 token = next_token(&val, &len, cfile);
4572 parse_error(cfile, "expecting string.");
4577 item = parse_ip_addr_or_hostname(cfile, ISC_FALSE);
4581 item = parse_ip6_addr(cfile);
4585 token = next_token(&val, NULL, cfile);
4592 token = next_token(&val, NULL, cfile);
4598 parse_error(cfile, "expecting number.");
4600 convert_num(cfile, buf, val, 0, 32);
4605 token = next_token(&val, NULL, cfile);
4608 convert_num(cfile, buf, val, 0, 16);
4613 token = next_token(&val, NULL, cfile);
4616 convert_num(cfile, buf, val, 0, 8);
4620 token = next_token(&val, NULL, cfile);
4624 parse_error(cfile, "expecting identifier.");
4636 parse_error(cfile, "expecting boolean.");
4639 token = peek_token(&val, NULL, cfile);
4641 parse_error(cfile, "semicolon expected.");
4645 parse_error(cfile, "Bad format '%c' in parse_option_token.",
4651 parse_domain_list(struct parse *cfile, isc_boolean_t binary)
4664 skip_token(&val, NULL, cfile);
4670 token = next_token(&val, &len, cfile);
4673 parse_error(cfile, "Expecting a domain string.");
4681 parse_error(cfile, "not a valid domain name.");
4687 token = peek_token(&val, NULL, cfile);
4698 struct parse *cfile,
4710 token = peek_token(&val, NULL, cfile);
4713 parse_error(cfile, "unexpected end of file");
4715 parse_error(cfile, "empty config option");
4717 parse_error(cfile, "multiple value config option");
4723 token = next_token(&val, &len, cfile);
4725 parse_error(cfile, "expecting identifier.");
4730 token = next_token(&val, &len, cfile);
4732 data = parse_cshl(cfile);
4736 parse_error(cfile, "expecting string "
4742 data = parse_host_name(cfile);
4744 parse_error(cfile, "not a valid domain name.");
4749 token = next_token(&val, &len, cfile);
4754 token = next_token(&val, &len, cfile);
4756 parse_error(cfile, "identifier expected");
4761 data = parse_ip_addr_or_hostname(cfile, ISC_FALSE);
4763 parse_error(cfile, "expecting IP address of hostname");
4768 data = parse_ip6_addr_txt(cfile);
4770 parse_error(cfile, "expecting IPv6 address");
4775 token = next_token(&val, NULL, cfile);
4782 token = next_token(&val, NULL, cfile);
4785 parse_error(cfile, "expecting number.");
4786 convert_num(cfile, (unsigned char *)&u32, val, 0, 32);
4791 token = next_token(&val, NULL, cfile);
4793 parse_error(cfile, "expecting number.");
4794 convert_num(cfile, (unsigned char *)&u16, val, 0, 16);
4799 token = next_token(&val, NULL, cfile);
4801 parse_error(cfile, "expecting number.");
4802 convert_num(cfile, (unsigned char *)&u8, val, 0, 8);
4807 token = next_token(&val, NULL, cfile);
4809 parse_error(cfile, "expecting boolean.");
4820 parse_error(cfile, "expecting boolean.");
4824 parse_error(cfile, "Bad format '%c' in parse_config_data.",
4837 struct parse *cfile,
4851 TAILQ_CONCAT(&config->comments, &cfile->comments);
4858 cfile->issue_counter++;
4891 token = peek_token(&val, NULL, cfile);
4901 skip_token(&val, NULL, cfile);
4904 skip_token(&val, NULL, cfile);
4908 if (!parse_data_expression(expr, cfile, &lose)) {
4913 parse_error(cfile,
4919 if (!parse_config_data(config, cfile, option))
4923 parse_semi(cfile);
4931 for (where = cfile->stack_top; where > 0; --where) {
4932 if ((cfile->stack[where]->kind == PARAMETER) ||
4933 (cfile->stack[where]->kind == POOL_DECL))
4939 config_list = mapGet(cfile->stack[where], "config");
4943 mapSet(cfile->stack[where], config_list, "config");
4953 config_def_valid_lifetime(config, cfile);
4956 config_max_valid_lifetime(config, cfile);
4959 config_min_valid_lifetime(config, cfile);
4962 config_file(config, cfile);
4965 config_sname(config, cfile);
4968 config_next_server(config, cfile);
4971 parse_error(cfile, "authoritative is a statement, "
4974 config_vendor_option_space(config, cfile);
4977 config_site_option_space(config, cfile);
4980 config_qualifying_suffix(config, cfile);
4983 config_enable_updates(config, cfile);
4986 config_ddns_update_style(config, cfile);
4989 config_preferred_lifetime(config, cfile);
4992 config_match_client_id(config, cfile);
4995 config_echo_client_id(config, cfile);
4998 parse_error(cfile, "unsupported config option %s (%u)",
5006 config_def_valid_lifetime(struct element *config, struct parse *cfile)
5015 for (scope = cfile->stack_top; scope > 0; --scope) {
5016 int kind = cfile->stack[scope]->kind;
5033 cfile->issue_counter++;
5041 mapSet(cfile->stack[scope], value, "valid-lifetime");
5045 config_min_valid_lifetime(struct element *config, struct parse *cfile)
5054 for (scope = cfile->stack_top; scope > 0; --scope) {
5055 int kind = cfile->stack[scope]->kind;
5072 cfile->issue_counter++;
5080 mapSet(cfile->stack[scope], value, "min-valid-lifetime");
5084 config_max_valid_lifetime(struct element *config, struct parse *cfile)
5093 for (scope = cfile->stack_top; scope > 0; --scope) {
5094 int kind = cfile->stack[scope]->kind;
5111 cfile->issue_counter++;
5119 mapSet(cfile->stack[scope], value, "max-valid-lifetime");
5123 config_file(struct element *config, struct parse *cfile)
5131 parse_error(cfile, "boot-file-name is DHCPv4 only");
5135 for (scope = cfile->stack_top; scope > 0; --scope) {
5136 int kind = cfile->stack[scope]->kind;
5154 cfile->issue_counter++;
5156 mapSet(cfile->stack[scope], value, "boot-file-name");
5160 config_sname(struct element *config, struct parse *cfile)
5168 parse_error(cfile, "server-hostname is DHCPv4 only");
5172 for (scope = cfile->stack_top; scope > 0; --scope) {
5173 int kind = cfile->stack[scope]->kind;
5191 cfile->issue_counter++;
5193 mapSet(cfile->stack[scope], value, "server-hostname");
5197 config_next_server(struct element *config, struct parse *cfile)
5205 parse_error(cfile, "next-server is DHCPv4 only");
5209 for (scope = cfile->stack_top; scope > 0; --scope) {
5210 int kind = cfile->stack[scope]->kind;
5227 mapSet(cfile->stack[scope], value, "next-server");
5231 config_vendor_option_space(struct element *config, struct parse *cfile)
5240 parse_error(cfile, "vendor-option-space is DHCPv4 only");
5251 parse_error(cfile, "vendor-option-space has no value");
5253 parse_error(cfile,
5258 defs = mapGet(cfile->stack[cfile->stack_top], "option-def");
5261 mapSet(cfile->stack[cfile->stack_top], defs, "option-def");
5294 opts = mapGet(cfile->stack[cfile->stack_top], "option-data");
5297 mapSet(cfile->stack[cfile->stack_top], opts, "option-data");
5303 config_site_option_space(struct element *config, struct parse *cfile)
5311 parse_error(cfile, "site-option-space is DHCPv4 only");
5315 parse_error(cfile, "site-option-space has no value");
5317 parse_error(cfile, "site-option-space value is not a string");
5319 defs = mapGet(cfile->stack[cfile->stack_top], "option-def");
5322 mapSet(cfile->stack[cfile->stack_top], defs, "option-def");
5356 config_qualifying_suffix(struct element *config, struct parse *cfile)
5363 for (scope = cfile->stack_top; scope > 0; --scope)
5364 if ((cfile->stack[scope]->kind != PARAMETER) ||
5365 (cfile->stack[scope]->kind != POOL_DECL))
5367 if (cfile->stack[scope]->kind != ROOT_GROUP) {
5374 cfile->issue_counter++;
5375 mapSet(cfile->stack[scope], value, "qualifying-suffix");
5379 d2 = mapGet(cfile->stack[1], "dhcp-ddns");
5383 mapSet(cfile->stack[1], d2, "dhcp-ddns");
5391 config_enable_updates(struct element *config, struct parse *cfile)
5398 for (scope = cfile->stack_top; scope > 0; --scope)
5399 if ((cfile->stack[scope]->kind != PARAMETER) ||
5400 (cfile->stack[scope]->kind != POOL_DECL))
5402 if (cfile->stack[scope]->kind != ROOT_GROUP) {
5409 cfile->issue_counter++;
5410 mapSet(cfile->stack[scope], value, "enable-updates");
5414 d2 = mapGet(cfile->stack[1], "dhcp-ddns");
5417 mapSet(cfile->stack[1], d2, "dhcp-ddns");
5431 config_ddns_update_style(struct element *config, struct parse *cfile)
5446 for (scope = cfile->stack_top; scope > 0; --scope)
5447 if ((cfile->stack[scope]->kind != PARAMETER) ||
5448 (cfile->stack[scope]->kind != POOL_DECL))
5455 cfile->issue_counter++;
5456 mapSet(cfile->stack[scope], value, "ddns-update-style");
5459 for (scope = cfile->stack_top; scope > 0; --scope)
5460 if ((cfile->stack[scope]->kind != PARAMETER) ||
5461 (cfile->stack[scope]->kind != POOL_DECL))
5463 if (cfile->stack[scope]->kind != ROOT_GROUP) {
5470 cfile->issue_counter++;
5471 mapSet(cfile->stack[scope], value, "ddns-update-style");
5477 d2 = mapGet(cfile->stack[1], "dhcp-ddns");
5480 mapSet(cfile->stack[1], d2, "dhcp-ddns");
5494 config_preferred_lifetime(struct element *config, struct parse *cfile)
5503 parse_error(cfile, "preferred-lifetime is DHCPv6 only");
5507 for (scope = cfile->stack_top; scope > 0; --scope) {
5508 int kind = cfile->stack[scope]->kind;
5525 cfile->issue_counter++;
5534 if (mapContains(cfile->stack[scope], "preferred-lifetime")) {
5541 mapSet(cfile->stack[scope], value, "preferred-lifetime");
5545 mapSet(cfile->stack[scope], child, "renew-timer");
5548 mapSet(cfile->stack[scope], child, "rebind-timer");
5552 config_match_client_id(struct element *config, struct parse *cfile)
5560 parse_error(cfile, "ignore-client-uids is DHCPv4 only");
5566 for (scope = cfile->stack_top; scope > 0; --scope) {
5567 int kind = cfile->stack[scope]->kind;
5584 cfile->issue_counter++;
5592 mapSet(cfile->stack[scope], value, "match-client-id");
5596 config_echo_client_id(struct element *config, struct parse *cfile)
5603 parse_error(cfile, "echo-client-id is DHCPv4 only");
5607 for (scope = cfile->stack_top; scope > 0; --scope) {
5608 int kind = cfile->stack[scope]->kind;
5618 cfile->issue_counter++;
5620 mapSet(cfile->stack[scope], value, "echo-client-id");