From: Francis Dupont Date: Thu, 4 Jul 2024 11:39:28 +0000 (+0200) Subject: [#3477] Updated dhcp4 syntax X-Git-Tag: Kea-2.7.2~128 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=97e0638daabf1007b911a9f511bfefdd0f5eec60;p=thirdparty%2Fkea.git [#3477] Updated dhcp4 syntax --- diff --git a/doc/examples/agent/simple.json b/doc/examples/agent/simple.json index 5e82b99530..7597f652db 100644 --- a/doc/examples/agent/simple.json +++ b/doc/examples/agent/simple.json @@ -47,7 +47,7 @@ "password": "1234" }, - // This specifies a hiddent client. + // This specifies a hidden client. { // The user id is the content of the file /tmp/kea-creds/hiddenu. "user-file": "hiddenu", diff --git a/doc/examples/kea4/all-keys.json b/doc/examples/kea4/all-keys.json index ff62093877..fe1105baf7 100644 --- a/doc/examples/kea4/all-keys.json +++ b/doc/examples/kea4/all-keys.json @@ -143,16 +143,112 @@ }, // Command control socket configuration parameters for the Kea DHCPv4 server. - "control-socket": { - // Location of the UNIX domain socket file the DHCPv4 server uses - // to receive control commands from the Kea Control Agent or the - // local server administrator. - "socket-name": "/tmp/kea4-ctrl-socket", - - // Control socket type used by the Kea DHCPv4 server. The 'unix' - // socket is currently the only supported type. - "socket-type": "unix" - }, + "control-sockets": [ + { + // Control socket type used by the Kea DHCPv4 server. + // Must be unix, http or https. + "socket-type": "unix", + + // Location of the UNIX domain socket file the DHCPv4 + // server uses to receive control commands from the + // local server administrator. + "socket-name": "/tmp/kea4-ctrl-socket" + }, + { + // Control socket type used by the Kea DHCPv4 server. + // Must be unix, http or https. + "socket-type": "https", + + // Address of the HTTPS socket the Kea DHCPv4 server should + // listen for incoming queries. In fact an alias of + // socket-name. + "socket-address": "127.0.0.1", + + // Port of the HTTPS socket the Kea DHCPv4 server + // should listen for incoming queries. If enabling HA + // and multi-threading, the 8000 port is used by the + // HA hook library http listener. When using HA hook + // library with multi-threading to function, make sure + // the port used by dedicated listener is different + // (e.g. 8001) than the one specified here. Note the + // commands should still be sent to a control socket. + // The dedicated listener is specifically for HA + // updates only. + "socket-port": 8000, + + // TLS trust anchor (Certificate Authority). This is a + // file name or a directory path. Make sense with other + // TLS parameters only for the https control socket type. + "trust-anchor": "my-ca", + + // TLS server certificate file name. + "cert-file": "my-cert", + + // TLS server private key file name. + "key-file": "my-key", + + // TLS require client certificates flag. Default is + // true and means require client certificates. False + // means they are optional. + "cert-required": true, + + // Optional authentication. + "authentication": { + + // Required authentication type. The only + // supported value is basic for the basic HTTP + // authentication. + "type": "basic", + + // An optional parameter is the basic HTTP + // authentication realm. Its default is + // "kea-dhcpv4-server" + "realm": "kea-dhcpv4-server", + + // This optional parameter can be used to specify a common + // prefix for files handling client credentials. + "directory": "/tmp/kea-creds", + + // This list specifies the user ids and passwords + // to use for basic HTTP authentication. If empty + // or not present any client is authorized. + "clients": [ + // This specifies an authorized client. + { + // The user id must not be empty or + // contain the ':' character. It is a + // mandatory parameter. + "user": "admin", + + // If password is not specified an empty + // password is used. + "password": "1234" + }, + + // This specifies a hidden client. + { + // The user id is the content of the + // file /tmp/kea-creds/hiddenu. + "user-file": "hiddenu", + + // The password is the content of the + // file /tmp/kea-creds/hiddenp. + "password-file": "hiddenp" + }, + + // This specifies a hidden client using a + // secret in a file. + { + // The secret is the content of the file + // /tmp/kea-creds/hiddens which must be in + // the : format. + "password-file": "hiddens" + } + ] + } + } + ], + // Specifies a prefix to be prepended to the generated Client FQDN. // It may be specified at the global, shared-network, and subnet levels. diff --git a/doc/examples/kea4/comments.json b/doc/examples/kea4/comments.json index a5cfbdcd5c..af013d4a49 100644 --- a/doc/examples/kea4/comments.json +++ b/doc/examples/kea4/comments.json @@ -51,12 +51,32 @@ } ], - // In control socket (more for the agent) - "control-socket": { - "socket-type": "unix", - "socket-name": "/tmp/kea4-ctrl-socket", - "user-context": { "comment": "Indirect comment" } - }, + // In control sockets (more for the agent) + "control-sockets": [ + { + "socket-type": "unix", + "socket-name": "/tmp/kea4-ctrl-socket", + "user-context": { "comment": "Indirect comment" } + }, + { + "comment": "HTTP control socket", + "socket-type": "http", + "socket-address": "::1", + "socket-port": 8000, + + // In authentication + "authentication": { + "comment": "basic HTTP authentication", + "type": "basic", + // In basic HTTP authentication clients + "clients": [ { + "comment": "admin is authorized", + "user": "admin", + "password": "1234" + } ] + } + } + ], // In shared networks "shared-networks": [ { diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 1fb5e715af..87dacd5fb2 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -328,6 +328,7 @@ typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; +typedef uint64_t flex_uint64_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; @@ -452,7 +453,7 @@ typedef size_t yy_size_t; #endif /* %if-not-reentrant */ -extern int yyleng; +extern yy_size_t yyleng; /* %endif */ /* %if-c-only */ @@ -505,7 +506,7 @@ struct yy_buffer_state /* Number of characters read into yy_ch_buf, not including EOB * characters. */ - int yy_n_chars; + yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to @@ -586,8 +587,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ /* %not-for-header */ /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; +static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +yy_size_t yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; @@ -617,7 +618,7 @@ static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, yy_size_t len ); /* %endif */ @@ -685,7 +686,7 @@ static void yynoreturn yy_fatal_error ( const char* msg ); #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ - yyleng = (int) (yy_cp - yy_bp); \ + yyleng = (yy_size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ @@ -2180,23 +2181,23 @@ static const flex_int16_t yy_rule_linenum[238] = 678, 690, 702, 714, 725, 736, 745, 754, 763, 774, 783, 792, 803, 814, 825, 836, 847, 858, 869, 880, 891, 900, 909, 918, 928, 939, 949, 960, 969, 979, - 993, 1009, 1018, 1027, 1036, 1045, 1054, 1063, 1085, 1107, - - 1116, 1126, 1135, 1146, 1157, 1168, 1178, 1187, 1198, 1209, - 1220, 1231, 1243, 1252, 1261, 1270, 1279, 1288, 1297, 1306, - 1315, 1324, 1333, 1343, 1354, 1366, 1375, 1384, 1393, 1403, - 1413, 1423, 1433, 1443, 1453, 1462, 1472, 1481, 1490, 1499, - 1508, 1518, 1527, 1536, 1546, 1555, 1564, 1573, 1582, 1591, - 1600, 1609, 1618, 1627, 1636, 1645, 1654, 1663, 1672, 1681, - 1690, 1699, 1708, 1717, 1726, 1735, 1744, 1753, 1762, 1771, - 1780, 1789, 1798, 1807, 1816, 1825, 1834, 1843, 1852, 1861, - 1870, 1879, 1888, 1897, 1906, 1915, 1924, 1933, 1942, 1953, - 1964, 1974, 1984, 1994, 2004, 2014, 2024, 2034, 2044, 2054, - - 2063, 2072, 2081, 2090, 2101, 2112, 2125, 2138, 2151, 2160, - 2169, 2178, 2187, 2196, 2205, 2214, 2223, 2235, 2244, 2345, - 2361, 2410, 2418, 2433, 2434, 2435, 2436, 2437, 2438, 2440, - 2458, 2471, 2476, 2480, 2482, 2484, 2486 + 993, 1009, 1018, 1027, 1036, 1045, 1054, 1063, 1087, 1111, + + 1120, 1130, 1139, 1150, 1161, 1172, 1182, 1191, 1202, 1213, + 1224, 1235, 1247, 1256, 1265, 1274, 1283, 1292, 1301, 1310, + 1319, 1328, 1337, 1347, 1358, 1370, 1379, 1388, 1397, 1407, + 1417, 1427, 1437, 1447, 1457, 1466, 1476, 1485, 1494, 1503, + 1512, 1522, 1531, 1540, 1550, 1559, 1568, 1577, 1586, 1595, + 1604, 1613, 1622, 1631, 1640, 1649, 1658, 1667, 1676, 1685, + 1694, 1703, 1712, 1721, 1730, 1739, 1748, 1757, 1766, 1775, + 1784, 1793, 1802, 1811, 1820, 1829, 1838, 1847, 1856, 1865, + 1874, 1883, 1892, 1901, 1910, 1919, 1928, 1937, 1946, 1957, + 1968, 1978, 1988, 1998, 2008, 2018, 2028, 2038, 2048, 2058, + + 2067, 2076, 2085, 2094, 2105, 2116, 2129, 2142, 2155, 2164, + 2173, 2182, 2191, 2200, 2209, 2218, 2227, 2239, 2248, 2349, + 2365, 2414, 2422, 2437, 2438, 2439, 2440, 2441, 2442, 2444, + 2462, 2475, 2480, 2484, 2486, 2488, 2490 } ; /* The intent behind this definition is that it'll catch @@ -2251,7 +2252,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 2254 "dhcp4_lexer.cc" +#line 2255 "dhcp4_lexer.cc" /* noyywrap disables automatic rewinding for the next file to parse. Since we always parse only a single string, there's no need to do any wraps. And using yywrap requires linking with -lfl, which provides the default yywrap @@ -2277,8 +2278,8 @@ using namespace isc::dhcp; by moving it ahead by yyleng bytes. yyleng specifies the length of the currently matched token. */ #define YY_USER_ACTION driver.loc_.columns(yyleng); -#line 2280 "dhcp4_lexer.cc" #line 2281 "dhcp4_lexer.cc" +#line 2282 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2334,7 +2335,7 @@ FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); - int yyget_leng ( void ); + yy_size_t yyget_leng ( void ); char *yyget_text ( void ); @@ -2421,7 +2422,7 @@ static int input ( void ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - int n; \ + yy_size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -2606,7 +2607,7 @@ YY_DECL } -#line 2609 "dhcp4_lexer.cc" +#line 2610 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3056,7 +3057,7 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::HOSTS_DATABASE: case isc::dhcp::Parser4Context::OPTION_DEF: case isc::dhcp::Parser4Context::CONFIG_DATABASE: - case isc::dhcp::Parser4Context::AUTH_TYPE: + case isc::dhcp::Parser4Context::AUTHENTICATION: return isc::dhcp::Dhcp4Parser::make_TYPE(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("type", driver.loc_); @@ -3914,6 +3915,8 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: + case isc::dhcp::Parser4Context::AUTHENTICATION: + case isc::dhcp::Parser4Context::CLIENTS: case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: case isc::dhcp::Parser4Context::LOGGERS: @@ -3926,7 +3929,7 @@ YY_RULE_SETUP YY_BREAK case 99: YY_RULE_SETUP -#line 1085 "dhcp4_lexer.ll" +#line 1087 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -3939,6 +3942,8 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: + case isc::dhcp::Parser4Context::AUTHENTICATION: + case isc::dhcp::Parser4Context::CLIENTS: case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: case isc::dhcp::Parser4Context::LOGGERS: @@ -3951,7 +3956,7 @@ YY_RULE_SETUP YY_BREAK case 100: YY_RULE_SETUP -#line 1107 "dhcp4_lexer.ll" +#line 1111 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3963,7 +3968,7 @@ YY_RULE_SETUP YY_BREAK case 101: YY_RULE_SETUP -#line 1116 "dhcp4_lexer.ll" +#line 1120 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3976,7 +3981,7 @@ YY_RULE_SETUP YY_BREAK case 102: YY_RULE_SETUP -#line 1126 "dhcp4_lexer.ll" +#line 1130 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -3988,7 +3993,7 @@ YY_RULE_SETUP YY_BREAK case 103: YY_RULE_SETUP -#line 1135 "dhcp4_lexer.ll" +#line 1139 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4002,7 +4007,7 @@ YY_RULE_SETUP YY_BREAK case 104: YY_RULE_SETUP -#line 1146 "dhcp4_lexer.ll" +#line 1150 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4016,7 +4021,7 @@ YY_RULE_SETUP YY_BREAK case 105: YY_RULE_SETUP -#line 1157 "dhcp4_lexer.ll" +#line 1161 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4030,7 +4035,7 @@ YY_RULE_SETUP YY_BREAK case 106: YY_RULE_SETUP -#line 1168 "dhcp4_lexer.ll" +#line 1172 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4043,7 +4048,7 @@ YY_RULE_SETUP YY_BREAK case 107: YY_RULE_SETUP -#line 1178 "dhcp4_lexer.ll" +#line 1182 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4055,7 +4060,7 @@ YY_RULE_SETUP YY_BREAK case 108: YY_RULE_SETUP -#line 1187 "dhcp4_lexer.ll" +#line 1191 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4069,7 +4074,7 @@ YY_RULE_SETUP YY_BREAK case 109: YY_RULE_SETUP -#line 1198 "dhcp4_lexer.ll" +#line 1202 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4083,7 +4088,7 @@ YY_RULE_SETUP YY_BREAK case 110: YY_RULE_SETUP -#line 1209 "dhcp4_lexer.ll" +#line 1213 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4097,7 +4102,7 @@ YY_RULE_SETUP YY_BREAK case 111: YY_RULE_SETUP -#line 1220 "dhcp4_lexer.ll" +#line 1224 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4111,7 +4116,7 @@ YY_RULE_SETUP YY_BREAK case 112: YY_RULE_SETUP -#line 1231 "dhcp4_lexer.ll" +#line 1235 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4125,7 +4130,7 @@ YY_RULE_SETUP YY_BREAK case 113: YY_RULE_SETUP -#line 1243 "dhcp4_lexer.ll" +#line 1247 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4137,7 +4142,7 @@ YY_RULE_SETUP YY_BREAK case 114: YY_RULE_SETUP -#line 1252 "dhcp4_lexer.ll" +#line 1256 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -4149,7 +4154,7 @@ YY_RULE_SETUP YY_BREAK case 115: YY_RULE_SETUP -#line 1261 "dhcp4_lexer.ll" +#line 1265 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -4161,7 +4166,7 @@ YY_RULE_SETUP YY_BREAK case 116: YY_RULE_SETUP -#line 1270 "dhcp4_lexer.ll" +#line 1274 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -4173,7 +4178,7 @@ YY_RULE_SETUP YY_BREAK case 117: YY_RULE_SETUP -#line 1279 "dhcp4_lexer.ll" +#line 1283 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -4185,7 +4190,7 @@ YY_RULE_SETUP YY_BREAK case 118: YY_RULE_SETUP -#line 1288 "dhcp4_lexer.ll" +#line 1292 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -4197,7 +4202,7 @@ YY_RULE_SETUP YY_BREAK case 119: YY_RULE_SETUP -#line 1297 "dhcp4_lexer.ll" +#line 1301 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -4209,7 +4214,7 @@ YY_RULE_SETUP YY_BREAK case 120: YY_RULE_SETUP -#line 1306 "dhcp4_lexer.ll" +#line 1310 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -4221,7 +4226,7 @@ YY_RULE_SETUP YY_BREAK case 121: YY_RULE_SETUP -#line 1315 "dhcp4_lexer.ll" +#line 1319 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OUTPUT_OPTIONS: @@ -4233,7 +4238,7 @@ YY_RULE_SETUP YY_BREAK case 122: YY_RULE_SETUP -#line 1324 "dhcp4_lexer.ll" +#line 1328 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::LOGGERS: @@ -4245,7 +4250,7 @@ YY_RULE_SETUP YY_BREAK case 123: YY_RULE_SETUP -#line 1333 "dhcp4_lexer.ll" +#line 1337 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4258,7 +4263,7 @@ YY_RULE_SETUP YY_BREAK case 124: YY_RULE_SETUP -#line 1343 "dhcp4_lexer.ll" +#line 1347 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4272,7 +4277,7 @@ YY_RULE_SETUP YY_BREAK case 125: YY_RULE_SETUP -#line 1354 "dhcp4_lexer.ll" +#line 1358 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4287,7 +4292,7 @@ YY_RULE_SETUP YY_BREAK case 126: YY_RULE_SETUP -#line 1366 "dhcp4_lexer.ll" +#line 1370 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4299,7 +4304,7 @@ YY_RULE_SETUP YY_BREAK case 127: YY_RULE_SETUP -#line 1375 "dhcp4_lexer.ll" +#line 1379 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4311,7 +4316,7 @@ YY_RULE_SETUP YY_BREAK case 128: YY_RULE_SETUP -#line 1384 "dhcp4_lexer.ll" +#line 1388 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENT_CLASSES: @@ -4323,7 +4328,7 @@ YY_RULE_SETUP YY_BREAK case 129: YY_RULE_SETUP -#line 1393 "dhcp4_lexer.ll" +#line 1397 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4336,7 +4341,7 @@ YY_RULE_SETUP YY_BREAK case 130: YY_RULE_SETUP -#line 1403 "dhcp4_lexer.ll" +#line 1407 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4349,7 +4354,7 @@ YY_RULE_SETUP YY_BREAK case 131: YY_RULE_SETUP -#line 1413 "dhcp4_lexer.ll" +#line 1417 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4362,7 +4367,7 @@ YY_RULE_SETUP YY_BREAK case 132: YY_RULE_SETUP -#line 1423 "dhcp4_lexer.ll" +#line 1427 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4375,7 +4380,7 @@ YY_RULE_SETUP YY_BREAK case 133: YY_RULE_SETUP -#line 1433 "dhcp4_lexer.ll" +#line 1437 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4388,7 +4393,7 @@ YY_RULE_SETUP YY_BREAK case 134: YY_RULE_SETUP -#line 1443 "dhcp4_lexer.ll" +#line 1447 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS: @@ -4401,7 +4406,7 @@ YY_RULE_SETUP YY_BREAK case 135: YY_RULE_SETUP -#line 1453 "dhcp4_lexer.ll" +#line 1457 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -4413,7 +4418,7 @@ YY_RULE_SETUP YY_BREAK case 136: YY_RULE_SETUP -#line 1462 "dhcp4_lexer.ll" +#line 1466 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4426,7 +4431,7 @@ YY_RULE_SETUP YY_BREAK case 137: YY_RULE_SETUP -#line 1472 "dhcp4_lexer.ll" +#line 1476 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DATA: @@ -4438,7 +4443,7 @@ YY_RULE_SETUP YY_BREAK case 138: YY_RULE_SETUP -#line 1481 "dhcp4_lexer.ll" +#line 1485 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4450,7 +4455,7 @@ YY_RULE_SETUP YY_BREAK case 139: YY_RULE_SETUP -#line 1490 "dhcp4_lexer.ll" +#line 1494 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4462,7 +4467,7 @@ YY_RULE_SETUP YY_BREAK case 140: YY_RULE_SETUP -#line 1499 "dhcp4_lexer.ll" +#line 1503 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::OPTION_DEF: @@ -4474,7 +4479,7 @@ YY_RULE_SETUP YY_BREAK case 141: YY_RULE_SETUP -#line 1508 "dhcp4_lexer.ll" +#line 1512 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -4487,7 +4492,7 @@ YY_RULE_SETUP YY_BREAK case 142: YY_RULE_SETUP -#line 1518 "dhcp4_lexer.ll" +#line 1522 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RESERVATIONS: @@ -4499,7 +4504,7 @@ YY_RULE_SETUP YY_BREAK case 143: YY_RULE_SETUP -#line 1527 "dhcp4_lexer.ll" +#line 1531 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::RELAY: @@ -4511,7 +4516,7 @@ YY_RULE_SETUP YY_BREAK case 144: YY_RULE_SETUP -#line 1536 "dhcp4_lexer.ll" +#line 1540 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4523,7 +4528,7 @@ YY_RULE_SETUP YY_BREAK case 145: YY_RULE_SETUP -#line 1546 "dhcp4_lexer.ll" +#line 1550 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4535,7 +4540,7 @@ YY_RULE_SETUP YY_BREAK case 146: YY_RULE_SETUP -#line 1555 "dhcp4_lexer.ll" +#line 1559 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::HOOKS_LIBRARIES: @@ -4547,7 +4552,7 @@ YY_RULE_SETUP YY_BREAK case 147: YY_RULE_SETUP -#line 1564 "dhcp4_lexer.ll" +#line 1568 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4559,7 +4564,7 @@ YY_RULE_SETUP YY_BREAK case 148: YY_RULE_SETUP -#line 1573 "dhcp4_lexer.ll" +#line 1577 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4571,7 +4576,7 @@ YY_RULE_SETUP YY_BREAK case 149: YY_RULE_SETUP -#line 1582 "dhcp4_lexer.ll" +#line 1586 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4583,7 +4588,7 @@ YY_RULE_SETUP YY_BREAK case 150: YY_RULE_SETUP -#line 1591 "dhcp4_lexer.ll" +#line 1595 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4595,7 +4600,7 @@ YY_RULE_SETUP YY_BREAK case 151: YY_RULE_SETUP -#line 1600 "dhcp4_lexer.ll" +#line 1604 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4607,7 +4612,7 @@ YY_RULE_SETUP YY_BREAK case 152: YY_RULE_SETUP -#line 1609 "dhcp4_lexer.ll" +#line 1613 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4619,7 +4624,7 @@ YY_RULE_SETUP YY_BREAK case 153: YY_RULE_SETUP -#line 1618 "dhcp4_lexer.ll" +#line 1622 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING: @@ -4631,7 +4636,7 @@ YY_RULE_SETUP YY_BREAK case 154: YY_RULE_SETUP -#line 1627 "dhcp4_lexer.ll" +#line 1631 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4643,7 +4648,7 @@ YY_RULE_SETUP YY_BREAK case 155: YY_RULE_SETUP -#line 1636 "dhcp4_lexer.ll" +#line 1640 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4655,7 +4660,7 @@ YY_RULE_SETUP YY_BREAK case 156: YY_RULE_SETUP -#line 1645 "dhcp4_lexer.ll" +#line 1649 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4667,7 +4672,7 @@ YY_RULE_SETUP YY_BREAK case 157: YY_RULE_SETUP -#line 1654 "dhcp4_lexer.ll" +#line 1658 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4679,7 +4684,7 @@ YY_RULE_SETUP YY_BREAK case 158: YY_RULE_SETUP -#line 1663 "dhcp4_lexer.ll" +#line 1667 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: @@ -4691,7 +4696,7 @@ YY_RULE_SETUP YY_BREAK case 159: YY_RULE_SETUP -#line 1672 "dhcp4_lexer.ll" +#line 1676 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4703,7 +4708,7 @@ YY_RULE_SETUP YY_BREAK case 160: YY_RULE_SETUP -#line 1681 "dhcp4_lexer.ll" +#line 1685 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4715,7 +4720,7 @@ YY_RULE_SETUP YY_BREAK case 161: YY_RULE_SETUP -#line 1690 "dhcp4_lexer.ll" +#line 1694 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4727,7 +4732,7 @@ YY_RULE_SETUP YY_BREAK case 162: YY_RULE_SETUP -#line 1699 "dhcp4_lexer.ll" +#line 1703 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET_TYPE: @@ -4739,7 +4744,7 @@ YY_RULE_SETUP YY_BREAK case 163: YY_RULE_SETUP -#line 1708 "dhcp4_lexer.ll" +#line 1712 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET_TYPE: @@ -4751,7 +4756,7 @@ YY_RULE_SETUP YY_BREAK case 164: YY_RULE_SETUP -#line 1717 "dhcp4_lexer.ll" +#line 1721 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET_TYPE: @@ -4763,7 +4768,7 @@ YY_RULE_SETUP YY_BREAK case 165: YY_RULE_SETUP -#line 1726 "dhcp4_lexer.ll" +#line 1730 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4775,7 +4780,7 @@ YY_RULE_SETUP YY_BREAK case 166: YY_RULE_SETUP -#line 1735 "dhcp4_lexer.ll" +#line 1739 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4787,7 +4792,7 @@ YY_RULE_SETUP YY_BREAK case 167: YY_RULE_SETUP -#line 1744 "dhcp4_lexer.ll" +#line 1748 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4799,7 +4804,7 @@ YY_RULE_SETUP YY_BREAK case 168: YY_RULE_SETUP -#line 1753 "dhcp4_lexer.ll" +#line 1757 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4811,7 +4816,7 @@ YY_RULE_SETUP YY_BREAK case 169: YY_RULE_SETUP -#line 1762 "dhcp4_lexer.ll" +#line 1766 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::AUTH_TYPE: @@ -4823,7 +4828,7 @@ YY_RULE_SETUP YY_BREAK case 170: YY_RULE_SETUP -#line 1771 "dhcp4_lexer.ll" +#line 1775 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::AUTHENTICATION: @@ -4835,7 +4840,7 @@ YY_RULE_SETUP YY_BREAK case 171: YY_RULE_SETUP -#line 1780 "dhcp4_lexer.ll" +#line 1784 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::AUTHENTICATION: @@ -4847,7 +4852,7 @@ YY_RULE_SETUP YY_BREAK case 172: YY_RULE_SETUP -#line 1789 "dhcp4_lexer.ll" +#line 1793 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::AUTHENTICATION: @@ -4859,7 +4864,7 @@ YY_RULE_SETUP YY_BREAK case 173: YY_RULE_SETUP -#line 1798 "dhcp4_lexer.ll" +#line 1802 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENTS: @@ -4871,7 +4876,7 @@ YY_RULE_SETUP YY_BREAK case 174: YY_RULE_SETUP -#line 1807 "dhcp4_lexer.ll" +#line 1811 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CLIENTS: @@ -4883,7 +4888,7 @@ YY_RULE_SETUP YY_BREAK case 175: YY_RULE_SETUP -#line 1816 "dhcp4_lexer.ll" +#line 1820 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::CONTROL_SOCKET: @@ -4895,7 +4900,7 @@ YY_RULE_SETUP YY_BREAK case 176: YY_RULE_SETUP -#line 1825 "dhcp4_lexer.ll" +#line 1829 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4907,7 +4912,7 @@ YY_RULE_SETUP YY_BREAK case 177: YY_RULE_SETUP -#line 1834 "dhcp4_lexer.ll" +#line 1838 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4919,7 +4924,7 @@ YY_RULE_SETUP YY_BREAK case 178: YY_RULE_SETUP -#line 1843 "dhcp4_lexer.ll" +#line 1847 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4931,7 +4936,7 @@ YY_RULE_SETUP YY_BREAK case 179: YY_RULE_SETUP -#line 1852 "dhcp4_lexer.ll" +#line 1856 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: @@ -4943,7 +4948,7 @@ YY_RULE_SETUP YY_BREAK case 180: YY_RULE_SETUP -#line 1861 "dhcp4_lexer.ll" +#line 1865 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -4955,7 +4960,7 @@ YY_RULE_SETUP YY_BREAK case 181: YY_RULE_SETUP -#line 1870 "dhcp4_lexer.ll" +#line 1874 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4967,7 +4972,7 @@ YY_RULE_SETUP YY_BREAK case 182: YY_RULE_SETUP -#line 1879 "dhcp4_lexer.ll" +#line 1883 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4979,7 +4984,7 @@ YY_RULE_SETUP YY_BREAK case 183: YY_RULE_SETUP -#line 1888 "dhcp4_lexer.ll" +#line 1892 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -4991,7 +4996,7 @@ YY_RULE_SETUP YY_BREAK case 184: YY_RULE_SETUP -#line 1897 "dhcp4_lexer.ll" +#line 1901 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -5003,7 +5008,7 @@ YY_RULE_SETUP YY_BREAK case 185: YY_RULE_SETUP -#line 1906 "dhcp4_lexer.ll" +#line 1910 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -5015,7 +5020,7 @@ YY_RULE_SETUP YY_BREAK case 186: YY_RULE_SETUP -#line 1915 "dhcp4_lexer.ll" +#line 1919 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -5027,7 +5032,7 @@ YY_RULE_SETUP YY_BREAK case 187: YY_RULE_SETUP -#line 1924 "dhcp4_lexer.ll" +#line 1928 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -5039,7 +5044,7 @@ YY_RULE_SETUP YY_BREAK case 188: YY_RULE_SETUP -#line 1933 "dhcp4_lexer.ll" +#line 1937 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP_DDNS: @@ -5051,7 +5056,7 @@ YY_RULE_SETUP YY_BREAK case 189: YY_RULE_SETUP -#line 1942 "dhcp4_lexer.ll" +#line 1946 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5065,7 +5070,7 @@ YY_RULE_SETUP YY_BREAK case 190: YY_RULE_SETUP -#line 1953 "dhcp4_lexer.ll" +#line 1957 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5079,7 +5084,7 @@ YY_RULE_SETUP YY_BREAK case 191: YY_RULE_SETUP -#line 1964 "dhcp4_lexer.ll" +#line 1968 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -5092,7 +5097,7 @@ YY_RULE_SETUP YY_BREAK case 192: YY_RULE_SETUP -#line 1974 "dhcp4_lexer.ll" +#line 1978 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) { @@ -5105,7 +5110,7 @@ YY_RULE_SETUP YY_BREAK case 193: YY_RULE_SETUP -#line 1984 "dhcp4_lexer.ll" +#line 1988 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) { @@ -5118,7 +5123,7 @@ YY_RULE_SETUP YY_BREAK case 194: YY_RULE_SETUP -#line 1994 "dhcp4_lexer.ll" +#line 1998 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5131,7 +5136,7 @@ YY_RULE_SETUP YY_BREAK case 195: YY_RULE_SETUP -#line 2004 "dhcp4_lexer.ll" +#line 2008 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5144,7 +5149,7 @@ YY_RULE_SETUP YY_BREAK case 196: YY_RULE_SETUP -#line 2014 "dhcp4_lexer.ll" +#line 2018 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5157,7 +5162,7 @@ YY_RULE_SETUP YY_BREAK case 197: YY_RULE_SETUP -#line 2024 "dhcp4_lexer.ll" +#line 2028 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5170,7 +5175,7 @@ YY_RULE_SETUP YY_BREAK case 198: YY_RULE_SETUP -#line 2034 "dhcp4_lexer.ll" +#line 2038 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5183,7 +5188,7 @@ YY_RULE_SETUP YY_BREAK case 199: YY_RULE_SETUP -#line 2044 "dhcp4_lexer.ll" +#line 2048 "dhcp4_lexer.ll" { /* dhcp-ddns value keywords are case insensitive */ if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) { @@ -5196,7 +5201,7 @@ YY_RULE_SETUP YY_BREAK case 200: YY_RULE_SETUP -#line 2054 "dhcp4_lexer.ll" +#line 2058 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -5208,7 +5213,7 @@ YY_RULE_SETUP YY_BREAK case 201: YY_RULE_SETUP -#line 2063 "dhcp4_lexer.ll" +#line 2067 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -5220,7 +5225,7 @@ YY_RULE_SETUP YY_BREAK case 202: YY_RULE_SETUP -#line 2072 "dhcp4_lexer.ll" +#line 2076 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::SUBNET4: @@ -5232,7 +5237,7 @@ YY_RULE_SETUP YY_BREAK case 203: YY_RULE_SETUP -#line 2081 "dhcp4_lexer.ll" +#line 2085 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5244,7 +5249,7 @@ YY_RULE_SETUP YY_BREAK case 204: YY_RULE_SETUP -#line 2090 "dhcp4_lexer.ll" +#line 2094 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5258,7 +5263,7 @@ YY_RULE_SETUP YY_BREAK case 205: YY_RULE_SETUP -#line 2101 "dhcp4_lexer.ll" +#line 2105 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5272,7 +5277,7 @@ YY_RULE_SETUP YY_BREAK case 206: YY_RULE_SETUP -#line 2112 "dhcp4_lexer.ll" +#line 2116 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5288,7 +5293,7 @@ YY_RULE_SETUP YY_BREAK case 207: YY_RULE_SETUP -#line 2125 "dhcp4_lexer.ll" +#line 2129 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5304,7 +5309,7 @@ YY_RULE_SETUP YY_BREAK case 208: YY_RULE_SETUP -#line 2138 "dhcp4_lexer.ll" +#line 2142 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5320,7 +5325,7 @@ YY_RULE_SETUP YY_BREAK case 209: YY_RULE_SETUP -#line 2151 "dhcp4_lexer.ll" +#line 2155 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5332,7 +5337,7 @@ YY_RULE_SETUP YY_BREAK case 210: YY_RULE_SETUP -#line 2160 "dhcp4_lexer.ll" +#line 2164 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5344,7 +5349,7 @@ YY_RULE_SETUP YY_BREAK case 211: YY_RULE_SETUP -#line 2169 "dhcp4_lexer.ll" +#line 2173 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5356,7 +5361,7 @@ YY_RULE_SETUP YY_BREAK case 212: YY_RULE_SETUP -#line 2178 "dhcp4_lexer.ll" +#line 2182 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5368,7 +5373,7 @@ YY_RULE_SETUP YY_BREAK case 213: YY_RULE_SETUP -#line 2187 "dhcp4_lexer.ll" +#line 2191 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5380,7 +5385,7 @@ YY_RULE_SETUP YY_BREAK case 214: YY_RULE_SETUP -#line 2196 "dhcp4_lexer.ll" +#line 2200 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5392,7 +5397,7 @@ YY_RULE_SETUP YY_BREAK case 215: YY_RULE_SETUP -#line 2205 "dhcp4_lexer.ll" +#line 2209 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5404,7 +5409,7 @@ YY_RULE_SETUP YY_BREAK case 216: YY_RULE_SETUP -#line 2214 "dhcp4_lexer.ll" +#line 2218 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::COMPATIBILITY: @@ -5416,7 +5421,7 @@ YY_RULE_SETUP YY_BREAK case 217: YY_RULE_SETUP -#line 2223 "dhcp4_lexer.ll" +#line 2227 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5431,7 +5436,7 @@ YY_RULE_SETUP YY_BREAK case 218: YY_RULE_SETUP -#line 2235 "dhcp4_lexer.ll" +#line 2239 "dhcp4_lexer.ll" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: @@ -5443,7 +5448,7 @@ YY_RULE_SETUP YY_BREAK case 219: YY_RULE_SETUP -#line 2244 "dhcp4_lexer.ll" +#line 2248 "dhcp4_lexer.ll" { /* A string has been matched. It contains the actual string and single quotes. We need to get those quotes out of the way and just use its content, e.g. @@ -5548,7 +5553,7 @@ YY_RULE_SETUP case 220: /* rule 220 can match eol */ YY_RULE_SETUP -#line 2345 "dhcp4_lexer.ll" +#line 2349 "dhcp4_lexer.ll" { /* Bad string with a forbidden control character inside */ std::string raw(yytext+1); @@ -5568,7 +5573,7 @@ YY_RULE_SETUP case 221: /* rule 221 can match eol */ YY_RULE_SETUP -#line 2361 "dhcp4_lexer.ll" +#line 2365 "dhcp4_lexer.ll" { /* Bad string with a bad escape inside */ std::string raw(yytext+1); @@ -5620,7 +5625,7 @@ YY_RULE_SETUP YY_BREAK case 222: YY_RULE_SETUP -#line 2410 "dhcp4_lexer.ll" +#line 2414 "dhcp4_lexer.ll" { /* Bad string with an open escape at the end */ std::string raw(yytext+1); @@ -5631,7 +5636,7 @@ YY_RULE_SETUP YY_BREAK case 223: YY_RULE_SETUP -#line 2418 "dhcp4_lexer.ll" +#line 2422 "dhcp4_lexer.ll" { /* Bad string with an open unicode escape at the end */ std::string raw(yytext+1); @@ -5649,37 +5654,37 @@ YY_RULE_SETUP YY_BREAK case 224: YY_RULE_SETUP -#line 2433 "dhcp4_lexer.ll" +#line 2437 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); } YY_BREAK case 225: YY_RULE_SETUP -#line 2434 "dhcp4_lexer.ll" +#line 2438 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); } YY_BREAK case 226: YY_RULE_SETUP -#line 2435 "dhcp4_lexer.ll" +#line 2439 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); } YY_BREAK case 227: YY_RULE_SETUP -#line 2436 "dhcp4_lexer.ll" +#line 2440 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); } YY_BREAK case 228: YY_RULE_SETUP -#line 2437 "dhcp4_lexer.ll" +#line 2441 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); } YY_BREAK case 229: YY_RULE_SETUP -#line 2438 "dhcp4_lexer.ll" +#line 2442 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); } YY_BREAK case 230: YY_RULE_SETUP -#line 2440 "dhcp4_lexer.ll" +#line 2444 "dhcp4_lexer.ll" { /* An integer was found. */ std::string tmp(yytext); @@ -5700,7 +5705,7 @@ YY_RULE_SETUP YY_BREAK case 231: YY_RULE_SETUP -#line 2458 "dhcp4_lexer.ll" +#line 2462 "dhcp4_lexer.ll" { /* A floating point was found. */ std::string tmp(yytext); @@ -5716,7 +5721,7 @@ YY_RULE_SETUP YY_BREAK case 232: YY_RULE_SETUP -#line 2471 "dhcp4_lexer.ll" +#line 2475 "dhcp4_lexer.ll" { string tmp(yytext); return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_); @@ -5724,33 +5729,33 @@ YY_RULE_SETUP YY_BREAK case 233: YY_RULE_SETUP -#line 2476 "dhcp4_lexer.ll" +#line 2480 "dhcp4_lexer.ll" { return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_); } YY_BREAK case 234: YY_RULE_SETUP -#line 2480 "dhcp4_lexer.ll" +#line 2484 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON true reserved keyword is lower case only"); YY_BREAK case 235: YY_RULE_SETUP -#line 2482 "dhcp4_lexer.ll" +#line 2486 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON false reserved keyword is lower case only"); YY_BREAK case 236: YY_RULE_SETUP -#line 2484 "dhcp4_lexer.ll" +#line 2488 "dhcp4_lexer.ll" driver.error (driver.loc_, "JSON null reserved keyword is lower case only"); YY_BREAK case 237: YY_RULE_SETUP -#line 2486 "dhcp4_lexer.ll" +#line 2490 "dhcp4_lexer.ll" driver.error (driver.loc_, "Invalid character: " + std::string(yytext)); YY_BREAK case YY_STATE_EOF(INITIAL): -#line 2488 "dhcp4_lexer.ll" +#line 2492 "dhcp4_lexer.ll" { if (driver.states_.empty()) { return isc::dhcp::Dhcp4Parser::make_END(driver.loc_); @@ -5776,10 +5781,10 @@ case YY_STATE_EOF(INITIAL): YY_BREAK case 238: YY_RULE_SETUP -#line 2511 "dhcp4_lexer.ll" +#line 2515 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 5782 "dhcp4_lexer.cc" +#line 5787 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -5981,7 +5986,7 @@ static int yy_get_next_buffer (void) else { - int num_to_read = + yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) @@ -5995,7 +6000,7 @@ static int yy_get_next_buffer (void) if ( b->yy_is_our_buffer ) { - int new_size = b->yy_buf_size * 2; + yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; @@ -6053,7 +6058,7 @@ static int yy_get_next_buffer (void) if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) @@ -6174,7 +6179,7 @@ static int yy_get_next_buffer (void) else { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) @@ -6617,12 +6622,12 @@ YY_BUFFER_STATE yy_scan_string (const char * yystr ) * * @return the newly allocated buffer state object. */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, yy_size_t _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; - int i; + yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); @@ -6669,7 +6674,7 @@ static void yynoreturn yy_fatal_error (const char* msg ) do \ { \ /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ + yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ @@ -6713,7 +6718,7 @@ FILE *yyget_out (void) /** Get the length of the current token. * */ -int yyget_leng (void) +yy_size_t yyget_leng (void) { return yyleng; } @@ -6884,7 +6889,7 @@ void yyfree (void * ptr ) /* %ok-for-header */ -#line 2511 "dhcp4_lexer.ll" +#line 2515 "dhcp4_lexer.ll" using namespace isc::dhcp; diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index e4dc4e73f8..8c8636fa6d 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -401,7 +401,7 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] case isc::dhcp::Parser4Context::HOSTS_DATABASE: case isc::dhcp::Parser4Context::OPTION_DEF: case isc::dhcp::Parser4Context::CONFIG_DATABASE: - case isc::dhcp::Parser4Context::AUTH_TYPE: + case isc::dhcp::Parser4Context::AUTHENTICATION: return isc::dhcp::Dhcp4Parser::make_TYPE(driver.loc_); default: return isc::dhcp::Dhcp4Parser::make_STRING("type", driver.loc_); @@ -1071,6 +1071,8 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: + case isc::dhcp::Parser4Context::AUTHENTICATION: + case isc::dhcp::Parser4Context::CLIENTS: case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: case isc::dhcp::Parser4Context::LOGGERS: @@ -1093,6 +1095,8 @@ ControlCharacterFill [^"\\]|\\["\\/bfnrtu] case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: + case isc::dhcp::Parser4Context::AUTHENTICATION: + case isc::dhcp::Parser4Context::CLIENTS: case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING: case isc::dhcp::Parser4Context::LOGGERS: diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index 2187176eac..648588421f 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -4026,7 +4026,7 @@ namespace isc { namespace dhcp { #line 2547 "dhcp4_parser.yy" { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); - ctx.stack_.back()->set("control-socket", m); + ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } #line 4033 "dhcp4_parser.cc" @@ -4036,7 +4036,6 @@ namespace isc { namespace dhcp { #line 2551 "dhcp4_parser.yy" { ctx.stack_.pop_back(); - ctx.leave(); } #line 4042 "dhcp4_parser.cc" break; diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 17eaf2add8..a2704c6ed4 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -2546,11 +2546,10 @@ not_empty_control_socket_list: control_socket_entry control_socket_entry: LCURLY_BRACKET { ElementPtr m(new MapElement(ctx.loc2pos(@1))); - ctx.stack_.back()->set("control-socket", m); + ctx.stack_.back()->add(m); ctx.stack_.push_back(m); } control_socket_params RCURLY_BRACKET { ctx.stack_.pop_back(); - ctx.leave(); }; control_socket_params: control_socket_param diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index c2e34c50f0..40fc565277 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -578,6 +578,7 @@ processDhcp4Config(isc::data::ConstElementPtr config_set) { if ((config_pair.first == "option-def") || (config_pair.first == "option-data") || (config_pair.first == "control-socket") || + (config_pair.first == "control-sockets") || (config_pair.first == "multi-threading") || (config_pair.first == "dhcp-queue-control") || (config_pair.first == "host-reservation-identifiers") || diff --git a/src/bin/dhcp4/tests/parser_unittest.cc b/src/bin/dhcp4/tests/parser_unittest.cc index 9d801374db..bc21c35095 100644 --- a/src/bin/dhcp4/tests/parser_unittest.cc +++ b/src/bin/dhcp4/tests/parser_unittest.cc @@ -919,10 +919,21 @@ public: TEST_F(TrailingCommasTest, tests) { string txt(R"({ "Dhcp4": { - "control-socket": { - "socket-name": "/tmp/kea-dhcp4-ctrl.sock", - "socket-type": "unix", - }, + "control-sockets": [ + { + "socket-type": "http", + "socket-address": "127.0.0.1", + "authentication": { + "clients": [ + { + "password-file": "/tmp/pwd", + } + ], + "type": "basic", + }, + "socket-port": 8000, + }, + ], "hooks-libraries": [ { "library": "/usr/local/lib/kea/hooks/libdhcp_dummy.so", @@ -970,22 +981,25 @@ TEST_F(TrailingCommasTest, tests) { })"); testParser(txt, Parser4Context::PARSER_DHCP4, false); - addLog(":5.28"); - addLog(":9.63"); - addLog(":10.8"); - addLog(":14.15"); - addLog(":15.8"); - addLog(":20.24"); - addLog(":28.31"); - addLog(":29.12"); - addLog(":31.28"); - addLog(":32.8"); - addLog(":43.37"); - addLog(":44.12"); - addLog(":47.35"); - addLog(":48.8"); - addLog(":49.6"); - addLog(":50.4"); + addLog(":10.42"); + addLog(":13.26"); + addLog(":15.28"); + addLog(":16.8"); + addLog(":20.63"); + addLog(":21.8"); + addLog(":25.15"); + addLog(":26.8"); + addLog(":31.24"); + addLog(":39.31"); + addLog(":40.12"); + addLog(":42.28"); + addLog(":43.8"); + addLog(":54.37"); + addLog(":55.12"); + addLog(":58.35"); + addLog(":59.8"); + addLog(":60.6"); + addLog(":61.4"); EXPECT_TRUE(checkFile()); // Test with many consecutive commas. diff --git a/src/lib/dhcpsrv/parsers/simple_parser4.cc b/src/lib/dhcpsrv/parsers/simple_parser4.cc index abc4d96fa3..845025e234 100644 --- a/src/lib/dhcpsrv/parsers/simple_parser4.cc +++ b/src/lib/dhcpsrv/parsers/simple_parser4.cc @@ -55,6 +55,7 @@ const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = { { "expired-leases-processing", Element::map }, { "dhcp4o6-port", Element::integer }, { "control-socket", Element::map }, + { "control-sockets", Element::list }, { "dhcp-queue-control", Element::map }, { "dhcp-ddns", Element::map }, { "echo-client-id", Element::boolean },