diff options
37 files changed, 1972 insertions, 1828 deletions
diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc index a6b911528a..20b78029b7 100644 --- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc +++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc @@ -637,7 +637,7 @@ ControlledDhcpv4Srv::processConfig(isc::data::ConstElementPtr config) { // Configure packet queue try { data::ConstElementPtr qc; - qc = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); + qc = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); if (!qc) { // @todo For now we're manually constructing default queue config // This probably needs to be built into the PQM? diff --git a/src/bin/dhcp4/dhcp4_lexer.cc b/src/bin/dhcp4/dhcp4_lexer.cc index 95082ef4fd..afa86bf449 100644 --- a/src/bin/dhcp4/dhcp4_lexer.cc +++ b/src/bin/dhcp4/dhcp4_lexer.cc @@ -700,7 +700,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1466] = +static const flex_int16_t yy_accept[1468] = { 0, 168, 168, 0, 0, 0, 0, 0, 0, 0, 0, 176, 174, 10, 11, 174, 1, 168, 165, 168, 168, @@ -732,137 +732,137 @@ static const flex_int16_t yy_accept[1466] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 173, 171, 0, 170, - 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 173, 171, 0, 170, 169, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 137, 0, 0, 73, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, + 138, 0, 137, 0, 0, 73, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 172, 169, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 139, 0, 0, 141, + 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, + 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 62, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 18, 0, 0, 0, 0, 172, 169, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, - 0, 141, 0, 0, 0, 0, 0, 0, 0, 74, - 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, - 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, + 0, 88, 30, 0, 0, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 12, 146, 0, 143, 0, 142, + 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 62, 0, 38, 0, 0, + 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 30, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 12, 146, 0, - 143, 0, 142, 0, 0, 0, 101, 0, 0, 0, + 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, - 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 76, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, + 0, 0, 107, 77, 0, 0, 0, 0, 82, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 107, 77, 0, 0, 0, 0, - 82, 31, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 36, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, + 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 42, 0, 0, 0, + 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, - 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 125, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 151, 0, 0, 0, 0, 0, 0, 94, + 0, 0, 0, 0, 0, 0, 98, 80, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, - 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, - 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 0, 98, - - 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 92, 22, 0, 103, 0, - 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, - 0, 0, 56, 0, 0, 0, 0, 0, 106, 33, + 0, 0, 0, 92, 22, 0, 103, 0, 0, 0, + 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, + 56, 0, 0, 0, 0, 0, 106, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, + 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, + 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 154, 0, 57, 71, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, - 0, 0, 0, 0, 0, 126, 0, 124, 0, 118, - 117, 0, 46, 0, 21, 0, 0, 0, 0, 0, - 140, 0, 0, 87, 0, 0, 0, 0, 0, 0, - 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 104, 15, 0, 40, 0, 0, - 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, - 0, 51, 0, 0, 99, 0, 0, 0, 0, 90, - 0, 0, 0, 0, 0, 0, 63, 0, 149, 0, - - 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 154, 0, 57, 71, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, + 0, 0, 126, 0, 124, 0, 118, 117, 0, 46, + 0, 21, 0, 0, 0, 0, 0, 140, 0, 0, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 15, 0, 40, 0, 0, 0, 0, + 0, 128, 0, 0, 0, 0, 0, 0, 51, 0, + 0, 99, 0, 0, 0, 0, 90, 0, 0, 0, + 0, 0, 0, 63, 0, 149, 0, 148, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, - 0, 0, 0, 14, 0, 0, 45, 0, 0, 0, - 0, 0, 156, 85, 27, 0, 0, 47, 116, 0, - 0, 152, 121, 0, 0, 0, 0, 0, 0, 0, - 0, 25, 0, 0, 24, 0, 127, 0, 0, 0, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, - - 0, 41, 0, 0, 0, 0, 0, 0, 105, 0, - 0, 0, 26, 0, 153, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 44, 0, 0, 20, - 155, 55, 0, 150, 145, 0, 28, 0, 16, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 0, 0, 45, 0, 0, 0, 0, 0, 156, + 85, 27, 0, 0, 47, 116, 0, 0, 0, 152, + 121, 0, 0, 0, 0, 0, 0, 0, 0, 25, + 0, 0, 24, 0, 127, 0, 0, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 0, 0, 0, 0, 41, + + 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, + 0, 26, 0, 153, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 0, 0, 20, 155, + 55, 0, 150, 145, 0, 28, 0, 0, 16, 0, 0, 134, 0, 0, 0, 0, 0, 0, 113, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 135, 13, - 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, - 19, 0, 131, 0, 0, 0, 0, 0, 130, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 13, 0, 0, 0, 0, 0, 122, 0, 0, 0, + 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, + 112, 0, 19, 0, 131, 0, 0, 0, 0, 0, - 0, 0, 111, 0, 0, 48, 0, 0, 43, 133, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 130, 0, 0, 0, 111, 0, 0, 48, 0, 0, + 43, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 132, 0, 86, 0, 0, - 0, 0, 0, 0, 109, 114, 52, 0, 0, 0, - 0, 108, 0, 0, 136, 0, 0, 0, 0, 0, - 75, 0, 0, 110, 0 + 0, 0, 0, 0, 0, 0, 0, 132, 0, 86, + 0, 0, 0, 0, 0, 0, 109, 114, 52, 0, + 0, 0, 0, 108, 0, 0, 136, 0, 0, 0, + 0, 0, 75, 0, 0, 110, 0 } ; static const YY_CHAR yy_ec[256] = @@ -909,347 +909,347 @@ static const YY_CHAR yy_meta[72] = 3 } ; -static const flex_int16_t yy_base[1478] = +static const flex_int16_t yy_base[1480] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, - 1828, 1829, 32, 1824, 141, 0, 201, 1829, 206, 88, - 11, 213, 1829, 1806, 114, 25, 2, 6, 1829, 1829, - 73, 11, 17, 1829, 1829, 1829, 104, 1812, 1767, 0, - 1804, 107, 1819, 217, 247, 1829, 1763, 185, 1762, 1768, - 93, 58, 1760, 91, 211, 195, 14, 273, 195, 1759, - 181, 275, 202, 209, 76, 68, 188, 1768, 232, 219, - 296, 284, 207, 1751, 230, 287, 324, 305, 1770, 0, - 339, 359, 367, 374, 379, 1829, 0, 1829, 301, 344, - 295, 336, 196, 348, 350, 292, 1829, 1767, 1806, 1829, - - 355, 1829, 395, 1795, 331, 1753, 1763, 351, 367, 1758, - 363, 370, 373, 379, 241, 1801, 0, 446, 375, 1745, - 1747, 1743, 1751, 363, 1747, 1736, 1737, 76, 1753, 1736, - 1745, 1745, 322, 1736, 367, 1737, 1735, 359, 1781, 1785, - 1727, 1778, 1720, 1743, 1740, 1740, 1734, 349, 1727, 1720, - 1725, 1719, 381, 1730, 1723, 1714, 1713, 1727, 362, 1713, - 381, 401, 1707, 442, 376, 390, 1728, 1725, 1726, 1724, - 418, 1706, 1708, 422, 1700, 1717, 1709, 0, 401, 428, - 441, 441, 445, 448, 1708, 1829, 0, 1751, 461, 1698, - 1701, 444, 450, 1709, 460, 1752, 473, 1751, 454, 1750, - - 1829, 508, 1749, 491, 1710, 1690, 1706, 1703, 1702, 1693, - 479, 1742, 1736, 1702, 1681, 1689, 1684, 1698, 1694, 1682, - 1694, 1694, 1685, 1669, 1673, 1686, 1688, 1685, 1677, 1667, - 1685, 1829, 1680, 1683, 1664, 1663, 1713, 1662, 1672, 1675, - 453, 1671, 1659, 1670, 1706, 1653, 1709, 1646, 1661, 468, - 1651, 1667, 1648, 1647, 1653, 1644, 1643, 1650, 1640, 1697, - 1655, 1654, 1648, 77, 1655, 1650, 1642, 1632, 1647, 1646, - 1641, 1645, 1626, 1642, 1628, 1634, 1641, 1629, 314, 1622, - 1636, 1677, 1638, 415, 1629, 489, 1829, 1829, 491, 1829, - 1829, 1616, 0, 457, 478, 1618, 525, 495, 1672, 1625, - - 477, 1829, 1670, 1829, 1664, 544, 1829, 505, 1606, 1662, - 1608, 1614, 1664, 1621, 1616, 1619, 501, 1829, 1617, 1659, - 1614, 1611, 536, 1617, 1655, 1649, 1604, 1599, 1596, 1645, - 1604, 1593, 1609, 1641, 1589, 565, 1603, 1588, 1601, 1588, - 1598, 1593, 1600, 1595, 1591, 465, 1589, 1592, 1587, 1583, - 1631, 515, 1625, 1829, 1624, 1576, 1575, 1574, 1567, 1569, - 1573, 1562, 1575, 542, 1620, 1575, 1572, 1575, 1829, 1574, - 1563, 1563, 1575, 518, 1550, 1551, 1572, 529, 1554, 1603, - 1550, 1564, 1563, 1549, 1561, 1560, 1559, 1558, 526, 1599, - 1598, 1829, 1542, 1541, 576, 1554, 1829, 1829, 1553, 0, - - 1542, 1534, 516, 1539, 1590, 1589, 1547, 1587, 1829, 1535, - 1585, 1829, 554, 614, 538, 1584, 1540, 1536, 1524, 1829, - 1529, 1535, 1538, 1537, 1524, 1523, 1829, 1525, 1522, 190, - 1520, 1522, 1829, 1530, 1527, 1512, 1525, 1520, 588, 1527, - 1515, 1508, 1557, 1829, 1506, 1522, 1554, 1517, 1514, 1515, - 1517, 1549, 1502, 1497, 1496, 1545, 1491, 1506, 1484, 1491, - 1496, 1544, 1829, 1491, 1487, 1485, 1494, 1488, 1495, 1479, - 1479, 1489, 1492, 1481, 1476, 1829, 1531, 1829, 1475, 1486, - 1523, 1470, 1475, 1484, 1478, 1472, 1481, 1521, 1515, 1479, - 1462, 1462, 1457, 1477, 1452, 1458, 1457, 1465, 1469, 1452, - - 1508, 1450, 1464, 1453, 1829, 1829, 1453, 1451, 1829, 1462, - 1496, 1458, 0, 1442, 1459, 1497, 1447, 1829, 1829, 1444, - 1829, 1450, 1829, 554, 562, 590, 1829, 1447, 1435, 1486, - 1433, 1484, 1431, 1430, 1437, 1430, 1442, 1441, 1441, 1429, - 1470, 1437, 1429, 1472, 1418, 1434, 1433, 1829, 1418, 1415, - 1471, 1428, 1420, 1426, 1417, 1425, 1410, 1426, 1408, 1422, - 551, 1404, 1398, 1403, 1418, 1415, 1416, 1413, 1454, 1411, - 1829, 1397, 1399, 1408, 1406, 1443, 1442, 1395, 599, 1404, - 1387, 1388, 1385, 1829, 1399, 1378, 1399, 1396, 1388, 1431, - 1385, 1392, 1428, 1829, 1375, 1389, 1373, 1387, 1390, 1371, - - 1421, 1420, 1419, 1366, 1417, 1416, 1829, 14, 1378, 1378, - 1376, 1359, 1364, 1366, 1829, 1372, 1362, 1829, 1407, 1355, - 1410, 568, 577, 554, 1360, 1403, 562, 1407, 563, 1401, - 1400, 1399, 1353, 1343, 1396, 1349, 1359, 1393, 1356, 1350, - 1337, 1345, 1388, 1392, 1349, 1348, 1829, 1349, 1342, 1331, - 1344, 1347, 1342, 1343, 1340, 1339, 1335, 1341, 1336, 1377, - 1376, 1326, 1316, 560, 1373, 1829, 1372, 1321, 1313, 1314, - 1363, 1326, 1313, 1324, 1829, 1312, 1321, 1320, 1320, 1360, - 1303, 1312, 1305, 1316, 1293, 1297, 1348, 1312, 1294, 1304, - 1344, 1343, 1342, 1289, 1340, 1304, 565, 582, 1281, 1291, - - 563, 1829, 1341, 1287, 1297, 1297, 1280, 1285, 1289, 1279, - 1291, 1294, 1331, 1829, 1325, 585, 1278, 1286, 1285, 1280, - 1276, 1283, 1829, 1, 24, 75, 187, 226, 288, 315, - 375, 403, 507, 504, 601, 573, 573, 599, 589, 1829, - 600, 601, 594, 605, 603, 646, 590, 592, 607, 594, - 658, 617, 603, 606, 1829, 1829, 616, 621, 626, 614, - 1829, 1829, 628, 615, 609, 614, 632, 619, 667, 620, - 670, 621, 677, 1829, 624, 628, 629, 624, 682, 637, - 627, 628, 624, 637, 648, 632, 650, 645, 646, 648, - 641, 643, 644, 644, 646, 661, 700, 659, 664, 641, - - 1829, 666, 656, 701, 661, 651, 666, 667, 654, 668, - 1829, 687, 695, 675, 665, 712, 677, 681, 720, 670, - 665, 677, 672, 673, 669, 678, 673, 729, 688, 679, - 1829, 681, 692, 677, 693, 687, 733, 701, 686, 687, - 1829, 703, 706, 689, 746, 691, 1829, 708, 711, 691, - 709, 747, 707, 703, 698, 716, 715, 716, 702, 717, - 709, 716, 706, 724, 709, 1829, 717, 723, 711, 769, - 1829, 720, 725, 767, 720, 732, 727, 731, 729, 727, - 729, 739, 782, 728, 728, 785, 731, 743, 1829, 731, - 739, 737, 742, 754, 738, 743, 753, 754, 759, 798, - - 757, 773, 779, 752, 763, 754, 806, 751, 1829, 751, - 771, 760, 765, 772, 813, 814, 763, 1829, 759, 762, - 761, 781, 778, 783, 784, 770, 778, 787, 767, 782, - 790, 831, 1829, 832, 833, 786, 796, 798, 787, 783, - 790, 799, 842, 791, 789, 791, 808, 847, 799, 798, - 804, 802, 800, 853, 854, 850, 801, 1829, 815, 808, - 799, 818, 806, 816, 813, 818, 814, 827, 827, 1829, - 811, 812, 1829, 813, 871, 812, 831, 832, 830, 815, - 836, 835, 819, 824, 842, 1829, 832, 865, 856, 828, - 887, 850, 1829, 833, 835, 852, 850, 842, 846, 1829, - - 1829, 856, 891, 840, 893, 842, 900, 845, 856, 848, - 854, 850, 868, 870, 871, 1829, 1829, 870, 1829, 855, - 856, 876, 866, 859, 871, 913, 879, 1829, 871, 921, - 864, 923, 1829, 924, 868, 874, 881, 923, 1829, 1829, - 873, 878, 876, 890, 895, 878, 935, 894, 895, 896, - 934, 888, 893, 942, 892, 944, 1829, 893, 946, 947, - 889, 949, 910, 951, 895, 907, 912, 898, 928, 957, - 917, 1829, 909, 960, 909, 924, 911, 907, 923, 928, - 910, 968, 923, 928, 1829, 929, 922, 931, 932, 929, - 919, 922, 922, 927, 980, 981, 926, 983, 980, 923, - - 938, 931, 989, 1829, 945, 1829, 1829, 950, 942, 952, - 938, 939, 949, 999, 945, 955, 1003, 1829, 953, 953, - 955, 957, 1008, 951, 954, 1829, 973, 1829, 957, 1829, - 1829, 971, 1829, 965, 1829, 1015, 966, 1017, 1018, 1000, - 1829, 978, 979, 1829, 967, 975, 969, 968, 971, 971, - 972, 968, 1829, 990, 976, 977, 992, 992, 995, 995, - 992, 1034, 998, 990, 1829, 1829, 1001, 1829, 998, 1003, - 1004, 1001, 1043, 1829, 994, 995, 995, 1001, 1000, 1011, - 1055, 1829, 1051, 1000, 1829, 1001, 1001, 1003, 1009, 1829, - 1011, 1063, 1014, 1017, 1066, 1029, 1829, 1026, 1829, 1023, - - 1829, 1046, 1066, 1072, 1073, 1074, 1033, 1019, 1077, 1078, - 1033, 1027, 1081, 1082, 1078, 1043, 1039, 1081, 1031, 1036, - 1034, 1091, 1049, 1093, 1053, 1095, 1058, 1048, 1042, 1058, - 1058, 1102, 1046, 1063, 1062, 1829, 1046, 1102, 1103, 1052, - 1105, 1070, 1071, 1829, 1071, 1058, 1829, 1069, 1116, 1076, - 1089, 1076, 1829, 1829, 1829, 1064, 1121, 1829, 1829, 1070, - 1081, 1829, 1829, 1071, 1120, 1065, 1070, 1128, 1078, 1088, - 1089, 1829, 1132, 1087, 1829, 1134, 1829, 1079, 1094, 1082, - 1097, 1101, 1829, 1135, 1103, 1096, 1105, 1087, 1094, 1148, - 1109, 1108, 1151, 1152, 1153, 1104, 1829, 1155, 1156, 1103, - - 1158, 1829, 1108, 1160, 1106, 1105, 1163, 1118, 1829, 1160, - 1113, 1110, 1829, 1124, 1829, 1127, 1170, 1125, 1172, 1133, - 1116, 1118, 1115, 1131, 1132, 1141, 1829, 1131, 1181, 1829, - 1829, 1829, 1177, 1829, 1829, 1142, 1829, 1179, 1829, 1133, - 1140, 1829, 1137, 1142, 1140, 1190, 1191, 1136, 1829, 1151, - 1829, 1152, 1142, 1154, 1197, 1141, 1149, 1150, 1163, 1829, - 1162, 1152, 1151, 1165, 1156, 1165, 1167, 1171, 1829, 1829, - 1210, 1155, 1212, 1172, 1214, 1829, 1210, 1174, 1175, 1162, - 1157, 1220, 1179, 1180, 1181, 1224, 1183, 1186, 1829, 1227, - 1829, 1190, 1829, 1172, 1230, 1231, 1176, 1193, 1829, 1179, - - 1179, 1181, 1829, 1186, 1196, 1829, 1182, 1194, 1829, 1829, - 1199, 1193, 1197, 1188, 1240, 1189, 1197, 1206, 1199, 1194, - 1209, 1200, 1207, 1194, 1209, 1214, 1257, 1216, 1259, 1204, - 1220, 1211, 1225, 1221, 1214, 1829, 1266, 1829, 1267, 1268, - 1225, 1224, 1225, 1215, 1829, 1829, 1829, 1273, 1217, 1233, - 1276, 1829, 1272, 1223, 1829, 1222, 1224, 1235, 1282, 1233, - 1829, 1242, 1285, 1829, 1829, 1291, 1296, 1301, 1306, 1311, - 1316, 1321, 1324, 1298, 1303, 1305, 1318 + 1831, 1832, 32, 1827, 141, 0, 201, 1832, 206, 88, + 11, 213, 1832, 1809, 114, 25, 2, 6, 1832, 1832, + 73, 11, 17, 1832, 1832, 1832, 104, 1815, 1770, 0, + 1807, 107, 1822, 217, 247, 1832, 1766, 185, 1765, 1771, + 93, 58, 1763, 91, 211, 195, 14, 273, 195, 1762, + 181, 275, 202, 209, 76, 68, 188, 1771, 232, 219, + 296, 284, 207, 1754, 230, 287, 324, 305, 1773, 0, + 339, 359, 367, 374, 379, 1832, 0, 1832, 301, 344, + 295, 336, 196, 348, 350, 292, 1832, 1770, 1809, 1832, + + 355, 1832, 395, 1798, 331, 1756, 1766, 351, 367, 1761, + 363, 370, 373, 379, 241, 1804, 0, 446, 375, 1748, + 1750, 1746, 1754, 363, 1750, 1739, 1740, 76, 1756, 1739, + 1748, 1748, 322, 1739, 367, 1740, 1738, 359, 1784, 1788, + 1730, 1781, 1723, 1746, 1743, 1743, 1737, 349, 1730, 1723, + 1728, 1722, 381, 1733, 1726, 1717, 1716, 1730, 362, 1716, + 381, 1732, 1709, 442, 376, 390, 1730, 1727, 1728, 1726, + 417, 1708, 1710, 418, 1702, 1719, 1711, 0, 392, 428, + 441, 401, 445, 448, 1710, 1832, 0, 1753, 454, 1700, + 1703, 444, 450, 1711, 457, 1754, 460, 1753, 454, 1752, + + 1832, 498, 1751, 482, 1712, 1692, 1708, 1705, 1704, 1695, + 468, 1744, 1738, 1704, 1683, 1691, 1686, 1700, 1696, 1684, + 1696, 1696, 1687, 1671, 1675, 1688, 1690, 1687, 1679, 1669, + 1687, 1832, 1682, 1685, 1666, 1665, 1715, 1664, 1674, 1677, + 453, 1673, 1661, 1672, 1708, 1655, 1711, 1648, 1663, 505, + 1653, 1669, 1650, 1649, 1655, 1646, 1645, 1652, 1700, 1658, + 1657, 1651, 77, 1658, 1653, 1645, 1635, 1650, 1649, 1644, + 1648, 1629, 1645, 1631, 1637, 1644, 1632, 314, 1625, 1639, + 1680, 1641, 468, 1632, 484, 1832, 1832, 485, 1832, 1832, + 1619, 0, 475, 489, 1621, 524, 505, 1675, 1628, 501, + + 1832, 1673, 1832, 1667, 551, 1832, 502, 1609, 1665, 1611, + 1617, 1667, 1624, 1619, 1622, 491, 1832, 1620, 1662, 1617, + 1614, 540, 1620, 1658, 1652, 1607, 1602, 1599, 1648, 1607, + 1596, 1612, 1644, 1592, 548, 1606, 1591, 1604, 1591, 1601, + 1596, 1603, 1598, 1594, 500, 1592, 1595, 1590, 1586, 1634, + 509, 1628, 1832, 1627, 1579, 1578, 1577, 1570, 1572, 1576, + 1565, 1578, 530, 1623, 1578, 1575, 1832, 1578, 1567, 1567, + 1579, 521, 1554, 1555, 1576, 531, 1558, 1607, 1554, 1568, + 1567, 1553, 1565, 1564, 1563, 1562, 527, 1603, 1602, 1832, + 1546, 1545, 574, 1558, 1832, 1832, 1557, 0, 1546, 1538, + + 529, 1543, 1594, 1593, 1551, 1591, 1832, 1539, 1589, 1832, + 556, 602, 559, 1588, 1544, 1540, 1528, 1832, 1533, 1539, + 1542, 1541, 1528, 1527, 1832, 1529, 1526, 509, 1524, 1526, + 1832, 1534, 1531, 1516, 1529, 1524, 583, 1531, 1519, 1512, + 1561, 1832, 1510, 1526, 1558, 1521, 1518, 1519, 1521, 1553, + 1506, 1501, 1500, 1549, 1495, 1510, 1488, 1495, 1500, 1548, + 1832, 1495, 1491, 1489, 1498, 1492, 1499, 1483, 1483, 1493, + 1496, 1485, 1480, 1832, 1535, 1832, 1479, 1490, 1475, 1480, + 1489, 1483, 1477, 1486, 1526, 1520, 1484, 1467, 1467, 1462, + 1482, 1457, 1463, 1462, 1470, 1474, 1457, 1513, 1455, 1469, + + 1458, 1832, 1832, 1458, 1456, 1832, 1467, 1501, 1463, 0, + 1447, 1464, 1502, 1452, 1832, 1832, 1449, 1832, 1455, 1832, + 556, 568, 596, 1832, 1452, 1440, 1491, 1438, 1489, 1436, + 1435, 1442, 1435, 1447, 1446, 1446, 1428, 1433, 1474, 1441, + 1433, 1476, 1422, 1438, 1437, 1832, 1422, 1419, 1475, 1432, + 1424, 1430, 1421, 1429, 1414, 1430, 1412, 1426, 557, 1408, + 1402, 1407, 1422, 1419, 1420, 1417, 1458, 1415, 1832, 1401, + 1403, 1412, 1410, 1447, 1446, 1399, 600, 1408, 1391, 1392, + 1389, 1832, 1403, 1382, 1401, 1393, 1436, 1390, 1397, 1433, + 1832, 1380, 1394, 1378, 1392, 1395, 1376, 1426, 1425, 1424, + + 1371, 1422, 1421, 1832, 14, 1383, 1383, 1381, 1364, 1369, + 1371, 1832, 1377, 1367, 1832, 1412, 1360, 1415, 573, 584, + 560, 1365, 1408, 200, 1412, 573, 1406, 1405, 1404, 1358, + 1348, 1401, 1354, 1362, 1363, 1397, 1360, 1354, 1341, 1349, + 1392, 1396, 1353, 1352, 1832, 1353, 1346, 1335, 1348, 1351, + 1346, 1347, 1344, 1343, 1339, 1345, 1340, 1381, 1380, 1330, + 1320, 575, 1377, 1832, 1376, 1325, 1317, 1318, 1367, 1330, + 1317, 1328, 1832, 1316, 1325, 1324, 1324, 1364, 1307, 1316, + 1321, 1298, 1302, 1353, 1317, 1299, 1309, 1349, 1348, 1347, + 1294, 1345, 1309, 579, 593, 1286, 1296, 577, 1832, 1346, + + 1292, 1302, 1302, 1285, 1290, 1294, 1284, 1296, 1299, 1336, + 1832, 1330, 577, 1283, 1291, 1290, 1285, 1281, 1288, 1832, + 1276, 1289, 5, 79, 175, 244, 284, 304, 372, 381, + 411, 422, 532, 501, 531, 591, 582, 1832, 595, 595, + 598, 609, 607, 651, 595, 597, 612, 599, 657, 616, + 602, 605, 1832, 1832, 615, 620, 625, 613, 1832, 1832, + 627, 614, 608, 613, 631, 618, 666, 619, 669, 620, + 676, 1832, 623, 627, 622, 680, 635, 625, 626, 622, + 635, 646, 630, 648, 643, 644, 646, 639, 641, 642, + 642, 644, 659, 698, 657, 662, 639, 1832, 664, 654, + + 699, 659, 649, 664, 665, 652, 666, 1832, 685, 693, + 673, 663, 710, 675, 679, 718, 668, 663, 675, 670, + 671, 667, 676, 671, 727, 686, 687, 678, 1832, 680, + 691, 676, 692, 687, 732, 701, 685, 686, 1832, 702, + 705, 688, 745, 690, 1832, 707, 710, 690, 708, 746, + 706, 702, 697, 715, 714, 715, 701, 716, 708, 715, + 705, 723, 708, 1832, 716, 722, 767, 1832, 718, 723, + 765, 718, 730, 724, 729, 727, 725, 727, 737, 780, + 726, 726, 783, 729, 741, 1832, 729, 737, 735, 740, + 752, 736, 741, 751, 752, 757, 796, 755, 771, 776, + + 750, 761, 752, 804, 749, 1832, 749, 769, 758, 763, + 770, 811, 812, 761, 1832, 809, 758, 761, 760, 780, + 777, 782, 783, 769, 777, 786, 766, 783, 790, 830, + 1832, 831, 832, 785, 795, 797, 786, 782, 789, 798, + 841, 790, 788, 790, 807, 846, 798, 797, 803, 801, + 799, 852, 853, 849, 1832, 813, 806, 797, 816, 804, + 814, 811, 816, 812, 825, 825, 1832, 809, 810, 1832, + 811, 869, 810, 829, 830, 827, 813, 834, 833, 817, + 822, 840, 1832, 830, 863, 854, 826, 885, 848, 1832, + 831, 833, 850, 848, 840, 844, 1832, 1832, 854, 854, + + 890, 839, 892, 841, 899, 844, 855, 847, 853, 849, + 868, 869, 870, 1832, 1832, 869, 1832, 854, 856, 875, + 865, 858, 870, 912, 878, 1832, 870, 920, 863, 922, + 1832, 923, 867, 873, 880, 922, 1832, 1832, 872, 874, + 888, 893, 876, 933, 892, 893, 894, 932, 886, 891, + 940, 890, 942, 1832, 891, 944, 945, 887, 947, 908, + 949, 893, 905, 910, 896, 926, 955, 915, 1832, 907, + 958, 907, 922, 909, 905, 921, 926, 913, 909, 967, + 922, 927, 1832, 928, 921, 930, 931, 928, 918, 921, + 921, 926, 979, 980, 925, 983, 979, 922, 937, 930, + + 989, 1832, 944, 1832, 1832, 949, 941, 951, 937, 938, + 997, 943, 953, 1001, 1832, 951, 951, 953, 955, 1006, + 949, 952, 1832, 971, 1832, 955, 1832, 1832, 969, 1832, + 963, 1832, 1013, 964, 1015, 1016, 998, 1832, 976, 977, + 1832, 965, 973, 967, 966, 969, 969, 970, 977, 967, + 1832, 989, 975, 976, 991, 991, 994, 994, 991, 1033, + 997, 990, 1832, 1832, 1000, 1832, 997, 1002, 1003, 1000, + 1042, 1832, 993, 994, 994, 1000, 999, 1010, 1832, 1049, + 998, 1832, 999, 999, 1001, 1007, 1832, 1009, 1061, 1012, + 1015, 1064, 1027, 1832, 1024, 1832, 1021, 1832, 1044, 1064, + + 1070, 1071, 1072, 1031, 1017, 1075, 1076, 1031, 1021, 1026, + 1080, 1081, 1077, 1042, 1038, 1080, 1030, 1035, 1033, 1090, + 1048, 1092, 1052, 1094, 1058, 1047, 1041, 1057, 1057, 1101, + 1045, 1062, 1061, 1045, 1101, 1102, 1051, 1104, 1069, 1070, + 1832, 1070, 1057, 1832, 1068, 1115, 1075, 1088, 1075, 1832, + 1832, 1832, 1063, 1120, 1832, 1832, 1069, 1067, 1081, 1832, + 1832, 1071, 1120, 1065, 1070, 1128, 1078, 1088, 1089, 1832, + 1132, 1087, 1832, 1134, 1832, 1079, 1094, 1082, 1097, 1101, + 1832, 1135, 1103, 1096, 1105, 1087, 1096, 1148, 1109, 1108, + 1151, 1152, 1153, 1104, 1832, 1155, 1156, 1103, 1158, 1832, + + 1108, 1108, 1161, 1107, 1106, 1164, 1119, 1832, 1161, 1114, + 1111, 1832, 1125, 1832, 1128, 1171, 1126, 1173, 1134, 1117, + 1119, 1116, 1132, 1133, 1142, 1832, 1132, 1182, 1832, 1832, + 1832, 1178, 1832, 1832, 1143, 1832, 1180, 1137, 1832, 1135, + 1142, 1832, 1139, 1144, 1142, 1192, 1193, 1138, 1832, 1153, + 1832, 1154, 1144, 1156, 1199, 1143, 1151, 1152, 1165, 1832, + 1164, 1154, 1153, 1207, 1168, 1159, 1168, 1170, 1174, 1832, + 1832, 1213, 1158, 1215, 1175, 1217, 1832, 1213, 1177, 1178, + 1165, 1160, 1223, 1182, 1832, 1183, 1184, 1227, 1186, 1189, + 1832, 1230, 1832, 1193, 1832, 1175, 1233, 1234, 1179, 1196, + + 1832, 1182, 1182, 1184, 1832, 1189, 1199, 1832, 1185, 1197, + 1832, 1832, 1202, 1196, 1200, 1191, 1243, 1192, 1200, 1209, + 1202, 1197, 1212, 1203, 1210, 1197, 1212, 1217, 1260, 1219, + 1262, 1207, 1223, 1214, 1228, 1224, 1217, 1832, 1269, 1832, + 1270, 1271, 1228, 1227, 1228, 1218, 1832, 1832, 1832, 1276, + 1220, 1236, 1279, 1832, 1275, 1226, 1832, 1225, 1227, 1238, + 1285, 1236, 1832, 1245, 1288, 1832, 1832, 1294, 1299, 1304, + 1309, 1314, 1319, 1324, 1327, 1301, 1306, 1308, 1321 } ; -static const flex_int16_t yy_def[1478] = +static const flex_int16_t yy_def[1480] = { 0, - 1466, 1466, 1467, 1467, 1466, 1466, 1466, 1466, 1466, 1466, - 1465, 1465, 1465, 1465, 1465, 1468, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1469, - 1465, 1465, 1465, 1470, 15, 1465, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1471, 45, 45, + 1468, 1468, 1469, 1469, 1468, 1468, 1468, 1468, 1468, 1468, + 1467, 1467, 1467, 1467, 1467, 1470, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, + 1467, 1467, 1467, 1472, 15, 1467, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1473, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1468, - 1465, 1465, 1465, 1465, 1465, 1465, 1472, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1469, 1465, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1470, + 1467, 1467, 1467, 1467, 1467, 1467, 1474, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, 1467, - 1470, 1465, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1473, 45, 1471, 45, 45, + 1472, 1467, 1467, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1475, 45, 1473, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1472, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1474, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1473, + 45, 45, 45, 45, 45, 45, 45, 1474, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1476, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1475, - 1465, 1471, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 1473, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1475, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1477, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 1465, 45, 1471, 1465, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, + 1467, 45, 1467, 45, 1473, 1467, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45, + 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467, + 45, 45, 45, 45, 1467, 1467, 1467, 1478, 45, 45, + + 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467, + 45, 1473, 45, 45, 45, 45, 45, 1467, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1467, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 45, 45, 45, 1465, 1465, 1465, 1476, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45, - 45, 1465, 45, 1471, 45, 45, 45, 45, 45, 1465, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, + 45, 1467, 1467, 45, 45, 1467, 45, 45, 1467, 1479, + 45, 45, 45, 45, 1467, 1467, 45, 1467, 45, 1467, + 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1465, 1465, 45, 45, 1465, 45, - 45, 1465, 1477, 45, 45, 45, 45, 1465, 1465, 45, - 1465, 45, 1465, 45, 45, 45, 1465, 45, 45, 45, + 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 45, 1467, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, + 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, - 45, 45, 45, 45, 1465, 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, - 45, 45, 45, 45, 1465, 45, 45, 45, 45, 45, + 45, 45, 1467, 1467, 45, 45, 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, - 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1465, + 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1465, 1465, 45, 45, 45, 45, - 1465, 1465, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1467, 45, 45, 45, 1467, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 1465, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1467, 45, 45, 45, 45, 45, 45, 1467, + 45, 45, 45, 45, 45, 45, 1467, 1467, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1465, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 1465, - - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 1465, 45, 1465, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 1465, 1465, + 45, 45, 45, 1467, 1467, 45, 1467, 45, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, + 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1465, 45, 45, 45, 45, 45, + 45, 45, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 1465, 1465, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 1465, - 1465, 45, 1465, 45, 1465, 45, 45, 45, 45, 45, - 1465, 45, 45, 1465, 45, 45, 45, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1465, 1465, 45, 1465, 45, 45, - 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 45, 1465, 45, 45, 45, 45, 1465, - 45, 45, 45, 45, 45, 45, 1465, 45, 1465, 45, - - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1467, 45, 1467, 1467, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, + 45, 45, 1467, 45, 1467, 45, 1467, 1467, 45, 1467, + 45, 1467, 45, 45, 45, 45, 45, 1467, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1467, 1467, 45, 1467, 45, 45, 45, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45, + 45, 1467, 45, 45, 45, 45, 1467, 45, 45, 45, + 45, 45, 45, 1467, 45, 1467, 45, 1467, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, - 45, 45, 45, 1465, 45, 45, 1465, 45, 45, 45, - 45, 45, 1465, 1465, 1465, 45, 45, 1465, 1465, 45, - 45, 1465, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 1465, 45, 45, 1465, 45, 1465, 45, 45, 45, - 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, - - 45, 1465, 45, 45, 45, 45, 45, 45, 1465, 45, - 45, 45, 1465, 45, 1465, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1465, 45, 45, 1465, - 1465, 1465, 45, 1465, 1465, 45, 1465, 45, 1465, 45, - 45, 1465, 45, 45, 45, 45, 45, 45, 1465, 45, - 1465, 45, 45, 45, 45, 45, 45, 45, 45, 1465, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 1465, - 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1465, 45, - 1465, 45, 1465, 45, 45, 45, 45, 45, 1465, 45, - - 45, 45, 1465, 45, 45, 1465, 45, 45, 1465, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1467, 45, 45, 1467, 45, 45, 45, 45, 45, 1467, + 1467, 1467, 45, 45, 1467, 1467, 45, 45, 45, 1467, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467, + 45, 45, 1467, 45, 1467, 45, 45, 45, 45, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 1467, + + 45, 45, 45, 45, 45, 45, 45, 1467, 45, 45, + 45, 1467, 45, 1467, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 45, 1467, 1467, + 1467, 45, 1467, 1467, 45, 1467, 45, 45, 1467, 45, + 45, 1467, 45, 45, 45, 45, 45, 45, 1467, 45, + 1467, 45, 45, 45, 45, 45, 45, 45, 45, 1467, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1467, + 1467, 45, 45, 45, 45, 45, 1467, 45, 45, 45, + 45, 45, 45, 45, 1467, 45, 45, 45, 45, 45, + 1467, 45, 1467, 45, 1467, 45, 45, 45, 45, 45, + + 1467, 45, 45, 45, 1467, 45, 45, 1467, 45, 45, + 1467, 1467, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 1465, 45, 45, - 45, 45, 45, 45, 1465, 1465, 1465, 45, 45, 45, - 45, 1465, 45, 45, 1465, 45, 45, 45, 45, 45, - 1465, 45, 45, 1465, 0, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465 + 45, 45, 45, 45, 45, 45, 45, 1467, 45, 1467, + 45, 45, 45, 45, 45, 45, 1467, 1467, 1467, 45, + 45, 45, 45, 1467, 45, 45, 1467, 45, 45, 45, + 45, 45, 1467, 45, 45, 1467, 0, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467 } ; -static const flex_int16_t yy_nxt[1901] = +static const flex_int16_t yy_nxt[1904] = { 0, - 1465, 13, 14, 13, 1465, 15, 16, 1465, 17, 18, - 19, 20, 21, 22, 22, 22, 23, 24, 86, 702, - 37, 14, 37, 87, 25, 26, 38, 1465, 703, 27, + 1467, 13, 14, 13, 1467, 15, 16, 1467, 17, 18, + 19, 20, 21, 22, 22, 22, 23, 24, 86, 699, + 37, 14, 37, 87, 25, 26, 38, 1467, 700, 27, 37, 14, 37, 42, 28, 42, 38, 92, 93, 29, 115, 30, 13, 14, 13, 91, 92, 25, 31, 93, - 13, 14, 13, 13, 14, 13, 32, 40, 820, 13, - 14, 13, 33, 40, 115, 92, 93, 821, 91, 34, + 13, 14, 13, 13, 14, 13, 32, 40, 1467, 13, + 14, 13, 33, 40, 115, 92, 93, 819, 91, 34, 35, 13, 14, 13, 95, 15, 16, 96, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 13, 14, 13, 109, 39, 91, 25, 26, 13, 14, 13, 27, @@ -1257,7 +1257,7 @@ static const flex_int16_t yy_nxt[1901] = 39, 85, 85, 85, 28, 42, 41, 42, 42, 29, 42, 30, 83, 108, 41, 111, 94, 25, 31, 109, 215, 216, 89, 136, 89, 138, 32, 90, 90, 90, - 137, 373, 33, 139, 374, 83, 108, 822, 111, 34, + 137, 371, 33, 139, 372, 83, 108, 820, 111, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 45, 45, 45, 45, 48, 45, 49, 50, 45, 51, 45, 52, 53, @@ -1268,201 +1268,202 @@ static const flex_int16_t yy_nxt[1901] = 74, 75, 76, 77, 78, 79, 57, 45, 45, 45, 45, 45, 81, 105, 82, 82, 82, 81, 114, 84, 84, 84, 102, 105, 81, 83, 84, 84, 84, 108, - 83, 181, 122, 112, 140, 123, 539, 83, 124, 105, - 125, 114, 126, 113, 141, 823, 142, 132, 83, 119, - 159, 540, 108, 83, 160, 120, 112, 103, 133, 181, + 83, 181, 122, 112, 140, 123, 821, 83, 124, 105, + 125, 114, 126, 113, 141, 718, 142, 132, 83, 119, + 159, 719, 108, 83, 160, 120, 112, 103, 133, 181, 83, 45, 148, 135, 161, 199, 149, 45, 134, 45, 45, 113, 45, 163, 45, 45, 45, 164, 117, 144, - 145, 45, 45, 146, 45, 45, 150, 824, 199, 147, + 145, 45, 45, 146, 45, 45, 150, 822, 199, 147, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 90, 90, 90, 45, 127, 302, - 111, 45, 128, 179, 389, 129, 130, 181, 114, 45, - 165, 825, 154, 45, 166, 45, 118, 167, 131, 151, + 45, 45, 45, 45, 90, 90, 90, 45, 127, 301, + 111, 45, 128, 179, 387, 129, 130, 181, 114, 45, + 165, 823, 154, 45, 166, 45, 118, 167, 131, 151, 155, 152, 156, 153, 168, 169, 112, 157, 158, 179, 170, 174, 85, 85, 85, 184, 113, 90, 90, 90, - 102, 175, 826, 83, 180, 221, 176, 222, 189, 171, + 102, 175, 824, 83, 180, 221, 176, 222, 189, 171, 81, 172, 82, 82, 82, 89, 179, 89, 180, 192, 90, 90, 90, 83, 113, 81, 83, 84, 84, 84, 180, 173, 85, 85, 85, 103, 189, 193, 83, 195, 101, 196, 182, 83, 183, 192, 83, 101, 197, 209, 198, 240, 189, 228, 224, 241, 229, 195, 210, 211, - 230, 83, 252, 253, 193, 394, 83, 195, 196, 203, - 225, 270, 271, 827, 286, 101, 197, 198, 255, 101, - 204, 256, 257, 101, 258, 195, 272, 246, 259, 196, - 273, 101, 261, 198, 274, 101, 287, 101, 187, 202, - 202, 202, 286, 346, 828, 288, 202, 202, 202, 202, - 202, 202, 288, 287, 286, 395, 279, 298, 357, 299, - 282, 295, 287, 305, 301, 262, 263, 264, 288, 202, - 202, 202, 202, 202, 202, 291, 265, 303, 266, 290, - - 267, 268, 289, 269, 295, 298, 299, 301, 401, 411, - 305, 295, 358, 397, 347, 397, 403, 348, 402, 408, - 303, 306, 306, 306, 457, 458, 359, 315, 306, 306, - 306, 306, 306, 306, 308, 316, 397, 411, 398, 405, - 406, 317, 408, 403, 424, 403, 430, 476, 407, 516, - 431, 306, 306, 306, 306, 306, 306, 414, 414, 414, - 829, 425, 830, 464, 414, 414, 414, 414, 414, 414, - 444, 516, 415, 465, 486, 445, 491, 516, 487, 503, - 492, 509, 504, 524, 622, 525, 510, 414, 414, 414, - 414, 414, 414, 548, 623, 618, 657, 658, 549, 526, - - 624, 716, 715, 477, 675, 717, 831, 721, 724, 725, - 524, 622, 525, 722, 759, 718, 791, 760, 813, 799, - 832, 446, 623, 792, 716, 800, 447, 45, 45, 45, - 715, 833, 793, 794, 45, 45, 45, 45, 45, 45, - 795, 676, 834, 835, 796, 836, 813, 837, 838, 839, - 840, 841, 843, 844, 845, 846, 842, 45, 45, 45, - 45, 45, 45, 847, 848, 849, 850, 851, 852, 853, - 854, 855, 856, 857, 858, 859, 861, 862, 863, 860, - 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, - 924, 925, 903, 926, 927, 902, 928, 929, 930, 931, - 932, 933, 935, 936, 937, 938, 939, 940, 941, 942, - 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, - 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, - 953, 964, 965, 966, 967, 968, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 978, 979, 980, 981, 982, - - 983, 984, 985, 986, 987, 988, 990, 934, 989, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 988, 1015, 989, 1016, 1017, 1019, 1021, - 1022, 1023, 1018, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, - 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, - 1020, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, - 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, - - 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, - 1090, 1091, 1069, 1092, 1093, 1094, 1095, 1096, 1070, 1097, - 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, - 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, - 1118, 1119, 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 1141, 1142, 1143, 1144, 1146, 1147, 1148, 1149, - 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, - 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1140, - 1169, 1170, 1171, 1173, 1174, 1123, 1175, 1176, 1177, 1178, - - 1172, 1179, 1180, 1181, 1182, 1183, 1184, 1145, 1185, 1186, - 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, - 1197, 1198, 1199, 1201, 1202, 1203, 1204, 1200, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, - 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1202, 1224, 1225, - 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, - 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, - 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, - 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, - 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1274, 1275, 1276, - - 1277, 1278, 1251, 1279, 1280, 1281, 1282, 1283, 1284, 1285, - 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, - 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, - 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, - 1326, 1299, 1273, 1327, 1328, 1329, 1330, 1331, 1332, 1333, - 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, - 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, - 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, - 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, - - 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, - 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, - 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, - 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, - 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, - 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, - 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, - 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, - 1464, 12, 12, 12, 12, 12, 36, 36, 36, 36, - - 36, 80, 293, 80, 80, 80, 99, 400, 99, 513, - 99, 101, 101, 101, 101, 101, 116, 116, 116, 116, - 116, 178, 101, 178, 178, 178, 200, 200, 200, 819, - 818, 817, 816, 815, 814, 812, 811, 810, 809, 808, - 807, 806, 805, 804, 803, 802, 801, 798, 797, 790, - 789, 788, 787, 786, 785, 784, 783, 782, 781, 780, - 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, - 769, 768, 767, 766, 765, 764, 763, 762, 761, 758, - 757, 756, 755, 754, 753, 752, 751, 750, 749, 748, - 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, - - 737, 736, 735, 734, 733, 732, 731, 730, 729, 728, - 727, 726, 723, 720, 719, 714, 713, 712, 711, 710, - 709, 708, 707, 706, 705, 704, 701, 700, 699, 698, - 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, - 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, - 677, 674, 673, 672, 671, 670, 669, 668, 667, 666, - 665, 664, 663, 662, 661, 660, 659, 656, 655, 654, - 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, - 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, - 633, 632, 631, 630, 629, 628, 627, 626, 625, 621, - - 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, - 610, 609, 608, 607, 606, 605, 604, 603, 602, 601, - 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, - 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, - 580, 579, 578, 577, 576, 575, 574, 573, 572, 571, - 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, - 560, 559, 558, 557, 556, 555, 554, 553, 552, 551, - 550, 547, 546, 545, 544, 543, 542, 541, 538, 537, - 536, 535, 534, 533, 532, 531, 530, 529, 528, 527, - 523, 522, 521, 520, 519, 518, 517, 515, 514, 512, - - 511, 508, 507, 506, 505, 502, 501, 500, 499, 498, - 497, 496, 495, 494, 493, 490, 489, 488, 485, 484, - 483, 482, 481, 480, 479, 478, 475, 474, 473, 472, - 471, 470, 469, 468, 467, 466, 463, 462, 461, 460, - 459, 456, 455, 454, 453, 452, 451, 450, 449, 448, - 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, - 433, 432, 429, 428, 427, 426, 423, 422, 421, 420, - 419, 418, 417, 416, 413, 412, 410, 409, 404, 399, - 396, 393, 392, 391, 390, 388, 387, 386, 385, 384, - 383, 382, 381, 380, 379, 378, 377, 376, 375, 372, - - 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, - 361, 360, 356, 355, 354, 353, 352, 351, 350, 349, - 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - 325, 324, 323, 322, 321, 320, 319, 318, 314, 313, - 312, 311, 310, 309, 307, 201, 304, 302, 300, 297, - 296, 294, 292, 285, 284, 283, 281, 280, 278, 277, - 276, 275, 260, 254, 251, 250, 249, 248, 247, 245, - 244, 243, 242, 239, 238, 237, 236, 235, 234, 233, - 232, 231, 227, 226, 223, 220, 219, 218, 217, 214, - - 213, 212, 208, 207, 206, 205, 201, 194, 191, 190, - 188, 186, 185, 177, 162, 143, 121, 110, 107, 106, - 104, 43, 100, 98, 97, 88, 43, 1465, 11, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465 - + 230, 83, 252, 253, 193, 285, 83, 195, 196, 203, + 225, 269, 270, 825, 285, 101, 197, 198, 255, 101, + 204, 256, 257, 101, 826, 195, 271, 246, 196, 198, + 272, 101, 260, 285, 273, 101, 286, 101, 187, 202, + 202, 202, 288, 345, 827, 287, 202, 202, 202, 202, + 202, 202, 287, 286, 294, 278, 281, 297, 392, 298, + 828, 300, 286, 304, 302, 261, 262, 263, 287, 202, + 202, 202, 202, 202, 202, 290, 264, 294, 265, 289, + + 266, 267, 294, 268, 300, 297, 298, 302, 395, 395, + 304, 305, 305, 305, 346, 356, 314, 347, 305, 305, + 305, 305, 305, 305, 315, 307, 399, 401, 393, 406, + 316, 395, 396, 409, 422, 474, 400, 829, 403, 404, + 401, 305, 305, 305, 305, 305, 305, 405, 830, 357, + 428, 423, 406, 442, 429, 536, 401, 462, 443, 455, + 456, 409, 513, 358, 412, 412, 412, 463, 537, 413, + 538, 412, 412, 412, 412, 412, 412, 483, 488, 506, + 500, 484, 489, 501, 507, 521, 619, 522, 546, 831, + 513, 475, 513, 547, 412, 412, 412, 412, 412, 412, + + 620, 615, 655, 656, 444, 673, 621, 712, 713, 445, + 810, 714, 521, 619, 522, 45, 45, 45, 721, 722, + 523, 715, 45, 45, 45, 45, 45, 45, 620, 757, + 788, 713, 758, 796, 832, 712, 833, 789, 810, 797, + 834, 835, 674, 790, 791, 45, 45, 45, 45, 45, + 45, 792, 836, 837, 838, 793, 839, 841, 842, 843, + 844, 840, 845, 846, 847, 848, 849, 850, 851, 852, + 853, 854, 855, 856, 857, 859, 860, 861, 858, 862, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, + + 883, 884, 885, 886, 887, 888, 889, 890, 891, 892, + 893, 894, 895, 896, 897, 898, 899, 900, 901, 902, + 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, + 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, + 900, 923, 924, 899, 925, 926, 927, 928, 929, 930, + 931, 933, 934, 935, 936, 937, 938, 939, 940, 941, + 942, 943, 944, 945, 946, 947, 948, 949, 950, 952, + 953, 954, 955, 956, 957, 958, 959, 960, 961, 951, + 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 974, 975, 976, 977, 978, 979, 980, 981, + + 982, 983, 984, 985, 987, 986, 932, 988, 989, 990, + 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 1011, 985, 986, 1012, 1013, 1014, 1015, 1017, 1019, 1020, + 1021, 1016, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, + 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1018, + 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, + + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1066, 1089, 1090, 1091, 1092, 1093, 1067, 1094, 1095, 1096, + 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, + 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, + 1117, 1118, 1119, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1147, 1148, + 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, + 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1137, 1166, 1167, + 1168, 1169, 1171, 1120, 1172, 1173, 1174, 1175, 1176, 1170, + + 1177, 1178, 1179, 1180, 1181, 1142, 1182, 1183, 1184, 1185, + 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, + 1196, 1198, 1199, 1200, 1201, 1197, 1202, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1216, 1217, 1218, 1219, 1220, 1199, 1221, 1222, 1223, 1224, + 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, + 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, + 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, + 1265, 1266, 1267, 1268, 1269, 1270, 1272, 1273, 1274, 1275, + + 1248, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, + 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, + 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, + 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, + 1297, 1271, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, + 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, + 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, + 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, + 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, + + 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, + 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, + 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, + 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, + 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, + 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, + 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, + 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, + 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, + 1463, 1464, 1465, 1466, 12, 12, 12, 12, 12, 36, + + 36, 36, 36, 36, 80, 292, 80, 80, 80, 99, + 398, 99, 510, 99, 101, 101, 101, 101, 101, 116, + 116, 116, 116, 116, 178, 101, 178, 178, 178, 200, + 200, 200, 818, 817, 816, 815, 814, 813, 812, 811, + 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, + 799, 798, 795, 794, 787, 786, 785, 784, 783, 782, + 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, + 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, + 761, 760, 759, 756, 755, 754, 753, 752, 751, 750, + 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, + + 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, + 729, 728, 727, 726, 725, 724, 723, 720, 717, 716, + 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, + 701, 698, 697, 696, 695, 694, 693, 692, 691, 690, + 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, + 679, 678, 677, 676, 675, 672, 671, 670, 669, 668, + 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, + 657, 654, 653, 652, 651, 650, 649, 648, 647, 646, + 645, 644, 643, 642, 641, 640, 639, 638, 637, 636, + 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, + + 625, 624, 623, 622, 618, 617, 616, 615, 614, 613, + 612, 611, 610, 609, 608, 607, 606, 605, 604, 603, + 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, + 592, 591, 590, 589, 588, 587, 586, 585, 584, 583, + 582, 581, 580, 579, 578, 577, 576, 575, 574, 573, + 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, + 562, 561, 560, 559, 558, 557, 556, 555, 554, 553, + 552, 551, 550, 549, 548, 545, 544, 543, 542, 541, + 540, 539, 535, 534, 533, 532, 531, 530, 529, 528, + 527, 526, 525, 524, 520, 519, 518, 517, 516, 515, + + 514, 512, 511, 509, 508, 505, 504, 503, 502, 499, + 498, 497, 496, 495, 494, 493, 492, 491, 490, 487, + 486, 485, 482, 481, 480, 479, 478, 477, 476, 473, + 472, 471, 470, 469, 468, 467, 466, 465, 464, 461, + 460, 459, 458, 457, 454, 453, 452, 451, 450, 449, + 448, 447, 446, 441, 440, 439, 438, 437, 436, 435, + 434, 433, 432, 431, 430, 427, 426, 425, 424, 421, + 420, 419, 418, 417, 416, 415, 414, 411, 410, 408, + 407, 402, 397, 394, 391, 390, 389, 388, 386, 385, + 384, 383, 382, 381, 380, 379, 378, 377, 376, 375, + + 374, 373, 370, 369, 368, 367, 366, 365, 364, 363, + 362, 361, 360, 359, 355, 354, 353, 352, 351, 350, + 349, 348, 344, 343, 342, 341, 340, 339, 338, 337, + 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, + 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, + 313, 312, 311, 310, 309, 308, 306, 201, 303, 301, + 299, 296, 295, 293, 291, 284, 283, 282, 280, 279, + 277, 276, 275, 274, 259, 258, 254, 251, 250, 249, + 248, 247, 245, 244, 243, 242, 239, 238, 237, 236, + 235, 234, 233, 232, 231, 227, 226, 223, 220, 219, + + 218, 217, 214, 213, 212, 208, 207, 206, 205, 201, + 194, 191, 190, 188, 186, 185, 177, 162, 143, 121, + 110, 107, 106, 104, 43, 100, 98, 97, 88, 43, + 1467, 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1467, 1467 } ; -static const flex_int16_t yy_chk[1901] = +static const flex_int16_t yy_chk[1904] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 21, 608, - 3, 3, 3, 21, 1, 1, 3, 0, 608, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 21, 605, + 3, 3, 3, 21, 1, 1, 3, 0, 605, 1, 4, 4, 4, 13, 1, 13, 4, 27, 28, 1, 57, 1, 5, 5, 5, 26, 32, 1, 1, 33, - 6, 6, 6, 7, 7, 7, 1, 7, 724, 8, - 8, 8, 1, 8, 57, 27, 28, 725, 26, 1, + 6, 6, 6, 7, 7, 7, 1, 7, 0, 8, + 8, 8, 1, 8, 57, 27, 28, 723, 26, 1, 1, 2, 2, 2, 32, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, 9, 52, 5, 31, 2, 2, 10, 10, 10, 2, @@ -1470,7 +1471,7 @@ static const flex_int16_t yy_chk[1901] = 6, 20, 20, 20, 2, 37, 9, 37, 42, 2, 42, 2, 20, 51, 10, 54, 31, 2, 2, 52, 128, 128, 25, 65, 25, 66, 2, 25, 25, 25, - 65, 264, 2, 66, 264, 20, 51, 726, 54, 2, + 65, 263, 2, 66, 263, 20, 51, 724, 54, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1481,190 +1482,191 @@ static const flex_int16_t yy_chk[1901] = 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 17, 48, 17, 17, 17, 19, 56, 19, 19, 19, 44, 59, 22, 17, 22, 22, 22, 64, - 19, 93, 61, 55, 67, 61, 430, 22, 61, 48, - 61, 56, 61, 55, 67, 727, 67, 63, 17, 59, - 73, 430, 64, 19, 73, 59, 55, 44, 63, 93, + 19, 93, 61, 55, 67, 61, 725, 22, 61, 48, + 61, 56, 61, 55, 67, 624, 67, 63, 17, 59, + 73, 624, 64, 19, 73, 59, 55, 44, 63, 93, 22, 45, 70, 64, 73, 115, 70, 45, 63, 45, 45, 55, 45, 75, 45, 45, 45, 75, 58, 69, - 69, 45, 45, 69, 45, 58, 70, 728, 115, 69, + 69, 45, 45, 69, 45, 58, 70, 726, 115, 69, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 58, 89, 89, 89, 58, 62, 279, - 71, 58, 62, 91, 279, 62, 62, 96, 78, 58, - 76, 729, 72, 58, 76, 58, 58, 76, 62, 71, + 45, 45, 45, 58, 89, 89, 89, 58, 62, 278, + 71, 58, 62, 91, 278, 62, 62, 96, 78, 58, + 76, 727, 72, 58, 76, 58, 58, 76, 62, 71, 72, 71, 72, 71, 76, 76, 77, 72, 72, 91, 76, 78, 81, 81, 81, 96, 77, 90, 90, 90, - 101, 78, 730, 81, 92, 133, 78, 133, 105, 77, + 101, 78, 728, 81, 92, 133, 78, 133, 105, 77, 82, 77, 82, 82, 82, 83, 94, 83, 95, 108, 83, 83, 83, 82, 77, 84, 81, 84, 84, 84, 92, 77, 85, 85, 85, 101, 105, 109, 84, 111, 103, 112, 94, 85, 95, 108, 82, 103, 113, 124, 114, 148, 119, 138, 135, 148, 138, 153, 124, 124, - 138, 84, 159, 159, 109, 284, 85, 111, 112, 119, - 135, 165, 165, 731, 179, 103, 113, 114, 161, 103, - 119, 161, 161, 103, 162, 153, 166, 153, 162, 171, - 166, 103, 164, 174, 166, 103, 180, 103, 103, 118, - 118, 118, 179, 241, 732, 181, 118, 118, 118, 118, - 118, 118, 184, 183, 182, 284, 171, 192, 250, 193, - 174, 189, 180, 199, 195, 164, 164, 164, 181, 118, - 118, 118, 118, 118, 118, 184, 164, 197, 164, 183, - - 164, 164, 182, 164, 189, 192, 193, 195, 294, 301, - 199, 204, 250, 286, 241, 289, 295, 241, 294, 298, - 197, 202, 202, 202, 346, 346, 250, 211, 202, 202, - 202, 202, 202, 202, 204, 211, 286, 301, 289, 297, - 297, 211, 298, 308, 317, 295, 323, 364, 297, 403, - 323, 202, 202, 202, 202, 202, 202, 306, 306, 306, - 733, 317, 734, 352, 306, 306, 306, 306, 306, 306, - 336, 415, 308, 352, 374, 336, 378, 403, 374, 389, - 378, 395, 389, 413, 524, 413, 395, 306, 306, 306, - 306, 306, 306, 439, 525, 526, 561, 561, 439, 415, - - 526, 623, 622, 364, 579, 624, 735, 627, 629, 629, - 413, 524, 413, 627, 664, 624, 697, 664, 716, 701, - 736, 336, 525, 697, 623, 701, 336, 414, 414, 414, - 622, 737, 698, 698, 414, 414, 414, 414, 414, 414, - 698, 579, 738, 739, 698, 741, 716, 742, 743, 744, - 745, 746, 747, 748, 749, 750, 746, 414, 414, 414, - 414, 414, 414, 751, 752, 753, 754, 757, 758, 759, - 760, 763, 764, 765, 766, 767, 768, 769, 770, 767, - 771, 772, 773, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - - 792, 793, 794, 795, 796, 797, 798, 799, 800, 802, - 803, 804, 805, 806, 807, 808, 809, 810, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, - 824, 825, 826, 827, 828, 829, 830, 832, 833, 834, - 835, 836, 813, 837, 838, 812, 839, 840, 842, 843, - 844, 845, 846, 848, 849, 850, 851, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, - 865, 867, 868, 869, 870, 872, 873, 874, 875, 876, - 864, 877, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 888, 890, 891, 892, 893, 894, 895, 896, - - 897, 898, 899, 900, 901, 902, 904, 845, 903, 905, - 906, 907, 908, 910, 911, 912, 913, 914, 915, 916, - 917, 919, 920, 921, 922, 923, 924, 925, 926, 927, - 928, 929, 930, 902, 931, 903, 932, 934, 935, 936, - 937, 938, 934, 939, 940, 941, 942, 943, 944, 945, - 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, - 956, 957, 959, 960, 961, 962, 963, 964, 965, 966, - 967, 968, 969, 971, 972, 974, 975, 976, 977, 978, - 935, 979, 980, 981, 982, 983, 984, 985, 987, 988, - 989, 990, 991, 992, 994, 995, 996, 997, 998, 999, - - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 988, 1014, 1015, 1018, 1020, 1021, 989, 1022, - 1023, 1024, 1025, 1026, 1027, 1029, 1030, 1031, 1032, 1034, - 1035, 1036, 1037, 1038, 1041, 1042, 1043, 1044, 1045, 1046, - 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, - 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, - 1068, 1069, 1070, 1071, 1073, 1074, 1075, 1076, 1077, 1078, - 1079, 1080, 1081, 1082, 1083, 1084, 1086, 1087, 1088, 1089, - 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1069, - 1099, 1100, 1101, 1102, 1103, 1051, 1105, 1108, 1109, 1110, - - 1101, 1111, 1112, 1113, 1114, 1115, 1116, 1074, 1117, 1119, - 1120, 1121, 1122, 1123, 1124, 1125, 1127, 1129, 1132, 1134, - 1136, 1137, 1138, 1139, 1140, 1142, 1143, 1138, 1145, 1146, - 1147, 1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1140, 1167, 1169, - 1170, 1171, 1172, 1173, 1175, 1176, 1177, 1178, 1179, 1180, - 1181, 1183, 1184, 1186, 1187, 1188, 1189, 1191, 1192, 1193, - 1194, 1195, 1196, 1198, 1200, 1202, 1203, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, - 1217, 1218, 1219, 1220, 1221, 1221, 1222, 1223, 1224, 1225, - - 1226, 1227, 1202, 1228, 1229, 1230, 1231, 1232, 1233, 1234, - 1235, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1245, 1246, - 1248, 1249, 1250, 1251, 1252, 1256, 1257, 1260, 1261, 1264, - 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1273, 1274, 1276, - 1278, 1279, 1280, 1281, 1282, 1284, 1285, 1286, 1287, 1288, - 1289, 1251, 1222, 1290, 1291, 1292, 1293, 1294, 1295, 1296, - 1298, 1299, 1300, 1301, 1303, 1304, 1305, 1306, 1307, 1308, - 1310, 1311, 1312, 1314, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1328, 1329, 1333, 1336, 1338, - 1340, 1341, 1343, 1344, 1345, 1346, 1347, 1348, 1350, 1352, - - 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361, 1362, 1363, - 1364, 1365, 1366, 1367, 1368, 1371, 1372, 1373, 1374, 1375, - 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, - 1387, 1388, 1390, 1392, 1394, 1395, 1396, 1397, 1398, 1400, - 1401, 1402, 1404, 1405, 1407, 1408, 1411, 1412, 1413, 1414, - 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, - 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, - 1435, 1437, 1439, 1440, 1441, 1442, 1443, 1444, 1448, 1449, - 1450, 1451, 1453, 1454, 1456, 1457, 1458, 1459, 1460, 1462, - 1463, 1466, 1466, 1466, 1466, 1466, 1467, 1467, 1467, 1467, - - 1467, 1468, 1474, 1468, 1468, 1468, 1469, 1475, 1469, 1476, - 1469, 1470, 1470, 1470, 1470, 1470, 1471, 1471, 1471, 1471, - 1471, 1472, 1477, 1472, 1472, 1472, 1473, 1473, 1473, 722, - 721, 720, 719, 718, 717, 715, 713, 712, 711, 710, - 709, 708, 707, 706, 705, 704, 703, 700, 699, 696, - 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, - 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, - 674, 673, 672, 671, 670, 669, 668, 667, 665, 663, - 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, - 652, 651, 650, 649, 648, 646, 645, 644, 643, 642, - - 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, - 631, 630, 628, 626, 625, 621, 620, 619, 617, 616, - 614, 613, 612, 611, 610, 609, 606, 605, 604, 603, - 602, 601, 600, 599, 598, 597, 596, 595, 593, 592, - 591, 590, 589, 588, 587, 586, 585, 583, 582, 581, - 580, 578, 577, 576, 575, 574, 573, 572, 570, 569, - 568, 567, 566, 565, 564, 563, 562, 560, 559, 558, - 557, 556, 555, 554, 553, 552, 551, 550, 549, 547, - 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, - 536, 535, 534, 533, 532, 531, 530, 529, 528, 522, - - 520, 517, 516, 515, 514, 512, 511, 510, 508, 507, - 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, - 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, - 484, 483, 482, 481, 480, 479, 477, 475, 474, 473, - 472, 471, 470, 469, 468, 467, 466, 465, 464, 462, - 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, - 451, 450, 449, 448, 447, 446, 445, 443, 442, 441, - 440, 438, 437, 436, 435, 434, 432, 431, 429, 428, - 426, 425, 424, 423, 422, 421, 419, 418, 417, 416, - 411, 410, 408, 407, 406, 405, 404, 402, 401, 399, - - 396, 394, 393, 391, 390, 388, 387, 386, 385, 384, - 383, 382, 381, 380, 379, 377, 376, 375, 373, 372, - 371, 370, 368, 367, 366, 365, 363, 362, 361, 360, - 359, 358, 357, 356, 355, 353, 351, 350, 349, 348, - 347, 345, 344, 343, 342, 341, 340, 339, 338, 337, - 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, - 325, 324, 322, 321, 320, 319, 316, 315, 314, 313, - 312, 311, 310, 309, 305, 303, 300, 299, 296, 292, - 285, 283, 282, 281, 280, 278, 277, 276, 275, 274, - 273, 272, 271, 270, 269, 268, 267, 266, 265, 263, - - 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, - 252, 251, 249, 248, 247, 246, 245, 244, 243, 242, - 240, 239, 238, 237, 236, 235, 234, 233, 231, 230, - 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, - 219, 218, 217, 216, 215, 214, 213, 212, 210, 209, - 208, 207, 206, 205, 203, 200, 198, 196, 194, 191, - 190, 188, 185, 177, 176, 175, 173, 172, 170, 169, - 168, 167, 163, 160, 158, 157, 156, 155, 154, 152, - 151, 150, 149, 147, 146, 145, 144, 143, 142, 141, - 140, 139, 137, 136, 134, 132, 131, 130, 129, 127, - - 126, 125, 123, 122, 121, 120, 116, 110, 107, 106, - 104, 99, 98, 79, 74, 68, 60, 53, 50, 49, - 47, 43, 41, 39, 38, 24, 14, 11, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, - 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1465 + 138, 84, 159, 159, 109, 179, 85, 111, 112, 119, + 135, 165, 165, 729, 182, 103, 113, 114, 161, 103, + 119, 161, 161, 103, 730, 153, 166, 153, 171, 174, + 166, 103, 164, 179, 166, 103, 180, 103, 103, 118, + 118, 118, 182, 241, 731, 181, 118, 118, 118, 118, + 118, 118, 184, 183, 189, 171, 174, 192, 283, 193, + 732, 195, 180, 199, 197, 164, 164, 164, 181, 118, + 118, 118, 118, 118, 118, 184, 164, 189, 164, 183, + + 164, 164, 204, 164, 195, 192, 193, 197, 285, 288, + 199, 202, 202, 202, 241, 250, 211, 241, 202, 202, + 202, 202, 202, 202, 211, 204, 293, 294, 283, 297, + 211, 285, 288, 300, 316, 363, 293, 733, 296, 296, + 307, 202, 202, 202, 202, 202, 202, 296, 734, 250, + 322, 316, 297, 335, 322, 428, 294, 351, 335, 345, + 345, 300, 401, 250, 305, 305, 305, 351, 428, 307, + 428, 305, 305, 305, 305, 305, 305, 372, 376, 393, + 387, 372, 376, 387, 393, 411, 521, 411, 437, 735, + 401, 363, 413, 437, 305, 305, 305, 305, 305, 305, + + 522, 523, 559, 559, 335, 577, 523, 619, 620, 335, + 713, 621, 411, 521, 411, 412, 412, 412, 626, 626, + 413, 621, 412, 412, 412, 412, 412, 412, 522, 662, + 694, 620, 662, 698, 736, 619, 737, 694, 713, 698, + 739, 740, 577, 695, 695, 412, 412, 412, 412, 412, + 412, 695, 741, 742, 743, 695, 744, 745, 746, 747, + 748, 744, 749, 750, 751, 752, 755, 756, 757, 758, + 761, 762, 763, 764, 765, 766, 767, 768, 765, 769, + 770, 771, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + + 791, 792, 793, 794, 795, 796, 797, 799, 800, 801, + 802, 803, 804, 805, 806, 807, 809, 810, 811, 812, + 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, + 823, 824, 825, 826, 827, 828, 830, 831, 832, 833, + 810, 834, 835, 809, 836, 837, 838, 840, 841, 842, + 843, 844, 846, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 865, 866, 867, 869, 870, 871, 872, 873, 874, 862, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 887, 888, 889, 890, 891, 892, 893, 894, 895, + + 896, 897, 898, 899, 901, 900, 843, 902, 903, 904, + 905, 907, 908, 909, 910, 911, 912, 913, 914, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 899, 900, 928, 929, 930, 932, 933, 934, 935, + 936, 932, 937, 938, 939, 940, 941, 942, 943, 944, + 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, + 966, 968, 969, 971, 972, 973, 974, 975, 976, 933, + 977, 978, 979, 980, 981, 982, 984, 985, 986, 987, + 988, 989, 991, 992, 993, 994, 995, 996, 999, 1000, + + 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, + 985, 1011, 1012, 1013, 1016, 1018, 986, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1027, 1028, 1029, 1030, 1032, 1033, + 1034, 1035, 1036, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1055, 1056, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, + 1078, 1079, 1080, 1081, 1082, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1066, 1096, 1097, + 1098, 1099, 1100, 1048, 1101, 1103, 1106, 1107, 1108, 1099, + + 1109, 1110, 1111, 1112, 1113, 1071, 1114, 1116, 1117, 1118, + 1119, 1120, 1121, 1122, 1124, 1126, 1129, 1131, 1133, 1134, + 1135, 1136, 1137, 1139, 1140, 1135, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1149, 1150, 1152, 1153, 1154, 1155, 1156, + 1157, 1158, 1159, 1160, 1161, 1137, 1162, 1165, 1167, 1168, + 1169, 1170, 1171, 1173, 1174, 1175, 1176, 1177, 1178, 1180, + 1181, 1183, 1184, 1185, 1186, 1188, 1189, 1190, 1191, 1192, + 1193, 1195, 1197, 1199, 1200, 1201, 1202, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1216, 1217, 1218, 1219, 1219, 1220, 1221, 1222, 1223, 1224, + + 1199, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, + 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243, 1245, + 1246, 1247, 1248, 1249, 1253, 1254, 1257, 1258, 1259, 1262, + 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1274, + 1276, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, + 1248, 1220, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, + 1296, 1297, 1298, 1299, 1301, 1302, 1303, 1304, 1305, 1306, + 1307, 1309, 1310, 1311, 1313, 1315, 1316, 1317, 1318, 1319, + 1320, 1321, 1322, 1323, 1324, 1325, 1327, 1328, 1332, 1335, + 1337, 1338, 1340, 1341, 1343, 1344, 1345, 1346, 1347, 1348, + + 1350, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361, + 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1372, 1373, + 1374, 1375, 1376, 1378, 1379, 1380, 1381, 1382, 1383, 1384, + 1386, 1387, 1388, 1389, 1390, 1392, 1394, 1396, 1397, 1398, + 1399, 1400, 1402, 1403, 1404, 1406, 1407, 1409, 1410, 1413, + 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, + 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, + 1434, 1435, 1436, 1437, 1439, 1441, 1442, 1443, 1444, 1445, + 1446, 1450, 1451, 1452, 1453, 1455, 1456, 1458, 1459, 1460, + 1461, 1462, 1464, 1465, 1468, 1468, 1468, 1468, 1468, 1469, + + 1469, 1469, 1469, 1469, 1470, 1476, 1470, 1470, 1470, 1471, + 1477, 1471, 1478, 1471, 1472, 1472, 1472, 1472, 1472, 1473, + 1473, 1473, 1473, 1473, 1474, 1479, 1474, 1474, 1474, 1475, + 1475, 1475, 722, 721, 719, 718, 717, 716, 715, 714, + 712, 710, 709, 708, 707, 706, 705, 704, 703, 702, + 701, 700, 697, 696, 693, 692, 691, 690, 689, 688, + 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, + 677, 676, 675, 674, 672, 671, 670, 669, 668, 667, + 666, 665, 663, 661, 660, 659, 658, 657, 656, 655, + 654, 653, 652, 651, 650, 649, 648, 647, 646, 644, + 643, 642, 641, 640, 639, 638, 637, 636, 635, 634, + 633, 632, 631, 630, 629, 628, 627, 625, 623, 622, + 618, 617, 616, 614, 613, 611, 610, 609, 608, 607, + 606, 603, 602, 601, 600, 599, 598, 597, 596, 595, + 594, 593, 592, 590, 589, 588, 587, 586, 585, 584, + 583, 581, 580, 579, 578, 576, 575, 574, 573, 572, + 571, 570, 568, 567, 566, 565, 564, 563, 562, 561, + 560, 558, 557, 556, 555, 554, 553, 552, 551, 550, + 549, 548, 547, 545, 544, 543, 542, 541, 540, 539, + 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, + + 528, 527, 526, 525, 519, 517, 514, 513, 512, 511, + 509, 508, 507, 505, 504, 501, 500, 499, 498, 497, + 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, + 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, + 475, 473, 472, 471, 470, 469, 468, 467, 466, 465, + 464, 463, 462, 460, 459, 458, 457, 456, 455, 454, + 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, + 443, 441, 440, 439, 438, 436, 435, 434, 433, 432, + 430, 429, 427, 426, 424, 423, 422, 421, 420, 419, + 417, 416, 415, 414, 409, 408, 406, 405, 404, 403, + + 402, 400, 399, 397, 394, 392, 391, 389, 388, 386, + 385, 384, 383, 382, 381, 380, 379, 378, 377, 375, + 374, 373, 371, 370, 369, 368, 366, 365, 364, 362, + 361, 360, 359, 358, 357, 356, 355, 354, 352, 350, + 349, 348, 347, 346, 344, 343, 342, 341, 340, 339, + 338, 337, 336, 334, 333, 332, 331, 330, 329, 328, + 327, 326, 325, 324, 323, 321, 320, 319, 318, 315, + 314, 313, 312, 311, 310, 309, 308, 304, 302, 299, + 298, 295, 291, 284, 282, 281, 280, 279, 277, 276, + 275, 274, 273, 272, 271, 270, 269, 268, 267, 266, + + 265, 264, 262, 261, 260, 259, 258, 257, 256, 255, + 254, 253, 252, 251, 249, 248, 247, 246, 245, 244, + 243, 242, 240, 239, 238, 237, 236, 235, 234, 233, + 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, + 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, + 210, 209, 208, 207, 206, 205, 203, 200, 198, 196, + 194, 191, 190, 188, 185, 177, 176, 175, 173, 172, + 170, 169, 168, 167, 163, 162, 160, 158, 157, 156, + 155, 154, 152, 151, 150, 149, 147, 146, 145, 144, + 143, 142, 141, 140, 139, 137, 136, 134, 132, 131, + + 130, 129, 127, 126, 125, 123, 122, 121, 120, 116, + 110, 107, 106, 104, 99, 98, 79, 74, 68, 60, + 53, 50, 49, 47, 43, 41, 39, 38, 24, 14, + 11, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1467, 1467 } ; static yy_state_type yy_last_accepting_state; @@ -1746,7 +1748,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg) -#line 1750 "dhcp4_lexer.cc" +#line 1752 "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 @@ -1772,8 +1774,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 1776 "dhcp4_lexer.cc" -#line 1777 "dhcp4_lexer.cc" +#line 1778 "dhcp4_lexer.cc" +#line 1779 "dhcp4_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2101,7 +2103,7 @@ YY_DECL } -#line 2105 "dhcp4_lexer.cc" +#line 2107 "dhcp4_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2130,13 +2132,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1466 ) + if ( yy_current_state >= 1468 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1465 ); + while ( yy_current_state != 1467 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -2942,7 +2944,7 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: - case isc::dhcp::Parser4Context::QUEUE_CONTROL: + case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::LOGGERS: case isc::dhcp::Parser4Context::DHCP_DDNS: return isc::dhcp::Dhcp4Parser::make_USER_CONTEXT(driver.loc_); @@ -2966,7 +2968,7 @@ YY_RULE_SETUP case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: - case isc::dhcp::Parser4Context::QUEUE_CONTROL: + case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::LOGGERS: case isc::dhcp::Parser4Context::DHCP_DDNS: return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_); @@ -3647,9 +3649,9 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: - return isc::dhcp::Dhcp4Parser::make_QUEUE_CONTROL(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_DHCP_QUEUE_CONTROL(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("queue-control", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_); } } YY_BREAK @@ -4380,7 +4382,7 @@ YY_RULE_SETUP #line 1804 "dhcp4_lexer.ll" ECHO; YY_BREAK -#line 4384 "dhcp4_lexer.cc" +#line 4386 "dhcp4_lexer.cc" case YY_END_OF_BUFFER: { @@ -4699,7 +4701,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1466 ) + if ( yy_current_state >= 1468 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4732,11 +4734,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1466 ) + if ( yy_current_state >= 1468 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1465); + yy_is_jam = (yy_current_state == 1467); return yy_is_jam ? 0 : yy_current_state; } diff --git a/src/bin/dhcp4/dhcp4_lexer.ll b/src/bin/dhcp4/dhcp4_lexer.ll index 7c4816aa1c..bbecaecfc8 100644 --- a/src/bin/dhcp4/dhcp4_lexer.ll +++ b/src/bin/dhcp4/dhcp4_lexer.ll @@ -706,7 +706,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: - case isc::dhcp::Parser4Context::QUEUE_CONTROL: + case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::LOGGERS: case isc::dhcp::Parser4Context::DHCP_DDNS: return isc::dhcp::Dhcp4Parser::make_USER_CONTEXT(driver.loc_); @@ -727,7 +727,7 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} case isc::dhcp::Parser4Context::RESERVATIONS: case isc::dhcp::Parser4Context::CLIENT_CLASSES: case isc::dhcp::Parser4Context::CONTROL_SOCKET: - case isc::dhcp::Parser4Context::QUEUE_CONTROL: + case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL: case isc::dhcp::Parser4Context::LOGGERS: case isc::dhcp::Parser4Context::DHCP_DDNS: return isc::dhcp::Dhcp4Parser::make_COMMENT(driver.loc_); @@ -1241,12 +1241,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } -\"queue-control\" { +\"dhcp-queue-control\" { switch(driver.ctx_) { case isc::dhcp::Parser4Context::DHCP4: - return isc::dhcp::Dhcp4Parser::make_QUEUE_CONTROL(driver.loc_); + return isc::dhcp::Dhcp4Parser::make_DHCP_QUEUE_CONTROL(driver.loc_); default: - return isc::dhcp::Dhcp4Parser::make_STRING("queue-control", driver.loc_); + return isc::dhcp::Dhcp4Parser::make_STRING("dhcp-queue-control", driver.loc_); } } diff --git a/src/bin/dhcp4/dhcp4_parser.cc b/src/bin/dhcp4/dhcp4_parser.cc index d422775701..9d5bd33de5 100644 --- a/src/bin/dhcp4/dhcp4_parser.cc +++ b/src/bin/dhcp4/dhcp4_parser.cc @@ -2958,7 +2958,7 @@ namespace isc { namespace dhcp { break; case 528: -#line 1834 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1832 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -2966,10 +2966,10 @@ namespace isc { namespace dhcp { break; case 529: -#line 1836 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1834 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr qc = yystack_[0].value.as< ElementPtr > (); - ctx.stack_.back()->set("queue-control", qc); + ctx.stack_.back()->set("dhcp-queue-control", qc); if (!qc->contains("queue-type")) { std::stringstream msg; @@ -2984,7 +2984,7 @@ namespace isc { namespace dhcp { break; case 530: -#line 1852 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1850 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("dhcp-ddns", m); @@ -2995,7 +2995,7 @@ namespace isc { namespace dhcp { break; case 531: -#line 1857 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1855 "dhcp4_parser.yy" // lalr1.cc:859 { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location)); @@ -3006,7 +3006,7 @@ namespace isc { namespace dhcp { break; case 532: -#line 1864 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1862 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the dhcp-ddns map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3016,7 +3016,7 @@ namespace isc { namespace dhcp { break; case 533: -#line 1868 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1866 "dhcp4_parser.yy" // lalr1.cc:859 { // The enable updates DHCP DDNS parameter is required. ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location)); @@ -3026,7 +3026,7 @@ namespace isc { namespace dhcp { break; case 555: -#line 1899 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1897 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("enable-updates", b); @@ -3035,7 +3035,7 @@ namespace isc { namespace dhcp { break; case 556: -#line 1904 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1902 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3043,7 +3043,7 @@ namespace isc { namespace dhcp { break; case 557: -#line 1906 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1904 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("qualifying-suffix", s); @@ -3053,7 +3053,7 @@ namespace isc { namespace dhcp { break; case 558: -#line 1912 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1910 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3061,7 +3061,7 @@ namespace isc { namespace dhcp { break; case 559: -#line 1914 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1912 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-ip", s); @@ -3071,7 +3071,7 @@ namespace isc { namespace dhcp { break; case 560: -#line 1920 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1918 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("server-port", i); @@ -3080,7 +3080,7 @@ namespace isc { namespace dhcp { break; case 561: -#line 1925 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1923 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3088,7 +3088,7 @@ namespace isc { namespace dhcp { break; case 562: -#line 1927 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1925 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-ip", s); @@ -3098,7 +3098,7 @@ namespace isc { namespace dhcp { break; case 563: -#line 1933 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1931 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("sender-port", i); @@ -3107,7 +3107,7 @@ namespace isc { namespace dhcp { break; case 564: -#line 1938 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1936 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("max-queue-size", i); @@ -3116,7 +3116,7 @@ namespace isc { namespace dhcp { break; case 565: -#line 1943 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1941 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_PROTOCOL); } @@ -3124,7 +3124,7 @@ namespace isc { namespace dhcp { break; case 566: -#line 1945 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1943 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3133,19 +3133,19 @@ namespace isc { namespace dhcp { break; case 567: -#line 1951 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1949 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); } #line 3139 "dhcp4_parser.cc" // lalr1.cc:859 break; case 568: -#line 1952 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1950 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); } #line 3145 "dhcp4_parser.cc" // lalr1.cc:859 break; case 569: -#line 1955 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1953 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NCR_FORMAT); } @@ -3153,7 +3153,7 @@ namespace isc { namespace dhcp { break; case 570: -#line 1957 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1955 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("ncr-format", json); @@ -3163,7 +3163,7 @@ namespace isc { namespace dhcp { break; case 571: -#line 1963 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1961 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("always-include-fqdn", b); @@ -3172,7 +3172,7 @@ namespace isc { namespace dhcp { break; case 572: -#line 1968 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1966 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-no-update", b); @@ -3181,7 +3181,7 @@ namespace isc { namespace dhcp { break; case 573: -#line 1973 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1971 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr b(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("override-client-update", b); @@ -3190,7 +3190,7 @@ namespace isc { namespace dhcp { break; case 574: -#line 1978 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1976 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.REPLACE_CLIENT_NAME); } @@ -3198,7 +3198,7 @@ namespace isc { namespace dhcp { break; case 575: -#line 1980 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1978 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3207,7 +3207,7 @@ namespace isc { namespace dhcp { break; case 576: -#line 1986 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1984 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location))); } @@ -3215,7 +3215,7 @@ namespace isc { namespace dhcp { break; case 577: -#line 1989 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1987 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location))); } @@ -3223,7 +3223,7 @@ namespace isc { namespace dhcp { break; case 578: -#line 1992 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1990 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location))); } @@ -3231,7 +3231,7 @@ namespace isc { namespace dhcp { break; case 579: -#line 1995 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1993 "dhcp4_parser.yy" // lalr1.cc:859 { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location))); } @@ -3239,7 +3239,7 @@ namespace isc { namespace dhcp { break; case 580: -#line 1998 "dhcp4_parser.yy" // lalr1.cc:859 +#line 1996 "dhcp4_parser.yy" // lalr1.cc:859 { error(yystack_[0].location, "boolean values for the replace-client-name are " "no longer supported"); @@ -3248,7 +3248,7 @@ namespace isc { namespace dhcp { break; case 581: -#line 2004 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2002 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3256,7 +3256,7 @@ namespace isc { namespace dhcp { break; case 582: -#line 2006 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2004 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("generated-prefix", s); @@ -3266,7 +3266,7 @@ namespace isc { namespace dhcp { break; case 583: -#line 2012 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2010 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3274,7 +3274,7 @@ namespace isc { namespace dhcp { break; case 584: -#line 2014 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2012 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-set", s); @@ -3284,7 +3284,7 @@ namespace isc { namespace dhcp { break; case 585: -#line 2020 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2018 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3292,7 +3292,7 @@ namespace isc { namespace dhcp { break; case 586: -#line 2022 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2020 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr s(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("hostname-char-replacement", s); @@ -3302,7 +3302,7 @@ namespace isc { namespace dhcp { break; case 587: -#line 2031 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2029 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3310,7 +3310,7 @@ namespace isc { namespace dhcp { break; case 588: -#line 2033 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2031 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3319,7 +3319,7 @@ namespace isc { namespace dhcp { break; case 589: -#line 2038 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2036 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3327,7 +3327,7 @@ namespace isc { namespace dhcp { break; case 590: -#line 2040 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2038 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3336,7 +3336,7 @@ namespace isc { namespace dhcp { break; case 591: -#line 2045 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2043 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3344,7 +3344,7 @@ namespace isc { namespace dhcp { break; case 592: -#line 2047 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2045 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.back()->set("Control-agent", yystack_[0].value.as< ElementPtr > ()); ctx.leave(); @@ -3353,7 +3353,7 @@ namespace isc { namespace dhcp { break; case 593: -#line 2052 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2050 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -3363,7 +3363,7 @@ namespace isc { namespace dhcp { break; case 594: -#line 2056 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2054 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } @@ -3371,7 +3371,7 @@ namespace isc { namespace dhcp { break; case 595: -#line 2061 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2059 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-control", i); @@ -3382,7 +3382,7 @@ namespace isc { namespace dhcp { break; case 596: -#line 2066 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2064 "dhcp4_parser.yy" // lalr1.cc:859 { // No config control params are required ctx.stack_.pop_back(); @@ -3392,7 +3392,7 @@ namespace isc { namespace dhcp { break; case 597: -#line 2072 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2070 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the config-control map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3402,7 +3402,7 @@ namespace isc { namespace dhcp { break; case 598: -#line 2076 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2074 "dhcp4_parser.yy" // lalr1.cc:859 { // No config_control params are required // parsing completed @@ -3411,7 +3411,7 @@ namespace isc { namespace dhcp { break; case 603: -#line 2091 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2089 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("config-databases", l); @@ -3422,7 +3422,7 @@ namespace isc { namespace dhcp { break; case 604: -#line 2096 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2094 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3431,7 +3431,7 @@ namespace isc { namespace dhcp { break; case 605: -#line 2106 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2104 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("Logging", m); @@ -3442,7 +3442,7 @@ namespace isc { namespace dhcp { break; case 606: -#line 2111 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2109 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3451,7 +3451,7 @@ namespace isc { namespace dhcp { break; case 607: -#line 2116 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2114 "dhcp4_parser.yy" // lalr1.cc:859 { // Parse the Logging map ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); @@ -3461,7 +3461,7 @@ namespace isc { namespace dhcp { break; case 608: -#line 2120 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2118 "dhcp4_parser.yy" // lalr1.cc:859 { // parsing completed } @@ -3469,7 +3469,7 @@ namespace isc { namespace dhcp { break; case 612: -#line 2136 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2134 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("loggers", l); @@ -3480,7 +3480,7 @@ namespace isc { namespace dhcp { break; case 613: -#line 2141 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2139 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3489,7 +3489,7 @@ namespace isc { namespace dhcp { break; case 616: -#line 2153 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2151 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(l); @@ -3499,7 +3499,7 @@ namespace isc { namespace dhcp { break; case 617: -#line 2157 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2155 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } @@ -3507,7 +3507,7 @@ namespace isc { namespace dhcp { break; case 627: -#line 2174 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2172 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr dl(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("debuglevel", dl); @@ -3516,7 +3516,7 @@ namespace isc { namespace dhcp { break; case 628: -#line 2179 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2177 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3524,7 +3524,7 @@ namespace isc { namespace dhcp { break; case 629: -#line 2181 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2179 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("severity", sev); @@ -3534,7 +3534,7 @@ namespace isc { namespace dhcp { break; case 630: -#line 2187 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2185 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output_options", l); @@ -3545,7 +3545,7 @@ namespace isc { namespace dhcp { break; case 631: -#line 2192 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2190 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); ctx.leave(); @@ -3554,7 +3554,7 @@ namespace isc { namespace dhcp { break; case 634: -#line 2201 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2199 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->add(m); @@ -3564,7 +3564,7 @@ namespace isc { namespace dhcp { break; case 635: -#line 2205 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2203 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.stack_.pop_back(); } @@ -3572,7 +3572,7 @@ namespace isc { namespace dhcp { break; case 642: -#line 2219 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2217 "dhcp4_parser.yy" // lalr1.cc:859 { ctx.enter(ctx.NO_KEYWORD); } @@ -3580,7 +3580,7 @@ namespace isc { namespace dhcp { break; case 643: -#line 2221 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2219 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr sev(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("output", sev); @@ -3590,7 +3590,7 @@ namespace isc { namespace dhcp { break; case 644: -#line 2227 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2225 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr flush(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("flush", flush); @@ -3599,7 +3599,7 @@ namespace isc { namespace dhcp { break; case 645: -#line 2232 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2230 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr maxsize(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxsize", maxsize); @@ -3608,7 +3608,7 @@ namespace isc { namespace dhcp { break; case 646: -#line 2237 "dhcp4_parser.yy" // lalr1.cc:859 +#line 2235 "dhcp4_parser.yy" // lalr1.cc:859 { ElementPtr maxver(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); ctx.stack_.back()->set("maxver", maxver); @@ -4680,7 +4680,7 @@ namespace isc { namespace dhcp { "\"hold-reclaimed-time\"", "\"max-reclaim-leases\"", "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"dhcp4o6-port\"", "\"control-socket\"", "\"socket-type\"", - "\"socket-name\"", "\"queue-control\"", "\"dhcp-ddns\"", + "\"socket-name\"", "\"dhcp-queue-control\"", "\"dhcp-ddns\"", "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"", "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"", @@ -4765,7 +4765,7 @@ namespace isc { namespace dhcp { "client_class_param", "client_class_name", "client_class_test", "$@96", "only_if_required", "dhcp4o6_port", "control_socket", "$@97", "control_socket_params", "control_socket_param", "control_socket_type", - "$@98", "control_socket_name", "$@99", "queue_control", "$@100", + "$@98", "control_socket_name", "$@99", "dhcp_queue_control", "$@100", "dhcp_ddns", "$@101", "sub_dhcp_ddns", "$@102", "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@103", "server_ip", "$@104", "server_port", "sender_ip", "$@105", "sender_port", @@ -4842,19 +4842,19 @@ namespace isc { namespace dhcp { 1721, 1731, 1732, 1735, 1735, 1745, 1746, 1749, 1750, 1753, 1754, 1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1766, 1768, 1768, 1776, 1785, 1792, 1792, 1802, 1803, 1806, - 1807, 1808, 1809, 1810, 1813, 1813, 1821, 1821, 1834, 1834, - 1852, 1852, 1864, 1864, 1874, 1875, 1878, 1879, 1880, 1881, - 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, - 1892, 1893, 1894, 1895, 1896, 1899, 1904, 1904, 1912, 1912, - 1920, 1925, 1925, 1933, 1938, 1943, 1943, 1951, 1952, 1955, - 1955, 1963, 1968, 1973, 1978, 1978, 1986, 1989, 1992, 1995, - 1998, 2004, 2004, 2012, 2012, 2020, 2020, 2031, 2031, 2038, - 2038, 2045, 2045, 2052, 2052, 2061, 2061, 2072, 2072, 2082, - 2083, 2087, 2088, 2091, 2091, 2106, 2106, 2116, 2116, 2127, - 2128, 2132, 2136, 2136, 2148, 2149, 2153, 2153, 2161, 2162, - 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2174, 2179, 2179, - 2187, 2187, 2197, 2198, 2201, 2201, 2209, 2210, 2213, 2214, - 2215, 2216, 2219, 2219, 2227, 2232, 2237 + 1807, 1808, 1809, 1810, 1813, 1813, 1821, 1821, 1832, 1832, + 1850, 1850, 1862, 1862, 1872, 1873, 1876, 1877, 1878, 1879, + 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, + 1890, 1891, 1892, 1893, 1894, 1897, 1902, 1902, 1910, 1910, + 1918, 1923, 1923, 1931, 1936, 1941, 1941, 1949, 1950, 1953, + 1953, 1961, 1966, 1971, 1976, 1976, 1984, 1987, 1990, 1993, + 1996, 2002, 2002, 2010, 2010, 2018, 2018, 2029, 2029, 2036, + 2036, 2043, 2043, 2050, 2050, 2059, 2059, 2070, 2070, 2080, + 2081, 2085, 2086, 2089, 2089, 2104, 2104, 2114, 2114, 2125, + 2126, 2130, 2134, 2134, 2146, 2147, 2151, 2151, 2159, 2160, + 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2172, 2177, 2177, + 2185, 2185, 2195, 2196, 2199, 2199, 2207, 2208, 2211, 2212, + 2213, 2214, 2217, 2217, 2225, 2230, 2235 }; // Print the state stack on the debug stream. @@ -4890,7 +4890,7 @@ namespace isc { namespace dhcp { #line 14 "dhcp4_parser.yy" // lalr1.cc:1167 } } // isc::dhcp #line 4893 "dhcp4_parser.cc" // lalr1.cc:1167 -#line 2242 "dhcp4_parser.yy" // lalr1.cc:1168 +#line 2240 "dhcp4_parser.yy" // lalr1.cc:1168 void diff --git a/src/bin/dhcp4/dhcp4_parser.h b/src/bin/dhcp4/dhcp4_parser.h index 8f8806811c..0a3b9305dd 100644 --- a/src/bin/dhcp4/dhcp4_parser.h +++ b/src/bin/dhcp4/dhcp4_parser.h @@ -460,7 +460,7 @@ namespace isc { namespace dhcp { TOKEN_CONTROL_SOCKET = 367, TOKEN_SOCKET_TYPE = 368, TOKEN_SOCKET_NAME = 369, - TOKEN_QUEUE_CONTROL = 370, + TOKEN_DHCP_QUEUE_CONTROL = 370, TOKEN_DHCP_DDNS = 371, TOKEN_ENABLE_UPDATES = 372, TOKEN_QUALIFYING_SUFFIX = 373, @@ -1082,7 +1082,7 @@ namespace isc { namespace dhcp { static inline symbol_type - make_QUEUE_CONTROL (const location_type& l); + make_DHCP_QUEUE_CONTROL (const location_type& l); static inline symbol_type @@ -2579,9 +2579,9 @@ namespace isc { namespace dhcp { } Dhcp4Parser::symbol_type - Dhcp4Parser::make_QUEUE_CONTROL (const location_type& l) + Dhcp4Parser::make_DHCP_QUEUE_CONTROL (const location_type& l) { - return symbol_type (token::TOKEN_QUEUE_CONTROL, l); + return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); } Dhcp4Parser::symbol_type diff --git a/src/bin/dhcp4/dhcp4_parser.yy b/src/bin/dhcp4/dhcp4_parser.yy index 8413657158..40c2529742 100644 --- a/src/bin/dhcp4/dhcp4_parser.yy +++ b/src/bin/dhcp4/dhcp4_parser.yy @@ -170,7 +170,7 @@ using namespace std; SOCKET_TYPE "socket-type" SOCKET_NAME "socket-name" - QUEUE_CONTROL "queue-control" + DHCP_QUEUE_CONTROL "dhcp-queue-control" DHCP_DDNS "dhcp-ddns" ENABLE_UPDATES "enable-updates" @@ -450,7 +450,7 @@ global_param: valid_lifetime | expired_leases_processing | dhcp4o6_port | control_socket - | queue_control + | dhcp_queue_control | dhcp_ddns | echo_client_id | match_client_id @@ -1827,15 +1827,13 @@ control_socket_name: SOCKET_NAME { }; -// --- queue control --------------------------------------------- +// --- dhcp-queue-control --------------------------------------------- -// --- queue-control --------------------------------------------- - -queue_control: QUEUE_CONTROL { +dhcp_queue_control: DHCP_QUEUE_CONTROL { ctx.enter(ctx.NO_KEYWORD); } COLON map_value { ElementPtr qc = $4; - ctx.stack_.back()->set("queue-control", qc); + ctx.stack_.back()->set("dhcp-queue-control", qc); if (!qc->contains("queue-type")) { std::stringstream msg; diff --git a/src/bin/dhcp4/json_config_parser.cc b/src/bin/dhcp4/json_config_parser.cc index e3379ac5d8..9ea3a697f7 100644 --- a/src/bin/dhcp4/json_config_parser.cc +++ b/src/bin/dhcp4/json_config_parser.cc @@ -24,7 +24,7 @@ #include <dhcpsrv/parsers/host_reservations_list_parser.h> #include <dhcpsrv/parsers/ifaces_config_parser.h> #include <dhcpsrv/parsers/option_data_parser.h> -#include <dhcpsrv/parsers/queue_control_parser.h> +#include <dhcpsrv/parsers/dhcp_queue_control_parser.h> #include <dhcpsrv/parsers/simple_parser4.h> #include <dhcpsrv/parsers/shared_networks_list_parser.h> #include <dhcpsrv/parsers/sanity_checks_parser.h> @@ -381,9 +381,9 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set, continue; } - if (config_pair.first == "queue-control") { - QueueControlParser parser(AF_INET); - srv_cfg->setQueueControlInfo(parser.parse(config_pair.second)); + if (config_pair.first == "dhcp-queue-control") { + DHCPQueueControlParser parser(AF_INET); + srv_cfg->setDHCPQueueControl(parser.parse(config_pair.second)); continue; } diff --git a/src/bin/dhcp4/parser_context.cc b/src/bin/dhcp4/parser_context.cc index a48bec015a..75cc71e0f1 100644 --- a/src/bin/dhcp4/parser_context.cc +++ b/src/bin/dhcp4/parser_context.cc @@ -174,8 +174,8 @@ Parser4Context::contextName() return ("server-id"); case CONTROL_SOCKET: return ("control-socket"); - case QUEUE_CONTROL: - return ("queue-control"); + case DHCP_QUEUE_CONTROL: + return ("dhcp-queue-control"); case POOLS: return ("pools"); case RESERVATIONS: diff --git a/src/bin/dhcp4/parser_context.h b/src/bin/dhcp4/parser_context.h index cc99b86f85..85f262e012 100644 --- a/src/bin/dhcp4/parser_context.h +++ b/src/bin/dhcp4/parser_context.h @@ -267,8 +267,8 @@ public: /// Used while parsing Dhcp4/control-socket structures. CONTROL_SOCKET, - /// Used while parsing Dhcp4/queue-control structures. - QUEUE_CONTROL, + /// Used while parsing Dhcp4/dhcp-queue-control structures. + DHCP_QUEUE_CONTROL, /// Used while parsing Dhcp4/subnet4/pools structures. POOLS, diff --git a/src/bin/dhcp4/tests/config_parser_unittest.cc b/src/bin/dhcp4/tests/config_parser_unittest.cc index 431b2ce016..2ef77376a8 100644 --- a/src/bin/dhcp4/tests/config_parser_unittest.cc +++ b/src/bin/dhcp4/tests/config_parser_unittest.cc @@ -299,7 +299,11 @@ public: void configure(std::string config, int expected_code, std::string exp_error = "") { ConstElementPtr json; - ASSERT_NO_THROW(json = parseDHCP4(config, true)); + try { + json = parseDHCP4(config, true); + } catch(const std::exception& ex) { + ADD_FAILURE() << "parseDHCP4 failed: " << ex.what(); + } ConstElementPtr status; EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json)); @@ -6337,61 +6341,86 @@ TEST_F(Dhcp4ParserTest, serverTag) { ASSERT_THROW(parseDHCP4(bad_tag), std::exception); } -// Check whether it is possible to configure server-tag -TEST_F(Dhcp4ParserTest, queueControl) { - // Config without server-tag - string config_no_queue = "{ " + genIfaceConfig() + "," + - "\"subnet4\": [ ] " - "}"; - - string config_with_queue = - "{ " + genIfaceConfig() + ", \n" + - " \"subnet4\": [ ], \n" - " \"queue-control\": { \n" - " \"queue-type\": \"some-type\", \n" - " \"capacity\": 75 \n" - " } \n" - "} \n"; +// Check whether it is possible to configure packet queue +TEST_F(Dhcp4ParserTest, dhcpQueueControl) { + struct Scenario { + std::string description_; + std::string json_; + }; - string config_with_context = - "{ " + genIfaceConfig() + ", \n" + - " \"subnet4\": [ ], \n" - " \"queue-control\": { \n" + std::vector<Scenario> scenarios = { + { + "no entry", + "" + }, + { + "valid entry", + "{ \n" + " \"queue-type\": \"some-type\", \n" + " \"capacity\": 75 \n" + "} \n" + }, + { + "valid arbitrary content", + "{ \n" " \"queue-type\": \"some-type\", \n" " \"capacity\": 90, \n" - " \"user-context\": { \"comment\": \"some text\" } \n" - " } \n" - "} \n"; + " \"user-context\": { \"comment\": \"some text\" },\n" + " \"random-bool\" : false, \n" + " \"random-int\" : 1234 \n" + "} \n" + } + }; // Let's check the default. It should be empty. data::ConstElementPtr control; - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); + control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); ASSERT_FALSE(control); - // Configuration with no queue should default to an emtpy control. - configure(config_no_queue, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_FALSE(control); + // Iterate over the incorrect scenarios and verify they + // fail as expected. Note, we use parseDHCP4() directly + // as all of the errors above are enforced by the grammar. + data::ConstElementPtr exp_elems; + for (auto scenario : scenarios) { + SCOPED_TRACE(scenario.description_); + { + // Clear the config + CfgMgr::instance().clear(); - // Clear the config - CfgMgr::instance().clear(); + // Construct the config JSON + std::stringstream os; + os << "{ " + genIfaceConfig(); + if (!scenario.json_.empty()) { - // Configuration with queue should be valid. - configure(config_with_queue, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_TRUE(control); + os << ",\n \"dhcp-queue-control\": " << scenario.json_; + } - // Clear the config - CfgMgr::instance().clear(); + os << "} \n"; + + // Configure the server. This should succeed. + configure(os.str(), CONTROL_RESULT_SUCCESS, ""); + + // Fetch the queue control info. + control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); - // Configuration with queue with context should be valid. - configure(config_with_context, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_TRUE(control); + // If JSON does not contain queue control, + // the pointer stored in staging should be empty. + if (scenario.json_.empty()) { + ASSERT_FALSE(control); + continue; + } + + // Make sure the staged config is correct. + ASSERT_TRUE(control); + ASSERT_NO_THROW(exp_elems = Element::fromJSON(scenario.json_)) + << " cannot convert expected JSON, test is broken"; + EXPECT_TRUE(control->equals(*exp_elems)); + } + } } -// Check whether it is possible to configure server-tag -TEST_F(Dhcp4ParserTest, queueControlInvalid) { +// Check that we catch invalid dhcp-queue-control content +TEST_F(Dhcp4ParserTest, dhcpQueueControlInvalid) { struct Scenario { std::string description_; std::string json_; @@ -6402,14 +6431,14 @@ TEST_F(Dhcp4ParserTest, queueControlInvalid) { "not a map", "{ " + genIfaceConfig() + ", \n" + " \"subnet4\": [ ], \n" - " \"queue-control\": 75 \n" + " \"dhcp-queue-control\": 75 \n" "} \n" }, { "queue type missing", "{ " + genIfaceConfig() + ", \n" + " \"subnet4\": [ ], \n" - " \"queue-control\": { \n" + " \"dhcp-queue-control\": { \n" " \"capacity\": 100 \n" " } \n" "} \n" @@ -6420,9 +6449,9 @@ TEST_F(Dhcp4ParserTest, queueControlInvalid) { // fail as expected. Note, we use parseDHCP4() directly // as all of the errors above are enforced by the grammar. for (auto scenario : scenarios) { - SCOPED_TRACE((scenario).description_); + SCOPED_TRACE(scenario.description_); { - EXPECT_THROW(parseDHCP4((scenario).json_), Dhcp4ParseError); + EXPECT_THROW(parseDHCP4(scenario.json_), Dhcp4ParseError); } } } diff --git a/src/bin/dhcp6/ctrl_dhcp6_srv.cc b/src/bin/dhcp6/ctrl_dhcp6_srv.cc index 599b7be486..a7241c1170 100644 --- a/src/bin/dhcp6/ctrl_dhcp6_srv.cc +++ b/src/bin/dhcp6/ctrl_dhcp6_srv.cc @@ -653,10 +653,10 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) { return (isc::config::createAnswer(1, err.str())); } - // Configure packet queue + // Configure DHCP packet queue try { data::ConstElementPtr qc; - qc = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); + qc = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); if (!qc) { // @todo For now we're manually constructing default queue config // This probably needs to be built into the PQM? @@ -673,7 +673,7 @@ ControlledDhcpv6Srv::processConfig(isc::data::ConstElementPtr config) { } catch (const std::exception& ex) { std::ostringstream err; - err << "Error setting packet queue controls after server reconfiguration: " + err << "Error setting DHCP packet queue controls after server reconfiguration: " << ex.what(); return (isc::config::createAnswer(1, err.str())); } diff --git a/src/bin/dhcp6/dhcp6_lexer.cc b/src/bin/dhcp6/dhcp6_lexer.cc index 797da7d36c..48ce1d5fef 100644 --- a/src/bin/dhcp6/dhcp6_lexer.cc +++ b/src/bin/dhcp6/dhcp6_lexer.cc @@ -700,7 +700,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[1458] = +static const flex_int16_t yy_accept[1460] = { 0, 172, 172, 0, 0, 0, 0, 0, 0, 0, 0, 180, 178, 10, 11, 178, 1, 172, 169, 172, 172, @@ -732,136 +732,136 @@ static const flex_int16_t yy_accept[1458] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, - 175, 0, 174, 173, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 177, 175, + 0, 174, 173, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 0, 29, 0, 28, 0, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, + 138, 0, 0, 29, 0, 28, 0, 0, 101, 0, + 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, + 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, + 0, 0, 0, 0, 0, 0, 0, 176, 173, 0, - 173, 0, 0, 0, 0, 0, 0, 0, 0, 30, - 0, 0, 32, 0, 0, 0, 0, 0, 102, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 32, 0, 0, 0, 0, 0, 102, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 89, 0, 58, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 89, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 143, - 50, 0, 55, 0, 0, 0, 0, 0, 0, 158, - 38, 0, 35, 0, 34, 0, 0, 0, 131, 0, + 0, 0, 0, 0, 0, 118, 143, 50, 0, 55, + 0, 0, 0, 0, 0, 0, 158, 38, 0, 35, + 0, 34, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, - 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, + 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 52, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 52, 0, 0, 33, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, + 0, 0, 0, 0, 0, 7, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 127, 0, 0, 0, 0, 0, 0, 7, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, - 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, - 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, - 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, + 0, 0, 106, 0, 0, 0, 0, 0, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 136, 107, 0, 0, 0, - 0, 111, 51, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 136, 107, 0, 0, 0, 0, 111, + 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, - 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, - 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, + 75, 0, 0, 0, 0, 0, 0, 159, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, + 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 83, 0, 0, 0, 122, 0, 0, - 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, + 56, 83, 0, 0, 0, 122, 0, 0, 0, 49, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, + 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 137, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 0, 137, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 128, 113, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 124, 141, 0, 40, 0, 133, 0, 0, 0, - 0, 0, 0, 0, 0, 20, 0, 0, 0, 77, - 0, 0, 0, 0, 135, 53, 0, 85, 0, 0, + 0, 128, 113, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, + 141, 0, 40, 0, 133, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 0, 0, 77, 0, 0, + 0, 0, 135, 53, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, + 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, - - 0, 78, 100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, - 0, 0, 17, 15, 0, 155, 154, 0, 66, 0, - 0, 0, 0, 0, 31, 0, 117, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 0, 121, - 43, 0, 60, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 0, 0, 0, 96, 72, 0, 0, 129, - 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, - 90, 0, 160, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 88, 0, 144, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 0, 0, 0, 0, 0, 78, + + 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 0, 0, 0, 0, 0, 0, 17, + 15, 0, 155, 154, 0, 66, 0, 0, 0, 0, + 0, 31, 0, 117, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 94, 0, 121, 43, 0, + 60, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 0, 0, 96, 72, 0, 0, 129, 0, 0, 0, + 0, 0, 120, 0, 0, 0, 0, 90, 0, 160, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, + + 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, - 0, 0, 0, 0, 42, 0, 65, 0, 0, 0, - 0, 115, 47, 0, 0, 67, 153, 0, 12, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, - 0, 44, 18, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 70, 0, 0, 0, 61, 0, 86, 0, 0, - 0, 0, 0, 134, 0, 0, 0, 46, 0, 0, + 0, 42, 0, 65, 0, 0, 0, 0, 115, 47, + 0, 0, 67, 153, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 45, 0, 0, 44, + 18, 0, 0, 0, 0, 108, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, + 0, 0, 0, 61, 0, 0, 86, 0, 0, 0, + 0, 0, 134, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 0, 0, 76, 0, 37, 0, 48, 0, + 64, 0, 0, 76, 0, 37, 0, 48, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 150, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 39, 0, 0, 0, 0, 0, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 149, 0, 0, 22, 69, 0, - 0, 0, 0, 0, 0, 21, 0, 87, 0, 0, - 148, 0, 0, 68, 0, 0, 63, 0, 24, 0, + 0, 0, 0, 26, 39, 0, 0, 0, 0, 0, + 13, 0, 0, 0, 0, 0, 0, 0, 0, 156, + 0, 0, 0, 0, 0, 0, 149, 0, 0, 22, + 69, 0, 0, 0, 0, 0, 0, 21, 0, 87, + 0, 0, 148, 0, 0, 68, 0, 0, 63, 0, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 23, 0, 104, 116, - 0, 0, 0, 0, 0, 0, 146, 151, 73, 0, - 0, 0, 0, 145, 0, 0, 27, 0, 0, 0, - 0, 0, 105, 0, 0, 147, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, + 104, 116, 0, 0, 0, 0, 0, 0, 146, 151, + 73, 0, 0, 0, 0, 145, 0, 0, 27, 0, + 0, 0, 0, 0, 105, 0, 0, 147, 0 } ; static const YY_CHAR yy_ec[256] = @@ -908,353 +908,355 @@ static const YY_CHAR yy_meta[72] = 3 } ; -static const flex_int16_t yy_base[1470] = +static const flex_int16_t yy_base[1472] = { 0, 0, 70, 19, 29, 41, 49, 52, 58, 87, 95, - 1822, 1823, 32, 1818, 141, 0, 201, 1823, 206, 88, - 11, 213, 1823, 1800, 114, 25, 2, 6, 1823, 1823, - 73, 11, 17, 1823, 1823, 1823, 104, 1806, 1761, 0, - 1798, 107, 1813, 217, 241, 1823, 185, 1757, 1763, 1783, + 1825, 1826, 32, 1821, 141, 0, 201, 1826, 206, 88, + 11, 213, 1826, 1803, 114, 25, 2, 6, 1826, 1826, + 73, 11, 17, 1826, 1826, 1826, 104, 1809, 1764, 0, + 1801, 107, 1816, 217, 241, 1826, 185, 1760, 1766, 1786, 93, 58, 190, 91, 211, 200, 14, 267, 213, 175, - 269, 64, 231, 1764, 187, 75, 1763, 274, 188, 290, - 278, 297, 1746, 195, 302, 316, 316, 1765, 0, 355, - 360, 372, 377, 380, 1823, 0, 1823, 267, 295, 296, - 327, 283, 361, 368, 293, 1823, 1762, 1801, 1823, 359, - - 1823, 393, 341, 1749, 1759, 1798, 369, 220, 249, 1753, - 364, 372, 373, 380, 385, 1796, 0, 444, 375, 1740, - 1748, 364, 1744, 1733, 1734, 372, 1750, 1733, 1742, 399, - 200, 371, 1736, 389, 1724, 1780, 416, 1727, 1778, 1720, - 1743, 1740, 1740, 1734, 369, 1727, 1720, 1725, 1719, 409, - 1730, 1723, 1714, 1713, 1727, 387, 1763, 1712, 414, 1724, - 270, 1712, 441, 1713, 416, 1725, 1722, 1723, 1721, 394, - 1703, 1708, 1704, 1696, 1713, 1705, 0, 421, 385, 436, - 437, 449, 454, 1704, 1823, 0, 461, 1695, 1698, 1823, - 446, 464, 1823, 1750, 1705, 470, 1748, 472, 1747, 476, - - 1746, 1823, 520, 1745, 486, 1706, 1701, 1700, 1691, 460, - 1740, 1734, 1700, 1679, 1687, 1693, 1681, 1695, 1691, 1692, - 1692, 1687, 1679, 1681, 1665, 1669, 1682, 1682, 1674, 1664, - 1667, 1681, 1823, 1667, 1675, 1678, 1659, 1658, 1708, 1657, - 1667, 1705, 508, 1666, 1654, 1665, 1701, 489, 1705, 1642, - 1657, 9, 1647, 1663, 1644, 1646, 1642, 1648, 1639, 1638, - 1651, 1644, 1634, 1645, 1649, 1648, 1642, 80, 1649, 1644, - 1636, 1626, 1641, 1636, 1640, 1621, 1637, 1623, 1629, 1636, - 1624, 348, 1617, 1631, 1630, 1633, 1615, 1623, 490, 1823, - 1823, 491, 1823, 1823, 1610, 0, 472, 1612, 532, 501, - - 1666, 1823, 1619, 489, 1823, 1664, 1823, 1658, 560, 1823, - 485, 1600, 1610, 1660, 1617, 1612, 1615, 466, 1823, 1613, - 1655, 1610, 1607, 1608, 337, 1612, 1650, 1600, 1595, 1592, - 1588, 1590, 1639, 1598, 1587, 1636, 1584, 566, 1597, 1597, - 1580, 1581, 1594, 1581, 1591, 1586, 1593, 1588, 1573, 452, - 1582, 1585, 1580, 1576, 1624, 502, 496, 1823, 1618, 1570, - 1569, 1562, 1564, 1568, 1557, 1564, 1569, 525, 1614, 1569, - 480, 1566, 1569, 1569, 1567, 1556, 1556, 1568, 497, 1543, - 1544, 1565, 507, 1547, 1544, 1558, 1557, 1543, 1555, 1554, - 1553, 1552, 206, 1593, 1592, 1591, 1535, 582, 1548, 1823, - - 1823, 1547, 0, 518, 1535, 1586, 1585, 1543, 1583, 1823, - 1531, 1581, 1823, 559, 615, 528, 1580, 1522, 1823, 1527, - 1533, 1536, 1535, 1522, 1521, 1823, 1523, 1520, 1532, 1528, - 1516, 1518, 1823, 1524, 1509, 1511, 1522, 1520, 1515, 586, - 1522, 1504, 1553, 1823, 1502, 1518, 1550, 1554, 1512, 1506, - 1508, 1509, 1511, 1543, 1496, 1491, 1490, 1492, 1485, 1500, - 1478, 1485, 1490, 1538, 1823, 1485, 1481, 1535, 1488, 1482, - 1489, 1474, 1484, 1487, 1476, 1475, 1470, 1823, 1525, 1823, - 1469, 1468, 1461, 1478, 1515, 1514, 1461, 1466, 1475, 1469, - 1463, 1472, 588, 1507, 1471, 1454, 1454, 1449, 1445, 1451, - - 1450, 1458, 1462, 1445, 1501, 1443, 1457, 1446, 1823, 1823, - 1823, 1446, 1823, 1456, 1490, 1452, 0, 1493, 1443, 1823, - 1823, 1440, 1823, 1446, 1823, 540, 563, 589, 1823, 1484, - 1431, 1482, 1429, 1428, 1435, 1428, 1440, 1439, 1423, 1438, - 1468, 1435, 1471, 1417, 1419, 1431, 1431, 1430, 1823, 1415, - 1412, 1426, 1418, 1424, 1415, 1423, 1823, 1408, 1419, 1423, - 1405, 1419, 532, 1401, 1395, 1400, 1397, 1412, 1413, 1410, - 1451, 1408, 1823, 1394, 1396, 1823, 1404, 1441, 1440, 604, - 1403, 1386, 1387, 1392, 1383, 1823, 1397, 1383, 606, 1375, - 1396, 1395, 1392, 1384, 1427, 1381, 1388, 1424, 1823, 1372, - - 1370, 1384, 1368, 1382, 1385, 1417, 1416, 1415, 1362, 1413, - 1412, 1823, 595, 1374, 1374, 1372, 1361, 1363, 1823, 1823, - 1406, 1354, 1409, 579, 577, 551, 1368, 1407, 573, 1401, - 1400, 1399, 1353, 1343, 1396, 1358, 1348, 1393, 1356, 1338, - 1346, 1348, 1352, 1387, 1391, 1348, 1347, 1348, 1341, 1330, - 1343, 1346, 1341, 1336, 1341, 1338, 1337, 1333, 1339, 1334, - 1375, 1374, 1318, 1314, 505, 1371, 1823, 1370, 1319, 1311, - 1362, 1325, 1312, 1823, 1312, 1321, 1320, 1320, 1304, 1359, - 1302, 1315, 1823, 1307, 1299, 1308, 1301, 1300, 1311, 1288, - 1292, 1343, 1307, 1289, 1287, 1298, 1338, 1337, 1336, 1283, - - 1299, 563, 592, 1276, 1286, 564, 1823, 1336, 1282, 1292, - 1292, 1281, 1285, 1292, 1329, 1823, 1323, 609, 1276, 1284, - 1276, 1823, 1272, 1285, 1265, 1268, 1264, 1281, 1276, 0, - 77, 64, 182, 361, 373, 419, 463, 615, 577, 1823, - 587, 587, 580, 600, 598, 642, 586, 588, 604, 608, - 595, 652, 617, 603, 606, 1823, 1823, 622, 621, 626, - 615, 1823, 1823, 629, 616, 614, 632, 619, 619, 668, - 620, 676, 677, 1823, 624, 638, 638, 681, 631, 632, - 634, 628, 686, 641, 631, 632, 628, 638, 642, 653, - 637, 655, 650, 652, 645, 647, 659, 649, 664, 703, - - 662, 667, 644, 1823, 669, 659, 704, 653, 668, 669, - 1823, 688, 696, 676, 666, 680, 668, 663, 675, 670, - 671, 667, 676, 671, 722, 728, 677, 1823, 689, 674, - 690, 680, 692, 686, 731, 699, 684, 685, 1823, 702, - 705, 688, 690, 746, 691, 1823, 708, 711, 691, 710, - 748, 708, 704, 699, 717, 716, 702, 717, 709, 705, - 723, 708, 1823, 1823, 716, 761, 716, 1823, 724, 712, - 720, 771, 1823, 722, 727, 770, 723, 724, 736, 730, - 734, 732, 730, 741, 784, 730, 786, 787, 733, 745, - 1823, 733, 741, 739, 744, 756, 740, 754, 755, 756, - - 772, 777, 751, 762, 748, 748, 768, 757, 762, 769, - 810, 811, 760, 764, 1823, 759, 777, 774, 812, 763, - 781, 782, 768, 776, 785, 765, 780, 787, 829, 830, - 1823, 785, 832, 833, 786, 796, 798, 782, 783, 790, - 799, 842, 791, 790, 807, 846, 798, 802, 800, 798, - 851, 852, 804, 854, 850, 801, 811, 1823, 816, 809, - 800, 819, 813, 808, 818, 815, 820, 816, 828, 1823, - 812, 1823, 1823, 813, 871, 812, 831, 832, 830, 815, - 836, 818, 823, 830, 863, 854, 826, 885, 830, 832, - 849, 847, 839, 843, 1823, 1823, 853, 851, 837, 838, - - 896, 851, 856, 843, 854, 846, 852, 848, 866, 868, - 869, 1823, 1823, 867, 1823, 869, 1823, 854, 856, 875, - 865, 915, 870, 912, 878, 1823, 870, 862, 921, 1823, - 922, 871, 878, 920, 1823, 1823, 880, 1823, 871, 876, - 872, 875, 889, 894, 877, 888, 935, 894, 895, 896, - 934, 892, 941, 942, 1823, 891, 944, 945, 887, 947, - 908, 892, 904, 894, 924, 953, 913, 1823, 955, 904, - 919, 906, 902, 918, 923, 911, 963, 922, 1823, 924, - 923, 925, 918, 927, 928, 925, 915, 918, 918, 975, - 924, 977, 978, 923, 981, 1823, 919, 934, 927, 985, - - 940, 1823, 1823, 936, 946, 931, 949, 935, 945, 995, - 996, 943, 953, 1000, 959, 1823, 951, 951, 953, 955, - 1006, 951, 1823, 1823, 953, 1823, 1823, 967, 1823, 961, - 1011, 962, 1013, 995, 1823, 973, 1823, 960, 968, 962, - 961, 964, 964, 965, 1023, 1823, 968, 1025, 980, 971, - 986, 986, 989, 989, 986, 1028, 992, 1823, 984, 1823, - 1823, 994, 1823, 996, 997, 994, 1036, 1823, 987, 987, - 993, 992, 1004, 1004, 1048, 1823, 1823, 1044, 993, 1823, - 1010, 995, 995, 997, 1003, 1823, 1056, 1009, 1058, 1021, - 1823, 1018, 1823, 1037, 1057, 1063, 1064, 1023, 1009, 1067, - - 1068, 1023, 1823, 1070, 1823, 1010, 1067, 1032, 1028, 1070, - 1020, 1025, 1023, 1080, 1038, 1082, 1083, 1046, 1035, 1029, - 1045, 1089, 1033, 1050, 1035, 1050, 1823, 1034, 1090, 1091, - 1092, 1041, 1094, 1059, 1823, 1045, 1823, 1056, 1103, 1075, - 1062, 1823, 1823, 1050, 1107, 1823, 1823, 1056, 1823, 1109, - 1057, 1106, 1051, 1056, 1115, 1065, 1075, 1076, 1823, 1119, - 1074, 1823, 1823, 1065, 1080, 1068, 1083, 1823, 1120, 1088, - 1081, 1082, 1091, 1073, 1079, 1082, 1134, 1095, 1095, 1138, - 1089, 1823, 1140, 1087, 1142, 1823, 1092, 1823, 1095, 1090, - 1089, 1147, 1102, 1823, 1144, 1097, 1094, 1823, 1108, 1111, - - 1154, 1109, 1156, 1099, 1101, 1109, 1099, 1115, 1116, 1110, - 1126, 1823, 1116, 1166, 1823, 1162, 1823, 1127, 1823, 1164, - 1128, 1119, 1126, 1823, 1123, 1128, 1126, 1176, 1177, 1122, - 1823, 1137, 1823, 1127, 1139, 1140, 1183, 1127, 1135, 1129, - 1137, 1150, 1823, 1149, 1139, 1138, 1141, 1153, 1144, 1153, - 1155, 1159, 1823, 1823, 1198, 1143, 1159, 1201, 1202, 1823, - 1198, 1162, 1159, 1164, 1151, 1146, 1209, 1168, 1211, 1170, - 1171, 1214, 1173, 1176, 1823, 1217, 1180, 1823, 1823, 1162, - 1220, 1169, 1222, 1167, 1184, 1823, 1170, 1823, 1170, 1172, - 1823, 1177, 1187, 1823, 1173, 1185, 1823, 1181, 1823, 1191, - - 1185, 1189, 1180, 1232, 1181, 1189, 1198, 1191, 1186, 1187, - 1202, 1193, 1200, 1187, 1202, 1207, 1250, 1209, 1252, 1253, - 1198, 1214, 1205, 1219, 1215, 1208, 1823, 1260, 1823, 1823, - 1261, 1262, 1219, 1218, 1219, 1209, 1823, 1823, 1823, 1267, - 1211, 1227, 1270, 1823, 1266, 1217, 1823, 1216, 1218, 1229, - 1276, 1227, 1823, 1236, 1279, 1823, 1823, 1285, 1290, 1295, - 1300, 1305, 1310, 1315, 1318, 1292, 1297, 1299, 1312 + 269, 64, 231, 1767, 187, 75, 1766, 274, 188, 290, + 278, 297, 1749, 195, 302, 316, 316, 1768, 0, 355, + 360, 372, 377, 380, 1826, 0, 1826, 267, 295, 296, + 327, 283, 361, 368, 293, 1826, 1765, 1804, 1826, 359, + + 1826, 393, 341, 1752, 1762, 1801, 369, 220, 249, 1756, + 364, 372, 373, 380, 385, 1799, 0, 444, 375, 1743, + 1751, 364, 1747, 1736, 1737, 372, 1753, 1736, 1745, 399, + 200, 371, 1739, 389, 1727, 1783, 416, 1730, 1781, 1723, + 1746, 1743, 1743, 1737, 369, 1730, 1723, 1728, 1722, 409, + 1733, 1726, 1717, 1716, 1730, 387, 1766, 1715, 414, 1727, + 1730, 1714, 441, 1715, 416, 1727, 1724, 1725, 1723, 394, + 1705, 1710, 1706, 1698, 1715, 1707, 0, 421, 385, 436, + 437, 449, 454, 1706, 1826, 0, 461, 1697, 1700, 1826, + 446, 464, 1826, 1752, 1707, 470, 1750, 472, 1749, 476, + + 1748, 1826, 520, 1747, 486, 1708, 1703, 1702, 1693, 460, + 1742, 1736, 1702, 1681, 1689, 1695, 1683, 1697, 1693, 1694, + 1694, 1689, 1681, 1683, 1667, 1671, 1684, 1684, 1676, 1666, + 1669, 1683, 1826, 1669, 1677, 1680, 1661, 1660, 1710, 1659, + 1669, 1707, 508, 1668, 1656, 1667, 1703, 489, 1707, 1644, + 1659, 9, 1649, 1665, 1646, 1648, 1644, 1650, 1641, 1640, + 1653, 1646, 1648, 1652, 1651, 1645, 80, 1652, 1647, 1639, + 1629, 1644, 1639, 1643, 1624, 1640, 1626, 1632, 1639, 1627, + 348, 1620, 1634, 1633, 1636, 1618, 1626, 490, 1826, 1826, + 491, 1826, 1826, 1613, 0, 472, 1615, 532, 501, 1669, + + 1826, 1622, 489, 1826, 1667, 1826, 1661, 560, 1826, 485, + 1603, 1613, 1663, 1620, 1615, 1618, 466, 1826, 1616, 1658, + 1613, 1610, 1611, 303, 1615, 1653, 1603, 1598, 1595, 1591, + 1593, 1642, 1601, 1590, 1639, 1587, 566, 1600, 1600, 1583, + 1584, 1597, 1584, 1594, 1589, 1596, 1591, 1576, 452, 1585, + 1588, 1583, 1579, 1627, 502, 496, 1826, 1621, 1573, 1572, + 1565, 1567, 1571, 1560, 1567, 1572, 525, 1617, 1572, 300, + 1569, 1573, 1571, 1560, 1560, 1572, 471, 1547, 1548, 1569, + 506, 1551, 1548, 1562, 1561, 1547, 1559, 1558, 1557, 1556, + 206, 1597, 1596, 1595, 1539, 549, 1552, 1826, 1826, 1551, + + 0, 518, 1539, 1590, 1589, 1547, 1587, 1826, 1535, 1585, + 1826, 558, 615, 529, 1584, 1526, 1826, 1531, 1537, 1540, + 1539, 1526, 1525, 1826, 1527, 1524, 1536, 532, 1521, 1523, + 1826, 1529, 1514, 1516, 1527, 1525, 1520, 583, 1527, 1509, + 1558, 1826, 1507, 1523, 1555, 1559, 1517, 1511, 1513, 1514, + 1516, 1548, 1501, 1496, 1495, 1497, 1490, 1505, 1483, 1490, + 1495, 1543, 1826, 1490, 1486, 1540, 1493, 1487, 1494, 1479, + 1489, 1492, 1481, 1480, 1475, 1826, 1530, 1826, 1474, 1473, + 1466, 1483, 1520, 1467, 1472, 1481, 1475, 1469, 1478, 587, + 1513, 1477, 1460, 1460, 1455, 1451, 1457, 1456, 1464, 1468, + + 1451, 1507, 1449, 1463, 1452, 1826, 1826, 1826, 1452, 1826, + 1462, 1496, 1458, 0, 1499, 1449, 1826, 1826, 1446, 1826, + 1452, 1826, 564, 538, 590, 1826, 1490, 1437, 1488, 1435, + 1434, 1441, 1434, 1446, 1445, 1429, 1444, 1426, 1473, 1440, + 1476, 1422, 1424, 1436, 1436, 1435, 1826, 1420, 1417, 1431, + 1423, 1429, 1420, 1428, 1826, 1413, 1424, 1428, 1410, 1424, + 556, 1406, 1400, 1405, 1402, 1417, 1418, 1415, 1456, 1413, + 1826, 1399, 1401, 1826, 1409, 1446, 1445, 519, 1408, 1391, + 1392, 1397, 1388, 1826, 1402, 1388, 605, 1380, 1401, 1398, + 1390, 1433, 1387, 1394, 1430, 1826, 1378, 1376, 1390, 1374, + + 1388, 1391, 1423, 1422, 1421, 1368, 1419, 1418, 1826, 594, + 1380, 1380, 1378, 1367, 1369, 1826, 1826, 1412, 1360, 1415, + 562, 587, 562, 1374, 1413, 572, 1407, 1406, 1405, 1359, + 1349, 1402, 1364, 1354, 1362, 1398, 1361, 1343, 1351, 1353, + 1357, 1392, 1396, 1353, 1352, 1353, 1346, 1335, 1348, 1351, + 1346, 1341, 1346, 1343, 1342, 1338, 1344, 1339, 1380, 1379, + 1323, 1319, 587, 1376, 1826, 1375, 1324, 1316, 1367, 1330, + 1317, 1826, 1317, 1326, 1325, 1325, 1309, 1364, 1307, 1320, + 1826, 1312, 1304, 1313, 1306, 1317, 1294, 1298, 1349, 1313, + 1295, 1293, 1304, 1344, 1343, 1342, 1289, 1305, 561, 591, + + 1282, 1292, 564, 1826, 1342, 1288, 1298, 1298, 1287, 1291, + 1298, 1335, 1826, 1329, 610, 1282, 1290, 1282, 1826, 1278, + 1291, 1271, 1274, 1270, 1287, 1282, 1270, 1281, 1265, 60, + 67, 235, 308, 388, 401, 548, 523, 1826, 580, 585, + 578, 589, 598, 641, 585, 587, 603, 607, 594, 651, + 610, 602, 605, 1826, 1826, 621, 620, 625, 613, 1826, + 1826, 627, 615, 613, 631, 618, 618, 667, 619, 675, + 676, 1826, 623, 637, 637, 680, 630, 632, 626, 684, + 639, 629, 630, 626, 636, 640, 651, 635, 653, 648, + 650, 643, 645, 657, 647, 662, 701, 660, 665, 642, + + 1826, 667, 657, 702, 651, 666, 667, 1826, 686, 694, + 674, 664, 678, 666, 661, 673, 668, 669, 665, 674, + 669, 720, 726, 685, 676, 1826, 688, 673, 689, 679, + 691, 685, 730, 699, 683, 685, 1826, 701, 704, 687, + 689, 745, 690, 1826, 707, 710, 690, 709, 747, 707, + 703, 698, 716, 715, 701, 716, 708, 704, 722, 707, + 1826, 1826, 715, 760, 715, 1826, 723, 718, 769, 1826, + 720, 725, 767, 721, 722, 734, 728, 732, 730, 728, + 739, 782, 728, 784, 785, 731, 743, 1826, 731, 739, + 737, 742, 754, 738, 752, 753, 754, 770, 775, 749, + + 759, 746, 746, 766, 755, 760, 767, 808, 809, 758, + 762, 1826, 807, 758, 776, 773, 811, 762, 780, 781, + 767, 775, 784, 764, 779, 788, 828, 829, 1826, 784, + 831, 832, 785, 795, 797, 781, 782, 789, 798, 841, + 790, 789, 806, 845, 797, 801, 799, 797, 850, 851, + 803, 853, 849, 809, 1826, 814, 807, 798, 817, 811, + 806, 816, 813, 818, 814, 826, 1826, 810, 1826, 1826, + 811, 869, 810, 829, 830, 827, 813, 834, 816, 821, + 828, 861, 852, 824, 883, 828, 830, 847, 845, 837, + 841, 1826, 1826, 851, 849, 852, 836, 837, 895, 850, + + 855, 842, 853, 845, 851, 847, 866, 867, 868, 1826, + 1826, 866, 1826, 868, 1826, 854, 855, 874, 864, 914, + 869, 911, 877, 1826, 869, 861, 920, 1826, 921, 870, + 877, 919, 1826, 1826, 879, 1826, 870, 870, 873, 887, + 892, 875, 886, 933, 892, 893, 894, 932, 890, 939, + 940, 1826, 889, 942, 943, 885, 945, 906, 890, 902, + 892, 922, 951, 911, 1826, 953, 902, 917, 904, 900, + 916, 921, 909, 909, 962, 921, 1826, 923, 922, 924, + 917, 926, 927, 924, 914, 917, 917, 974, 923, 976, + 977, 923, 980, 1826, 918, 933, 926, 984, 939, 1826, + + 1826, 935, 945, 931, 948, 934, 993, 994, 941, 951, + 998, 957, 1826, 949, 949, 951, 953, 1004, 949, 1826, + 1826, 951, 1826, 1826, 965, 1826, 959, 1009, 960, 1011, + 993, 1826, 971, 1826, 958, 966, 960, 959, 962, 962, + 963, 1021, 971, 1826, 967, 1024, 979, 970, 985, 985, + 988, 988, 985, 1027, 991, 1826, 983, 1826, 1826, 994, + 1826, 995, 996, 993, 1035, 1826, 986, 986, 992, 991, + 1003, 1003, 1826, 1826, 1042, 991, 1826, 1008, 993, 993, + 995, 1001, 1826, 1054, 1007, 1056, 1019, 1826, 1016, 1826, + 1035, 1055, 1061, 1062, 1021, 1007, 1065, 1066, 1021, 1826, + + 1011, 1069, 1826, 1009, 1066, 1031, 1027, 1069, 1019, 1024, + 1022, 1079, 1037, 1081, 1082, 1045, 1034, 1028, 1045, 1088, + 1032, 1049, 1034, 1049, 1033, 1089, 1090, 1091, 1040, 1093, + 1058, 1826, 1044, 1826, 1055, 1102, 1074, 1061, 1826, 1826, + 1049, 1106, 1826, 1826, 1055, 1053, 1826, 1109, 1057, 1106, + 1051, 1056, 1115, 1065, 1075, 1076, 1826, 1119, 1074, 1826, + 1826, 1065, 1080, 1068, 1083, 1826, 1120, 1088, 1081, 1082, + 1091, 1073, 1080, 1082, 1134, 1096, 1095, 1138, 1089, 1826, + 1140, 1087, 1142, 1826, 1092, 1092, 1826, 1096, 1091, 1090, + 1148, 1103, 1826, 1145, 1098, 1095, 1826, 1109, 1112, 1155, + + 1110, 1157, 1100, 1102, 1110, 1100, 1116, 1117, 1111, 1127, + 1826, 1117, 1167, 1826, 1163, 1826, 1128, 1826, 1165, 1122, + 1130, 1121, 1128, 1826, 1125, 1130, 1128, 1178, 1179, 1124, + 1826, 1139, 1826, 1129, 1141, 1142, 1185, 1129, 1137, 1131, + 1139, 1152, 1826, 1151, 1141, 1140, 1194, 1144, 1156, 1147, + 1156, 1158, 1162, 1826, 1826, 1201, 1146, 1162, 1204, 1205, + 1826, 1201, 1165, 1162, 1167, 1154, 1149, 1212, 1171, 1826, + 1214, 1173, 1174, 1217, 1176, 1179, 1826, 1220, 1183, 1826, + 1826, 1165, 1223, 1172, 1225, 1170, 1187, 1826, 1173, 1826, + 1173, 1175, 1826, 1180, 1190, 1826, 1176, 1188, 1826, 1184, + + 1826, 1194, 1188, 1192, 1183, 1235, 1184, 1192, 1201, 1194, + 1189, 1190, 1205, 1196, 1203, 1190, 1205, 1210, 1253, 1212, + 1255, 1256, 1201, 1217, 1208, 1222, 1218, 1211, 1826, 1263, + 1826, 1826, 1264, 1265, 1222, 1221, 1222, 1212, 1826, 1826, + 1826, 1270, 1214, 1230, 1273, 1826, 1269, 1220, 1826, 1219, + 1221, 1232, 1279, 1230, 1826, 1239, 1282, 1826, 1826, 1288, + 1293, 1298, 1303, 1308, 1313, 1318, 1321, 1295, 1300, 1302, + 1315 } ; -static const flex_int16_t yy_def[1470] = +static const flex_int16_t yy_def[1472] = { 0, - 1458, 1458, 1459, 1459, 1458, 1458, 1458, 1458, 1458, 1458, - 1457, 1457, 1457, 1457, 1457, 1460, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1461, - 1457, 1457, 1457, 1462, 15, 1457, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1463, 45, 45, + 1460, 1460, 1461, 1461, 1460, 1460, 1460, 1460, 1460, 1460, + 1459, 1459, 1459, 1459, 1459, 1462, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1463, + 1459, 1459, 1459, 1464, 15, 1459, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1460, 1457, - 1457, 1457, 1457, 1457, 1457, 1464, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1461, 1457, 1462, + 45, 45, 45, 45, 45, 45, 45, 45, 1462, 1459, + 1459, 1459, 1459, 1459, 1459, 1466, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1463, 1459, 1464, - 1457, 1457, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1465, 45, 1463, 45, 45, + 1459, 1459, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1467, 45, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1464, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1466, 45, 45, 45, 1457, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1466, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1468, 45, 45, 45, 1459, + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, - 1465, 1457, 1463, 45, 45, 45, 45, 45, 45, 45, + 1467, 1459, 1465, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1467, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1469, 45, 45, 45, 45, 45, - 45, 1457, 45, 45, 1457, 45, 1457, 45, 1463, 1457, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, + 1459, 45, 45, 1459, 45, 1459, 45, 1465, 1459, 45, + 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457, + 45, 45, 45, 45, 45, 45, 45, 1459, 1459, 1459, - 1457, 1457, 1468, 45, 45, 45, 45, 45, 45, 1457, - 45, 45, 1457, 45, 1463, 45, 45, 45, 1457, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, + 1470, 45, 45, 45, 45, 45, 45, 1459, 45, 45, + 1459, 45, 1465, 45, 45, 45, 1459, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 1457, + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1459, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 1457, - 1457, 45, 1457, 45, 45, 1457, 1469, 45, 45, 1457, - 1457, 45, 1457, 45, 1457, 45, 45, 45, 1457, 45, + 45, 45, 45, 45, 45, 1459, 1459, 1459, 45, 1459, + 45, 45, 1459, 1471, 45, 45, 1459, 1459, 45, 1459, + 45, 1459, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, - 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, + 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, + 1459, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1457, 45, 45, 45, 45, 45, 45, 1457, 1457, + 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45, + 45, 45, 45, 45, 45, 1459, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45, - 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, + 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 1457, 45, 45, 45, - 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 1459, 45, 45, 45, 45, 1459, + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, - 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 1457, 45, 45, 45, 1457, 45, 45, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1459, 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1459, 1459, 45, 45, 45, 1459, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 45, 1457, - 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1457, 1457, 45, 1457, 45, 1457, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 1457, - 45, 45, 45, 45, 1457, 1457, 45, 1457, 45, 45, + 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - - 45, 1457, 1457, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 1457, 1457, 45, 1457, 1457, 45, 1457, 45, - 45, 45, 45, 45, 1457, 45, 1457, 45, 45, 45, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 1457, 45, 1457, - 1457, 45, 1457, 45, 45, 45, 45, 1457, 45, 45, - 45, 45, 45, 45, 45, 1457, 1457, 45, 45, 1457, - 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, - 1457, 45, 1457, 45, 45, 45, 45, 45, 45, 45, - - 45, 45, 1457, 45, 1457, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 1459, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1457, 45, 45, 45, - 45, 45, 45, 45, 1457, 45, 1457, 45, 45, 45, - 45, 1457, 1457, 45, 45, 1457, 1457, 45, 1457, 45, - 45, 45, 45, 45, 45, 45, 45, 45, 1457, 45, - 45, 1457, 1457, 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1457, 45, 45, 45, 1457, 45, 1457, 45, 45, - 45, 45, 45, 1457, 45, 45, 45, 1457, 45, 45, + 45, 1459, 1459, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459, + 1459, 45, 1459, 45, 1459, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 1459, 45, 45, + 45, 45, 1459, 1459, 45, 1459, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 1459, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 1459, + + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 1459, + 1459, 45, 1459, 1459, 45, 1459, 45, 45, 45, 45, + 45, 1459, 45, 1459, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 1459, 45, 1459, 1459, 45, + 1459, 45, 45, 45, 45, 1459, 45, 45, 45, 45, + 45, 45, 1459, 1459, 45, 45, 1459, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 45, 1459, 45, 1459, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459, + + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 1457, 45, 45, 1457, 45, 1457, 45, 1457, 45, - 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, - 1457, 45, 1457, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 1457, 1457, 45, 45, 45, 45, 45, 1457, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 1457, 45, 45, 1457, 1457, 45, - 45, 45, 45, 45, 45, 1457, 45, 1457, 45, 45, - 1457, 45, 45, 1457, 45, 45, 1457, 45, 1457, 45, + 45, 1459, 45, 1459, 45, 45, 45, 45, 1459, 1459, + 45, 45, 1459, 1459, 45, 45, 1459, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 1459, + 1459, 45, 45, 45, 45, 1459, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 1459, + 45, 45, 45, 1459, 45, 45, 1459, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 1459, 45, 45, 1459, 45, 1459, 45, 1459, 45, 45, + 45, 45, 45, 1459, 45, 45, 45, 45, 45, 45, + 1459, 45, 1459, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 1459, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 1459, 1459, 45, 45, 45, 45, 45, + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 1459, + 45, 45, 45, 45, 45, 45, 1459, 45, 45, 1459, + 1459, 45, 45, 45, 45, 45, 45, 1459, 45, 1459, + 45, 45, 1459, 45, 45, 1459, 45, 45, 1459, 45, + + 1459, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 1457, 45, 1457, 1457, - 45, 45, 45, 45, 45, 45, 1457, 1457, 1457, 45, - 45, 45, 45, 1457, 45, 45, 1457, 45, 45, 45, - 45, 45, 1457, 45, 45, 1457, 0, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457 + 45, 45, 45, 45, 45, 45, 45, 45, 1459, 45, + 1459, 1459, 45, 45, 45, 45, 45, 45, 1459, 1459, + 1459, 45, 45, 45, 45, 1459, 45, 45, 1459, 45, + 45, 45, 45, 45, 1459, 45, 45, 1459, 0, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459 } ; -static const flex_int16_t yy_nxt[1895] = +static const flex_int16_t yy_nxt[1898] = { 0, - 1457, 13, 14, 13, 1457, 15, 16, 1457, 17, 18, - 19, 20, 21, 22, 22, 22, 23, 24, 85, 361, - 37, 14, 37, 86, 25, 26, 38, 1457, 1457, 27, + 1459, 13, 14, 13, 1459, 15, 16, 1459, 17, 18, + 19, 20, 21, 22, 22, 22, 23, 24, 85, 360, + 37, 14, 37, 86, 25, 26, 38, 1459, 1459, 27, 37, 14, 37, 42, 28, 42, 38, 91, 92, 29, 115, 30, 13, 14, 13, 90, 91, 25, 31, 92, - 13, 14, 13, 13, 14, 13, 32, 40, 824, 13, - 14, 13, 33, 40, 115, 91, 92, 362, 90, 34, + 13, 14, 13, 13, 14, 13, 32, 40, 1459, 13, + 14, 13, 33, 40, 115, 91, 92, 361, 90, 34, 35, 13, 14, 13, 94, 15, 16, 95, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 13, 14, 13, 108, 39, 90, 25, 26, 13, 14, 13, 27, 39, 84, 84, 84, 28, 42, 41, 42, 42, 29, 42, 30, 82, 107, 41, 111, 93, 25, 31, 108, - 130, 137, 88, 825, 88, 826, 32, 89, 89, 89, - 131, 138, 33, 139, 378, 82, 107, 379, 111, 34, + 130, 137, 88, 824, 88, 825, 32, 89, 89, 89, + 131, 138, 33, 139, 376, 82, 107, 377, 111, 34, 35, 44, 44, 44, 45, 45, 46, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 47, 45, 48, 49, 50, 51, 45, 52, 53, @@ -1266,199 +1268,199 @@ static const flex_int16_t yy_nxt[1895] = 45, 45, 80, 103, 81, 81, 81, 80, 109, 83, 83, 83, 101, 114, 80, 82, 83, 83, 83, 121, 82, 145, 122, 112, 123, 146, 124, 82, 162, 103, - 827, 103, 163, 113, 134, 223, 114, 110, 82, 135, - 192, 107, 136, 82, 193, 147, 112, 102, 224, 507, - 82, 45, 508, 45, 45, 45, 45, 119, 45, 45, + 826, 103, 163, 113, 134, 223, 114, 110, 82, 135, + 192, 107, 136, 82, 193, 147, 112, 102, 224, 504, + 82, 45, 505, 45, 45, 45, 45, 119, 45, 45, 45, 113, 117, 120, 107, 45, 45, 192, 45, 45, 89, 89, 89, 194, 45, 132, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 89, 89, - 89, 45, 125, 262, 111, 45, 126, 263, 180, 127, + 89, 45, 125, 428, 111, 45, 126, 429, 180, 127, 128, 141, 142, 45, 178, 143, 151, 45, 180, 45, 118, 144, 129, 148, 152, 149, 153, 150, 112, 114, - 156, 154, 155, 157, 158, 164, 180, 430, 113, 165, - 178, 431, 166, 305, 159, 179, 183, 160, 393, 167, - 168, 170, 114, 171, 101, 169, 828, 172, 84, 84, + 156, 154, 155, 157, 158, 164, 180, 480, 113, 165, + 178, 481, 166, 304, 159, 179, 183, 160, 391, 167, + 168, 170, 114, 171, 101, 169, 827, 172, 84, 84, 84, 80, 174, 81, 81, 81, 113, 175, 187, 82, 88, 179, 88, 173, 82, 89, 89, 89, 80, 178, 83, 83, 83, 84, 84, 84, 179, 191, 100, 102, 196, 82, 82, 197, 82, 100, 187, 82, 198, 200, - 208, 199, 187, 290, 242, 181, 214, 215, 225, 209, + 208, 199, 187, 289, 242, 181, 214, 215, 225, 209, 210, 233, 182, 191, 82, 197, 216, 82, 196, 204, - 197, 829, 200, 100, 226, 243, 198, 100, 199, 290, + 197, 828, 200, 100, 226, 243, 198, 100, 199, 289, 205, 100, 220, 228, 221, 196, 229, 254, 255, 100, - 230, 265, 282, 100, 289, 100, 186, 203, 203, 203, - 291, 222, 830, 234, 203, 203, 203, 203, 203, 203, - 289, 258, 275, 248, 259, 260, 276, 290, 291, 300, - 277, 297, 289, 291, 266, 267, 268, 203, 203, 203, - 203, 203, 203, 301, 304, 269, 306, 270, 292, 271, - - 272, 294, 273, 293, 297, 308, 297, 300, 316, 423, - 404, 459, 460, 304, 400, 400, 317, 304, 350, 306, - 301, 412, 318, 404, 831, 409, 424, 482, 412, 311, - 478, 483, 308, 309, 309, 309, 357, 400, 401, 404, - 309, 309, 309, 309, 309, 309, 406, 407, 409, 412, - 466, 518, 416, 491, 496, 408, 468, 492, 497, 760, - 467, 518, 761, 309, 309, 309, 309, 309, 309, 351, - 624, 444, 352, 415, 415, 415, 445, 658, 659, 518, - 415, 415, 415, 415, 415, 415, 479, 513, 526, 528, - 527, 549, 514, 599, 620, 625, 550, 624, 600, 626, - - 707, 718, 719, 415, 415, 415, 415, 415, 415, 674, - 708, 683, 720, 717, 795, 526, 684, 527, 723, 724, - 802, 796, 446, 625, 718, 832, 803, 447, 45, 45, - 45, 833, 834, 835, 836, 45, 45, 45, 45, 45, - 45, 717, 813, 797, 837, 838, 675, 839, 841, 842, - 798, 843, 840, 685, 799, 844, 845, 846, 45, 45, - 45, 45, 45, 45, 847, 848, 849, 850, 851, 852, - 813, 853, 854, 855, 856, 857, 859, 860, 861, 858, - 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, - 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, - - 882, 883, 884, 885, 886, 887, 889, 890, 891, 892, - 893, 894, 895, 896, 897, 898, 899, 888, 900, 901, - 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, - 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, - 922, 923, 924, 902, 925, 926, 901, 927, 928, 929, - 930, 931, 934, 935, 936, 937, 932, 938, 939, 940, - 941, 942, 943, 944, 945, 946, 947, 948, 949, 951, - 952, 953, 954, 955, 956, 957, 958, 959, 960, 950, - 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, - 971, 972, 973, 974, 975, 976, 977, 978, 979, 980, - - 981, 982, 983, 984, 985, 987, 986, 933, 988, 989, - 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, - 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, - 1010, 1011, 985, 986, 1012, 1013, 1014, 1015, 1017, 1019, - 1020, 1021, 1016, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, - 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, - 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, - 1018, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, - 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, - - 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, - 1065, 1088, 1089, 1090, 1091, 1092, 1066, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, - 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1122, 1123, 1124, 1125, 1126, - 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, - 1137, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, - 1158, 1159, 1160, 1161, 1162, 1134, 1163, 1164, 1165, 1167, - 1168, 1169, 1170, 1171, 1172, 1121, 1166, 1173, 1174, 1175, - - 1176, 1177, 1138, 1178, 1179, 1180, 1181, 1182, 1183, 1184, - 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, - 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, - 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, - 1215, 1216, 1194, 1217, 1218, 1219, 1220, 1221, 1222, 1223, - 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, - 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, - 1254, 1255, 1256, 1257, 1258, 1259, 1261, 1262, 1263, 1264, - 1265, 1266, 1267, 1240, 1268, 1269, 1270, 1271, 1272, 1273, - - 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, - 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1289, - 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, - 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1283, 1311, 1312, - 1313, 1260, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, - 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, - 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, - 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, - 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, - 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, - - 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, - 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, - 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, - 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, - 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, - 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, - 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, - 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, - 1452, 1453, 1454, 1455, 1456, 12, 12, 12, 12, 12, - 36, 36, 36, 36, 36, 79, 296, 79, 79, 79, - - 98, 403, 98, 517, 98, 100, 100, 100, 100, 100, - 116, 116, 116, 116, 116, 177, 100, 177, 177, 177, - 201, 201, 201, 823, 822, 821, 820, 819, 818, 817, - 816, 815, 814, 812, 811, 810, 809, 808, 807, 806, - 805, 804, 801, 800, 794, 793, 792, 791, 790, 789, - 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, - 778, 777, 776, 775, 774, 773, 772, 771, 770, 769, - 768, 767, 766, 765, 764, 763, 762, 759, 758, 757, - 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, - 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, - - 736, 735, 734, 733, 732, 731, 730, 729, 728, 727, - 726, 725, 722, 721, 716, 715, 714, 713, 712, 711, - 710, 709, 706, 705, 704, 703, 702, 701, 700, 699, - 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, - 688, 687, 686, 682, 681, 680, 679, 678, 677, 676, - 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, - 663, 662, 661, 660, 657, 656, 655, 654, 653, 652, - 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, - 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, - 631, 630, 629, 628, 627, 623, 622, 621, 620, 619, - - 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, - 608, 607, 606, 605, 604, 603, 602, 601, 598, 597, - 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, - 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, - 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, - 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, - 556, 555, 554, 553, 552, 551, 548, 547, 546, 545, - 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, - 534, 533, 532, 531, 530, 529, 525, 524, 523, 522, - 521, 520, 519, 516, 515, 512, 511, 510, 509, 506, - - 505, 504, 503, 502, 501, 500, 499, 498, 495, 494, - 493, 490, 489, 488, 487, 486, 485, 484, 481, 480, - 477, 476, 475, 474, 473, 472, 471, 470, 469, 465, - 464, 463, 462, 461, 458, 457, 456, 455, 454, 453, - 452, 451, 450, 449, 448, 443, 442, 441, 440, 439, - 438, 437, 436, 435, 434, 433, 432, 429, 428, 427, - 426, 425, 422, 421, 420, 419, 418, 417, 414, 413, - 411, 410, 405, 402, 399, 398, 397, 396, 395, 394, - 392, 391, 390, 389, 388, 387, 386, 385, 384, 383, - 382, 381, 380, 377, 376, 375, 374, 373, 372, 371, - - 370, 369, 368, 367, 366, 365, 364, 363, 360, 359, - 358, 356, 355, 354, 353, 349, 348, 347, 346, 345, - 344, 343, 342, 341, 340, 339, 338, 337, 336, 335, - 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, - 324, 323, 322, 321, 320, 319, 315, 314, 313, 312, - 310, 202, 307, 305, 303, 302, 299, 298, 295, 288, - 287, 286, 285, 284, 283, 281, 280, 279, 278, 274, - 264, 261, 257, 256, 253, 252, 251, 250, 249, 247, - 246, 245, 244, 241, 240, 239, 238, 237, 236, 235, - 232, 231, 227, 219, 218, 217, 213, 212, 211, 207, - - 206, 202, 195, 190, 189, 188, 185, 184, 176, 161, - 140, 133, 106, 105, 104, 43, 99, 97, 96, 87, - 43, 1457, 11, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457 + 230, 264, 281, 100, 288, 100, 186, 203, 203, 203, + 290, 222, 829, 234, 203, 203, 203, 203, 203, 203, + 288, 258, 274, 248, 259, 260, 275, 289, 290, 299, + 276, 296, 288, 290, 265, 266, 267, 203, 203, 203, + 203, 203, 203, 300, 303, 268, 305, 269, 291, 270, + + 271, 293, 272, 292, 296, 307, 296, 299, 315, 421, + 402, 457, 458, 303, 398, 398, 316, 303, 349, 305, + 300, 410, 317, 402, 672, 407, 422, 488, 410, 310, + 476, 489, 307, 308, 308, 308, 356, 398, 399, 402, + 308, 308, 308, 308, 308, 308, 404, 405, 407, 410, + 464, 515, 414, 493, 510, 406, 466, 494, 830, 511, + 465, 673, 515, 308, 308, 308, 308, 308, 308, 350, + 622, 442, 351, 413, 413, 413, 443, 831, 537, 515, + 413, 413, 413, 413, 413, 413, 477, 523, 547, 524, + 525, 538, 596, 548, 621, 617, 714, 597, 622, 704, + + 623, 656, 657, 413, 413, 413, 413, 413, 413, 705, + 681, 715, 792, 716, 523, 682, 524, 720, 721, 793, + 799, 621, 444, 717, 714, 832, 800, 445, 45, 45, + 45, 833, 834, 835, 715, 45, 45, 45, 45, 45, + 45, 758, 794, 810, 759, 836, 837, 839, 840, 795, + 841, 838, 683, 796, 842, 843, 844, 845, 45, 45, + 45, 45, 45, 45, 846, 847, 848, 849, 850, 851, + 852, 810, 853, 854, 855, 857, 858, 859, 856, 860, + 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + + 881, 882, 883, 884, 886, 887, 888, 889, 890, 891, + 892, 893, 894, 895, 896, 885, 897, 898, 899, 900, + 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, + 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, + 921, 899, 922, 923, 898, 924, 925, 926, 927, 928, + 929, 932, 933, 934, 935, 930, 936, 937, 938, 939, + 940, 941, 942, 943, 944, 945, 946, 947, 949, 950, + 951, 952, 953, 954, 955, 956, 957, 958, 948, 959, + 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, + 970, 971, 972, 973, 974, 975, 976, 977, 978, 979, + + 980, 981, 982, 984, 983, 985, 931, 986, 987, 988, + 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 982, 983, 1009, 1010, 1011, 1012, 1013, 1015, 1017, 1018, + 1019, 1014, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, + 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, + 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1016, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, + 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, + + 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1062, 1085, + 1086, 1087, 1088, 1089, 1063, 1090, 1091, 1092, 1093, 1094, + 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, + 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1136, + 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, + 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, + 1157, 1158, 1159, 1131, 1160, 1161, 1162, 1163, 1165, 1166, + 1167, 1168, 1169, 1118, 1170, 1164, 1171, 1172, 1173, 1174, + + 1135, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, + 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, + 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, + 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, + 1191, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, + 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, + 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1259, 1260, 1261, 1262, 1263, + 1264, 1237, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + + 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1283, 1284, 1285, 1286, 1287, 1289, 1290, 1291, 1292, 1288, + 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, + 1303, 1304, 1305, 1306, 1307, 1308, 1281, 1309, 1310, 1311, + 1258, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, + 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, + 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, + 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, + 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, + 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, + + 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, + 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, + 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, + 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, + 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, + 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, + 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, + 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 12, 12, + 12, 12, 12, 36, 36, 36, 36, 36, 79, 295, + + 79, 79, 79, 98, 401, 98, 514, 98, 100, 100, + 100, 100, 100, 116, 116, 116, 116, 116, 177, 100, + 177, 177, 177, 201, 201, 201, 823, 822, 821, 820, + 819, 818, 817, 816, 815, 814, 813, 812, 811, 809, + 808, 807, 806, 805, 804, 803, 802, 801, 798, 797, + 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, + 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, + 771, 770, 769, 768, 767, 766, 765, 764, 763, 762, + 761, 760, 757, 756, 755, 754, 753, 752, 751, 750, + 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, + + 739, 738, 737, 736, 735, 734, 733, 732, 731, 730, + 729, 728, 727, 726, 725, 724, 723, 722, 719, 718, + 713, 712, 711, 710, 709, 708, 707, 706, 703, 702, + 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, + 691, 690, 689, 688, 687, 686, 685, 684, 680, 679, + 678, 677, 676, 675, 674, 671, 670, 669, 668, 667, + 666, 665, 664, 663, 662, 661, 660, 659, 658, 655, + 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, + 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, + 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, + + 624, 620, 619, 618, 617, 616, 615, 614, 613, 612, + 611, 610, 609, 608, 607, 606, 605, 604, 603, 602, + 601, 600, 599, 598, 595, 594, 593, 592, 591, 590, + 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, + 579, 578, 577, 576, 575, 574, 573, 572, 571, 570, + 569, 568, 567, 566, 565, 564, 563, 562, 561, 560, + 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, + 549, 546, 545, 544, 543, 542, 541, 540, 539, 536, + 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, + 522, 521, 520, 519, 518, 517, 516, 513, 512, 509, + + 508, 507, 506, 503, 502, 501, 500, 499, 498, 497, + 496, 495, 492, 491, 490, 487, 486, 485, 484, 483, + 482, 479, 478, 475, 474, 473, 472, 471, 470, 469, + 468, 467, 463, 462, 461, 460, 459, 456, 455, 454, + 453, 452, 451, 450, 449, 448, 447, 446, 441, 440, + 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, + 427, 426, 425, 424, 423, 420, 419, 418, 417, 416, + 415, 412, 411, 409, 408, 403, 400, 397, 396, 395, + 394, 393, 392, 390, 389, 388, 387, 386, 385, 384, + 383, 382, 381, 380, 379, 378, 375, 374, 373, 372, + + 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, + 359, 358, 357, 355, 354, 353, 352, 348, 347, 346, + 345, 344, 343, 342, 341, 340, 339, 338, 337, 336, + 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, + 325, 324, 323, 322, 321, 320, 319, 318, 314, 313, + 312, 311, 309, 202, 306, 304, 302, 301, 298, 297, + 294, 287, 286, 285, 284, 283, 282, 280, 279, 278, + 277, 273, 263, 262, 261, 257, 256, 253, 252, 251, + 250, 249, 247, 246, 245, 244, 241, 240, 239, 238, + 237, 236, 235, 232, 231, 227, 219, 218, 217, 213, + + 212, 211, 207, 206, 202, 195, 190, 189, 188, 185, + 184, 176, 161, 140, 133, 106, 105, 104, 43, 99, + 97, 96, 87, 43, 1459, 11, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459 } ; -static const flex_int16_t yy_chk[1895] = +static const flex_int16_t yy_chk[1898] = { 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 252, 3, 3, 3, 21, 1, 1, 3, 0, 0, 1, 4, 4, 4, 13, 1, 13, 4, 27, 28, 1, 57, 1, 5, 5, 5, 26, 32, 1, 1, 33, - 6, 6, 6, 7, 7, 7, 1, 7, 730, 8, + 6, 6, 6, 7, 7, 7, 1, 7, 0, 8, 8, 8, 1, 8, 57, 27, 28, 252, 26, 1, 1, 2, 2, 2, 32, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 9, 9, @@ -1466,8 +1468,8 @@ static const flex_int16_t yy_chk[1895] = 6, 20, 20, 20, 2, 37, 9, 37, 42, 2, 42, 2, 20, 51, 10, 54, 31, 2, 2, 52, - 62, 66, 25, 731, 25, 732, 2, 25, 25, 25, - 62, 66, 2, 66, 268, 20, 51, 268, 54, 2, + 62, 66, 25, 730, 25, 731, 2, 25, 25, 25, + 62, 66, 2, 66, 267, 20, 51, 267, 54, 2, 2, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1479,20 +1481,20 @@ static const flex_int16_t yy_chk[1895] = 15, 15, 17, 47, 17, 17, 17, 19, 53, 19, 19, 19, 44, 56, 22, 17, 22, 22, 22, 60, 19, 69, 60, 55, 60, 69, 60, 22, 74, 47, - 733, 59, 74, 55, 65, 131, 56, 53, 17, 65, - 108, 63, 65, 19, 109, 69, 55, 44, 131, 393, - 22, 45, 393, 45, 45, 45, 45, 59, 45, 45, + 732, 59, 74, 55, 65, 131, 56, 53, 17, 65, + 108, 63, 65, 19, 109, 69, 55, 44, 131, 391, + 22, 45, 391, 45, 45, 45, 45, 59, 45, 45, 45, 55, 58, 59, 63, 45, 45, 108, 45, 58, 88, 88, 88, 109, 45, 63, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 58, 89, 89, - 89, 58, 61, 161, 70, 58, 61, 161, 92, 61, + 89, 58, 61, 324, 70, 58, 61, 324, 92, 61, 61, 68, 68, 58, 90, 68, 71, 58, 95, 58, 58, 68, 61, 70, 71, 70, 71, 70, 76, 77, - 72, 71, 71, 72, 72, 75, 92, 325, 76, 75, - 90, 325, 75, 282, 72, 91, 95, 72, 282, 75, - 75, 76, 77, 76, 100, 75, 734, 76, 80, 80, + 72, 71, 71, 72, 72, 75, 92, 370, 76, 75, + 90, 370, 75, 281, 72, 91, 95, 72, 281, 75, + 75, 76, 77, 76, 100, 75, 733, 76, 80, 80, 80, 81, 77, 81, 81, 81, 76, 77, 103, 80, 82, 91, 82, 76, 81, 82, 82, 82, 83, 93, 83, 83, 83, 84, 84, 84, 94, 107, 102, 100, @@ -1500,167 +1502,167 @@ static const flex_int16_t yy_chk[1895] = 111, 83, 80, 112, 84, 102, 103, 81, 113, 115, 122, 114, 119, 179, 145, 93, 126, 126, 132, 122, 122, 137, 94, 107, 83, 170, 126, 84, 111, 119, - 112, 735, 115, 102, 132, 145, 113, 102, 114, 179, + 112, 734, 115, 102, 132, 145, 113, 102, 114, 179, 119, 102, 130, 134, 130, 150, 134, 156, 156, 102, 134, 163, 170, 102, 178, 102, 102, 118, 118, 118, - 180, 130, 736, 137, 118, 118, 118, 118, 118, 118, + 180, 130, 735, 137, 118, 118, 118, 118, 118, 118, 181, 159, 165, 150, 159, 159, 165, 182, 183, 191, 165, 187, 178, 180, 163, 163, 163, 118, 118, 118, 118, 118, 118, 192, 196, 163, 198, 163, 181, 163, - 163, 183, 163, 182, 187, 200, 205, 191, 210, 318, - 297, 350, 350, 248, 289, 292, 210, 196, 243, 198, - 192, 304, 210, 311, 737, 300, 318, 371, 357, 205, - 368, 371, 200, 203, 203, 203, 248, 289, 292, 297, - 203, 203, 203, 203, 203, 203, 299, 299, 300, 304, - 356, 404, 311, 379, 383, 299, 357, 379, 383, 665, - 356, 416, 665, 203, 203, 203, 203, 203, 203, 243, - 526, 338, 243, 309, 309, 309, 338, 563, 563, 404, - 309, 309, 309, 309, 309, 309, 368, 398, 414, 416, - 414, 440, 398, 493, 528, 527, 440, 526, 493, 528, - - 613, 625, 626, 309, 309, 309, 309, 309, 309, 580, - 613, 589, 626, 624, 702, 414, 589, 414, 629, 629, - 706, 702, 338, 527, 625, 738, 706, 338, 415, 415, - 415, 739, 741, 742, 743, 415, 415, 415, 415, 415, - 415, 624, 718, 703, 744, 745, 580, 746, 747, 748, - 703, 749, 746, 589, 703, 750, 751, 752, 415, 415, - 415, 415, 415, 415, 753, 754, 755, 758, 759, 760, - 718, 761, 764, 765, 766, 767, 768, 769, 770, 767, - 771, 772, 773, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, - - 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, - 802, 803, 805, 806, 807, 808, 809, 797, 810, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 823, 824, 825, 826, 827, 829, 830, 831, 832, 833, - 834, 835, 836, 813, 837, 838, 812, 840, 841, 842, - 843, 844, 845, 847, 848, 849, 844, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 865, 866, 867, 869, 870, 871, 872, 874, 875, 861, - 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 888, 889, 890, 892, 893, 894, 895, 896, - - 897, 898, 899, 900, 901, 903, 902, 844, 904, 905, - 906, 907, 908, 909, 910, 911, 912, 913, 914, 916, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 901, 902, 929, 930, 932, 933, 934, 935, - 936, 937, 933, 938, 939, 940, 941, 942, 943, 944, - 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, - 955, 956, 957, 959, 960, 961, 962, 963, 964, 965, - 966, 967, 968, 969, 971, 974, 975, 976, 977, 978, - 934, 979, 980, 981, 982, 983, 984, 985, 986, 987, - 988, 989, 990, 991, 992, 993, 994, 997, 998, 999, - - 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, - 985, 1010, 1011, 1014, 1016, 1018, 986, 1019, 1020, 1021, - 1022, 1023, 1024, 1025, 1027, 1028, 1029, 1031, 1032, 1033, - 1034, 1037, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, - 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1056, 1057, - 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, - 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, - 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, - 1090, 1091, 1092, 1093, 1094, 1065, 1095, 1097, 1098, 1099, - 1100, 1101, 1104, 1105, 1106, 1051, 1098, 1107, 1108, 1109, - - 1110, 1111, 1069, 1112, 1113, 1114, 1115, 1117, 1118, 1119, - 1120, 1121, 1122, 1125, 1128, 1130, 1131, 1132, 1133, 1134, - 1136, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1147, - 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, - 1159, 1162, 1134, 1164, 1165, 1166, 1167, 1169, 1170, 1171, - 1172, 1173, 1174, 1175, 1178, 1179, 1181, 1182, 1183, 1184, - 1185, 1187, 1188, 1189, 1190, 1192, 1194, 1195, 1196, 1197, - 1198, 1199, 1200, 1201, 1202, 1204, 1206, 1207, 1208, 1209, - 1210, 1211, 1212, 1213, 1213, 1214, 1215, 1216, 1217, 1218, - 1219, 1220, 1221, 1194, 1222, 1223, 1224, 1225, 1226, 1228, - - 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1238, 1239, 1240, - 1241, 1244, 1245, 1248, 1250, 1251, 1252, 1253, 1254, 1250, - 1255, 1256, 1257, 1258, 1260, 1261, 1264, 1265, 1266, 1267, - 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1240, 1276, 1277, - 1278, 1214, 1279, 1280, 1281, 1283, 1284, 1285, 1287, 1289, - 1290, 1291, 1292, 1293, 1295, 1296, 1297, 1299, 1300, 1301, - 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, - 1313, 1314, 1316, 1318, 1320, 1321, 1322, 1323, 1325, 1326, - 1327, 1328, 1329, 1330, 1332, 1334, 1335, 1336, 1337, 1338, - 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1347, 1348, 1349, - - 1350, 1351, 1352, 1355, 1356, 1357, 1358, 1359, 1361, 1362, - 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, - 1373, 1374, 1376, 1377, 1380, 1381, 1382, 1383, 1384, 1385, - 1387, 1389, 1390, 1392, 1393, 1395, 1396, 1398, 1400, 1401, - 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, - 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, - 1422, 1423, 1424, 1425, 1426, 1428, 1431, 1432, 1433, 1434, - 1435, 1436, 1440, 1441, 1442, 1443, 1445, 1446, 1448, 1449, - 1450, 1451, 1452, 1454, 1455, 1458, 1458, 1458, 1458, 1458, - 1459, 1459, 1459, 1459, 1459, 1460, 1466, 1460, 1460, 1460, - - 1461, 1467, 1461, 1468, 1461, 1462, 1462, 1462, 1462, 1462, - 1463, 1463, 1463, 1463, 1463, 1464, 1469, 1464, 1464, 1464, - 1465, 1465, 1465, 729, 728, 727, 726, 725, 724, 723, - 721, 720, 719, 717, 715, 714, 713, 712, 711, 710, - 709, 708, 705, 704, 701, 700, 699, 698, 697, 696, - 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, - 685, 684, 682, 681, 680, 679, 678, 677, 676, 675, - 673, 672, 671, 670, 669, 668, 666, 664, 663, 662, - 661, 660, 659, 658, 657, 656, 655, 654, 653, 652, - 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, - - 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, - 631, 630, 628, 627, 623, 622, 621, 618, 617, 616, - 615, 614, 611, 610, 609, 608, 607, 606, 605, 604, - 603, 602, 601, 600, 598, 597, 596, 595, 594, 593, - 592, 591, 590, 588, 587, 585, 584, 583, 582, 581, - 579, 578, 577, 575, 574, 572, 571, 570, 569, 568, - 567, 566, 565, 564, 562, 561, 560, 559, 558, 556, - 555, 554, 553, 552, 551, 550, 548, 547, 546, 545, - 544, 543, 542, 541, 540, 539, 538, 537, 536, 535, - 534, 533, 532, 531, 530, 524, 522, 519, 518, 516, - - 515, 514, 512, 508, 507, 506, 505, 504, 503, 502, - 501, 500, 499, 498, 497, 496, 495, 494, 492, 491, - 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, - 479, 477, 476, 475, 474, 473, 472, 471, 470, 469, - 468, 467, 466, 464, 463, 462, 461, 460, 459, 458, - 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, - 447, 446, 445, 443, 442, 441, 439, 438, 437, 436, - 435, 434, 432, 431, 430, 429, 428, 427, 425, 424, - 423, 422, 421, 420, 418, 417, 412, 411, 409, 408, - 407, 406, 405, 402, 399, 397, 396, 395, 394, 392, - - 391, 390, 389, 388, 387, 386, 385, 384, 382, 381, - 380, 378, 377, 376, 375, 374, 373, 372, 370, 369, - 367, 366, 365, 364, 363, 362, 361, 360, 359, 355, - 354, 353, 352, 351, 349, 348, 347, 346, 345, 344, - 343, 342, 341, 340, 339, 337, 336, 335, 334, 333, - 332, 331, 330, 329, 328, 327, 326, 324, 323, 322, - 321, 320, 317, 316, 315, 314, 313, 312, 308, 306, - 303, 301, 298, 295, 288, 287, 286, 285, 284, 283, - 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, - 271, 270, 269, 267, 266, 265, 264, 263, 262, 261, - - 260, 259, 258, 257, 256, 255, 254, 253, 251, 250, - 249, 247, 246, 245, 244, 242, 241, 240, 239, 238, - 237, 236, 235, 234, 232, 231, 230, 229, 228, 227, - 226, 225, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 215, 214, 213, 212, 211, 209, 208, 207, 206, - 204, 201, 199, 197, 195, 194, 189, 188, 184, 176, - 175, 174, 173, 172, 171, 169, 168, 167, 166, 164, - 162, 160, 158, 157, 155, 154, 153, 152, 151, 149, - 148, 147, 146, 144, 143, 142, 141, 140, 139, 138, - 136, 135, 133, 129, 128, 127, 125, 124, 123, 121, - - 120, 116, 110, 106, 105, 104, 98, 97, 78, 73, - 67, 64, 50, 49, 48, 43, 41, 39, 38, 24, - 14, 11, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, 1457, - 1457, 1457, 1457, 1457 + 163, 183, 163, 182, 187, 200, 205, 191, 210, 317, + 296, 349, 349, 248, 288, 291, 210, 196, 243, 198, + 192, 303, 210, 310, 578, 299, 317, 377, 356, 205, + 367, 377, 200, 203, 203, 203, 248, 288, 291, 296, + 203, 203, 203, 203, 203, 203, 298, 298, 299, 303, + 355, 402, 310, 381, 396, 298, 356, 381, 736, 396, + 355, 578, 414, 203, 203, 203, 203, 203, 203, 243, + 524, 337, 243, 308, 308, 308, 337, 737, 428, 402, + 308, 308, 308, 308, 308, 308, 367, 412, 438, 412, + 414, 428, 490, 438, 523, 525, 621, 490, 524, 610, + + 525, 561, 561, 308, 308, 308, 308, 308, 308, 610, + 587, 622, 699, 623, 412, 587, 412, 626, 626, 699, + 703, 523, 337, 623, 621, 739, 703, 337, 413, 413, + 413, 740, 741, 742, 622, 413, 413, 413, 413, 413, + 413, 663, 700, 715, 663, 743, 744, 745, 746, 700, + 747, 744, 587, 700, 748, 749, 750, 751, 413, 413, + 413, 413, 413, 413, 752, 753, 756, 757, 758, 759, + 762, 715, 763, 764, 765, 766, 767, 768, 765, 769, + 770, 771, 773, 774, 775, 776, 777, 778, 779, 780, + 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, + + 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, + 802, 803, 804, 805, 806, 794, 807, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, + 822, 823, 824, 825, 827, 828, 829, 830, 831, 832, + 833, 810, 834, 835, 809, 836, 838, 839, 840, 841, + 842, 843, 845, 846, 847, 842, 848, 849, 850, 851, + 852, 853, 854, 855, 856, 857, 858, 859, 860, 863, + 864, 865, 867, 868, 869, 871, 872, 873, 859, 874, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 889, 890, 891, 892, 893, 894, 895, + + 896, 897, 898, 900, 899, 901, 842, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 911, 913, 914, 915, + 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, + 898, 899, 926, 927, 928, 930, 931, 932, 933, 934, + 935, 931, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 956, 957, 958, 959, 960, 961, 962, 963, 964, + 965, 966, 968, 971, 972, 973, 974, 975, 976, 932, + 977, 978, 979, 980, 981, 982, 983, 984, 985, 986, + 987, 988, 989, 990, 991, 994, 995, 996, 997, 998, + + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 982, 1007, + 1008, 1009, 1012, 1014, 983, 1016, 1017, 1018, 1019, 1020, + 1021, 1022, 1023, 1025, 1026, 1027, 1029, 1030, 1031, 1032, + 1035, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, + 1046, 1047, 1048, 1049, 1050, 1051, 1053, 1054, 1055, 1056, + 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1066, 1067, + 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1078, + 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, + 1089, 1090, 1091, 1062, 1092, 1093, 1095, 1096, 1097, 1098, + 1099, 1102, 1103, 1048, 1104, 1096, 1105, 1106, 1107, 1108, + + 1066, 1109, 1110, 1111, 1112, 1114, 1115, 1116, 1117, 1118, + 1119, 1122, 1125, 1127, 1128, 1129, 1130, 1131, 1133, 1135, + 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, + 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1157, + 1131, 1160, 1162, 1163, 1164, 1165, 1167, 1168, 1169, 1170, + 1171, 1172, 1175, 1176, 1178, 1179, 1180, 1181, 1182, 1184, + 1185, 1186, 1187, 1189, 1191, 1192, 1193, 1194, 1195, 1196, + 1197, 1198, 1199, 1201, 1202, 1204, 1205, 1206, 1207, 1208, + 1209, 1210, 1211, 1211, 1212, 1213, 1214, 1215, 1216, 1217, + 1218, 1191, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, + + 1227, 1228, 1229, 1230, 1231, 1233, 1235, 1236, 1237, 1238, + 1241, 1242, 1245, 1246, 1248, 1249, 1250, 1251, 1252, 1248, + 1253, 1254, 1255, 1256, 1258, 1259, 1262, 1263, 1264, 1265, + 1267, 1268, 1269, 1270, 1271, 1272, 1237, 1273, 1274, 1275, + 1212, 1276, 1277, 1278, 1279, 1281, 1282, 1283, 1285, 1286, + 1288, 1289, 1290, 1291, 1292, 1294, 1295, 1296, 1298, 1299, + 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, + 1310, 1312, 1313, 1315, 1317, 1319, 1320, 1321, 1322, 1323, + 1325, 1326, 1327, 1328, 1329, 1330, 1332, 1334, 1335, 1336, + 1337, 1338, 1339, 1340, 1341, 1342, 1344, 1345, 1346, 1347, + + 1348, 1349, 1350, 1351, 1352, 1353, 1356, 1357, 1358, 1359, + 1360, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1371, + 1372, 1373, 1374, 1375, 1376, 1378, 1379, 1382, 1383, 1384, + 1385, 1386, 1387, 1389, 1391, 1392, 1394, 1395, 1397, 1398, + 1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, + 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, + 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1430, 1433, + 1434, 1435, 1436, 1437, 1438, 1442, 1443, 1444, 1445, 1447, + 1448, 1450, 1451, 1452, 1453, 1454, 1456, 1457, 1460, 1460, + 1460, 1460, 1460, 1461, 1461, 1461, 1461, 1461, 1462, 1468, + + 1462, 1462, 1462, 1463, 1469, 1463, 1470, 1463, 1464, 1464, + 1464, 1464, 1464, 1465, 1465, 1465, 1465, 1465, 1466, 1471, + 1466, 1466, 1466, 1467, 1467, 1467, 729, 728, 727, 726, + 725, 724, 723, 722, 721, 720, 718, 717, 716, 714, + 712, 711, 710, 709, 708, 707, 706, 705, 702, 701, + 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, + 688, 687, 686, 685, 684, 683, 682, 680, 679, 678, + 677, 676, 675, 674, 673, 671, 670, 669, 668, 667, + 666, 664, 662, 661, 660, 659, 658, 657, 656, 655, + 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, + + 644, 643, 642, 641, 640, 639, 638, 637, 636, 635, + 634, 633, 632, 631, 630, 629, 628, 627, 625, 624, + 620, 619, 618, 615, 614, 613, 612, 611, 608, 607, + 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, + 595, 594, 593, 592, 591, 590, 589, 588, 586, 585, + 583, 582, 581, 580, 579, 577, 576, 575, 573, 572, + 570, 569, 568, 567, 566, 565, 564, 563, 562, 560, + 559, 558, 557, 556, 554, 553, 552, 551, 550, 549, + 548, 546, 545, 544, 543, 542, 541, 540, 539, 538, + 537, 536, 535, 534, 533, 532, 531, 530, 529, 528, + + 527, 521, 519, 516, 515, 513, 512, 511, 509, 505, + 504, 503, 502, 501, 500, 499, 498, 497, 496, 495, + 494, 493, 492, 491, 489, 488, 487, 486, 485, 484, + 483, 482, 481, 480, 479, 477, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 466, 465, 464, 462, 461, + 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, + 450, 449, 448, 447, 446, 445, 444, 443, 441, 440, + 439, 437, 436, 435, 434, 433, 432, 430, 429, 427, + 426, 425, 423, 422, 421, 420, 419, 418, 416, 415, + 410, 409, 407, 406, 405, 404, 403, 400, 397, 395, + + 394, 393, 392, 390, 389, 388, 387, 386, 385, 384, + 383, 382, 380, 379, 378, 376, 375, 374, 373, 372, + 371, 369, 368, 366, 365, 364, 363, 362, 361, 360, + 359, 358, 354, 353, 352, 351, 350, 348, 347, 346, + 345, 344, 343, 342, 341, 340, 339, 338, 336, 335, + 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, + 323, 322, 321, 320, 319, 316, 315, 314, 313, 312, + 311, 307, 305, 302, 300, 297, 294, 287, 286, 285, + 284, 283, 282, 280, 279, 278, 277, 276, 275, 274, + 273, 272, 271, 270, 269, 268, 266, 265, 264, 263, + + 262, 261, 260, 259, 258, 257, 256, 255, 254, 253, + 251, 250, 249, 247, 246, 245, 244, 242, 241, 240, + 239, 238, 237, 236, 235, 234, 232, 231, 230, 229, + 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, + 218, 217, 216, 215, 214, 213, 212, 211, 209, 208, + 207, 206, 204, 201, 199, 197, 195, 194, 189, 188, + 184, 176, 175, 174, 173, 172, 171, 169, 168, 167, + 166, 164, 162, 161, 160, 158, 157, 155, 154, 153, + 152, 151, 149, 148, 147, 146, 144, 143, 142, 141, + 140, 139, 138, 136, 135, 133, 129, 128, 127, 125, + + 124, 123, 121, 120, 116, 110, 106, 105, 104, 98, + 97, 78, 73, 67, 64, 50, 49, 48, 43, 41, + 39, 38, 24, 14, 11, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, 1459, + 1459, 1459, 1459, 1459, 1459, 1459, 1459 } ; @@ -1743,7 +1745,7 @@ using namespace isc::dhcp; /* To avoid the call to exit... oops! */ #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg) -#line 1747 "dhcp6_lexer.cc" +#line 1749 "dhcp6_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 @@ -1769,8 +1771,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 1773 "dhcp6_lexer.cc" -#line 1774 "dhcp6_lexer.cc" +#line 1775 "dhcp6_lexer.cc" +#line 1776 "dhcp6_lexer.cc" #define INITIAL 0 #define COMMENT 1 @@ -2100,7 +2102,7 @@ YY_DECL } -#line 2104 "dhcp6_lexer.cc" +#line 2106 "dhcp6_lexer.cc" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -2129,13 +2131,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1458 ) + if ( yy_current_state >= 1460 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_current_state != 1457 ); + while ( yy_current_state != 1459 ); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); @@ -4109,9 +4111,9 @@ YY_RULE_SETUP { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: - return isc::dhcp::Dhcp6Parser::make_QUEUE_CONTROL(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_DHCP_QUEUE_CONTROL(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("queue-control", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("dhcp-queue-control", driver.loc_); } } YY_BREAK @@ -4423,7 +4425,7 @@ YY_RULE_SETUP #line 1839 "dhcp6_lexer.ll" ECHO; YY_BREAK -#line 4427 "dhcp6_lexer.cc" +#line 4429 "dhcp6_lexer.cc" case YY_END_OF_BUFFER: { @@ -4742,7 +4744,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1458 ) + if ( yy_current_state >= 1460 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -4775,11 +4777,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 1458 ) + if ( yy_current_state >= 1460 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 1457); + yy_is_jam = (yy_current_state == 1459); return yy_is_jam ? 0 : yy_current_state; } diff --git a/src/bin/dhcp6/dhcp6_lexer.ll b/src/bin/dhcp6/dhcp6_lexer.ll index 48a19b4c49..ddf88939db 100644 --- a/src/bin/dhcp6/dhcp6_lexer.ll +++ b/src/bin/dhcp6/dhcp6_lexer.ll @@ -1597,12 +1597,12 @@ ControlCharacterFill [^"\\]|\\{JSONEscapeSequence} } } -\"queue-control\" { +\"dhcp-queue-control\" { switch(driver.ctx_) { case isc::dhcp::Parser6Context::DHCP6: - return isc::dhcp::Dhcp6Parser::make_QUEUE_CONTROL(driver.loc_); + return isc::dhcp::Dhcp6Parser::make_DHCP_QUEUE_CONTROL(driver.loc_); default: - return isc::dhcp::Dhcp6Parser::make_STRING("queue-control", driver.loc_); + return isc::dhcp::Dhcp6Parser::make_STRING("dhcp-queue-control", driver.loc_); } } diff --git a/src/bin/dhcp6/dhcp6_parser.cc b/src/bin/dhcp6/dhcp6_parser.cc index 8740789766..4a0fde67e2 100644 --- a/src/bin/dhcp6/dhcp6_parser.cc +++ b/src/bin/dhcp6/dhcp6_parser.cc @@ -3050,7 +3050,7 @@ namespace isc { namespace dhcp { #line 1930 "dhcp6_parser.yy" // lalr1.cc:859 { ElementPtr qc = yystack_[0].value.as< ElementPtr > (); - ctx.stack_.back()->set("queue-control", qc); + ctx.stack_.back()->set("dhcp-queue-control", qc); if (!qc->contains("queue-type")) { std::stringstream msg; @@ -4793,7 +4793,7 @@ namespace isc { namespace dhcp { "\"max-reclaim-time\"", "\"unwarned-reclaim-cycles\"", "\"server-id\"", "\"LLT\"", "\"EN\"", "\"LL\"", "\"identifier\"", "\"htype\"", "\"time\"", "\"enterprise-id\"", "\"dhcp4o6-port\"", "\"control-socket\"", - "\"socket-type\"", "\"socket-name\"", "\"queue-control\"", + "\"socket-type\"", "\"socket-name\"", "\"dhcp-queue-control\"", "\"dhcp-ddns\"", "\"enable-updates\"", "\"qualifying-suffix\"", "\"server-ip\"", "\"server-port\"", "\"sender-ip\"", "\"sender-port\"", "\"max-queue-size\"", "\"ncr-protocol\"", "\"ncr-format\"", @@ -4883,8 +4883,8 @@ namespace isc { namespace dhcp { "server_id_type", "$@98", "duid_type", "htype", "identifier", "$@99", "time", "enterprise_id", "dhcp4o6_port", "control_socket", "$@100", "control_socket_params", "control_socket_param", "socket_type", "$@101", - "socket_name", "$@102", "queue_control", "$@103", "dhcp_ddns", "$@104", - "sub_dhcp_ddns", "$@105", "dhcp_ddns_params", "dhcp_ddns_param", + "socket_name", "$@102", "dhcp_queue_control", "$@103", "dhcp_ddns", + "$@104", "sub_dhcp_ddns", "$@105", "dhcp_ddns_params", "dhcp_ddns_param", "enable_updates", "qualifying_suffix", "$@106", "server_ip", "$@107", "server_port", "sender_ip", "$@108", "sender_port", "max_queue_size", "ncr_protocol", "$@109", "ncr_protocol_value", "ncr_format", "$@110", diff --git a/src/bin/dhcp6/dhcp6_parser.h b/src/bin/dhcp6/dhcp6_parser.h index f249b7f941..2d00d89b35 100644 --- a/src/bin/dhcp6/dhcp6_parser.h +++ b/src/bin/dhcp6/dhcp6_parser.h @@ -462,7 +462,7 @@ namespace isc { namespace dhcp { TOKEN_CONTROL_SOCKET = 370, TOKEN_SOCKET_TYPE = 371, TOKEN_SOCKET_NAME = 372, - TOKEN_QUEUE_CONTROL = 373, + TOKEN_DHCP_QUEUE_CONTROL = 373, TOKEN_DHCP_DDNS = 374, TOKEN_ENABLE_UPDATES = 375, TOKEN_QUALIFYING_SUFFIX = 376, @@ -1098,7 +1098,7 @@ namespace isc { namespace dhcp { static inline symbol_type - make_QUEUE_CONTROL (const location_type& l); + make_DHCP_QUEUE_CONTROL (const location_type& l); static inline symbol_type @@ -2618,9 +2618,9 @@ namespace isc { namespace dhcp { } Dhcp6Parser::symbol_type - Dhcp6Parser::make_QUEUE_CONTROL (const location_type& l) + Dhcp6Parser::make_DHCP_QUEUE_CONTROL (const location_type& l) { - return symbol_type (token::TOKEN_QUEUE_CONTROL, l); + return symbol_type (token::TOKEN_DHCP_QUEUE_CONTROL, l); } Dhcp6Parser::symbol_type diff --git a/src/bin/dhcp6/dhcp6_parser.yy b/src/bin/dhcp6/dhcp6_parser.yy index c43a6306b8..a16dc9568b 100644 --- a/src/bin/dhcp6/dhcp6_parser.yy +++ b/src/bin/dhcp6/dhcp6_parser.yy @@ -172,7 +172,7 @@ using namespace std; SOCKET_TYPE "socket-type" SOCKET_NAME "socket-name" - QUEUE_CONTROL "queue-control" + DHCP_QUEUE_CONTROL "dhcp-queue-control" DHCP_DDNS "dhcp-ddns" ENABLE_UPDATES "enable-updates" @@ -457,7 +457,7 @@ global_param: preferred_lifetime | server_id | dhcp4o6_port | control_socket - | queue_control + | dhcp_queue_control | dhcp_ddns | user_context | comment @@ -1923,13 +1923,13 @@ socket_name: SOCKET_NAME { ctx.leave(); }; -// --- queue-control --------------------------------------------- +// --- dhcp-queue-control --------------------------------------------- -queue_control: QUEUE_CONTROL { +dhcp_queue_control: DHCP_QUEUE_CONTROL { ctx.enter(ctx.NO_KEYWORD); } COLON map_value { ElementPtr qc = $4; - ctx.stack_.back()->set("queue-control", qc); + ctx.stack_.back()->set("dhcp-queue-control", qc); if (!qc->contains("queue-type")) { std::stringstream msg; diff --git a/src/bin/dhcp6/json_config_parser.cc b/src/bin/dhcp6/json_config_parser.cc index 3a62f8e0ab..3ff82c89bb 100644 --- a/src/bin/dhcp6/json_config_parser.cc +++ b/src/bin/dhcp6/json_config_parser.cc @@ -31,7 +31,7 @@ #include <dhcpsrv/parsers/host_reservations_list_parser.h> #include <dhcpsrv/parsers/ifaces_config_parser.h> #include <dhcpsrv/parsers/option_data_parser.h> -#include <dhcpsrv/parsers/queue_control_parser.h> +#include <dhcpsrv/parsers/dhcp_queue_control_parser.h> #include <dhcpsrv/parsers/simple_parser6.h> #include <dhcpsrv/parsers/shared_networks_list_parser.h> #include <dhcpsrv/parsers/sanity_checks_parser.h> @@ -483,9 +483,9 @@ configureDhcp6Server(Dhcpv6Srv& server, isc::data::ConstElementPtr config_set, continue; } - if (config_pair.first == "queue-control") { - QueueControlParser parser(AF_INET); - srv_config->setQueueControlInfo(parser.parse(config_pair.second)); + if (config_pair.first == "dhcp-queue-control") { + DHCPQueueControlParser parser(AF_INET); + srv_config->setDHCPQueueControl(parser.parse(config_pair.second)); continue; } diff --git a/src/bin/dhcp6/parser_context.cc b/src/bin/dhcp6/parser_context.cc index 2d35ef9d81..6323a261b6 100644 --- a/src/bin/dhcp6/parser_context.cc +++ b/src/bin/dhcp6/parser_context.cc @@ -174,8 +174,8 @@ Parser6Context::contextName() return ("duid-type"); case CONTROL_SOCKET: return ("control-socket"); - case QUEUE_CONTROL: - return ("queue-control"); + case DHCP_QUEUE_CONTROL: + return ("dhcp-queue-control"); case POOLS: return ("pools"); case PD_POOLS: diff --git a/src/bin/dhcp6/parser_context.h b/src/bin/dhcp6/parser_context.h index c0247177c8..27953b9f37 100644 --- a/src/bin/dhcp6/parser_context.h +++ b/src/bin/dhcp6/parser_context.h @@ -271,8 +271,8 @@ public: /// Used while parsing Dhcp6/control-socket structures. CONTROL_SOCKET, - /// Used while parsing Dhcp4/queue-control structures. - QUEUE_CONTROL, + /// Used while parsing Dhcp4/dhcp-queue-control structures. + DHCP_QUEUE_CONTROL, /// Used while parsing Dhcp6/subnet6/pools structures. POOLS, diff --git a/src/bin/dhcp6/tests/config_parser_unittest.cc b/src/bin/dhcp6/tests/config_parser_unittest.cc index 3e2e3e80c9..234f062b4e 100644 --- a/src/bin/dhcp6/tests/config_parser_unittest.cc +++ b/src/bin/dhcp6/tests/config_parser_unittest.cc @@ -6915,61 +6915,86 @@ TEST_F(Dhcp6ParserTest, serverTag) { ASSERT_THROW(parseDHCP6(bad_tag), std::exception); } -// Check whether it is possible to configure queue-control -TEST_F(Dhcp6ParserTest, queueControl) { - // Config without server-tag - string config_no_queue = "{ " + genIfaceConfig() + "," + - "\"subnet6\": [ ] " - "}"; - - string config_with_queue = - "{ " + genIfaceConfig() + ", \n" + - " \"subnet6\": [ ], \n" - " \"queue-control\": { \n" - " \"queue-type\": \"some-type\", \n" - " \"capacity\": 75 \n" - " } \n" - "} \n"; +// Check whether it is possible to configure packet queue +TEST_F(Dhcp6ParserTest, dhcpQueueControl) { + struct Scenario { + std::string description_; + std::string json_; + }; - string config_with_context = - "{ " + genIfaceConfig() + ", \n" + - " \"subnet6\": [ ], \n" - " \"queue-control\": { \n" + std::vector<Scenario> scenarios = { + { + "no entry", + "" + }, + { + "valid entry", + "{ \n" + " \"queue-type\": \"some-type\", \n" + " \"capacity\": 75 \n" + "} \n" + }, + { + "valid arbitrary content", + "{ \n" " \"queue-type\": \"some-type\", \n" " \"capacity\": 90, \n" - " \"user-context\": { \"comment\": \"some text\" } \n" - " } \n" - "} \n"; + " \"user-context\": { \"comment\": \"some text\" },\n" + " \"random-bool\" : false, \n" + " \"random-int\" : 1236 \n" + "} \n" + } + }; // Let's check the default. It should be empty. data::ConstElementPtr control; - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); + control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); ASSERT_FALSE(control); - // Configuration with no queue should default to an emtpy control. - configure(config_no_queue, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_FALSE(control); + // Iterate over the incorrect scenarios and verify they + // fail as expected. Note, we use parseDHCP6() directly + // as all of the errors above are enforced by the grammar. + data::ConstElementPtr exp_elems; + for (auto scenario : scenarios) { + SCOPED_TRACE(scenario.description_); + { + // Clear the config + CfgMgr::instance().clear(); - // Clear the config - CfgMgr::instance().clear(); + // Construct the config JSON + std::stringstream os; + os << "{ " + genIfaceConfig(); + if (!scenario.json_.empty()) { - // Configuration with queue should be valid. - configure(config_with_queue, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_TRUE(control); + os << ",\n \"dhcp-queue-control\": " << scenario.json_; + } - // Clear the config - CfgMgr::instance().clear(); + os << "} \n"; + + // Configure the server. This should succeed. + configure(os.str(), CONTROL_RESULT_SUCCESS, ""); - // Configuration with queue with context should be valid. - configure(config_with_context, CONTROL_RESULT_SUCCESS, ""); - control = CfgMgr::instance().getStagingCfg()->getQueueControlInfo(); - ASSERT_TRUE(control); + // Fetch the queue control info. + control = CfgMgr::instance().getStagingCfg()->getDHCPQueueControl(); + + // If JSON does not contain queue control, + // the pointer stored in staging should be empty. + if (scenario.json_.empty()) { + ASSERT_FALSE(control); + continue; + } + + // Make sure the staged config is correct. + ASSERT_TRUE(control); + ASSERT_NO_THROW(exp_elems = Element::fromJSON(scenario.json_)) + << " cannot convert expected JSON, test is broken"; + EXPECT_TRUE(control->equals(*exp_elems)); + } + } } -// Check whether it is possible to configure server-tag -TEST_F(Dhcp6ParserTest, queueControlInvalid) { +// Check that we catch invalid dhcp-queue-control content +TEST_F(Dhcp6ParserTest, dhcpQueueControlInvalid) { struct Scenario { std::string description_; std::string json_; @@ -6980,14 +7005,14 @@ TEST_F(Dhcp6ParserTest, queueControlInvalid) { "not a map", "{ " + genIfaceConfig() + ", \n" + " \"subnet6\": [ ], \n" - " \"queue-control\": 75 \n" + " \"dhcp-queue-control\": 75 \n" "} \n" }, { "queue type missing", "{ " + genIfaceConfig() + ", \n" + " \"subnet6\": [ ], \n" - " \"queue-control\": { \n" + " \"dhcp-queue-control\": { \n" " \"capacity\": 100 \n" " } \n" "} \n" @@ -6998,9 +7023,9 @@ TEST_F(Dhcp6ParserTest, queueControlInvalid) { // fail as expected. Note, we use parseDHCP6() directly // as all of the errors above are enforced by the grammar. for (auto scenario : scenarios) { - SCOPED_TRACE((scenario).description_); + SCOPED_TRACE(scenario.description_); { - EXPECT_THROW(parseDHCP6((scenario).json_), Dhcp6ParseError); + EXPECT_THROW(parseDHCP6(scenario.json_), Dhcp6ParseError); } } } diff --git a/src/lib/dhcp/Makefile.am b/src/lib/dhcp/Makefile.am index 281bcda483..1b12d07fc8 100644 --- a/src/lib/dhcp/Makefile.am +++ b/src/lib/dhcp/Makefile.am @@ -125,10 +125,10 @@ libkea_dhcp___include_HEADERS = \ option_string.h \ option_vendor.h \ option_vendor_class.h \ - packet_queue.h \ - packet_queue_mgr.h \ - packet_queue_mgr4.h \ - packet_queue_mgr6.h \ + packet_queue.h \ + packet_queue_mgr.h \ + packet_queue_mgr4.h \ + packet_queue_mgr6.h \ pkt.h \ pkt4.h \ pkt4o6.h \ diff --git a/src/lib/dhcp/iface_mgr.cc b/src/lib/dhcp/iface_mgr.cc index 896a034e7b..a349e1d01b 100644 --- a/src/lib/dhcp/iface_mgr.cc +++ b/src/lib/dhcp/iface_mgr.cc @@ -674,7 +674,7 @@ IfaceMgr::openSockets6(const uint16_t port, void IfaceMgr::startDHCPReceiver(const uint16_t family) { if (receiver_thread_) { - isc_throw(Unexpected, "a receiver thread already exits"); + isc_throw(InvalidOperation, "a receiver thread already exists"); } switch (family) { @@ -970,7 +970,7 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ } } - // add watch sockets. + // Add receiver thread watch and error sockets. FD_SET(receive_watch_.getSelectFd(), &sockets); if (maxfd < receive_watch_.getSelectFd()) { maxfd = receive_watch_.getSelectFd(); @@ -980,6 +980,12 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ maxfd = error_watch_.getSelectFd(); } + // Set timeout for our next select() call. If there are + // no DHCP packets to read, then we'll wait for a finite + // amount of time for an IO event. Otherwise, we'll + // poll (timeout = 0 secs). We need to poll, even if + // DHCP packets are waiting so we don't starve external + // sockets under heavy DHCP load. struct timeval select_timeout; if (getPacketQueue4()->empty()) { select_timeout.tv_sec = timeout_sec; @@ -996,8 +1002,7 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ if ((result == 0) && getPacketQueue4()->empty()) { // nothing received and timeout has been reached - return (Pkt4Ptr()); // NULL - + return (Pkt4Ptr()); } else if (result < 0) { // In most cases we would like to know whether select() returned // an error because of a signal being received or for some other @@ -1013,41 +1018,43 @@ Pkt4Ptr IfaceMgr::receive4(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ } } - // Check errors. - if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) { - string msg = receiver_error_; - error_watch_.clearReady(); - isc_throw(SocketReadError, msg); - } - - // Let's find out which socket has the data - BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { - if (!FD_ISSET(s.socket_, &sockets)) { - continue; + // We only check external sockets if select detected an event. + if (result > 0) { + // Check for receiver thread read errors. + if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) { + string msg = receiver_error_; + error_watch_.clearReady(); + isc_throw(SocketReadError, msg); } - // something received over external socket + // Let's find out which external socket has the data + BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { + if (!FD_ISSET(s.socket_, &sockets)) { + continue; + } - // Calling the external socket's callback provides its service - // layer access without integrating any specific features - // in IfaceMgr - if (s.callback_) { - s.callback_(); - } + // something received over external socket - return (Pkt4Ptr()); - } + // Calling the external socket's callback provides its service + // layer access without integrating any specific features + // in IfaceMgr + if (s.callback_) { + s.callback_(); + } - // Protected packet queue access. - { - Mutex::Locker lock(receiver_lock_); - Pkt4Ptr pkt = getPacketQueue4()->dequeuePacket(); - if (!pkt) { - receive_watch_.clearReady(); + return (Pkt4Ptr()); } + } - return (pkt); + // If we're here it should only be because there are DHCP packets waiting. + // Protected packet queue access. + Mutex::Locker lock(receiver_lock_); + Pkt4Ptr pkt = getPacketQueue4()->dequeuePacket(); + if (!pkt) { + receive_watch_.clearReady(); } + + return (pkt); } Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ ) { @@ -1073,7 +1080,7 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ } } - // add watch sockets. + // Add receiver thread watch and error sockets. FD_SET(receive_watch_.getSelectFd(), &sockets); if (maxfd < receive_watch_.getSelectFd()) { maxfd = receive_watch_.getSelectFd(); @@ -1083,6 +1090,12 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ maxfd = error_watch_.getSelectFd(); } + // Set timeout for our next select() call. If there are + // no DHCP packets to read, then we'll wait for a finite + // amount of time for an IO event. Otherwise, we'll + // poll (timeout = 0 secs). We need to poll, even if + // DHCP packets are waiting so we don't starve external + // sockets under heavy DHCP load. struct timeval select_timeout; if (getPacketQueue6()->empty()) { select_timeout.tv_sec = timeout_sec; @@ -1099,8 +1112,7 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ if ((result == 0) && getPacketQueue6()->empty()) { // nothing received and timeout has been reached - return (Pkt6Ptr()); // NULL - + return (Pkt6Ptr()); } else if (result < 0) { // In most cases we would like to know whether select() returned // an error because of a signal being received or for some other @@ -1116,41 +1128,43 @@ Pkt6Ptr IfaceMgr::receive6(uint32_t timeout_sec, uint32_t timeout_usec /* = 0 */ } } - // Check errors. - if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) { - string msg = receiver_error_; - error_watch_.clearReady(); - isc_throw(SocketReadError, msg); - } - - // Let's find out which socket has the data - BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { - if (!FD_ISSET(s.socket_, &sockets)) { - continue; + // We only check external sockets if select detected an event. + if (result > 0) { + // Check for receiver thread read errors. + if (FD_ISSET(error_watch_.getSelectFd(), &sockets)) { + string msg = receiver_error_; + error_watch_.clearReady(); + isc_throw(SocketReadError, msg); } - // something received over external socket + // Let's find out which external socket has the data + BOOST_FOREACH(SocketCallbackInfo s, callbacks_) { + if (!FD_ISSET(s.socket_, &sockets)) { + continue; + } - // Calling the external socket's callback provides its service - // layer access without integrating any specific features - // in IfaceMgr - if (s.callback_) { - s.callback_(); - } + // something received over external socket - return (Pkt6Ptr()); - } + // Calling the external socket's callback provides its service + // layer access without integrating any specific features + // in IfaceMgr + if (s.callback_) { + s.callback_(); + } - // Protected DHCP packet queue access. - { - Mutex::Locker lock(receiver_lock_); - Pkt6Ptr pkt = getPacketQueue6()->dequeuePacket(); - if (!pkt) { - receive_watch_.clearReady(); + return (Pkt6Ptr()); } + } - return (pkt); + // If we're here it should only be because there are DHCP packets waiting. + // Protected packet queue access. + Mutex::Locker lock(receiver_lock_); + Pkt6Ptr pkt = getPacketQueue6()->dequeuePacket(); + if (!pkt) { + receive_watch_.clearReady(); } + + return (pkt); } void IfaceMgr::receiveDHCP4Packets() { @@ -1194,7 +1208,7 @@ void IfaceMgr::receiveDHCP4Packets() { // zero out the errno to be safe. errno = 0; - // Note we wait until something happen. + // Select with null timeouts to wait indefinetly an event int result = select(maxfd + 1, &rd_set, 0, 0, 0); // Re-check the watch socket. diff --git a/src/lib/dhcp/iface_mgr.h b/src/lib/dhcp/iface_mgr.h index c5648589a9..9a3ffdd568 100644 --- a/src/lib/dhcp/iface_mgr.h +++ b/src/lib/dhcp/iface_mgr.h @@ -1060,9 +1060,10 @@ public: /// /// @throw Unexpected if the thread already exists. void startDHCPReceiver(const uint16_t family); -/// @brief Stops the DHCP packet receiver. + + /// @brief Stops the DHCP packet receiver. /// - /// Stops the receiver and delete the dedicated thread. + /// Stops the receiver and deletes the dedicated thread. void stopDHCPReceiver(); // don't use private, we need derived classes in tests @@ -1222,7 +1223,6 @@ private: /// marks the "receive" watch socket ready. If an error occurs during /// the read, the "error" watch socket is marked ready. /// - /// @param iface interface /// @param socket_info structure holding socket information void receiveDHCP6Packet(const SocketInfo& socket_info); diff --git a/src/lib/dhcp/packet_queue.h b/src/lib/dhcp/packet_queue.h index 997efeefe2..aa427aa0c1 100644 --- a/src/lib/dhcp/packet_queue.h +++ b/src/lib/dhcp/packet_queue.h @@ -51,7 +51,7 @@ public: /// Typically this is assigned by the factory that creates the /// queue. It is the logical name used to register queue /// implementations. - PacketQueue(const std::string& queue_type) + explicit PacketQueue(const std::string& queue_type) : queue_type_(queue_type) {} /// Virtual destructor @@ -59,18 +59,18 @@ public: /// @brief Adds a packet to the queue /// - /// Calls @c dropPacket to determine if the packet should be queued + /// Calls @c shouldDropPacket to determine if the packet should be queued /// or dropped. If it should be queued it is added to the end of the - /// specified by the "to" parameter. + /// queue specified by the "to" parameter. /// /// @param packet packet to enqueue - /// @param source socket the packet came from - this can be + /// @param source socket the packet came from /// @param to end of the queue from which to remove packet(s). /// Defaults to BACK. /// void enqueuePacket(PacketTypePtr packet, const SocketInfo& source, const QueueEnd& to=QueueEnd::BACK) { - if (!dropPacket(packet, source)) { + if (!shouldDropPacket(packet, source)) { pushPacket(packet, to); } } @@ -94,7 +94,7 @@ public: /// @brief Determines if a packet should be discarded. /// - /// This function is called at the beginning of @enqueuePacket and + /// This function is called at the beginning of @c enqueuePacket and /// provides an opportunity to examine the packet and its source /// and decide whether it should be dropped or added to the queue. /// Derivations are expected to provide implementations based on @@ -107,23 +107,26 @@ public: /// /// @return true if the packet should be dropped, false if it should be /// kept. - virtual bool dropPacket(PacketTypePtr /* packet */, + virtual bool shouldDropPacket(PacketTypePtr /* packet */, const SocketInfo& /* source */) { return (false); } - /// Discards packets from one end of the queue. + /// @brief Discards packets from one end of the queue. /// - /// This function is called at the beginning of @c dequeuPacket and + /// This function is called at the beginning of @c dequeuePacket and /// provides an opportunity to examine and discard packets from /// the queue prior to dequeuing the next packet to be /// processed. Derivations are expected to provide implementations /// based on their own requirements. The default implemenation is to - /// to simply returns without skipping any packets. + /// to simply return without skipping any packets. /// /// @param from end of the queue from which packets should discarded /// This is passed in from @c dequeuePackets. /// + /// @param from specifies the end of the queue from which packets + /// should be discarded. + /// /// @return The number of packets discarded. virtual int eatPackets(const QueueEnd& /* from */) { return (0); @@ -132,12 +135,19 @@ public: /// @brief Pushes a packet onto the queue /// /// Adds a packet onto the end of queue specified. + /// + /// @param packet packet to add to the queue + /// @param to specifies the end of the queue to which the packet + /// should be added. virtual void pushPacket(PacketTypePtr& packet, const QueueEnd& to=QueueEnd::BACK) = 0; /// @brief Pops a packet from the queue /// /// Removes a packet from the end of the queue specified and returns it. /// + /// @param from specifies the end of the queue from which the packet + /// should be taken. + /// /// @return A pointer to dequeued packet, or an empty pointer /// if the queue is empty. virtual PacketTypePtr popPacket(const QueueEnd& from=QueueEnd::FRONT) = 0; @@ -147,6 +157,8 @@ public: /// Returns a pointer the packet at the specified end of the /// queue without dequeuing it. /// + /// @param from specifies which end of the queue to examine. + /// /// @return A pointer to packet, or an empty pointer if the /// queue is empty. virtual const PacketTypePtr peek(const QueueEnd& from=QueueEnd::FRONT) const = 0; @@ -161,7 +173,8 @@ public: /// @brief Discards all packets currently in the buffer. virtual void clear() = 0; - /// @brief Fetches operational information about the current state of the queue + /// @brief Fetches operational information about the current state of + /// the queue /// /// Creates and returns an ElementPtr containing a single entry, /// "queue-type". Derivations are expected to call this method first @@ -170,7 +183,7 @@ public: /// for broad latitude. /// /// @return an ElementPtr containing elements for values of interest - virtual data::ElementPtr getInfo() { + virtual data::ElementPtr getInfo() const { data::ElementPtr info = data::Element::createMap(); info->set("queue-type", data::Element::create(queue_type_)); return(info); @@ -181,7 +194,7 @@ public: /// This method calls @c getInfo() and then converts that into JSON text. /// /// @return string of JSON text - virtual std::string getInfoStr() { + virtual std::string getInfoStr() const { data::ElementPtr info = getInfo(); std::ostringstream os; info->toJSON(os); @@ -194,7 +207,7 @@ public: }; private: - /// @brief Logcial name of the this queue's implementation type. + /// @brief Logical name of the this queue's implementation type. std::string queue_type_; }; @@ -214,10 +227,13 @@ typedef boost::shared_ptr<PacketQueue<Pkt6Ptr>> PacketQueue6Ptr; template<typename PacketTypePtr> class PacketQueueRing : public PacketQueue<PacketTypePtr> { public: + /// @brief Minimum queue capacity permitted. Below five is pretty much + /// nonsensical. static const size_t MIN_RING_CAPACITY = 5; /// @brief Constructor /// + /// @param queue_type logical name of the queue type /// @param queue_capacity maximum number of packets the queue can hold PacketQueueRing(const std::string& queue_type, size_t capacity) : PacketQueue<PacketTypePtr>(queue_type) { @@ -230,6 +246,10 @@ public: /// @brief Pushes a packet onto the queue /// /// Adds a packet onto the end of queue specified. + /// + /// @param packet packet to add to the queue + /// @param to specifies the end of the queue to which the packet + /// should be added. virtual void pushPacket(PacketTypePtr& packet, const QueueEnd& to=QueueEnd::BACK) { if (to == QueueEnd::BACK) { queue_.push_back(packet); @@ -242,6 +262,9 @@ public: /// /// Removes a packet from the end of the queue specified and returns it. /// + /// @param from specifies the end of the queue from which the packet + /// should be taken. + /// /// @return A pointer to dequeued packet, or an empty pointer /// if the queue is empty. virtual PacketTypePtr popPacket(const QueueEnd& from = QueueEnd::FRONT) { @@ -267,6 +290,8 @@ public: /// Returns a pointer the packet at the specified end of the /// queue without dequeuing it. /// + /// @param from specifies which end of the queue to examine. + /// /// @return A pointer to packet, or an empty pointer if the /// queue is empty. virtual const PacketTypePtr peek(const QueueEnd& from=QueueEnd::FRONT) const { @@ -316,7 +341,7 @@ public: } /// @brief Fetches pertinent information - virtual data::ElementPtr getInfo() { + virtual data::ElementPtr getInfo() const { data::ElementPtr info = PacketQueue<PacketTypePtr>::getInfo(); info->set("capacity", data::Element::create(static_cast<int64_t>(getCapacity()))); info->set("size", data::Element::create(static_cast<int64_t>(getSize()))); diff --git a/src/lib/dhcp/packet_queue_mgr.h b/src/lib/dhcp/packet_queue_mgr.h index 02d7d917a9..e34bf261e5 100644 --- a/src/lib/dhcp/packet_queue_mgr.h +++ b/src/lib/dhcp/packet_queue_mgr.h @@ -68,7 +68,7 @@ public: /// @return true if the queue type has been successfully registered, false /// if the type already exists. bool registerPacketQueueFactory(const std::string& queue_type, - const Factory& factory) { + const Factory& factory) { // Check if this backend has been already registered. if (factories_.count(queue_type)) { return (false); diff --git a/src/lib/dhcp/packet_queue_mgr4.cc b/src/lib/dhcp/packet_queue_mgr4.cc index b8d91fc865..a982195b8e 100644 --- a/src/lib/dhcp/packet_queue_mgr4.cc +++ b/src/lib/dhcp/packet_queue_mgr4.cc @@ -28,7 +28,7 @@ PacketQueueMgr4::PacketQueueMgr4() { return (queue); }); - // @todo default comes from ? + /// @todo default comes from ? data::ElementPtr parameters = data::Element::createMap(); parameters->set("queue-type", data::Element::create("kea-ring4")); parameters->set("capacity", data::Element::create(static_cast<long int>(500))); @@ -48,7 +48,7 @@ PacketQueueMgr4::create() { void PacketQueueMgr4::destroy() { - getPacketQueueMgr4Ptr().reset(new PacketQueueMgr4()); + getPacketQueueMgr4Ptr().reset(); } PacketQueueMgr4& diff --git a/src/lib/dhcp/packet_queue_mgr6.cc b/src/lib/dhcp/packet_queue_mgr6.cc index ccbffa42cf..77767ff162 100644 --- a/src/lib/dhcp/packet_queue_mgr6.cc +++ b/src/lib/dhcp/packet_queue_mgr6.cc @@ -48,7 +48,7 @@ PacketQueueMgr6::create() { void PacketQueueMgr6::destroy() { - getPacketQueueMgr6Ptr().reset(new PacketQueueMgr6()); + getPacketQueueMgr6Ptr().reset(); } PacketQueueMgr6& diff --git a/src/lib/dhcp/socket_info.h b/src/lib/dhcp/socket_info.h index 7914a4e317..a2ca0563fc 100644 --- a/src/lib/dhcp/socket_info.h +++ b/src/lib/dhcp/socket_info.h @@ -8,6 +8,8 @@ #define DHCP_SOCKET_INFO_H #include <asiolink/io_address.h> +#include <cstdint> + namespace isc { diff --git a/src/lib/dhcp/tests/packet_queue4_unittest.cc b/src/lib/dhcp/tests/packet_queue4_unittest.cc index e0888e2450..1d72b4cbd8 100644 --- a/src/lib/dhcp/tests/packet_queue4_unittest.cc +++ b/src/lib/dhcp/tests/packet_queue4_unittest.cc @@ -19,6 +19,13 @@ using namespace isc::dhcp::test; namespace { +/// @brief DHCPv4 queue with implements drop and eat logic +/// +/// This class derives from the default DHCPv4 ring queue +/// and provies implementations for shouldDropPacket() and +/// eatPackets(). This permits a full exercising of the +/// PacketQueue interface as well as the basic v4 ring queue +/// mechanics. class TestQueue4 : public PacketQueueRing4 { public: /// @brief Constructor @@ -40,7 +47,7 @@ public: /// @param source the socket the packet came from /// /// @return True if the packet should be dropped. - virtual bool dropPacket(Pkt4Ptr packet, + virtual bool shouldDropPacket(Pkt4Ptr packet, const SocketInfo& source) { if (drop_enabled_) { return ((packet->getTransid() % 2 == 0) || @@ -70,10 +77,6 @@ public: return (eaten); } - virtual void useDefaults() { - setCapacity(411); - } - bool drop_enabled_; int eat_count_; }; @@ -215,7 +218,7 @@ TEST(TestQueue4, enqueueDequeueTest) { // Verifies enqueuing operations when drop logic is enabled. // This accesses it's queue instance as a TestQueue4, rather than // a PacketQueue4Ptr, to provide access to TestQueue4 specifics. -TEST(TestQueue4, dropPacketTest) { +TEST(TestQueue4, shouldDropPacketTest) { TestQueue4 q4(100); EXPECT_TRUE(q4.empty()); ASSERT_FALSE(q4.drop_enabled_); @@ -225,12 +228,12 @@ TEST(TestQueue4, dropPacketTest) { SocketInfo sockOdd(isc::asiolink::IOAddress("127.0.0.1"), 777, 11); // Drop is not enabled. - // We should be able to enqueu a packet with even numbered values. + // We should be able to enqueue a packet with even numbered values. Pkt4Ptr pkt(new Pkt4(DHCPDISCOVER, 1002)); ASSERT_NO_THROW(q4.enqueuePacket(pkt, sockEven)); EXPECT_EQ(1, q4.getSize()); - // We should be able to enqueu a packet with odd numbered values. + // We should be able to enqueue a packet with odd numbered values. pkt.reset(new Pkt4(DHCPDISCOVER, 1003)); ASSERT_NO_THROW(q4.enqueuePacket(pkt, sockOdd)); EXPECT_EQ(2, q4.getSize()); diff --git a/src/lib/dhcp/tests/packet_queue6_unittest.cc b/src/lib/dhcp/tests/packet_queue6_unittest.cc index d57c1ace55..47ae38cc7c 100644 --- a/src/lib/dhcp/tests/packet_queue6_unittest.cc +++ b/src/lib/dhcp/tests/packet_queue6_unittest.cc @@ -20,6 +20,13 @@ using namespace isc::dhcp::test; namespace { +/// @brief DHCPv6 queue with implements drop and eat logic +/// +/// This class derives from the default DHCPv6 ring queue +/// and provies implementations for shouldDropPacket() and +/// eatPackets(). This permits a full exercising of the +/// PacketQueue interface as well as the basic v6 ring queue +/// mechanics. class TestQueue6 : public PacketQueueRing6 { public: /// @brief Constructor @@ -41,7 +48,7 @@ public: /// @param source the socket the packet came from /// /// @return True if the packet should be dropped. - virtual bool dropPacket(Pkt6Ptr packet, + virtual bool shouldDropPacket(Pkt6Ptr packet, const SocketInfo& source) { if (drop_enabled_) { return ((packet->getTransid() % 2 == 0) || @@ -71,10 +78,6 @@ public: return (eaten); } - virtual void useDefaults() { - setCapacity(411); - } - bool drop_enabled_; int eat_count_; }; @@ -216,7 +219,7 @@ TEST(TestQueue6, enqueueDequeueTest) { // Verifies enqueuing operations when drop logic is enabled. // This accesses it's queue instance as a TestQueue6, rather than // a PacketQueue6Ptr, to provide access to TestQueue6 specifics. -TEST(TestQueue6, dropPacketTest) { +TEST(TestQueue6, shouldDropPacketTest) { TestQueue6 q6(100); EXPECT_TRUE(q6.empty()); ASSERT_FALSE(q6.drop_enabled_); @@ -226,12 +229,12 @@ TEST(TestQueue6, dropPacketTest) { SocketInfo sockOdd(isc::asiolink::IOAddress("127.0.0.1"), 777, 11); // Drop is not enabled. - // We should be able to enqueu a packet with even numbered values. + // We should be able to enqueue a packet with even numbered values. Pkt6Ptr pkt(new Pkt6(DHCPV6_SOLICIT, 1002)); ASSERT_NO_THROW(q6.enqueuePacket(pkt, sockEven)); EXPECT_EQ(1, q6.getSize()); - // We should be able to enqueu a packet with odd numbered values. + // We should be able to enqueue a packet with odd numbered values. pkt.reset(new Pkt6(DHCPV6_SOLICIT, 1003)); ASSERT_NO_THROW(q6.enqueuePacket(pkt, sockOdd)); EXPECT_EQ(2, q6.getSize()); diff --git a/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc b/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc index da26986ffa..8e3bbeaec3 100644 --- a/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc +++ b/src/lib/dhcp/tests/packet_queue_mgr4_unittest.cc @@ -17,7 +17,11 @@ using namespace isc; using namespace isc::dhcp; using namespace isc::dhcp::test; -data::ElementPtr +/// @brief Convenience function for construction a dhcp-queue-control element map +/// +/// @param queue_type logical name of the queue implemenation type +/// @param capacity maximum queue capacity +data::ElementPtr isc::dhcp::test::makeQueueConfig(const std::string& queue_type, size_t capacity) { data::ElementPtr config = data::Element::createMap(); config->set("queue-type", data::Element::create(queue_type)); @@ -27,27 +31,38 @@ isc::dhcp::test::makeQueueConfig(const std::string& queue_type, size_t capacity) namespace { +/// @brief Test fixture for exercising the DHCPv4 Packet Queue Manager (PQM) class PacketQueueMgr4Test : public ::testing::Test { public: + /// @brief Constructor + /// + /// Note that it instantiates the PQM singleton. PacketQueueMgr4Test(){ PacketQueueMgr4::create(); } - ~PacketQueueMgr4Test(){ + /// @brief Destructor + /// + /// It destroys the PQM singleton. + virtual ~PacketQueueMgr4Test(){ PacketQueueMgr4::destroy(); } - /// @brief Registers a queue type factory + /// @brief Registers a queue type factory + /// + /// @param queue_type logical name of the queue implementation + /// + /// @return true if the registration succeeded, false otherwise bool addCustomQueueType(const std::string& queue_type) { bool did_it = - mgr().registerPacketQueueFactory(queue_type, + mgr().registerPacketQueueFactory(queue_type, [](data::ConstElementPtr parameters) -> PacketQueue4Ptr { std::string queue_type ; try { queue_type = data::SimpleParser::getString(parameters, "queue-type"); } catch (std::exception& ex) { - isc_throw(InvalidQueueParameter, + isc_throw(InvalidQueueParameter, "queue-type missing or invalid: " << ex.what()); } @@ -55,26 +70,33 @@ public: try { capacity = data::SimpleParser::getInteger(parameters, "capacity"); } catch (const std::exception& ex) { - isc_throw(InvalidQueueParameter, + isc_throw(InvalidQueueParameter, "'capacity' missing or invalid: " << ex.what()); } return (PacketQueue4Ptr(new PacketQueueRing4(queue_type, capacity))); }); - return did_it; + return did_it; } + /// @brief Fetches a pointer to the PQM singleton PacketQueueMgr4& mgr() { return (PacketQueueMgr4::instance()); }; + /// @brief Tests the current packet queue info against expected content + /// + /// @param exp_json JSON text describing the expected packet queue info + /// contents void checkMyInfo(const std::string& exp_json) { checkInfo((mgr().getPacketQueue()), exp_json); } }; +// Verifies that DHCPv4 PQM provides a default queue factory +// and packet queue. TEST_F(PacketQueueMgr4Test, defaultQueue) { // Verify that we have a default queue and its info is correct. @@ -87,12 +109,13 @@ TEST_F(PacketQueueMgr4Test, defaultQueue) { checkMyInfo("{ \"capacity\": 2000, \"queue-type\": \"kea-ring4\", \"size\": 0 }"); // We should be able to recreate the manager. - ASSERT_NO_THROW(PacketQueueMgr4::create()); + ASSERT_NO_THROW(PacketQueueMgr4::create()); // And be back to having the default queue. checkMyInfo("{ \"capacity\": 500, \"queue-type\": \"kea-ring4\", \"size\": 0 }"); } +// Verifies that PQM registry and creation of custome queue implementations. TEST_F(PacketQueueMgr4Test, customQueueType) { // Verify that we cannot create a queue for a non-existant type diff --git a/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc b/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc index 9bb02f8209..ad3ca73db5 100644 --- a/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc +++ b/src/lib/dhcp/tests/packet_queue_mgr6_unittest.cc @@ -19,27 +19,38 @@ using namespace isc::dhcp::test; namespace { +/// @brief Test fixture for exercising the DHCPv6 Packet Queue Manager (PQM) class PacketQueueMgr6Test : public ::testing::Test { public: + /// @brief Constructor + /// + /// Note that it instantiates the PQM singleton. PacketQueueMgr6Test(){ PacketQueueMgr6::create(); } - ~PacketQueueMgr6Test(){ + /// @brief Destructor + /// + /// It destroys the PQM singleton. + virtual ~PacketQueueMgr6Test(){ PacketQueueMgr6::destroy(); } - /// @brief Registers a queue type factory + /// @brief Registers a queue type factory + /// + /// @param queue_type logical name of the queue implementation + /// + /// @return true if the registration succeeded, false otherwise bool addCustomQueueType(const std::string& queue_type) { bool did_it = - mgr().registerPacketQueueFactory(queue_type, + mgr().registerPacketQueueFactory(queue_type, [](data::ConstElementPtr parameters) -> PacketQueue6Ptr { std::string queue_type ; try { queue_type = data::SimpleParser::getString(parameters, "queue-type"); } catch (std::exception& ex) { - isc_throw(InvalidQueueParameter, + isc_throw(InvalidQueueParameter, "queue-type missing or invalid: " << ex.what()); } @@ -47,26 +58,33 @@ public: try { capacity = data::SimpleParser::getInteger(parameters, "capacity"); } catch (const std::exception& ex) { - isc_throw(InvalidQueueParameter, + isc_throw(InvalidQueueParameter, "'capacity' missing or invalid: " << ex.what()); } return (PacketQueue6Ptr(new PacketQueueRing6(queue_type, capacity))); }); - return did_it; + return did_it; } + /// @brief Fetches a pointer to the PQM singleton PacketQueueMgr6& mgr() { return (PacketQueueMgr6::instance()); }; + /// @brief Tests the current packet queue info against expected content + /// + /// @param exp_json JSON text describing the expected packet queue info + /// contents void checkMyInfo(const std::string& exp_json) { checkInfo((mgr().getPacketQueue()), exp_json); } }; +// Verifies that DHCPv6 PQM provides a default queue factory +// and packet queue. TEST_F(PacketQueueMgr6Test, defaultQueue) { // Verify that we have a default queue and its info is correct. @@ -79,12 +97,13 @@ TEST_F(PacketQueueMgr6Test, defaultQueue) { checkMyInfo("{ \"capacity\": 2000, \"queue-type\": \"kea-ring6\", \"size\": 0 }"); // We should be able to recreate the manager. - ASSERT_NO_THROW(PacketQueueMgr6::create()); + ASSERT_NO_THROW(PacketQueueMgr6::create()); // And be back to having the default queue. checkMyInfo("{ \"capacity\": 500, \"queue-type\": \"kea-ring6\", \"size\": 0 }"); } +// Verifies that PQM registry and creation of custome queue implementations. TEST_F(PacketQueueMgr6Test, customQueueType) { // Verify that we cannot create a queue for a non-existant type diff --git a/src/lib/dhcpsrv/Makefile.am b/src/lib/dhcpsrv/Makefile.am index fc44707d84..92807d5632 100644 --- a/src/lib/dhcpsrv/Makefile.am +++ b/src/lib/dhcpsrv/Makefile.am @@ -47,8 +47,8 @@ EXTRA_DIST += parsers/simple_parser4.cc EXTRA_DIST += parsers/simple_parser4.h EXTRA_DIST += parsers/simple_parser6.cc EXTRA_DIST += parsers/simple_parser6.h -EXTRA_DIST += parsers/queue_control_parser.cc -EXTRA_DIST += parsers/queue_control_parser.h +EXTRA_DIST += parsers/dhcp_queue_control_parser.cc +EXTRA_DIST += parsers/dhcp_queue_control_parser.h # Devel guide diagrams EXTRA_DIST += images/pgsql_host_data_source.svg @@ -56,7 +56,6 @@ EXTRA_DIST += images/pgsql_host_data_source.svg # Define rule to build logging source files from message file alloc_engine_messages.h alloc_engine_messages.cc dhcpsrv_messages.h \ dhcpsrv_messages.cc hosts_messages.h hosts_messages.cc: s-messages - s-messages: alloc_engine_messages.mes dhcpsrv_messages.mes hosts_messages.mes $(top_builddir)/src/lib/log/compiler/kea-msg-compiler $(top_srcdir)/src/lib/dhcpsrv/alloc_engine_messages.mes touch $@ @@ -182,8 +181,8 @@ libkea_dhcpsrv_la_SOURCES += parsers/ifaces_config_parser.cc libkea_dhcpsrv_la_SOURCES += parsers/ifaces_config_parser.h libkea_dhcpsrv_la_SOURCES += parsers/option_data_parser.cc libkea_dhcpsrv_la_SOURCES += parsers/option_data_parser.h -libkea_dhcpsrv_la_SOURCES += parsers/queue_control_parser.cc -libkea_dhcpsrv_la_SOURCES += parsers/queue_control_parser.h +libkea_dhcpsrv_la_SOURCES += parsers/dhcp_queue_control_parser.cc +libkea_dhcpsrv_la_SOURCES += parsers/dhcp_queue_control_parser.h libkea_dhcpsrv_la_SOURCES += parsers/sanity_checks_parser.cc libkea_dhcpsrv_la_SOURCES += parsers/sanity_checks_parser.h libkea_dhcpsrv_la_SOURCES += parsers/shared_network_parser.cc @@ -342,7 +341,7 @@ libkea_dhcpsrv_parsers_include_HEADERS = \ parsers/host_reservations_list_parser.h \ parsers/ifaces_config_parser.h \ parsers/option_data_parser.h \ - parsers/queue_control_parser.h \ + parsers/dhcp_queue_control_parser.h \ parsers/shared_network_parser.h \ parsers/shared_networks_list_parser.h \ parsers/simple_parser4.h \ diff --git a/src/lib/dhcpsrv/parsers/queue_control_parser.cc b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.cc index eb212256a9..b852683ddf 100644 --- a/src/lib/dhcpsrv/parsers/queue_control_parser.cc +++ b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.cc @@ -8,7 +8,7 @@ #include <cc/data.h> #include <dhcpsrv/cfgmgr.h> #include <dhcpsrv/dhcpsrv_log.h> -#include <dhcpsrv/parsers/queue_control_parser.h> +#include <dhcpsrv/parsers/dhcp_queue_control_parser.h> #include <boost/foreach.hpp> #include <string> #include <sys/types.h> @@ -18,25 +18,25 @@ using namespace isc::data; namespace isc { namespace dhcp { -QueueControlParser::QueueControlParser(const uint16_t family) +DHCPQueueControlParser::DHCPQueueControlParser(const uint16_t family) : family_(family) { // @todo Not sure we need family but just in case. if (family_ != AF_INET && family_ != AF_INET6) { - isc_throw(BadValue, "QueueControlParser - invalid family: " + isc_throw(BadValue, "DHCPQueueControlParser - invalid family: " << family_ << ", must be AF_INET or AF_INET6"); } } data::ElementPtr -QueueControlParser::parse(const isc::data::ConstElementPtr& queue_elem) { +DHCPQueueControlParser::parse(const isc::data::ConstElementPtr& control_elem) { // All we really do here is verify that it is a map that // contains at least queue-type. All other content depends // on the packet queue implementation of that type. - if (queue_elem->getType() != Element::map) { - isc_throw(DhcpConfigError, "queue-control must be a map"); + if (control_elem->getType() != Element::map) { + isc_throw(DhcpConfigError, "dhcp-queue-control must be a map"); } - ConstElementPtr elem = queue_elem->get("queue-type"); + ConstElementPtr elem = control_elem->get("queue-type"); if (!elem) { isc_throw(DhcpConfigError, "queue-type is required"); } else { @@ -46,7 +46,7 @@ QueueControlParser::parse(const isc::data::ConstElementPtr& queue_elem) { } // Return a copy of it. - return (data::copy(queue_elem)); + return (data::copy(control_elem)); } } // end of namespace isc::dhcp diff --git a/src/lib/dhcpsrv/parsers/queue_control_parser.h b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.h index 0150b96eef..5d1fbe8ca0 100644 --- a/src/lib/dhcpsrv/parsers/queue_control_parser.h +++ b/src/lib/dhcpsrv/parsers/dhcp_queue_control_parser.h @@ -4,8 +4,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. -#ifndef QUEUE_CONTROL_PARSER_H -#define QUEUE_CONTROL_PARSER_H +#ifndef DHCP_QUEUE_CONTROL_PARSER_H +#define DHCP_QUEUE_CONTROL_PARSER_H #include <cc/data.h> #include <cc/simple_parser.h> @@ -16,27 +16,27 @@ namespace dhcp { /// @brief Parser for the configuration of DHCP packet queue controls /// -/// This parser parses the "queue-control" parameter which holds the +/// This parser parses the "dhcp-queue-control" parameter which holds the /// the configurable parameters that tailor DHCP packet queue behavior. -/// Currently "queue-control" is treated as a map of arbitrary values, +/// Currently "dhcp-queue-control" is treated as a map of arbitrary values, /// with only one required value, "queue-type". This was done to /// provide latitude for differing queue implementations. /// /// This parser is used in both DHCPv4 and DHCPv6. Derived parsers /// are not needed. -class QueueControlParser : public isc::data::SimpleParser { +class DHCPQueueControlParser : public isc::data::SimpleParser { public: /// @brief Constructor /// /// @param family AF_INET for DHCPv4 and AF_INET6 for DHCPv6. - explicit QueueControlParser(const uint16_t family); + explicit DHCPQueueControlParser(const uint16_t family); - /// @brief Parses content of the "queue-control". + /// @brief Parses content of the "dhcp-queue-control". /// /// @param values pointer to the content of parsed values /// - /// @return A pointer to a newly constructed QueueControl populated + /// @return A pointer to a newly constructed DHCPQueueControl populated /// with the parsed values /// /// @throw DhcpConfigError if any of the values are invalid. @@ -50,4 +50,4 @@ private: } } // end of namespace isc -#endif // QUEUE_CONTROL_PARSER_H +#endif // DHCP_QUEUE_CONTROL_PARSER_H diff --git a/src/lib/dhcpsrv/srv_config.cc b/src/lib/dhcpsrv/srv_config.cc index f629d55663..12a22db902 100644 --- a/src/lib/dhcpsrv/srv_config.cc +++ b/src/lib/dhcpsrv/srv_config.cc @@ -392,10 +392,10 @@ SrvConfig::toElement() const { dhcp->set("config-control", info_elem); } - // Set queue-control (if it exists) - data::ConstElementPtr queue_control = getQueueControlInfo(); - if (queue_control) { - dhcp->set("queue-control", queue_control); + // Set dhcp-packet-control (if it exists) + data::ConstElementPtr dhcp_queue_control = getDHCPQueueControl(); + if (dhcp_queue_control) { + dhcp->set("dhcp-queue-control", dhcp_queue_control); } return (result); diff --git a/src/lib/dhcpsrv/srv_config.h b/src/lib/dhcpsrv/srv_config.h index 123834ff7b..5f3ce4ab62 100644 --- a/src/lib/dhcpsrv/srv_config.h +++ b/src/lib/dhcpsrv/srv_config.h @@ -360,16 +360,16 @@ public: control_socket_ = control_socket; } - /// @brief Returns queue control information - /// @return pointer to the queue control information - const isc::data::ConstElementPtr getQueueControlInfo() const { - return (queue_control_); + /// @brief Returns DHCP queue control information + /// @return pointer to the DHCP queue control information + const isc::data::ConstElementPtr getDHCPQueueControl() const { + return (dhcp_queue_control_); } - /// @brief Sets information about the queue control - /// @param new queue control information - void setQueueControlInfo(const isc::data::ConstElementPtr queue_control) { - queue_control_ = queue_control; + /// @brief Sets information about the dhcp queue control + /// @param new dhcp queue control information + void setDHCPQueueControl(const isc::data::ConstElementPtr dhcp_queue_control) { + dhcp_queue_control_ = dhcp_queue_control; } /// @brief Returns pointer to the dictionary of global client @@ -663,8 +663,8 @@ private: /// @brief Pointer to the control-socket information isc::data::ConstElementPtr control_socket_; - /// @brief Pointer to the queue-control information - isc::data::ConstElementPtr queue_control_; + /// @brief Pointer to the dhcp-queue-control information + isc::data::ConstElementPtr dhcp_queue_control_; /// @brief Pointer to the dictionary of global client class definitions ClientClassDictionaryPtr class_dictionary_; |