Lines Matching refs:cfile
86 void skip_to_semi (cfile)
87 struct parse *cfile;
89 skip_to_rbrace(cfile, 0);
103 void skip_to_rbrace (cfile, brace_count)
104 struct parse *cfile;
114 token = peek_token(&val, NULL, cfile);
122 skip_token(&val, NULL, cfile);
129 skip_token(&val, NULL, cfile);
135 skip_token(&val, NULL, cfile);
140 token = next_token(&val, NULL, cfile);
144 int parse_semi (cfile)
145 struct parse *cfile;
150 token = next_token (&val, (unsigned *)0, cfile);
152 parse_warn (cfile, "semicolon expected.");
153 skip_to_semi (cfile);
161 int parse_string (cfile, sptr, lptr)
162 struct parse *cfile;
171 token = next_token (&val, &len, cfile);
173 parse_warn (cfile, "expecting a string");
174 skip_to_semi (cfile);
182 if (!parse_semi (cfile)) {
201 char *parse_host_name (cfile)
202 struct parse *cfile;
215 token = peek_token (&val, (unsigned *)0, cfile);
218 skip_token(&val, (unsigned *)0, cfile);
228 token = peek_token (&val, (unsigned *)0, cfile);
230 token = next_token (&val, (unsigned *)0, cfile);
273 int parse_ip_addr_or_hostname (expr, cfile, uniform)
275 struct parse *cfile;
286 token = peek_token (&val, (unsigned *)0, cfile);
296 save_parse_state(cfile);
297 skip_token(NULL, NULL, cfile);
298 if (next_token(NULL, NULL, cfile) == DOT &&
299 next_token(NULL, NULL, cfile) == NUMBER)
301 restore_parse_state(cfile);
304 parse_numeric_aggregate (cfile, addr, &len, DOT, 10, 8))
310 name = parse_host_name (cfile);
326 token = next_token (&val, (unsigned *)0, cfile);
327 parse_warn (cfile, "%s (%d): expecting IP address or hostname",
330 skip_to_semi (cfile);
341 int parse_ip_addr (cfile, addr)
342 struct parse *cfile;
346 if (parse_numeric_aggregate (cfile, addr -> iabuf,
377 parse_ip6_addr(struct parse *cfile, struct iaddr *addr) {
389 token = peek_token(&val, NULL, cfile);
403 next_raw_token(&val, NULL, cfile);
406 parse_warn(cfile, "Invalid IPv6 address.");
407 skip_to_semi(cfile);
416 token = peek_raw_token(&val, NULL, cfile);
424 parse_warn(cfile, "Invalid IPv6 address.");
425 skip_to_semi(cfile);
438 struct parse *cfile) {
441 if (!parse_ip6_addr(cfile, &addr)) {
451 parse_ip6_prefix(struct parse *cfile, struct iaddr *addr, u_int8_t *plen) {
456 if (!parse_ip6_addr(cfile, addr)) {
459 token = next_token(&val, NULL, cfile);
461 parse_warn(cfile, "Slash expected.");
463 skip_to_semi(cfile);
466 token = next_token(&val, NULL, cfile);
468 parse_warn(cfile, "Number expected.");
470 skip_to_semi(cfile);
475 parse_warn(cfile, "Invalid IPv6 prefix length.");
476 skip_to_semi(cfile);
480 parse_warn(cfile, "network mask too short.");
481 skip_to_semi(cfile);
494 parse_ip_addr_with_subnet(cfile, match)
495 struct parse *cfile;
504 if (parse_ip_addr(cfile, &match->addr)) {
508 token = peek_token(&val, NULL, cfile);
511 skip_token(&val, NULL, cfile);
512 token = next_token(&val, NULL, cfile);
515 parse_warn(cfile, "Invalid CIDR prefix length:"
524 parse_warn(cfile, "subnet prefix is out of "
574 parse_warn(cfile,
587 void parse_hardware_param (cfile, hardware)
588 struct parse *cfile;
596 token = next_token(&val, NULL, cfile);
614 parse_warn(cfile,
616 skip_to_semi(cfile);
630 token = peek_token(&val, NULL, cfile);
635 t = parse_numeric_aggregate(cfile, NULL, &hlen, COLON, 16, 8);
642 parse_warn(cfile, "hardware address too long");
653 token = next_token(&val, NULL, cfile);
655 parse_warn(cfile, "expecting semicolon.");
656 skip_to_semi(cfile);
662 void parse_lease_time (cfile, timep)
663 struct parse *cfile;
670 token = next_token (&val, (unsigned *)0, cfile);
672 parse_warn (cfile, "Expecting numeric lease time");
673 skip_to_semi (cfile);
676 convert_num(cfile, (unsigned char *)&num, val, 10, 32);
680 parse_semi (cfile);
706 unsigned char *parse_numeric_aggregate (cfile, buf,
708 struct parse *cfile;
730 token = peek_token (&val, (unsigned *)0, cfile);
737 cfile);
738 parse_warn (cfile, "too few numbers.");
740 skip_to_semi (cfile);
746 skip_token(&val, (unsigned *)0, cfile);
748 token = next_token (&val, (unsigned *)0, cfile);
751 parse_warn (cfile, "unexpected end of file");
758 parse_warn (cfile, "expecting numeric value.");
759 skip_to_semi (cfile);
775 convert_num (cfile, s, val, base, size);
800 convert_num (cfile, s, (char *)(c -> car), base, size);
810 void convert_num (cfile, buf, str, base, size)
811 struct parse *cfile;
855 parse_warn (cfile, "Bogus number: %s.", str);
859 parse_warn (cfile,
874 parse_warn (cfile,
880 parse_warn (cfile,
886 parse_warn (cfile,
906 parse_warn (cfile,
922 parse_warn (cfile,
948 parse_date_core(cfile)
949 struct parse *cfile;
959 token = peek_token(&val, NULL, cfile);
961 skip_token(&val, NULL, cfile); /* consume NEVER */
967 skip_token(&val, NULL, cfile); /* consume EPOCH */
968 token = peek_token(&val, NULL, cfile);
972 skip_token(&val, NULL, cfile);
973 parse_warn(cfile, "Seconds since epoch expected.");
977 skip_token(&val, NULL, cfile); /* consume number */
985 skip_token(&val, NULL, cfile);
986 parse_warn(cfile, "numeric day of week expected.");
989 skip_token(&val, NULL, cfile); /* consume day of week */
993 token = peek_token(&val, NULL, cfile);
996 skip_token(&val, NULL, cfile);
997 parse_warn(cfile, "numeric year expected.");
1000 skip_token(&val, NULL, cfile); /* consume year */
1011 token = peek_token(&val, NULL, cfile);
1014 skip_token(&val, NULL, cfile);
1015 parse_warn(cfile,
1019 skip_token(&val, NULL, cfile); /* consume SLASH */
1022 token = peek_token(&val, NULL, cfile);
1025 skip_token(&val, NULL, cfile);
1026 parse_warn(cfile, "numeric month expected.");
1029 skip_token(&val, NULL, cfile); /* consume month */
1033 token = peek_token(&val, NULL, cfile);
1036 skip_token(&val, NULL, cfile);
1037 parse_warn(cfile,
1041 skip_token(&val, NULL, cfile); /* consume SLASH */
1044 token = peek_token(&val, NULL, cfile);
1047 skip_token(&val, NULL, cfile);
1048 parse_warn(cfile, "numeric day of month expected.");
1051 skip_token(&val, NULL, cfile); /* consume day of month */
1055 token = peek_token(&val, NULL, cfile);
1058 skip_token(&val, NULL, cfile);
1059 parse_warn(cfile, "numeric hour expected.");
1062 skip_token(&val, NULL, cfile); /* consume hour */
1066 token = peek_token(&val, NULL, cfile);
1069 skip_token(&val, NULL, cfile);
1070 parse_warn(cfile,
1074 skip_token(&val, NULL, cfile); /* consume colon */
1077 token = peek_token(&val, NULL, cfile);
1080 skip_token(&val, NULL, cfile);
1081 parse_warn(cfile, "numeric minute expected.");
1084 skip_token(&val, NULL, cfile); /* consume minute */
1088 token = peek_token(&val, NULL, cfile);
1091 skip_token(&val, NULL, cfile);
1092 parse_warn(cfile,
1096 skip_token(&val, NULL, cfile); /* consume colon */
1099 token = peek_token(&val, NULL, cfile);
1102 skip_token(&val, NULL, cfile);
1103 parse_warn(cfile, "numeric second expected.");
1106 skip_token(&val, NULL, cfile); /* consume second */
1110 token = peek_token(&val, NULL, cfile);
1112 skip_token(&val, NULL, cfile); /* consume tzoff */
1115 skip_token(&val, NULL, cfile);
1116 parse_warn(cfile,
1158 parse_date(cfile)
1159 struct parse *cfile;
1162 guess = parse_date_core(cfile);
1165 if (!parse_semi(cfile))
1178 parse_option_name (cfile, allocate, known, opt)
1179 struct parse *cfile;
1194 token = next_token (&val, (unsigned *)0, cfile);
1196 parse_warn (cfile,
1199 skip_to_semi (cfile);
1206 token = peek_token (&val, (unsigned *)0, cfile);
1209 skip_token(&val, (unsigned *)0, cfile);
1212 token = next_token (&val, (unsigned *)0, cfile);
1214 parse_warn (cfile, "expecting identifier after '.'");
1216 skip_to_semi (cfile);
1225 parse_warn (cfile, "no option space named %s.", uname);
1226 skip_to_semi (cfile);
1257 parse_warn(cfile, "Option codes 0 and %u are illegal "
1260 skip_to_semi(cfile);
1302 parse_warn(cfile, "no option named %s in space %s",
1304 skip_to_semi (cfile);
1319 void parse_option_space_decl (cfile)
1320 struct parse *cfile;
1328 skip_token(&val, (unsigned *)0, cfile); /* Discard the SPACE token,
1331 token = next_token (&val, (unsigned *)0, cfile);
1333 parse_warn (cfile, "expecting identifier.");
1334 skip_to_semi (cfile);
1349 token = next_token(&val, NULL, cfile);
1355 token = next_token(&val, NULL, cfile);
1357 parse_warn(cfile, "expecting width token.");
1361 token = next_token(&val, NULL, cfile);
1363 parse_warn(cfile, "expecting number 1, 2, 4.");
1384 parse_warn(cfile, "invalid code width (%d), "
1392 token = next_token(&val, NULL, cfile);
1394 parse_warn(cfile, "expecting width token.");
1398 token = next_token(&val, NULL, cfile);
1400 parse_warn(cfile, "expecting number 1 or 2.");
1406 parse_warn(cfile, "invalid length width (%d) "
1414 token = next_token(&val, NULL, cfile);
1416 parse_warn(cfile, "expecting size token.");
1420 token = next_token(&val, NULL, cfile);
1422 parse_warn(cfile, "expecting a 10base number");
1431 parse_warn(cfile, "invalid hash length: %d",
1439 parse_warn(cfile, "Unexpected token.");
1542 int parse_option_code_definition (cfile, option)
1543 struct parse *cfile;
1561 token = next_token (&val, (unsigned *)0, cfile);
1563 parse_warn (cfile, "expecting option code number.");
1564 skip_to_semi (cfile);
1569 token = next_token (&val, (unsigned *)0, cfile);
1571 parse_warn (cfile, "expecting \"=\"");
1572 skip_to_semi (cfile);
1577 token = next_token (&val, (unsigned *)0, cfile);
1579 token = next_token (&val, (unsigned *)0, cfile);
1581 parse_warn (cfile, "expecting \"of\".");
1582 skip_to_semi (cfile);
1586 token = next_token (&val, (unsigned *)0, cfile);
1591 token = next_token (&val, (unsigned *)0, cfile);
1597 parse_warn (cfile,
1599 skip_to_semi (cfile);
1606 parse_warn (cfile, "no nested arrays.");
1607 skip_to_rbrace (cfile, recordp);
1609 skip_to_semi (cfile);
1612 token = next_token (&val, (unsigned *)0, cfile);
1614 parse_warn (cfile, "expecting \"of\".");
1615 skip_to_semi (cfile);
1619 token = next_token (&val, (unsigned *)0, cfile);
1621 parse_warn (cfile,
1623 skip_to_rbrace (cfile, recordp + 1);
1624 skip_to_semi (cfile);
1634 token = next_token (&val, (unsigned *)0, cfile);
1636 parse_warn (cfile, "expecting number.");
1637 skip_to_rbrace (cfile, recordp);
1639 skip_to_semi (cfile);
1653 parse_warn (cfile,
1655 skip_to_rbrace (cfile, recordp);
1657 skip_to_semi (cfile);
1664 token = next_token (&val, (unsigned *)0, cfile);
1666 parse_warn (cfile, "expecting \"integer\" keyword.");
1667 skip_to_rbrace (cfile, recordp);
1669 skip_to_semi (cfile);
1688 token = peek_token(&val, NULL, cfile);
1690 skip_token(&val, NULL, cfile);
1700 parse_warn (cfile, "arrays of text strings not %s",
1702 skip_to_rbrace (cfile, recordp);
1704 skip_to_semi (cfile);
1714 token = next_token (&val, (unsigned *)0, cfile);
1716 parse_warn (cfile,
1718 skip_to_semi (cfile);
1724 parse_warn(cfile, "unknown option space %s", val);
1725 skip_to_semi (cfile);
1740 parse_warn (cfile, "array incompatible with zerolen.");
1741 skip_to_rbrace (cfile, recordp);
1743 skip_to_semi (cfile);
1750 parse_warn (cfile, "unknown data type %s", val);
1751 skip_to_rbrace (cfile, recordp);
1753 skip_to_semi (cfile);
1759 parse_warn (cfile, "too many types in record.");
1760 skip_to_rbrace (cfile, recordp);
1762 skip_to_semi (cfile);
1768 token = next_token (&val, (unsigned *)0, cfile);
1771 parse_warn (cfile,
1773 skip_to_rbrace (cfile, 1);
1774 skip_to_semi (cfile);
1782 parse_warn (cfile,
1785 skip_to_rbrace (cfile, 1);
1787 skip_to_semi (cfile);
1790 token = next_token (&val, (unsigned *)0, cfile);
1794 parse_warn (cfile, "expecting right brace.");
1795 skip_to_rbrace (cfile, 1);
1797 skip_to_semi (cfile);
1801 if (!parse_semi (cfile)) {
1802 parse_warn (cfile, "semicolon expected.");
1803 skip_to_semi (cfile);
1805 skip_to_semi (cfile);
1809 parse_warn (cfile,
1866 int parse_base64 (data, cfile)
1868 struct parse *cfile;
1899 (void)next_token(&val, &l, cfile);
1911 (void)peek_token(&val, NULL, cfile);
1928 parse_warn (cfile, "can't allocate buffer for base64 data.");
1939 parse_warn(cfile,
1946 parse_warn(cfile,
1983 parse_warn(cfile,
2007 int parse_cshl (data, cfile)
2009 struct parse *cfile;
2021 token = next_token (&val, (unsigned *)0, cfile);
2023 parse_warn (cfile, "expecting hexadecimal number.");
2024 skip_to_semi (cfile);
2043 convert_num (cfile, &ibuf [ilen++], val, 16, 8);
2045 token = peek_token (&val, (unsigned *)0, cfile);
2048 skip_token(&val, (unsigned *)0, cfile);
2084 int parse_executable_statements (statements, cfile, lose, case_context)
2086 struct parse *cfile;
2093 while (parse_executable_statement (next, cfile, lose, case_context))
2100 int parse_executable_statement (result, cfile, lose, case_context)
2102 struct parse *cfile;
2122 token = peek_token (&val, (unsigned *)0, cfile);
2125 skip_token(&val, NULL, cfile);
2126 token = next_token(&val, NULL, cfile);
2132 parse_warn(cfile, "Expecting 'local' or 'default'.");
2134 skip_to_semi(cfile);
2139 token = next_token(&val, NULL, cfile);
2141 parse_warn(cfile, "Expecting a semicolon.");
2150 skip_token(&val, (unsigned *)0, cfile);
2151 return parse_if_statement (result, cfile, lose);
2154 skip_token(&val, (unsigned *)0, cfile);
2155 token = next_token (&val, (unsigned *)0, cfile);
2157 parse_warn (cfile, "expecting class name.");
2158 skip_to_semi (cfile);
2165 parse_warn (cfile, "class %s: %s",
2167 skip_to_semi (cfile);
2171 if (!parse_semi (cfile)) {
2182 skip_token(&val, (unsigned *)0, cfile);
2183 if (!parse_semi (cfile)) {
2193 skip_token(&val, (unsigned *)0, cfile);
2195 status = parse_option_name (cfile, 0, &known, &option);
2200 status = parse_option_statement(result, cfile, 1, option,
2207 skip_token(&val, (unsigned *)0, cfile);
2209 status = parse_option_name (cfile, 0, &known, &option);
2214 status = parse_option_statement(result, cfile, 1, option,
2228 skip_token(&val, (unsigned *)0, cfile);
2230 if (!libdhcp_callbacks.parse_allow_deny (&cache, cfile, flag))
2239 skip_token(&val, (unsigned *)0, cfile);
2240 token = peek_token (&val, (unsigned *)0, cfile);
2244 status = parse_option_name (cfile, 0, &known, &option);
2249 status = parse_option_statement(result, cfile, 1, option,
2255 skip_token(&val, (unsigned *)0, cfile);
2257 status = parse_option_name (cfile, 0, &known, &option);
2262 status = parse_option_statement(result, cfile, 1, option,
2268 skip_token(&val, (unsigned *)0, cfile);
2270 status = parse_option_name (cfile, 0, &known, &option);
2275 status = parse_option_statement(result, cfile, 1, option,
2281 skip_token(&val, (unsigned *)0, cfile);
2282 return parse_on_statement (result, cfile, lose);
2285 skip_token(&val, (unsigned *)0, cfile);
2286 return parse_switch_statement (result, cfile, lose);
2289 skip_token(&val, (unsigned *)0, cfile);
2291 parse_warn (cfile,
2294 skip_to_semi (cfile);
2298 cfile, lose, case_context);
2301 skip_token(&val, (unsigned *)0, cfile);
2303 parse_warn (cfile, "switch default statement in %s",
2317 skip_token(&val, (unsigned *)0, cfile);
2323 token = next_token (&val, (unsigned *)0, cfile);
2325 parse_warn (cfile,
2328 skip_to_semi (cfile);
2340 token = next_token (&val, (unsigned *)0, cfile);
2348 (unsigned *)0, cfile);
2352 parse_warn (cfile,
2354 skip_to_rbrace (cfile, 0);
2374 (unsigned *)0, cfile);
2378 parse_warn (cfile, "expecting right paren.");
2380 skip_to_semi (cfile);
2386 token = next_token (&val, (unsigned *)0, cfile);
2388 parse_warn (cfile, "expecting left brace.");
2402 (&expr -> data.func -> statements, cfile, lose,
2408 token = next_token (&val, (unsigned *)0, cfile);
2410 parse_warn (cfile, "expecting rigt brace.");
2415 parse_warn (cfile,
2422 cfile, lose, context_any,
2426 parse_warn (cfile,
2430 skip_to_semi (cfile);
2434 if (!parse_semi (cfile)) {
2443 skip_token(&val, (unsigned *)0, cfile);
2444 token = next_token (&val, (unsigned *)0, cfile);
2446 parse_warn (cfile,
2448 skip_to_semi (cfile);
2460 if (!parse_semi (cfile)) {
2468 skip_token(&val, (unsigned *)0, cfile);
2474 cfile, lose, context_data, /* XXX */
2477 parse_warn (cfile,
2481 skip_to_semi (cfile);
2485 if (!parse_semi (cfile)) {
2493 skip_token(&val, NULL, cfile);
2499 token = next_token(&val, NULL, cfile);
2501 parse_warn(cfile, "left parenthesis expected.");
2502 skip_to_semi(cfile);
2507 token = next_token(&val, &len, cfile);
2509 parse_warn(cfile, "Expecting a quoted string.");
2510 skip_to_semi(cfile);
2523 while((token = next_token(&val, NULL, cfile)) == COMMA) {
2528 cfile, lose)) {
2530 parse_warn (cfile,
2534 skip_to_semi(cfile);
2543 parse_warn(cfile, "right parenthesis expected.");
2544 skip_to_semi(cfile);
2549 if (!parse_semi (cfile)) {
2554 parse_warn(cfile, "define ENABLE_EXECUTE in site.h to "
2556 skip_to_semi(cfile);
2563 skip_token(&val, (unsigned *)0, cfile);
2570 cfile, lose, context_data,
2573 parse_warn (cfile,
2577 skip_to_semi (cfile);
2581 if (!parse_semi (cfile)) {
2589 skip_token(&val, (unsigned *)0, cfile);
2595 token = next_token (&val, (unsigned *)0, cfile);
2597 parse_warn (cfile, "left parenthesis expected.");
2598 skip_to_semi (cfile);
2603 token = peek_token (&val, (unsigned *)0, cfile);
2618 skip_token(&val, (unsigned *)0, cfile);
2619 token = next_token (&val, (unsigned *)0, cfile);
2621 parse_warn (cfile, "comma expected.");
2622 skip_to_semi (cfile);
2629 (&(*result) -> data.log.expr, cfile, lose))) {
2630 skip_to_semi (cfile);
2635 token = next_token (&val, (unsigned *)0, cfile);
2637 parse_warn (cfile, "right parenthesis expected.");
2638 skip_to_semi (cfile);
2643 token = next_token (&val, (unsigned *)0, cfile);
2645 parse_warn (cfile, "semicolon expected.");
2646 skip_to_semi (cfile);
2657 skip_token(&val, NULL, cfile);
2658 if (!parse_semi(cfile)) {
2672 skip_token(&val, (unsigned *)0, cfile);
2676 zone -> name = parse_host_name (cfile);
2678 parse_warn (cfile, "expecting hostname.");
2681 skip_to_semi (cfile);
2689 parse_warn (cfile, "no trailing '.' on zone");
2698 if (!parse_zone (zone, cfile))
2702 parse_warn (cfile, "dns zone key %s: %s",
2712 skip_token(&val, (unsigned *)0, cfile);
2713 if (!parse_key (cfile)) {
2726 skip_token(&val, (unsigned *)0, cfile);
2728 (result, cfile, 1, option,
2743 cfile, lose, context_data,
2747 parse_warn (cfile, "expecting "
2751 skip_to_semi (cfile);
2755 if (!parse_semi (cfile)) {
2783 int parse_zone (struct dns_zone *zone, struct parse *cfile)
2791 token = next_token (&val, (unsigned *)0, cfile);
2793 parse_warn (cfile, "expecting left brace");
2798 token = peek_token (&val, (unsigned *)0, cfile);
2802 parse_warn (cfile,
2804 skip_to_semi (cfile);
2814 parse_warn (cfile, "more than one secondary.");
2815 skip_to_semi (cfile);
2822 skip_token(&val, (unsigned *)0, cfile);
2825 if (!parse_ip_addr_or_hostname (&expr, cfile, 0)) {
2826 parse_warn (cfile,
2828 skip_to_semi (cfile);
2849 token = next_token (&val, (unsigned *)0, cfile);
2852 parse_warn (cfile, "expecting semicolon.");
2853 skip_to_semi (cfile);
2860 parse_warn(cfile, "more than one primary6.");
2861 skip_to_semi(cfile);
2871 parse_warn(cfile, "more than one secondary6.");
2872 skip_to_semi(cfile);
2880 skip_token(&val, NULL, cfile);
2883 if (parse_ip6_addr_expr(&expr, cfile) == 0) {
2884 parse_warn(cfile, "expecting IPv6 addr.");
2885 skip_to_semi(cfile);
2904 token = next_token(&val, NULL, cfile);
2907 parse_warn(cfile, "expecting semicolon.");
2908 skip_to_semi(cfile);
2914 skip_token(&val, NULL, cfile);
2915 token = peek_token(&val, NULL, cfile);
2917 skip_token(&val, NULL, cfile);
2920 key_name = parse_host_name(cfile);
2922 parse_warn(cfile, "expecting key name.");
2923 skip_to_semi(cfile);
2934 parse_warn(cfile, "unknown key %s", val);
2937 if (!parse_semi(cfile))
2947 token = next_token(&val, NULL, cfile);
2949 parse_warn(cfile, "expecting right brace.");
2963 int parse_key (struct parse *cfile)
2977 token = peek_token (&val, (unsigned *)0, cfile);
2979 skip_token(&val, (unsigned *)0, cfile);
2986 key -> name = parse_host_name (cfile);
2988 parse_warn (cfile, "expecting key name.");
2989 skip_to_semi (cfile);
2994 token = next_token (&val, (unsigned *)0, cfile);
2996 parse_warn (cfile, "expecting left brace");
3001 token = next_token (&val, (unsigned *)0, cfile);
3005 parse_warn (cfile,
3010 key -> algorithm = parse_host_name (cfile);
3012 parse_warn (cfile,
3016 if (!parse_semi (cfile))
3051 parse_warn (cfile, "key %s: too many secrets",
3057 if (!parse_base64 (&ds, cfile))
3067 if (!parse_semi (cfile))
3077 parse_warn (cfile, "expecting right brace.");
3082 token = peek_token (&val, (unsigned *)0, cfile);
3084 skip_token(&val, (unsigned *)0, cfile);
3090 parse_warn (cfile, "tsig key %s: %s",
3098 skip_to_rbrace (cfile, 1);
3111 int parse_on_statement (result, cfile, lose)
3113 struct parse *cfile;
3124 token = next_token (&val, (unsigned *)0, cfile);
3143 parse_warn (cfile, "expecting a lease event type");
3144 skip_to_semi (cfile);
3149 token = next_token (&val, (unsigned *)0, cfile);
3157 parse_warn (cfile, "left brace expected.");
3158 skip_to_semi (cfile);
3164 cfile, lose, context_any)) {
3169 (unsigned *)0, cfile);
3175 token = next_token (&val, (unsigned *)0, cfile);
3177 parse_warn (cfile, "right brace expected.");
3178 skip_to_semi (cfile);
3191 int parse_switch_statement (result, cfile, lose)
3193 struct parse *cfile;
3203 token = next_token (&val, (unsigned *)0, cfile);
3205 parse_warn (cfile, "expecting left brace.");
3208 skip_to_semi (cfile);
3215 cfile, lose, context_data_or_numeric,
3218 parse_warn (cfile,
3225 token = next_token (&val, (unsigned *)0, cfile);
3227 parse_warn (cfile, "right paren expected.");
3231 token = next_token (&val, (unsigned *)0, cfile);
3233 parse_warn (cfile, "left brace expected.");
3237 (&(*result) -> data.s_switch.statements, cfile, lose,
3241 skip_to_rbrace (cfile, 1);
3246 token = next_token (&val, (unsigned *)0, cfile);
3248 parse_warn (cfile, "right brace expected.");
3259 int parse_case_statement (result, cfile, lose, case_context)
3261 struct parse *cfile;
3273 cfile, lose, case_context,
3277 parse_warn (cfile, "expecting %s expression.",
3283 skip_to_semi (cfile);
3288 token = next_token (&val, (unsigned *)0, cfile);
3290 parse_warn (cfile, "colon expected.");
3306 int parse_if_statement (result, cfile, lose)
3308 struct parse *cfile;
3320 token = peek_token (&val, (unsigned *)0, cfile);
3323 skip_token(&val, (unsigned *)0, cfile);
3329 cfile, lose)) {
3331 parse_warn (cfile, "boolean expression expected.");
3340 token = next_token (&val, (unsigned *)0, cfile);
3342 parse_warn (cfile, "expecting right paren.");
3348 token = next_token (&val, (unsigned *)0, cfile);
3350 parse_warn (cfile, "left brace expected.");
3351 skip_to_semi (cfile);
3357 cfile, lose, context_any)) {
3362 (unsigned *)0, cfile);
3368 token = next_token (&val, (unsigned *)0, cfile);
3370 parse_warn (cfile, "right brace expected.");
3371 skip_to_semi (cfile);
3376 token = peek_token (&val, (unsigned *)0, cfile);
3378 skip_token(&val, (unsigned *)0, cfile);
3379 token = peek_token (&val, (unsigned *)0, cfile);
3381 skip_token(&val, (unsigned *)0, cfile);
3383 cfile, lose)) {
3385 parse_warn (cfile,
3392 parse_warn (cfile, "left brace or if expected.");
3393 skip_to_semi (cfile);
3398 skip_token(&val, (unsigned *)0, cfile);
3401 cfile, lose, context_any))) {
3405 token = next_token (&val, (unsigned *)0, cfile);
3407 parse_warn (cfile, "right brace expected.");
3408 skip_to_semi (cfile);
3415 skip_token(&val, (unsigned *)0, cfile);
3417 cfile, lose)) {
3419 parse_warn (cfile,
3442 int parse_boolean_expression (expr, cfile, lose)
3444 struct parse *cfile;
3448 if (!parse_expression (expr, cfile, lose, context_boolean,
3455 parse_warn (cfile, "Expecting a boolean expression.");
3465 int parse_boolean (cfile)
3466 struct parse *cfile;
3471 (void)next_token(&val, NULL, cfile);
3479 parse_warn (cfile,
3481 skip_to_semi (cfile);
3484 parse_semi (cfile);
3509 int parse_data_expression (expr, cfile, lose)
3511 struct parse *cfile;
3515 if (!parse_expression (expr, cfile, lose, context_data,
3523 parse_warn (cfile, "Expecting a data expression.");
3536 int parse_numeric_expression (expr, cfile, lose)
3538 struct parse *cfile;
3542 if (!parse_expression (expr, cfile, lose, context_numeric,
3550 parse_warn (cfile, "Expecting a numeric expression.");
3559 int parse_non_binary (expr, cfile, lose, context)
3561 struct parse *cfile;
3574 token = peek_token (&val, (unsigned *)0, cfile);
3579 skip_token(&val, (unsigned *)0, cfile);
3580 token = next_token (&val, (unsigned *)0, cfile);
3582 parse_warn (cfile, "string expected.");
3583 skip_to_semi (cfile);
3591 parse_warn (cfile, "unknown collection.");
3602 skip_token(&val, NULL, cfile);
3607 cfile, lose, context_boolean)) {
3609 parse_warn (cfile, "expression expected");
3610 skip_to_semi (cfile);
3618 parse_warn (cfile, "boolean expression expected");
3619 skip_to_semi (cfile);
3626 skip_token(&val, (unsigned *)0, cfile);
3627 if (!parse_expression (expr, cfile, lose, context,
3630 parse_warn (cfile, "expression expected");
3631 skip_to_semi (cfile);
3636 token = next_token (&val, (unsigned *)0, cfile);
3639 parse_warn (cfile, "right paren expected");
3640 skip_to_semi (cfile);
3646 skip_token(&val, NULL, cfile);
3652 status = parse_option_name(cfile, 0, &known,
3663 skip_token(&val, (unsigned *)0, cfile);
3670 skip_token(&val, (unsigned *)0, cfile);
3677 skip_token(&val, (unsigned *)0, cfile);
3682 token = next_token (&val, (unsigned *)0, cfile);
3686 parse_warn (cfile, "left parenthesis expected.");
3692 cfile, lose)) {
3696 parse_warn (cfile,
3698 skip_to_semi (cfile);
3704 token = next_token (&val, (unsigned *)0, cfile);
3708 parse_warn (cfile, "comma expected.");
3715 (&(*expr) -> data.substring.offset,cfile, lose)) {
3718 parse_warn (cfile,
3720 skip_to_semi (cfile);
3727 token = next_token (&val, (unsigned *)0, cfile);
3732 (&(*expr) -> data.substring.len, cfile, lose))
3735 token = next_token (&val, (unsigned *)0, cfile);
3738 parse_warn (cfile, "right parenthesis expected.");
3746 skip_token(&val, (unsigned *)0, cfile);
3751 token = next_token (&val, (unsigned *)0, cfile);
3756 cfile, lose))
3759 token = next_token (&val, (unsigned *)0, cfile);
3764 cfile, lose))
3767 token = next_token (&val, (unsigned *)0, cfile);
3773 skip_token(&val, (unsigned *)0, cfile);
3778 token = next_token(&val, (unsigned *)0, cfile);
3782 if (!parse_data_expression(&(*expr)->data.lcase, cfile, lose))
3785 token = next_token(&val, (unsigned *)0, cfile);
3791 skip_token(&val, (unsigned *)0, cfile);
3796 token = next_token (&val, (unsigned *)0, cfile);
3801 cfile, lose))
3804 token = next_token(&val, (unsigned *)0, cfile);
3810 skip_token(&val, (unsigned *)0, cfile);
3815 token = next_token (&val, (unsigned *)0, cfile);
3820 cfile, lose))
3823 token = next_token (&val, (unsigned *)0, cfile);
3829 cfile, lose))
3832 token = next_token (&val, (unsigned *)0, cfile);
3852 skip_token(&val, (unsigned *)0, cfile);
3857 token = next_token (&val, (unsigned *)0, cfile);
3862 cfile, lose))
3865 token = next_token (&val, (unsigned *)0, cfile);
3870 cfile, lose))
3873 token = next_token (&val, (unsigned *)0, cfile);
3878 cfile, lose))
3881 token = next_token (&val, (unsigned *)0, cfile);
3886 cfile, lose))
3889 token = next_token (&val, (unsigned *)0, cfile);
3895 skip_token(&val, (unsigned *)0, cfile);
3900 token = next_token (&val, (unsigned *)0, cfile);
3905 (&(*expr) -> data.reverse.width, cfile, lose)))
3908 token = next_token (&val, (unsigned *)0, cfile);
3913 (&(*expr) -> data.reverse.buffer, cfile, lose)))
3916 token = next_token (&val, (unsigned *)0, cfile);
3924 skip_token(&val, (unsigned *)0, cfile);
3928 token = next_token (&val, (unsigned *)0, cfile);
3938 cfile, lose)))
3941 token = next_token (&val, (unsigned *)0, cfile
3966 skip_token(&val, (unsigned *)0, cfile);
3969 status = parse_option_name(cfile, 0, &known,
3980 skip_token(&val, (unsigned *)0, cfile);
3987 skip_token(&val, (unsigned *)0, cfile);
3994 skip_token(&val, (unsigned *)0, cfile);
4001 skip_token(&val, (unsigned *)0, cfile);
4008 skip_token(&val, (unsigned *)0, cfile);
4015 skip_token(&val, (unsigned *)0, cfile);
4022 skip_token(&val, (unsigned *)0, cfile);
4029 skip_token(&val, (unsigned *)0, cfile);
4036 skip_token(&val, (unsigned *)0, cfile);
4041 token = next_token (&val, (unsigned *)0, cfile);
4046 cfile, lose))
4049 token = next_token (&val, (unsigned *)0, cfile);
4054 cfile, lose))
4057 token = next_token (&val, (unsigned *)0, cfile);
4063 skip_token(&val, &len, cfile);
4070 skip_token(&val, (unsigned *)0, cfile);
4071 token = next_token (&val, (unsigned *)0, cfile);
4073 parse_warn (cfile, "left parenthesis expected.");
4082 cfile, lose)) {
4084 parse_warn (cfile,
4086 skip_to_semi (cfile);
4093 token = next_token (&val, (unsigned *)0, cfile);
4095 parse_warn (cfile, "comma expected.");
4101 token = next_token (&val, (unsigned *)0, cfile);
4103 parse_warn (cfile, "number expected.");
4122 parse_warn (cfile,
4125 skip_to_semi (cfile);
4130 token = next_token (&val, (unsigned *)0, cfile);
4132 parse_warn (cfile, "right parenthesis expected.");
4140 skip_token(&val, (unsigned *)0, cfile);
4141 token = next_token (&val, (unsigned *)0, cfile);
4143 parse_warn (cfile, "left parenthesis expected.");
4152 cfile, lose)) {
4153 parse_warn (cfile, "expecting numeric expression.");
4154 skip_to_semi (cfile);
4160 token = next_token (&val, (unsigned *)0, cfile);
4162 parse_warn (cfile, "comma expected.");
4168 token = next_token (&val, (unsigned *)0, cfile);
4170 parse_warn (cfile, "number expected.");
4189 parse_warn (cfile,
4192 skip_to_semi (cfile);
4197 token = next_token (&val, (unsigned *)0, cfile);
4199 parse_warn (cfile, "right parenthesis expected.");
4211 skip_token(&val, (unsigned *)0, cfile);
4224 if (!parse_cshl (&(*expr) -> data.const_data, cfile)) {
4234 skip_token(&val, (unsigned *)0, cfile);
4310 skip_token(&val, (unsigned *)0, cfile);
4311 token = next_token (&val, (unsigned *)0, cfile);
4315 token = next_token (&val, (unsigned *)0, cfile);
4317 parse_warn (cfile, "%s can't be a variable name", val);
4318 skip_to_semi (cfile);
4330 token = next_token (&val, (unsigned *)0, cfile);
4337 skip_token(&val, NULL, cfile);
4342 token = next_token(NULL, NULL, cfile);
4346 token = next_token(NULL, NULL, cfile);
4352 skip_token(&val, NULL, cfile);
4353 token = next_token(NULL, NULL, cfile);
4358 token = next_token(&val, NULL, cfile);
4360 parse_warn(cfile, "Expecting quoted literal: "
4362 skip_to_semi(cfile);
4370 token = next_token(NULL, NULL, cfile);
4376 skip_token(&val, NULL, cfile);
4381 token = next_token (&val, NULL, cfile);
4386 cfile, lose))
4389 token = next_token (&val, NULL, cfile);
4394 cfile, lose))
4397 token = next_token (&val, NULL, cfile);
4408 skip_token(&val, (unsigned *)0, cfile);
4417 token = peek_token (&val, (unsigned *)0, cfile);
4426 skip_token(&val, (unsigned *)0, cfile);
4439 cfile, lose, context_any,
4443 parse_warn (cfile,
4447 skip_to_semi (cfile);
4452 token = next_token (&val, (unsigned *)0, cfile);
4455 parse_warn (cfile, "Right parenthesis expected.");
4456 skip_to_semi (cfile);
4468 int parse_expression (expr, cfile, lose, context, plhs, binop)
4470 struct parse *cfile;
4492 if (!parse_non_binary (&rhs, cfile, lose, context)) {
4498 parse_warn (cfile,
4501 skip_to_semi (cfile);
4512 token = peek_token (&val, (unsigned *)0, cfile);
4515 skip_token(&val, (unsigned *)0, cfile);
4516 token = peek_token (&val, (unsigned *)0, cfile);
4518 parse_warn (cfile, "! in boolean context without =");
4520 skip_to_semi (cfile);
4536 skip_token(&val, NULL, cfile);
4537 token = peek_token(&val, NULL, cfile);
4544 parse_warn(cfile, "expecting ~= or ~~ operator");
4546 skip_to_semi(cfile);
4554 parse_warn(cfile, "No support for regex operator.");
4556 skip_to_semi(cfile);
4628 skip_token(&val, (unsigned *)0, cfile);
4643 skip_token(&val, (unsigned *)0, cfile);
4648 if (!parse_expression (&rhs, cfile, lose, op_context (next_op),
4651 parse_warn (cfile,
4666 parse_warn (cfile, "illegal expression relating different types");
4667 skip_to_semi (cfile);
4681 parse_warn (cfile, "expecting data/numeric expression");
4682 skip_to_semi (cfile);
4692 parse_warn(cfile, "expecting data expression");
4693 skip_to_semi(cfile);
4710 parse_warn (cfile, "expecting boolean expressions");
4711 skip_to_semi (cfile);
4728 parse_warn (cfile, "expecting numeric expressions");
4729 skip_to_semi (cfile);
4758 skip_token(&val, (unsigned *)0, cfile);
4779 int parse_option_data (expr, cfile, lookups, option)
4781 struct parse *cfile;
4830 cfile);
4840 if (!parse_option_token(expr, cfile, &fmt, tmp,
4858 token = peek_token (&val, (unsigned *)0, cfile);
4861 skip_token(&val, (unsigned *)0, cfile);
4886 int parse_option_statement (result, cfile, lookups, option, op)
4888 struct parse *cfile;
4898 token = peek_token (&val, (unsigned *)0, cfile);
4907 skip_token(&val, (unsigned *)0, cfile);
4910 skip_token(&val, (unsigned *)0, cfile);
4913 if (!parse_data_expression (&expr, cfile, &lose)) {
4918 parse_warn (cfile,
4920 skip_to_semi (cfile);
4925 if (! parse_option_data(&expr, cfile, lookups, option))
4929 if (!parse_semi (cfile))
4945 int parse_option_token (rv, cfile, fmt, expr, uniform, lookups)
4947 struct parse *cfile;
4966 token = next_token (&val, &len, cfile);
4969 parse_warn (cfile, "expecting identifier.");
4971 skip_to_semi (cfile);
4983 parse_warn (cfile,
4985 skip_to_semi (cfile);
4992 token = peek_token (&val, (unsigned *)0, cfile);
4996 if (!parse_cshl (&t -> data.const_data, cfile)) {
5002 token = next_token (&val, &len, cfile);
5011 parse_warn (cfile, "expecting string "
5013 skip_to_semi (cfile);
5028 t = parse_domain_list(cfile, compress);
5032 skip_to_semi(cfile);
5039 t = parse_domain_name(cfile);
5041 parse_warn(cfile, "not a valid domain name.");
5042 skip_to_semi(cfile);
5048 token = next_token (&val, &len, cfile);
5051 parse_warn (cfile, "expecting string.");
5053 skip_to_semi (cfile);
5068 token = peek_token (&val, &len, cfile);
5070 token = next_token (&val, &len, cfile);
5072 val = parse_host_name(cfile);
5074 parse_warn(cfile, "not a valid key name.");
5075 skip_to_semi(cfile);
5097 parse_warn (cfile, "malformed %s (bug!)",
5100 skip_to_semi (cfile);
5104 token = next_token (&val, (unsigned *)0, cfile);
5106 parse_warn (cfile,
5112 parse_warn (cfile, "unknown value");
5121 if (!parse_ip_addr_or_hostname (&t, cfile, uniform))
5124 if (!parse_ip_addr (cfile, &addr))
5133 if (!parse_ip6_addr(cfile, &addr)) {
5142 token = next_token (&val, (unsigned *)0, cfile);
5152 token = next_token (&val, (unsigned *)0, cfile);
5157 parse_warn (cfile, "expecting number.");
5159 skip_to_semi (cfile);
5163 convert_num (cfile, buf, val, 0, 32);
5170 token = next_token (&val, (unsigned *)0, cfile);
5173 convert_num (cfile, buf, val, 0, 16);
5180 token = next_token (&val, (unsigned *)0, cfile);
5183 convert_num (cfile, buf, val, 0, 8);
5189 token = next_token (&val, (unsigned *)0, cfile);
5192 parse_warn (cfile, "expecting identifier.");
5196 skip_to_semi (cfile);
5210 parse_warn (cfile, "expecting boolean.");
5218 token = peek_token (&val, (unsigned *)0, cfile);
5220 parse_warn(cfile, "semicolon expected.");
5221 skip_to_semi(cfile);
5234 parse_warn (cfile, "Bad format '%c' in parse_option_token.",
5236 skip_to_semi (cfile);
5248 int parse_option_decl (oc, cfile)
5250 struct parse *cfile;
5271 status = parse_option_name (cfile, 0, &known, &option);
5301 parse_warn (cfile,
5309 len = parse_X (cfile, &hunkbuf [hunkix],
5316 &len, cfile);
5322 &len, cfile);
5324 parse_warn (cfile,
5329 parse_warn (cfile,
5346 express = parse_domain_list(cfile, compress);
5352 parse_warn(cfile, "unexpected "
5361 parse_warn(cfile, "option data buffer "
5375 parse_warn (cfile,
5381 (unsigned *)0, cfile);
5383 parse_warn (cfile,
5390 parse_warn (cfile,
5398 if (!parse_ip6_addr(cfile, &ip_addr))
5405 if (!parse_ip_addr (cfile, &ip_addr))
5412 parse_warn (cfile,
5424 (unsigned *)0, cfile);
5428 parse_warn (cfile,
5435 convert_num (cfile, buf, val, 0, 32);
5443 (unsigned *)0, cfile);
5447 convert_num (cfile, buf, val, 0, 16);
5455 (unsigned *)0, cfile);
5459 convert_num (cfile, buf, val, 0, 8);
5466 (unsigned *)0, cfile);
5468 parse_warn (cfile,
5483 parse_warn (cfile,
5492 token = peek_token(&val, (unsigned *)0, cfile);
5494 parse_warn(cfile,
5508 token = next_token (&val, (unsigned *)0, cfile);
5512 parse_warn (cfile, "semicolon expected.");
5535 skip_to_semi (cfile);
5544 int parse_X (cfile, buf, max)
5545 struct parse *cfile;
5553 token = peek_token (&val, (unsigned *)0, cfile);
5557 token = next_token (&val, (unsigned *)0, cfile);
5559 parse_warn (cfile,
5561 skip_to_semi (cfile);
5565 parse_warn (cfile,
5567 skip_to_semi (cfile);
5570 convert_num (cfile, &buf [len], val, 16, 8);
5572 token = peek_token (&val, (unsigned *)0, cfile);
5575 (unsigned *)0, cfile);
5579 skip_token(&val, &len, cfile);
5581 parse_warn (cfile, "string constant too long.");
5582 skip_to_semi (cfile);
5587 parse_warn (cfile, "expecting string or hexadecimal data");
5588 skip_to_semi (cfile);
5594 int parse_warn (struct parse *cfile, const char *fmt, ...)
5612 cfile -> tlname, cfile -> lexline, mbuf);
5621 cfile -> token_line [i] && i < (cfile -> lexchar - 1); i++) {
5624 if (cfile -> token_line [i] == '\t') {
5633 syslog (LOG_ERR, "%s", cfile -> token_line);
5634 if (cfile -> lexchar < 81)
5641 IGNORE_RET (write (STDERR_FILENO, cfile -> token_line,
5642 strlen (cfile -> token_line)));
5644 if (cfile -> lexchar < 81)
5649 cfile -> warnings_occurred = 1;
5655 parse_domain_list(struct parse *cfile, int compress)
5673 skip_token(&val, NULL, cfile);
5676 token = next_token(&val, &len, cfile);
5679 parse_warn(cfile, "Expecting a domain string.");
5692 parse_warn(cfile, "Error compressing domain "
5707 parse_warn(cfile, "Error assembling domain "
5726 token = peek_token(&val, NULL, cfile);
5736 parse_domain_name(struct parse *cfile)
5744 val = parse_host_name(cfile);
5757 parse_warn(cfile, "Error assembling domain name: %m");