]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5020] flex/bison regenerated on docs trac5020fd_base
authorTomek Mrugalski <tomasz@isc.org>
Tue, 3 Jan 2017 16:33:34 +0000 (17:33 +0100)
committerTomek Mrugalski <tomasz@isc.org>
Tue, 3 Jan 2017 16:33:34 +0000 (17:33 +0100)
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh

index a1c08029237ac65ae60299144dcba1d92365cf38..f96e7d90f9cc22fe6ff9efbeff3a4e636ebb8c46 100644 (file)
@@ -467,8 +467,8 @@ static void yynoreturn yy_fatal_error (yyconst char* msg  );
        (yy_c_buf_p) = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 108
-#define YY_END_OF_BUFFER 109
+#define YY_NUM_RULES 110
+#define YY_END_OF_BUFFER 111
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -476,93 +476,94 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[780] =
+static yyconst flex_int16_t yy_accept[785] =
     {   0,
-      101,  101,    0,    0,    0,    0,    0,    0,    0,    0,
-      109,  107,   10,   11,  107,    1,  101,   98,  101,  101,
-      107,  100,   99,  107,  107,  107,  107,  107,   94,   95,
-      107,  107,  107,   96,   97,    5,    5,    5,  107,  107,
-      107,   10,   11,    0,    0,   90,    0,    0,    0,    0,
+      103,  103,    0,    0,    0,    0,    0,    0,    0,    0,
+      111,  109,   10,   11,  109,    1,  103,  100,  103,  103,
+      109,  102,  101,  109,  109,  109,  109,  109,   96,   97,
+      109,  109,  109,   98,   99,    5,    5,    5,  109,  109,
+      109,   10,   11,    0,    0,   92,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    1,  101,  101,
-        0,  100,  101,    3,    2,    6,    0,  101,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,   91,
-        0,    0,    0,    0,    0,   93,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    1,  103,  103,
+        0,  102,  103,    3,    2,    6,    0,  103,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,   93,
+        0,    0,    0,    0,    0,   95,    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,    2,
-        0,    0,    0,    0,    0,    0,    0,    8,    0,    0,
-        0,    0,    0,   92,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   39,    0,    0,    0,    0,
+        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
+        0,    0,    0,    0,   94,    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,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      106,  104,    0,  103,  102,    0,    0,    0,    0,    0,
+        0,    0,    0,  108,  106,    0,  105,  104,    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,   15,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   16,    0,    0,  107,
+      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   44,    0,    0,   35,    0,    0,
+
+        0,    0,   56,    0,    0,    0,    0,    0,   24,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   34,    0,    0,    0,    0,    0,    0,   37,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   54,   74,   21,   22,    0,    0,    0,
+        0,    0,   12,   82,    0,    0,   65,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  105,  102,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
-        0,    0,   33,    0,    0,    0,    0,   54,    0,    0,
-
-        0,    0,    0,   22,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   32,    0,    0,
-        0,    0,    0,    0,   35,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   52,   72,
-       19,   20,    0,    0,    0,    0,    0,   12,   80,    0,
-        0,   63,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   73,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       71,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   34,    0,    0,    0,
-        0,   64,    0,    0,    0,    0,    0,   59,    0,    0,
+        0,   36,    0,    0,    0,    0,   66,    0,    0,    0,
 
-        7,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   61,    0,    0,    7,    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,   47,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   36,    0,
-        0,    0,    0,    0,   44,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   38,    0,    0,    0,    0,    0,   46,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       68,   45,    0,    0,    0,    0,    0,    0,   23,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   70,   47,    0,    0,    0,
+        0,    0,    0,   25,    0,    0,    0,    0,    0,    0,
 
-       29,    0,    0,    0,   81,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   31,    0,    0,    0,   83,
         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,    0,   21,    0,   18,    0,
-        0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
-        0,    0,    0,    0,   56,    0,    0,    0,    0,   79,
+        0,    0,    0,    0,    0,    0,    0,   60,    0,    0,
         0,    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,   69,
-        0,    0,    0,    0,   84,    0,   57,    0,    0,   60,
+        0,   23,    0,   20,    0,    0,    0,    0,    0,    0,
+       51,    0,    0,    0,    0,    0,    0,    0,    0,   58,
+        0,    0,    0,    0,   81,    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,   71,    0,    0,    0,    0,   86,
 
-       48,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   55,   70,    0,   15,    0,   65,    0,    0,    0,
-        0,    0,   30,    0,   67,    0,    0,    0,    0,    0,
+        0,   59,    0,    0,   62,   50,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   57,   72,    0,   17,
+        0,   67,    0,    0,    0,    0,    0,   32,    0,   69,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   87,   31,    0,    0,    0,    0,   26,
-        0,    0,    0,   78,   77,    0,    0,    0,   51,    0,
-        0,    0,    0,   75,    0,    0,    0,    0,    0,    0,
-       38,    0,    0,   24,    0,    0,   40,   27,   61,    0,
-       53,    0,    0,   82,    0,    0,    0,    0,    0,    0,
-
-        0,   73,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   89,   50,   76,    0,    0,   85,
-        0,    0,    0,   17,    0,   16,    0,   46,    0,    0,
-       25,    0,    0,    0,    0,   66,    0,    0,   86,    0,
-       88,   83,    0,   14,    0,    0,    0,   41,    0,    0,
-        0,   13,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   64,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   89,   33,
+        0,    0,    0,    0,   28,    0,    0,    0,   80,   79,
+        0,    0,    0,   53,    0,    0,    0,    0,   77,    0,
+        0,    0,    0,    0,    0,   40,    0,    0,   26,    0,
+        0,   42,   29,   63,    0,   55,    0,    0,   84,    0,
+
+        0,    0,    0,    0,    0,    0,   75,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   91,
+       52,   78,    0,    0,   87,    0,    0,    0,   19,    0,
+       18,    0,   48,    0,    0,   27,    0,    0,    0,    0,
+       68,    0,    0,   88,    0,   90,   85,    0,   14,    0,
+        0,    0,   43,    0,    0,    0,   13,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       28,    0,    0,   74,    0,    0,    0,   43,    0
+        0,    0,    0,    0,    0,   30,    0,    0,   76,    0,
+        0,    0,   45,    0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -607,191 +608,191 @@ static yyconst YY_CHAR yy_meta[61] =
         5,    3,    5,    5,    3,    3,    3,    3,    3,    3
     } ;
 
-static yyconst flex_uint16_t yy_base[792] =
+static yyconst flex_uint16_t yy_base[797] =
     {   0,
         0,    0,   59,   62,   65,    0,   63,   67,   64,   66,
-     1083, 1084,   83, 1079,  125,    0,  174, 1084,  179,  185,
-       80,  192, 1084, 1061,   87,   79,   37,   66, 1084, 1084,
-       83,  156,  164, 1084, 1084, 1084,  110, 1067, 1031,    0,
-     1059,  118, 1074,  190,  218, 1084, 1027, 1032, 1025,  246,
-     1022, 1023,  178,  177,  164,  186,  190,  236, 1035,  207,
-      195,  242,  210,  252,  246, 1018, 1033,    0,  293,  298,
-      309,  315,  320, 1084,    0, 1084,  326,  331,  202,  249,
-      180,  270,  302,  206, 1084, 1030, 1061, 1084,  220, 1084,
-     1012, 1049, 1026, 1021, 1056,    0,  347, 1010, 1011, 1008,
-
-     1014,  245, 1002, 1003,  251, 1017, 1010, 1010,  198, 1002,
-      300,  993, 1039,  275,  996, 1037, 1011, 1008, 1008, 1002,
-      990,  995,  984,  987,  986,  299,  987,  988,  986,  328,
-      302,  997,  998,  996,  980,  984,  980,  989,  982,    0,
-      269,  332,  279,  325,  333,  349,  981, 1084,    0, 1015,
-      975,  982, 1017, 1084,  376,  986,  968,  982,  979,  978,
-      964, 1005,  979,  960,  967,  962,  972,  961,  973,  968,
-      963,  961,  952,  954,  967, 1084,  954,  961,  964,  947,
-      987,  946,  954,  957,  954,  940,  948,  941,  954,  937,
-      936,  941,  942,  946,  940,  934,  946,  941,  940,  924,
-
-      938,  932,  938,  927,  921,  933,  932,  920,  926,  369,
-     1084, 1084,  370, 1084, 1084,  915,    0,  153,  380,  924,
-      404,  909,  955,  911,  916,  957,  911,  920,  954,  917,
-      914,  391,  951,  945,  905,  903,  902,  900,  424,  911,
-      911,  896,  897,  908,  906,  901,  908,  903,  899,  935,
-      929,  890,  884,  890,  880,  891,  369,  895,  884,  884,
-      880,  872,  873,  877,  887,  875,  885,  884,  883,  916,
-      915,  914,  913,  879, 1084, 1084,  878,    0,  868,  861,
-      908,  907,  873,  863,  463,  904,  868,  864,  854, 1084,
-      857,  856, 1084,  858,  855,  304,  853, 1084,  863,  848,
-
-      849,  858,  886, 1084,  845,  859,  883,  887,  853,  847,
-      849,  850,  877,  839,  835,  834,  873, 1084,  831,  834,
-      828,  840,  830,  826, 1084,  871,  865,  827,  835,  834,
-      866,  860,  815,  818,  824,  814,  860,  812, 1084, 1084,
-     1084, 1084,  853,  823,    0,  809,  824, 1084, 1084,  812,
-      817, 1084,  814,  804,  845,  809,  803,  813,  812,  812,
-      801,  833,  802,  793,  795,  806,  798,  803,  795,  802,
-     1084,  789,  798,  802,  786,  797,  782,  776,  781,  794,
-      791,  819,  376,  776,  777,  774, 1084,  788,  779,  813,
-      812, 1084,  769,  785,  809,  766,  807, 1084,  416,  771,
-
-     1084,  776,  767,  762,  807,  766,  800,  267,  799,  762,
-      753,  796,  758,  767,  793,  759,  756,  757,  789,  755,
-      746,  757,  760,  755,  750,  755,  752,  755,  750,  783,
-      782,  741,  735,  746, 1084,  735,  743,  743,  775,  731,
-      721,  725,  724,  732,  722,  361,  716,   68, 1084,  767,
-      728,  720,  730,  763, 1084,  728,  723,  720,  726,  712,
-      727,  722,  711,  708,  714,  708,  717,  720,  703,  708,
-      716,  712,  745,  697,  697,  708,  707,  694,  692,  693,
-     1084, 1084,  699,  687,  396,  691,  689,  733, 1084,  691,
-      731,  692,  677,  687,  689,  683,  692,  724,  693,  670,
-
-     1084,  686,  685,  672, 1084,  713,  684,  686,  715,  671,
-      666,  672,  666,  710,  675,  665,  665,  659,  671,  670,
-      658,  657, 1084,  671,  654,  654,  428,  652,  667,  647,
-      661,  660,  646,  657,  644,  644, 1084,  648, 1084,  647,
-      643,  652,  642,  638,  683, 1084,  641,  637,  646,  649,
-      678,  635,  676,  629, 1084,  642,  673,  672,  628, 1084,
-      623,  624,  621,  633,  661,  635,  634,  614,  631,  661,
-      660, 1084,  621,  326,  658,  626,  626,  613,  609,  623,
-      652,  613,  650,  611,  614,  613,  601,  603,  597, 1084,
-      609,  608,  594,  608, 1084,  609, 1084,  592,  598, 1084,
-
-     1084,  605,  630,  587,  628,  632,  593,  584,  584,  598,
-      597, 1084, 1084,  593, 1084,  593, 1084,  594,  583,  575,
-      621,  620, 1084,  576, 1084,  571,  572,  570,  615,  315,
-      572,  613,  612,  573,  576,  568,  417,  574,  577,  559,
-      605,  566, 1084,  570,  568,  563,  553,  553,  598,  554,
-      550,  595,  589, 1084, 1084,  551,  592,  591,  590, 1084,
-      548,  588,  557, 1084, 1084,  545,  427,  551, 1084,  538,
-      522,  514,  490, 1084,  507,  533,   71,  178,  219,  234,
-     1084,  333,  367, 1084,  364,  372, 1084, 1084, 1084,  388,
-     1084,  399,  407, 1084,  404,  443,  444,  445,  408,  403,
-
-      448, 1084,  444,  404,  409,  453,  419,  455,  423,  457,
-      425,  425,  460,  428, 1084, 1084, 1084,  419,  429, 1084,
-      420,  465,  425, 1084,  430, 1084,  469, 1084,  441,  476,
-     1084,  477,  441,  484,  440, 1084,  481,  451, 1084,  488,
-     1084, 1084,  484, 1084,  447,  453,  492, 1084,  455,  468,
-      468, 1084,  468,  469,  470,  460,  460,  465,  470,  463,
-      463,  468,  474,  475,  481,  473,  481,  517,  482,  481,
-     1084,  520,  487, 1084,  477,  477,  524, 1084, 1084,  530,
-      537,  544,  551,  558,  565,  569,  574,  576,  578,  580,
-      582
+     1088, 1089,   83, 1084,  125,    0,  174, 1089,  179,  185,
+       80,  192, 1089, 1066,   87,   79,   37,   66, 1089, 1089,
+       83,  156,  164, 1089, 1089, 1089,  110, 1072, 1036,    0,
+     1064,  118, 1079,  190,  218, 1089, 1032, 1037, 1030,  246,
+     1027, 1028,  178,  177,  164,  186,  190,  236, 1040,  207,
+      195,  242,  210,  252,  246,  166, 1039,    0,  293,  298,
+      309,  315,  320, 1089,    0, 1089,  326,  331,  202,  249,
+      180,  270,  302,  206, 1089, 1036, 1067, 1089,  220, 1089,
+     1018, 1055, 1032, 1027, 1062,    0,  347, 1016, 1017, 1014,
+
+     1020,  245, 1008, 1009,  251, 1023, 1016, 1016,  198, 1008,
+      300,  999, 1045,  275, 1002, 1043, 1017, 1014, 1014, 1008,
+      996, 1001,  990,  993,  992,  299,  993,  994,  255,  328,
+      302, 1004, 1005, 1003,  987,  991,  987,  986,  995,  988,
+        0,  269,  332,  279,  325,  333,  349,  987, 1089,    0,
+     1021,  981,  988, 1023, 1089,  376,  992,  974,  988,  985,
+      984,  970, 1011,  985,  966,  973,  968,  978,  967,  979,
+      974,  969,  967,  958,  960,  973, 1089,  960,  967,  970,
+      953,  993,  952,  960,  963,  960,  946,  954,  947,  960,
+      943,  942,  947,  948,  985,  951,  945,  939,  951,  946,
+
+      945,  929,  943,  937,  943,  932,  926,  938,  937,  970,
+      924,  930,  369, 1089, 1089,  370, 1089, 1089,  919,    0,
+      323,  380,  928,  404,  913,  959,  915,  920,  961,  915,
+      924,  958,  921,  918,  391,  955,  949,  909,  907,  906,
+      904,  424,  915,  915,  900,  901,  912,  910,  905,  912,
+      907,  903,  939,  933,  894,  888,  894,  884,  895,  398,
+      899, 1089,  888,  888,  884,  876,  877,  881,  891,  879,
+      889,  888,  887,  920,  919,  918, 1089,  917,  883, 1089,
+     1089,  882,    0,  872,  865,  912,  911,  877,  867,  463,
+      908,  872,  868,  858, 1089,  861,  860, 1089,  862,  859,
+
+      304,  857, 1089,  867,  852,  853,  862,  890, 1089,  849,
+      863,  887,  891,  857,  851,  853,  854,  881,  843,  839,
+      838,  877, 1089,  835,  838,  832,  844,  834,  830, 1089,
+      875,  869,  831,  839,  838,  870,  864,  819,  822,  828,
+      818,  864,  816, 1089, 1089, 1089, 1089,  857,  827,    0,
+      813,  828, 1089, 1089,  816,  821, 1089,  818,  808,  849,
+      813,  807,  817,  816,  816,  805,  837,  806,  797,  799,
+      810,  802,  807,  799,  806, 1089,  793,  802,  806,  790,
+      801,  786,  780,  785,  798,  795,  823,  376,  780,  781,
+      778, 1089,  792,  783,  817,  816, 1089,  773,  789,  813,
+
+      770,  811, 1089,  416,  775, 1089,  780,  771,  766,  811,
+      770,  804,  288,  803,  766,  757,  800,  762,  771,  797,
+      763,  760,  761,  793,  759,  750,  761,  764,  759,  754,
+      759,  756,  759,  754,  787,  786,  745,  739,  750, 1089,
+      739,  747,  747,  779,  735,  725,  729,  728,  736,  726,
+      364,  720,   68, 1089,  771,  732,  724,  734,  767, 1089,
+      732,  727,  724,  730,  716,  731,  726,  715,  712,  718,
+      712,  721,  724,  707,  712,  720,  716,  749,  701,  701,
+      712,  711,  698,  696,  697, 1089, 1089,  703,  691,  396,
+      695,  693,  737, 1089,  695,  735,  696,  681,  691,  693,
+
+      687,  696,  728,  697,  674, 1089,  690,  689,  676, 1089,
+      717,  688,  690,  719,  675,  670,  676,  670,  714,  679,
+      669,  669,  663,  675,  674,  662,  661, 1089,  675,  658,
+      658,  428,  656,  671,  651,  665,  664,  650,  661,  648,
+      648, 1089,  652, 1089,  651,  647,  656,  646,  642,  687,
+     1089,  645,  641,  650,  653,  682,  639,  680,  633, 1089,
+      646,  677,  676,  632, 1089,  627,  628,  625,  637,  665,
+      639,  638,  618,  635,  665,  664, 1089,  625,  427,  662,
+      630,  630,  617,  613,  627,  656,  617,  654,  615,  618,
+      617,  605,  607,  601, 1089,  613,  612,  598,  612, 1089,
+
+      613, 1089,  596,  602, 1089, 1089,  609,  634,  591,  632,
+      636,  597,  588,  588,  602,  601, 1089, 1089,  597, 1089,
+      597, 1089,  598,  587,  579,  625,  624, 1089,  580, 1089,
+      575,  576,  574,  619,  394,  576,  617,  616,  577,  580,
+      572,  415,  578,  581,  563,  609,  570, 1089,  574,  572,
+      567,  557,  557,  602,  558,  554,  599,  593, 1089, 1089,
+      555,  596,  595,  594, 1089,  552,  592,  561, 1089, 1089,
+      549,  441,  555, 1089,  528,  519,  500,  493, 1089,  505,
+      117,  145,  223,  230,  297, 1089,  333,  383, 1089,  380,
+      385, 1089, 1089, 1089,  399, 1089,  402,  411, 1089,  409,
+
+      448,  450,  451,  414,  409,  454, 1089,  450,  410,  414,
+      458,  424,  460,  428,  462,  430,  430,  465,  434, 1089,
+     1089, 1089,  425,  435, 1089,  431,  476,  435, 1089,  445,
+     1089,  484, 1089,  451,  486, 1089,  487,  446,  489,  445,
+     1089,  486,  456, 1089,  499, 1089, 1089,  495, 1089,  458,
+      464,  503, 1089,  460,  473,  473, 1089,  473,  474,  475,
+      465,  465,  470,  475,  468,  468,  473,  479,  480,  486,
+      478,  486,  522,  487,  486, 1089,  525,  492, 1089,  482,
+      482,  529, 1089, 1089,  535,  542,  549,  556,  563,  570,
+      574,  579,  581,  583,  585,  587
 
     } ;
 
-static yyconst flex_int16_t yy_def[792] =
+static yyconst flex_int16_t yy_def[797] =
     {   0,
-      779,    1,  780,  780,    1,    5,    5,    5,    5,    5,
-      779,  779,  779,  779,  779,  781,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  782,
-      779,  779,  779,  783,   15,  779,   45,   45,   45,  784,
+      784,    1,  785,  785,    1,    5,    5,    5,    5,    5,
+      784,  784,  784,  784,  784,  786,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  787,
+      784,  784,  784,  788,   15,  784,   45,   45,   45,  789,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,  781,  779,  779,
-      779,  779,  779,  779,  785,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  782,  779,  783,  779,
-      786,   45,   45,   45,  787,   45,  784,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  786,  784,  784,
+      784,  784,  784,  784,  790,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  787,  784,  788,  784,
+      791,   45,   45,   45,  792,   45,  789,   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,  785,
-      779,  779,  779,  779,  779,  779,  779,  779,  788,   45,
-       45,   45,  787,  779,  784,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,  779,   45,   45,   45,   45,
+      790,  784,  784,  784,  784,  784,  784,  784,  784,  793,
+       45,   45,   45,  792,  784,  789,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  784,   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,  779,
-      779,  779,  779,  779,  779,  779,  789,   45,   45,   45,
-      784,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,  784,  784,  784,  784,  784,  784,  784,  794,
+       45,   45,   45,  789,   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,  784,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  784,   45,   45,  784,
+      784,  784,  795,   45,   45,   45,   45,   45,   45,  789,
+       45,   45,   45,   45,  784,   45,   45,  784,   45,   45,
+
+       45,   45,  784,   45,   45,   45,   45,   45,  784,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,  784,   45,   45,   45,   45,   45,   45,  784,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  784,  784,  784,  784,   45,  784,  796,
+       45,   45,  784,  784,   45,   45,  784,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  779,  779,  779,  790,   45,   45,
-       45,   45,   45,   45,  784,   45,   45,   45,   45,  779,
-       45,   45,  779,   45,   45,   45,   45,  779,   45,   45,
-
-       45,   45,   45,  779,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,  779,   45,   45,
-       45,   45,   45,   45,  779,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,  779,  779,
-      779,  779,   45,  779,  791,   45,   45,  779,  779,   45,
-       45,  779,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  784,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      779,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,  779,   45,   45,   45,
-       45,  779,   45,   45,   45,   45,   45,  779,   45,   45,
+       45,  784,   45,   45,   45,   45,  784,   45,   45,   45,
 
-      779,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,  784,   45,   45,  784,   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,  779,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,  779,   45,
-       45,   45,   45,   45,  779,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  784,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  784,   45,   45,   45,   45,   45,  784,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      779,  779,   45,   45,   45,   45,   45,   45,  779,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  784,  784,   45,   45,   45,
+       45,   45,   45,  784,   45,   45,   45,   45,   45,   45,
 
-      779,   45,   45,   45,  779,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  784,   45,   45,   45,  784,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  779,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,  779,   45,  779,   45,
-       45,   45,   45,   45,   45,  779,   45,   45,   45,   45,
-       45,   45,   45,   45,  779,   45,   45,   45,   45,  779,
+       45,   45,   45,   45,   45,   45,   45,  784,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,  779,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,  779,
-       45,   45,   45,   45,  779,   45,  779,   45,   45,  779,
+       45,  784,   45,  784,   45,   45,   45,   45,   45,   45,
+      784,   45,   45,   45,   45,   45,   45,   45,   45,  784,
+       45,   45,   45,   45,  784,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  784,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,  784,   45,   45,   45,   45,  784,
 
-      779,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,  779,  779,   45,  779,   45,  779,   45,   45,   45,
-       45,   45,  779,   45,  779,   45,   45,   45,   45,   45,
+       45,  784,   45,   45,  784,  784,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,  784,  784,   45,  784,
+       45,  784,   45,   45,   45,   45,   45,  784,   45,  784,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,  779,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  779,  779,   45,   45,   45,   45,  779,
-       45,   45,   45,  779,  779,   45,   45,   45,  779,   45,
-       45,   45,   45,  779,   45,   45,   45,   45,   45,   45,
-      779,   45,   45,  779,   45,   45,  779,  779,  779,   45,
-      779,   45,   45,  779,   45,   45,   45,   45,   45,   45,
-
-       45,  779,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  779,  779,  779,   45,   45,  779,
-       45,   45,   45,  779,   45,  779,   45,  779,   45,   45,
-      779,   45,   45,   45,   45,  779,   45,   45,  779,   45,
-      779,  779,   45,  779,   45,   45,   45,  779,   45,   45,
-       45,  779,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  784,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,  784,  784,
+       45,   45,   45,   45,  784,   45,   45,   45,  784,  784,
+       45,   45,   45,  784,   45,   45,   45,   45,  784,   45,
+       45,   45,   45,   45,   45,  784,   45,   45,  784,   45,
+       45,  784,  784,  784,   45,  784,   45,   45,  784,   45,
+
+       45,   45,   45,   45,   45,   45,  784,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  784,
+      784,  784,   45,   45,  784,   45,   45,   45,  784,   45,
+      784,   45,  784,   45,   45,  784,   45,   45,   45,   45,
+      784,   45,   45,  784,   45,  784,  784,   45,  784,   45,
+       45,   45,  784,   45,   45,   45,  784,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      779,   45,   45,  779,   45,   45,   45,  779,    0,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779
+       45,   45,   45,   45,   45,  784,   45,   45,  784,   45,
+       45,   45,  784,    0,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784
 
     } ;
 
-static yyconst flex_uint16_t yy_nxt[1145] =
+static yyconst flex_uint16_t yy_nxt[1150] =
     {   0,
        12,   13,   14,   13,   12,   15,   16,   12,   17,   18,
        19,   20,   21,   22,   22,   22,   23,   24,   12,   12,
@@ -805,123 +806,123 @@ static yyconst flex_uint16_t yy_nxt[1145] =
        80,   12,   75,   81,   12,   77,   12,   77,   12,   79,
 
        78,   78,   78,   79,   12,   12,   12,   12,   39,   12,
-       12,   42,   12,   42,   79,  499,   81,   12,   82,   42,
-      500,   42,  703,   12,   12,   44,   44,   44,   45,   45,
+       12,   42,   12,   42,   79,  504,   81,   12,   82,   42,
+      505,   42,  707,   12,   12,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   47,
        45,   45,   45,   45,   45,   45,   45,   48,   45,   45,
        49,   45,   45,   45,   45,   45,   45,   50,   45,   45,
        51,   52,   53,   54,   55,   45,   45,   56,   57,   45,
        58,   59,   60,   61,   62,   63,   64,   65,   66,   67,
        45,   45,   45,   45,   45,   69,   80,   70,   70,   70,
-       69,   81,   72,   72,   72,   90,  279,   71,   73,   73,
-
-       73,  108,   71,   69,  280,   72,   72,   72,   71,   83,
-      143,  109,  104,   71,   84,   71,  105,  704,   71,  106,
-      110,  100,   91,  101,   71,   90,  102,  141,  114,  103,
-      107,   71,   45,  143,  111,  169,  143,  115,  112,  116,
-       45,  113,  122,   45,  124,  129,  123,  141,  125,  130,
-      170,   96,   91,   45,   45,   45,   45,   45,   45,  146,
-       45,   45,  705,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  706,  142,  117,  118,  126,   45,  119,
-      176,  127,   45,  160,  120,  135,   45,  164,  165,  136,
-      128,  131,  161,   45,  142,  141,   45,  210,   45,   97,
-
-      132,  133,  212,  137,  458,  134,   73,   73,   73,   69,
-      459,   70,   70,   70,  177,  144,   71,   77,  212,   77,
-      210,   71,   78,   78,   78,  661,   69,  142,   72,   72,
-       72,  615,   71,   73,   73,   73,  616,   71,   71,   78,
-       78,   78,  360,   71,   78,   78,   78,  145,  172,  189,
-      190,  173,  200,  210,   71,  361,  201,  211,  211,   71,
-      155,  155,  155,  194,  195,  196,  662,  155,  155,  155,
-      155,  155,  212,  197,  325,  198,  213,  211,  214,  199,
-      707,  435,  155,  155,  155,  155,  155,  155,  215,  221,
-      221,  221,  275,  275,  281,  282,  221,  221,  221,  221,
-
-      221,  296,  283,  496,  497,  297,  708,  709,  275,  276,
-      436,  221,  221,  221,  221,  221,  221,  285,  285,  285,
-      326,  449,  669,  710,  285,  285,  285,  285,  285,  304,
-      450,  533,  694,  572,  305,  534,  711,  695,  573,  285,
-      285,  285,  285,  285,  285,  712,  713,  714,  715,  716,
-      717,  718,  719,  720,  721,  722,  670,  723,  724,  725,
+       69,   81,   72,   72,   72,   90,  708,   71,   73,   73,
+
+       73,  108,   71,   69,  138,   72,   72,   72,   71,   83,
+      144,  109,  104,   71,   84,   71,  105,  139,   71,  106,
+      110,  100,   91,  101,   71,   90,  102,  142,  114,  103,
+      107,   71,   45,  144,  111,  170,  144,  115,  112,  116,
+       45,  113,  122,   45,  124,  129,  123,  142,  125,  130,
+      171,   96,   91,   45,   45,   45,   45,   45,   45,  147,
+       45,   45,  709,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  710,  143,  117,  118,  126,   45,  119,
+      177,  127,   45,  161,  120,  135,   45,  165,  166,  136,
+      128,  131,  162,   45,  143,  142,   45,  213,   45,   97,
+
+      132,  133,  215,  137,  194,  134,   73,   73,   73,   69,
+      195,   70,   70,   70,  178,  145,   71,   77,  215,   77,
+      213,   71,   78,   78,   78,  463,   69,  143,   72,   72,
+       72,  464,   71,   73,   73,   73,  711,   71,   71,   78,
+       78,   78,  365,   71,   78,   78,   78,  146,  173,  190,
+      191,  174,  202,  213,   71,  366,  203,  214,  214,   71,
+      156,  156,  156,  196,  197,  198,  284,  156,  156,  156,
+      156,  156,  215,  199,  285,  200,  216,  214,  217,  201,
+      712,  440,  156,  156,  156,  156,  156,  156,  218,  224,
+      224,  224,  280,  280,  286,  287,  224,  224,  224,  224,
+
+      224,  301,  288,  330,  666,  302,  501,  502,  280,  281,
+      441,  224,  224,  224,  224,  224,  224,  290,  290,  290,
+      674,  454,  713,  714,  290,  290,  290,  290,  290,  309,
+      455,  538,  620,  577,  310,  539,  715,  621,  578,  290,
+      290,  290,  290,  290,  290,  667,  699,  716,  717,  331,
+      718,  700,  719,  720,  675,  721,  722,  723,  724,  725,
       726,  727,  728,  729,  730,  731,  732,  733,  734,  735,
-      736,  306,  737,  738,  739,  307,   45,   45,   45,  574,
+      736,  311,  737,  738,  739,  312,   45,   45,   45,  579,
       740,  741,  742,   45,   45,   45,   45,   45,  743,  744,
       745,  746,  747,  748,  749,  750,  751,  752,   45,   45,
 
        45,   45,   45,   45,  753,  754,  755,  756,  757,  758,
       759,  760,  761,  762,  763,  764,  765,  766,  767,  768,
       769,  770,  771,  772,  773,  774,  775,  776,  777,  778,
-       36,   36,   36,   36,   36,   36,   36,   68,  702,   68,
-       68,   68,   68,   68,   87,  701,   87,  700,   87,   87,
-       87,   89,   89,   89,   89,   89,   89,   89,   95,   95,
-       95,   95,   95,   95,   95,  140,  699,  140,  140,  140,
-      140,  140,   89,   89,  698,   89,  153,  153,  153,  153,
-      153,  217,  217,  278,  278,  345,  345,   89,   89,  697,
-      696,  693,  692,  691,  690,  689,  688,  687,  686,  685,
-
-      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
-      674,  673,  672,  671,  668,  667,  666,  665,  664,  663,
-      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,  626,  625,  624,  623,  622,  621,
-      620,  619,  618,  617,  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,  571,  570,  569,  568,  567,  566,
-      565,  564,  563,  562,  561,  560,  559,  558,  557,  556,
-      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
-      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
-      535,  532,  531,  530,  529,  528,  527,  526,  525,  524,
-      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
-      513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
-      503,  502,  501,  498,  495,  494,  493,  492,  491,  490,
-      489,  488,  487,  486,  485,  484,  483,  482,  481,  480,
-      479,  478,  477,  476,  475,  474,  473,  472,  471,  470,
-
-      469,  468,  467,  466,  465,  464,  463,  462,  461,  460,
-      457,  456,  455,  454,  453,  452,  451,  448,  447,  446,
-      445,  444,  443,  442,  441,  440,  439,  438,  437,  434,
-      433,  432,  431,  430,  429,  428,  427,  426,  425,  424,
-      423,  422,  421,  420,  419,  418,  417,  416,  415,  414,
-      413,  412,  411,  410,  409,  408,  407,  406,  405,  404,
-      403,  402,  401,  400,  399,  398,  397,  396,  395,  394,
-      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  376,  375,  374,
-      373,  372,  371,  370,  369,  368,  367,  366,  365,  364,
-
-      363,  362,  359,  358,  357,  356,  355,  354,  353,  352,
-      351,  350,  349,  348,  347,  346,  344,  343,  342,  341,
-      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
-      330,  329,  328,  327,  324,  323,  322,  321,  320,  319,
-      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
-      308,  303,  302,  301,  300,  299,  298,  295,  294,  293,
-      292,  291,  290,  289,  288,  287,  286,  284,  277,  274,
-      273,  272,  271,  270,  269,  268,  267,  266,  265,  264,
-      263,  262,  261,  260,  259,  258,  257,  256,  255,  254,
-      253,  252,  251,  250,  249,  248,  247,  246,  245,  244,
-
-      243,  242,  241,  240,  239,  238,  237,  236,  235,  234,
-      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
-      223,  222,  154,  220,  219,  218,  216,  209,  208,  207,
-      206,  205,  204,  203,  202,  193,  192,  191,  188,  187,
-      186,  185,  184,  183,  182,  181,  180,  179,  178,  175,
-      174,  171,  168,  167,  166,  163,  162,  159,  158,  157,
-      156,  154,  152,  151,  150,  149,  148,  147,  139,  138,
-      121,   99,   98,   94,   93,   92,   43,   88,   86,   85,
-       76,   43,  779,   11,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779
+      779,  780,  781,  782,  783,   36,   36,   36,   36,   36,
+       36,   36,   68,  706,   68,   68,   68,   68,   68,   87,
+      705,   87,  704,   87,   87,   87,   89,   89,   89,   89,
+       89,   89,   89,   95,   95,   95,   95,   95,   95,   95,
+      141,  703,  141,  141,  141,  141,  141,   89,   89,  702,
+       89,  154,  154,  154,  154,  154,  220,  220,  283,  283,
+      350,  350,   89,   89,  701,  698,  697,  696,  695,  694,
+
+      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+      683,  682,  681,  680,  679,  678,  677,  676,  673,  672,
+      671,  670,  669,  668,  665,  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,
+      629,  628,  627,  626,  625,  624,  623,  622,  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,  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,  547,  546,  545,
+      544,  543,  542,  541,  540,  537,  536,  535,  534,  533,
+      532,  531,  530,  529,  528,  527,  526,  525,  524,  523,
+      522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
+      512,  511,  510,  509,  508,  507,  506,  503,  500,  499,
+      498,  497,  496,  495,  494,  493,  492,  491,  490,  489,
+      488,  487,  486,  485,  484,  483,  482,  481,  480,  479,
+
+      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
+      468,  467,  466,  465,  462,  461,  460,  459,  458,  457,
+      456,  453,  452,  451,  450,  449,  448,  447,  446,  445,
+      444,  443,  442,  439,  438,  437,  436,  435,  434,  433,
+      432,  431,  430,  429,  428,  427,  426,  425,  424,  423,
+      422,  421,  420,  419,  418,  417,  416,  415,  414,  413,
+      412,  411,  410,  409,  408,  407,  406,  405,  404,  403,
+      402,  401,  400,  399,  398,  397,  396,  395,  394,  393,
+      392,  391,  390,  389,  388,  387,  386,  385,  384,  383,
+      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
+
+      372,  371,  370,  369,  368,  367,  364,  363,  362,  361,
+      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
+      339,  338,  337,  336,  335,  334,  333,  332,  329,  328,
+      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
+      317,  316,  315,  314,  313,  308,  307,  306,  305,  304,
+      303,  300,  299,  298,  297,  296,  295,  294,  293,  292,
+      291,  289,  282,  279,  278,  277,  276,  275,  274,  273,
+      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+
+      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
+      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
+      232,  231,  230,  229,  228,  227,  226,  225,  155,  223,
+      222,  221,  219,  212,  211,  210,  209,  208,  207,  206,
+      205,  204,  193,  192,  189,  188,  187,  186,  185,  184,
+      183,  182,  181,  180,  179,  176,  175,  172,  169,  168,
+      167,  164,  163,  160,  159,  158,  157,  155,  153,  152,
+      151,  150,  149,  148,  140,  121,   99,   98,   94,   93,
+       92,   43,   88,   86,   85,   76,   43,  784,   11,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784
     } ;
 
-static yyconst flex_int16_t yy_chk[1145] =
+static yyconst flex_int16_t yy_chk[1150] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -935,120 +936,120 @@ static yyconst flex_int16_t yy_chk[1145] =
        27,    5,   21,   28,    5,   25,    5,   25,    5,   26,
 
        25,   25,   25,   31,    5,    5,    7,    9,    5,   10,
-        8,   37,    5,   37,   26,  448,   28,    5,   31,   42,
-      448,   42,  677,    5,    5,   15,   15,   15,   15,   15,
+        8,   37,    5,   37,   26,  453,   28,    5,   31,   42,
+      453,   42,  681,    5,    5,   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,   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,   15,   15,   17,   32,   17,   17,   17,
-       19,   33,   19,   19,   19,   44,  218,   17,   20,   20,
+       19,   33,   19,   19,   19,   44,  682,   17,   20,   20,
 
-       20,   55,   19,   22,  218,   22,   22,   22,   20,   32,
-       81,   55,   54,   17,   33,   22,   54,  678,   19,   54,
+       20,   55,   19,   22,   66,   22,   22,   22,   20,   32,
+       81,   55,   54,   17,   33,   22,   54,   66,   19,   54,
        55,   53,   44,   53,   20,   89,   53,   79,   57,   53,
        54,   22,   45,   81,   56,  109,   84,   57,   56,   57,
        45,   56,   60,   45,   61,   63,   60,   79,   61,   63,
       109,   50,   89,   45,   45,   45,   45,   45,   50,   84,
-       45,   45,  679,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,  680,   80,   58,   58,   62,   50,   58,
+       45,   45,  683,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,  684,   80,   58,   58,   62,   50,   58,
       114,   62,   50,  102,   58,   65,   50,  105,  105,   65,
-       62,   64,  102,   50,   80,   82,   50,  141,   50,   50,
-
-       64,   64,  143,   65,  408,   64,   69,   69,   69,   70,
-      408,   70,   70,   70,  114,   82,   69,   71,  143,   71,
-      141,   70,   71,   71,   71,  630,   72,   83,   72,   72,
-       72,  574,   69,   73,   73,   73,  574,   70,   72,   77,
-       77,   77,  296,   73,   78,   78,   78,   83,  111,  126,
-      126,  111,  131,  144,   72,  296,  131,  142,  145,   73,
-       97,   97,   97,  130,  130,  130,  630,   97,   97,   97,
-       97,   97,  146,  130,  257,  130,  144,  142,  145,  130,
-      682,  383,   97,   97,   97,   97,   97,   97,  146,  155,
-      155,  155,  210,  213,  219,  219,  155,  155,  155,  155,
-
-      155,  232,  219,  446,  446,  232,  683,  685,  210,  213,
-      383,  155,  155,  155,  155,  155,  155,  221,  221,  221,
-      257,  399,  637,  686,  221,  221,  221,  221,  221,  239,
-      399,  485,  667,  527,  239,  485,  690,  667,  527,  221,
-      221,  221,  221,  221,  221,  692,  693,  695,  696,  697,
-      698,  699,  700,  701,  703,  704,  637,  705,  706,  707,
-      708,  709,  710,  711,  712,  713,  714,  718,  719,  721,
-      722,  239,  723,  725,  727,  239,  285,  285,  285,  527,
-      729,  730,  732,  285,  285,  285,  285,  285,  733,  734,
-      735,  737,  738,  740,  743,  745,  746,  747,  285,  285,
-
-      285,  285,  285,  285,  749,  750,  751,  753,  754,  755,
-      756,  757,  758,  759,  760,  761,  762,  763,  764,  765,
-      766,  767,  768,  769,  770,  772,  773,  775,  776,  777,
-      780,  780,  780,  780,  780,  780,  780,  781,  676,  781,
-      781,  781,  781,  781,  782,  675,  782,  673,  782,  782,
-      782,  783,  783,  783,  783,  783,  783,  783,  784,  784,
-      784,  784,  784,  784,  784,  785,  672,  785,  785,  785,
-      785,  785,  786,  786,  671,  786,  787,  787,  787,  787,
-      787,  788,  788,  789,  789,  790,  790,  791,  791,  670,
-      668,  666,  663,  662,  661,  659,  658,  657,  656,  653,
-
-      652,  651,  650,  649,  648,  647,  646,  645,  644,  642,
-      641,  640,  639,  638,  636,  635,  634,  633,  632,  631,
-      629,  628,  627,  626,  624,  622,  621,  620,  619,  618,
-      616,  614,  611,  610,  609,  608,  607,  606,  605,  604,
-      603,  602,  599,  598,  596,  594,  593,  592,  591,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      578,  577,  576,  575,  573,  571,  570,  569,  568,  567,
-      566,  565,  564,  563,  562,  561,  559,  558,  557,  556,
-      554,  553,  552,  551,  550,  549,  548,  547,  545,  544,
-      543,  542,  541,  540,  538,  536,  535,  534,  533,  532,
-
-      531,  530,  529,  528,  526,  525,  524,  522,  521,  520,
-      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  507,  506,  504,  503,  502,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  488,  487,
-      486,  484,  483,  480,  479,  478,  477,  476,  475,  474,
-      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
-      463,  462,  461,  460,  459,  458,  457,  456,  454,  453,
-      452,  451,  450,  447,  445,  444,  443,  442,  441,  440,
-      439,  438,  437,  436,  434,  433,  432,  431,  430,  429,
-      428,  427,  426,  425,  424,  423,  422,  421,  420,  419,
-
-      418,  417,  416,  415,  414,  413,  412,  411,  410,  409,
-      407,  406,  405,  404,  403,  402,  400,  397,  396,  395,
-      394,  393,  391,  390,  389,  388,  386,  385,  384,  382,
-      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
-      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  358,  357,  356,  355,  354,  353,  351,  350,
-      347,  346,  344,  343,  338,  337,  336,  335,  334,  333,
-      332,  331,  330,  329,  328,  327,  326,  324,  323,  322,
-      321,  320,  319,  317,  316,  315,  314,  313,  312,  311,
-      310,  309,  308,  307,  306,  305,  303,  302,  301,  300,
-
-      299,  297,  295,  294,  292,  291,  289,  288,  287,  286,
-      284,  283,  282,  281,  280,  279,  277,  274,  273,  272,
-      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
-      261,  260,  259,  258,  256,  255,  254,  253,  252,  251,
-      250,  249,  248,  247,  246,  245,  244,  243,  242,  241,
-      240,  238,  237,  236,  235,  234,  233,  231,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  220,  216,  209,
-      208,  207,  206,  205,  204,  203,  202,  201,  200,  199,
-      198,  197,  196,  195,  194,  193,  192,  191,  190,  189,
-      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
-
-      178,  177,  175,  174,  173,  172,  171,  170,  169,  168,
-      167,  166,  165,  164,  163,  162,  161,  160,  159,  158,
-      157,  156,  153,  152,  151,  150,  147,  139,  138,  137,
-      136,  135,  134,  133,  132,  129,  128,  127,  125,  124,
-      123,  122,  121,  120,  119,  118,  117,  116,  115,  113,
-      112,  110,  108,  107,  106,  104,  103,  101,  100,   99,
-       98,   95,   94,   93,   92,   91,   87,   86,   67,   66,
-       59,   52,   51,   49,   48,   47,   43,   41,   39,   38,
-       24,   14,   11,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
-      779,  779,  779,  779
+       62,   64,  102,   50,   80,   82,   50,  142,   50,   50,
+
+       64,   64,  144,   65,  129,   64,   69,   69,   69,   70,
+      129,   70,   70,   70,  114,   82,   69,   71,  144,   71,
+      142,   70,   71,   71,   71,  413,   72,   83,   72,   72,
+       72,  413,   69,   73,   73,   73,  685,   70,   72,   77,
+       77,   77,  301,   73,   78,   78,   78,   83,  111,  126,
+      126,  111,  131,  145,   72,  301,  131,  143,  146,   73,
+       97,   97,   97,  130,  130,  130,  221,   97,   97,   97,
+       97,   97,  147,  130,  221,  130,  145,  143,  146,  130,
+      687,  388,   97,   97,   97,   97,   97,   97,  147,  156,
+      156,  156,  213,  216,  222,  222,  156,  156,  156,  156,
+
+      156,  235,  222,  260,  635,  235,  451,  451,  213,  216,
+      388,  156,  156,  156,  156,  156,  156,  224,  224,  224,
+      642,  404,  688,  690,  224,  224,  224,  224,  224,  242,
+      404,  490,  579,  532,  242,  490,  691,  579,  532,  224,
+      224,  224,  224,  224,  224,  635,  672,  695,  697,  260,
+      698,  672,  700,  701,  642,  702,  703,  704,  705,  706,
+      708,  709,  710,  711,  712,  713,  714,  715,  716,  717,
+      718,  242,  719,  723,  724,  242,  290,  290,  290,  532,
+      726,  727,  728,  290,  290,  290,  290,  290,  730,  732,
+      734,  735,  737,  738,  739,  740,  742,  743,  290,  290,
+
+      290,  290,  290,  290,  745,  748,  750,  751,  752,  754,
+      755,  756,  758,  759,  760,  761,  762,  763,  764,  765,
+      766,  767,  768,  769,  770,  771,  772,  773,  774,  775,
+      777,  778,  780,  781,  782,  785,  785,  785,  785,  785,
+      785,  785,  786,  680,  786,  786,  786,  786,  786,  787,
+      678,  787,  677,  787,  787,  787,  788,  788,  788,  788,
+      788,  788,  788,  789,  789,  789,  789,  789,  789,  789,
+      790,  676,  790,  790,  790,  790,  790,  791,  791,  675,
+      791,  792,  792,  792,  792,  792,  793,  793,  794,  794,
+      795,  795,  796,  796,  673,  671,  668,  667,  666,  664,
+
+      663,  662,  661,  658,  657,  656,  655,  654,  653,  652,
+      651,  650,  649,  647,  646,  645,  644,  643,  641,  640,
+      639,  638,  637,  636,  634,  633,  632,  631,  629,  627,
+      626,  625,  624,  623,  621,  619,  616,  615,  614,  613,
+      612,  611,  610,  609,  608,  607,  604,  603,  601,  599,
+      598,  597,  596,  594,  593,  592,  591,  590,  589,  588,
+      587,  586,  585,  584,  583,  582,  581,  580,  578,  576,
+      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
+      564,  563,  562,  561,  559,  558,  557,  556,  555,  554,
+      553,  552,  550,  549,  548,  547,  546,  545,  543,  541,
+
+      540,  539,  538,  537,  536,  535,  534,  533,  531,  530,
+      529,  527,  526,  525,  524,  523,  522,  521,  520,  519,
+      518,  517,  516,  515,  514,  513,  512,  511,  509,  508,
+      507,  505,  504,  503,  502,  501,  500,  499,  498,  497,
+      496,  495,  493,  492,  491,  489,  488,  485,  484,  483,
+      482,  481,  480,  479,  478,  477,  476,  475,  474,  473,
+      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
+      462,  461,  459,  458,  457,  456,  455,  452,  450,  449,
+      448,  447,  446,  445,  444,  443,  442,  441,  439,  438,
+      437,  436,  435,  434,  433,  432,  431,  430,  429,  428,
+
+      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
+      417,  416,  415,  414,  412,  411,  410,  409,  408,  407,
+      405,  402,  401,  400,  399,  398,  396,  395,  394,  393,
+      391,  390,  389,  387,  386,  385,  384,  383,  382,  381,
+      380,  379,  378,  377,  375,  374,  373,  372,  371,  370,
+      369,  368,  367,  366,  365,  364,  363,  362,  361,  360,
+      359,  358,  356,  355,  352,  351,  349,  348,  343,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      331,  329,  328,  327,  326,  325,  324,  322,  321,  320,
+      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
+
+      308,  307,  306,  305,  304,  302,  300,  299,  297,  296,
+      294,  293,  292,  291,  289,  288,  287,  286,  285,  284,
+      282,  279,  278,  276,  275,  274,  273,  272,  271,  270,
+      269,  268,  267,  266,  265,  264,  263,  261,  259,  258,
+      257,  256,  255,  254,  253,  252,  251,  250,  249,  248,
+      247,  246,  245,  244,  243,  241,  240,  239,  238,  237,
+      236,  234,  233,  232,  231,  230,  229,  228,  227,  226,
+      225,  223,  219,  212,  211,  210,  209,  208,  207,  206,
+      205,  204,  203,  202,  201,  200,  199,  198,  197,  196,
+      195,  194,  193,  192,  191,  190,  189,  188,  187,  186,
+
+      185,  184,  183,  182,  181,  180,  179,  178,  176,  175,
+      174,  173,  172,  171,  170,  169,  168,  167,  166,  165,
+      164,  163,  162,  161,  160,  159,  158,  157,  154,  153,
+      152,  151,  148,  140,  139,  138,  137,  136,  135,  134,
+      133,  132,  128,  127,  125,  124,  123,  122,  121,  120,
+      119,  118,  117,  116,  115,  113,  112,  110,  108,  107,
+      106,  104,  103,  101,  100,   99,   98,   95,   94,   93,
+       92,   91,   87,   86,   67,   59,   52,   51,   49,   48,
+       47,   43,   41,   39,   38,   24,   14,   11,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784,  784,
+      784,  784,  784,  784,  784,  784,  784,  784,  784
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1057,20 +1058,20 @@ static char *yy_last_accepting_cpos;
 extern int parser4__flex_debug;
 int parser4__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[108] =
+static yyconst flex_int16_t yy_rule_linenum[110] =
     {   0,
       128,  130,  132,  137,  138,  143,  144,  145,  157,  160,
-      165,  172,  181,  190,  199,  208,  217,  226,  235,  247,
-      257,  267,  277,  288,  298,  308,  318,  328,  337,  346,
-      355,  369,  384,  393,  402,  411,  420,  429,  438,  447,
-      456,  465,  475,  484,  493,  502,  511,  520,  529,  538,
-      548,  558,  568,  577,  587,  597,  607,  617,  626,  636,
-      645,  654,  663,  672,  681,  691,  701,  710,  719,  728,
-      737,  746,  755,  764,  773,  782,  791,  800,  809,  818,
-      827,  836,  845,  854,  863,  873,  883,  895,  906,  919,
-     1017, 1022, 1027, 1032, 1033, 1034, 1035, 1036, 1037, 1039,
-
-     1057, 1070, 1075, 1079, 1081, 1083, 1085
+      165,  172,  181,  190,  199,  209,  219,  228,  237,  246,
+      255,  267,  277,  287,  297,  308,  318,  328,  338,  348,
+      357,  366,  375,  389,  404,  413,  422,  431,  440,  449,
+      458,  467,  476,  485,  495,  504,  513,  522,  531,  540,
+      549,  558,  568,  578,  588,  597,  607,  617,  627,  637,
+      646,  656,  665,  674,  683,  692,  701,  711,  721,  730,
+      739,  748,  757,  766,  775,  784,  793,  802,  811,  820,
+      829,  838,  847,  856,  865,  874,  883,  893,  903,  915,
+      926,  939, 1037, 1042, 1047, 1052, 1053, 1054, 1055, 1056,
+
+     1057, 1059, 1077, 1090, 1095, 1099, 1101, 1103, 1105
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1141,7 +1142,7 @@ unsigned int comment_start_line = 0;
 // by moving it ahead by parser4_leng bytes. parser4_leng specifies the length of the
 // currently matched token.
 #define YY_USER_ACTION  driver.loc_.columns(parser4_leng);
-#line 1145 "dhcp4_lexer.cc"
+#line 1146 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -1465,7 +1466,7 @@ YY_DECL
     }
 
 
-#line 1469 "dhcp4_lexer.cc"
+#line 1470 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -1494,13 +1495,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 >= 780 )
+                               if ( yy_current_state >= 785 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 779 );
+               while ( yy_current_state != 784 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1519,13 +1520,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 108 )
+                       else if ( yy_act < 110 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], parser4_text );
-                       else if ( yy_act == 108 )
+                       else if ( yy_act == 110 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         parser4_text );
-                       else if ( yy_act == 109 )
+                       else if ( yy_act == 111 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1668,6 +1669,32 @@ YY_RULE_SETUP
 case 15:
 YY_RULE_SETUP
 #line 199 "dhcp4_lexer.ll"
+{
+    std::cout << "RAW regexp" << std::endl;
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
+        return  isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_RAW(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("raw", driver.loc_);
+    }
+}
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 209 "dhcp4_lexer.ll"
+{
+    std::cout << "RAW regexp" << std::endl;
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
+        return  isc::dhcp::Dhcp4Parser::make_DHCP_SOCKET_TYPE_UDP(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("udp", driver.loc_);
+    }
+}
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 219 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::INTERFACES_CONFIG:
@@ -1677,9 +1704,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 16:
+case 18:
 YY_RULE_SETUP
-#line 208 "dhcp4_lexer.ll"
+#line 228 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1689,9 +1716,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 17:
+case 19:
 YY_RULE_SETUP
-#line 217 "dhcp4_lexer.ll"
+#line 237 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1701,9 +1728,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 18:
+case 20:
 YY_RULE_SETUP
-#line 226 "dhcp4_lexer.ll"
+#line 246 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOSTS_DATABASE:
@@ -1713,9 +1740,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 19:
+case 21:
 YY_RULE_SETUP
-#line 235 "dhcp4_lexer.ll"
+#line 255 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1728,9 +1755,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 20:
+case 22:
 YY_RULE_SETUP
-#line 247 "dhcp4_lexer.ll"
+#line 267 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1741,9 +1768,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 21:
+case 23:
 YY_RULE_SETUP
-#line 257 "dhcp4_lexer.ll"
+#line 277 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1754,9 +1781,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 22:
+case 24:
 YY_RULE_SETUP
-#line 267 "dhcp4_lexer.ll"
+#line 287 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1767,9 +1794,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 23:
+case 25:
 YY_RULE_SETUP
-#line 277 "dhcp4_lexer.ll"
+#line 297 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1781,9 +1808,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 24:
+case 26:
 YY_RULE_SETUP
-#line 288 "dhcp4_lexer.ll"
+#line 308 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1794,9 +1821,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 25:
+case 27:
 YY_RULE_SETUP
-#line 298 "dhcp4_lexer.ll"
+#line 318 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1807,9 +1834,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 26:
+case 28:
 YY_RULE_SETUP
-#line 308 "dhcp4_lexer.ll"
+#line 328 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1820,9 +1847,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 27:
+case 29:
 YY_RULE_SETUP
-#line 318 "dhcp4_lexer.ll"
+#line 338 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1833,9 +1860,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 28:
+case 30:
 YY_RULE_SETUP
-#line 328 "dhcp4_lexer.ll"
+#line 348 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1845,9 +1872,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 29:
+case 31:
 YY_RULE_SETUP
-#line 337 "dhcp4_lexer.ll"
+#line 357 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1857,9 +1884,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 30:
+case 32:
 YY_RULE_SETUP
-#line 346 "dhcp4_lexer.ll"
+#line 366 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1869,9 +1896,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 31:
+case 33:
 YY_RULE_SETUP
-#line 355 "dhcp4_lexer.ll"
+#line 375 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -1886,9 +1913,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 32:
+case 34:
 YY_RULE_SETUP
-#line 369 "dhcp4_lexer.ll"
+#line 389 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -1904,9 +1931,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 33:
+case 35:
 YY_RULE_SETUP
-#line 384 "dhcp4_lexer.ll"
+#line 404 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -1916,9 +1943,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 34:
+case 36:
 YY_RULE_SETUP
-#line 393 "dhcp4_lexer.ll"
+#line 413 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1928,9 +1955,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 35:
+case 37:
 YY_RULE_SETUP
-#line 402 "dhcp4_lexer.ll"
+#line 422 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -1940,9 +1967,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 36:
+case 38:
 YY_RULE_SETUP
-#line 411 "dhcp4_lexer.ll"
+#line 431 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1952,9 +1979,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 37:
+case 39:
 YY_RULE_SETUP
-#line 420 "dhcp4_lexer.ll"
+#line 440 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1964,9 +1991,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 38:
+case 40:
 YY_RULE_SETUP
-#line 429 "dhcp4_lexer.ll"
+#line 449 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1976,9 +2003,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 39:
+case 41:
 YY_RULE_SETUP
-#line 438 "dhcp4_lexer.ll"
+#line 458 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -1988,9 +2015,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 40:
+case 42:
 YY_RULE_SETUP
-#line 447 "dhcp4_lexer.ll"
+#line 467 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2000,9 +2027,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 41:
+case 43:
 YY_RULE_SETUP
-#line 456 "dhcp4_lexer.ll"
+#line 476 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2012,9 +2039,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 42:
+case 44:
 YY_RULE_SETUP
-#line 465 "dhcp4_lexer.ll"
+#line 485 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2025,9 +2052,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 43:
+case 45:
 YY_RULE_SETUP
-#line 475 "dhcp4_lexer.ll"
+#line 495 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2037,9 +2064,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 44:
+case 46:
 YY_RULE_SETUP
-#line 484 "dhcp4_lexer.ll"
+#line 504 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2049,9 +2076,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 45:
+case 47:
 YY_RULE_SETUP
-#line 493 "dhcp4_lexer.ll"
+#line 513 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGING:
@@ -2061,9 +2088,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 46:
+case 48:
 YY_RULE_SETUP
-#line 502 "dhcp4_lexer.ll"
+#line 522 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2073,9 +2100,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 47:
+case 49:
 YY_RULE_SETUP
-#line 511 "dhcp4_lexer.ll"
+#line 531 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -2085,9 +2112,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 48:
+case 50:
 YY_RULE_SETUP
-#line 520 "dhcp4_lexer.ll"
+#line 540 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2097,9 +2124,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 49:
+case 51:
 YY_RULE_SETUP
-#line 529 "dhcp4_lexer.ll"
+#line 549 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -2109,9 +2136,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 50:
+case 52:
 YY_RULE_SETUP
-#line 538 "dhcp4_lexer.ll"
+#line 558 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2122,9 +2149,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 51:
+case 53:
 YY_RULE_SETUP
-#line 548 "dhcp4_lexer.ll"
+#line 568 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2135,9 +2162,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 52:
+case 54:
 YY_RULE_SETUP
-#line 558 "dhcp4_lexer.ll"
+#line 578 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -2148,9 +2175,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 53:
+case 55:
 YY_RULE_SETUP
-#line 568 "dhcp4_lexer.ll"
+#line 588 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2160,9 +2187,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 54:
+case 56:
 YY_RULE_SETUP
-#line 577 "dhcp4_lexer.ll"
+#line 597 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2173,9 +2200,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 55:
+case 57:
 YY_RULE_SETUP
-#line 587 "dhcp4_lexer.ll"
+#line 607 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2186,9 +2213,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 58:
 YY_RULE_SETUP
-#line 597 "dhcp4_lexer.ll"
+#line 617 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2199,9 +2226,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 59:
 YY_RULE_SETUP
-#line 607 "dhcp4_lexer.ll"
+#line 627 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -2212,9 +2239,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 60:
 YY_RULE_SETUP
-#line 617 "dhcp4_lexer.ll"
+#line 637 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -2224,9 +2251,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 61:
 YY_RULE_SETUP
-#line 626 "dhcp4_lexer.ll"
+#line 646 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2237,9 +2264,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 62:
 YY_RULE_SETUP
-#line 636 "dhcp4_lexer.ll"
+#line 656 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2249,9 +2276,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 63:
 YY_RULE_SETUP
-#line 645 "dhcp4_lexer.ll"
+#line 665 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2261,9 +2288,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 64:
 YY_RULE_SETUP
-#line 654 "dhcp4_lexer.ll"
+#line 674 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2273,9 +2300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 65:
 YY_RULE_SETUP
-#line 663 "dhcp4_lexer.ll"
+#line 683 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -2285,9 +2312,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 66:
 YY_RULE_SETUP
-#line 672 "dhcp4_lexer.ll"
+#line 692 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2297,9 +2324,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 67:
 YY_RULE_SETUP
-#line 681 "dhcp4_lexer.ll"
+#line 701 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -2310,9 +2337,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 68:
 YY_RULE_SETUP
-#line 691 "dhcp4_lexer.ll"
+#line 711 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2322,9 +2349,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 69:
 YY_RULE_SETUP
-#line 701 "dhcp4_lexer.ll"
+#line 721 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2334,9 +2361,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 70:
 YY_RULE_SETUP
-#line 710 "dhcp4_lexer.ll"
+#line 730 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -2346,9 +2373,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 719 "dhcp4_lexer.ll"
+#line 739 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2358,9 +2385,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 728 "dhcp4_lexer.ll"
+#line 748 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SERVER_ID:
@@ -2370,9 +2397,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 737 "dhcp4_lexer.ll"
+#line 757 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SERVER_ID:
@@ -2382,9 +2409,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 746 "dhcp4_lexer.ll"
+#line 766 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SERVER_ID:
@@ -2394,9 +2421,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 755 "dhcp4_lexer.ll"
+#line 775 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SERVER_ID:
@@ -2406,9 +2433,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 764 "dhcp4_lexer.ll"
+#line 784 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2418,9 +2445,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 773 "dhcp4_lexer.ll"
+#line 793 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2430,9 +2457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 782 "dhcp4_lexer.ll"
+#line 802 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2442,9 +2469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 791 "dhcp4_lexer.ll"
+#line 811 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2454,9 +2481,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 800 "dhcp4_lexer.ll"
+#line 820 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -2466,9 +2493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 809 "dhcp4_lexer.ll"
+#line 829 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2478,9 +2505,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 818 "dhcp4_lexer.ll"
+#line 838 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2490,9 +2517,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 827 "dhcp4_lexer.ll"
+#line 847 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -2502,9 +2529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 836 "dhcp4_lexer.ll"
+#line 856 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2514,9 +2541,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 845 "dhcp4_lexer.ll"
+#line 865 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2526,9 +2553,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 854 "dhcp4_lexer.ll"
+#line 874 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2538,9 +2565,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 863 "dhcp4_lexer.ll"
+#line 883 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2551,9 +2578,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 873 "dhcp4_lexer.ll"
+#line 893 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2564,9 +2591,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 883 "dhcp4_lexer.ll"
+#line 903 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2579,9 +2606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 895 "dhcp4_lexer.ll"
+#line 915 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2593,9 +2620,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 906 "dhcp4_lexer.ll"
+#line 926 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -2607,9 +2634,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 919 "dhcp4_lexer.ll"
+#line 939 "dhcp4_lexer.ll"
 {
     // A string has been matched. It contains the actual string and single quotes.
     // We need to get those quotes out of the way and just use its content, e.g.
@@ -2708,65 +2735,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 91:
-/* rule 91 can match eol */
+case 93:
+/* rule 93 can match eol */
 YY_RULE_SETUP
-#line 1017 "dhcp4_lexer.ll"
+#line 1037 "dhcp4_lexer.ll"
 {
     // Bad string with a forbidden control character inside
     driver.error(driver.loc_, "Invalid control in " + std::string(parser4_text));
 }
        YY_BREAK
-case 92:
-/* rule 92 can match eol */
+case 94:
+/* rule 94 can match eol */
 YY_RULE_SETUP
-#line 1022 "dhcp4_lexer.ll"
+#line 1042 "dhcp4_lexer.ll"
 {
     // Bad string with a bad escape inside
     driver.error(driver.loc_, "Bad escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1027 "dhcp4_lexer.ll"
+#line 1047 "dhcp4_lexer.ll"
 {
     // Bad string with an open escape at the end
     driver.error(driver.loc_, "Overflow escape in " + std::string(parser4_text));
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1032 "dhcp4_lexer.ll"
+#line 1052 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1033 "dhcp4_lexer.ll"
+#line 1053 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1034 "dhcp4_lexer.ll"
+#line 1054 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1035 "dhcp4_lexer.ll"
+#line 1055 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1036 "dhcp4_lexer.ll"
+#line 1056 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1037 "dhcp4_lexer.ll"
+#line 1057 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1039 "dhcp4_lexer.ll"
+#line 1059 "dhcp4_lexer.ll"
 {
     // An integer was found.
     std::string tmp(parser4_text);
@@ -2785,9 +2812,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1057 "dhcp4_lexer.ll"
+#line 1077 "dhcp4_lexer.ll"
 {
     // A floating point was found.
     std::string tmp(parser4_text);
@@ -2801,43 +2828,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1070 "dhcp4_lexer.ll"
+#line 1090 "dhcp4_lexer.ll"
 {
     string tmp(parser4_text);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1075 "dhcp4_lexer.ll"
+#line 1095 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1079 "dhcp4_lexer.ll"
+#line 1099 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1081 "dhcp4_lexer.ll"
+#line 1101 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1083 "dhcp4_lexer.ll"
+#line 1103 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1085 "dhcp4_lexer.ll"
+#line 1105 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(parser4_text));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1087 "dhcp4_lexer.ll"
+#line 1107 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -2861,12 +2888,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1110 "dhcp4_lexer.ll"
+#line 1130 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 2870 "dhcp4_lexer.cc"
+#line 2897 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -3183,7 +3210,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 >= 780 )
+                       if ( yy_current_state >= 785 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
@@ -3216,11 +3243,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 >= 780 )
+               if ( yy_current_state >= 785 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
-       yy_is_jam = (yy_current_state == 779);
+       yy_is_jam = (yy_current_state == 784);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3969,7 +3996,7 @@ void parser4_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 1110 "dhcp4_lexer.ll"
+#line 1130 "dhcp4_lexer.ll"
 
 
 
index da6091cb6752e4434649e88d2fa5b3c33232327c..aee62b96008414fe9b8fc41896fa57b8b3fc3b77 100644 (file)
@@ -253,23 +253,23 @@ namespace isc { namespace dhcp {
   {
       switch (that.type_get ())
     {
-      case 114: // value
+      case 116: // value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -288,23 +288,23 @@ namespace isc { namespace dhcp {
     state = that.state;
       switch (that.type_get ())
     {
-      case 114: // value
+      case 116: // value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -344,37 +344,37 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-            case 98: // "constant string"
+            case 100: // "constant string"
 
-#line 189 "dhcp4_parser.yy" // lalr1.cc:636
+#line 191 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< std::string > (); }
 #line 352 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
 
-#line 189 "dhcp4_parser.yy" // lalr1.cc:636
+#line 191 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< int64_t > (); }
 #line 359 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
 
-#line 189 "dhcp4_parser.yy" // lalr1.cc:636
+#line 191 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< double > (); }
 #line 366 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
 
-#line 189 "dhcp4_parser.yy" // lalr1.cc:636
+#line 191 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< bool > (); }
 #line 373 "dhcp4_parser.cc" // lalr1.cc:636
         break;
 
-      case 114: // value
+      case 116: // value
 
-#line 189 "dhcp4_parser.yy" // lalr1.cc:636
+#line 191 "dhcp4_parser.yy" // lalr1.cc:636
         { yyoutput << yysym.value.template as< ElementPtr > (); }
 #line 380 "dhcp4_parser.cc" // lalr1.cc:636
         break;
@@ -576,23 +576,23 @@ namespace isc { namespace dhcp {
          when using variants.  */
         switch (yyr1_[yyn])
     {
-      case 114: // value
+      case 116: // value
         yylhs.value.build< ElementPtr > ();
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         yylhs.value.build< bool > ();
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         yylhs.value.build< double > ();
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         yylhs.value.build< int64_t > ();
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         yylhs.value.build< std::string > ();
         break;
 
@@ -614,109 +614,109 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 198 "dhcp4_parser.yy" // lalr1.cc:859
+#line 200 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 620 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 4:
-#line 199 "dhcp4_parser.yy" // lalr1.cc:859
+#line 201 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.CONFIG; }
 #line 626 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 6:
-#line 200 "dhcp4_parser.yy" // lalr1.cc:859
+#line 202 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.DHCP4; }
 #line 632 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 8:
-#line 201 "dhcp4_parser.yy" // lalr1.cc:859
+#line 203 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 638 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 10:
-#line 202 "dhcp4_parser.yy" // lalr1.cc:859
+#line 204 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 644 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 12:
-#line 203 "dhcp4_parser.yy" // lalr1.cc:859
+#line 205 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.POOLS; }
 #line 650 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 14:
-#line 204 "dhcp4_parser.yy" // lalr1.cc:859
+#line 206 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 656 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 16:
-#line 205 "dhcp4_parser.yy" // lalr1.cc:859
+#line 207 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 662 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 18:
-#line 206 "dhcp4_parser.yy" // lalr1.cc:859
+#line 208 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 668 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 20:
-#line 207 "dhcp4_parser.yy" // lalr1.cc:859
+#line 209 "dhcp4_parser.yy" // lalr1.cc:859
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 674 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 22:
-#line 215 "dhcp4_parser.yy" // lalr1.cc:859
+#line 217 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 680 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 23:
-#line 216 "dhcp4_parser.yy" // lalr1.cc:859
+#line 218 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as< double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 686 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 24:
-#line 217 "dhcp4_parser.yy" // lalr1.cc:859
+#line 219 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 692 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 25:
-#line 218 "dhcp4_parser.yy" // lalr1.cc:859
+#line 220 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 698 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 26:
-#line 219 "dhcp4_parser.yy" // lalr1.cc:859
+#line 221 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 704 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 27:
-#line 220 "dhcp4_parser.yy" // lalr1.cc:859
+#line 222 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 710 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 28:
-#line 221 "dhcp4_parser.yy" // lalr1.cc:859
+#line 223 "dhcp4_parser.yy" // lalr1.cc:859
     { yylhs.value.as< ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 716 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
   case 29:
-#line 224 "dhcp4_parser.yy" // lalr1.cc:859
+#line 226 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as< ElementPtr > ());
@@ -725,7 +725,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 30:
-#line 229 "dhcp4_parser.yy" // lalr1.cc:859
+#line 231 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -736,7 +736,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 31:
-#line 234 "dhcp4_parser.yy" // lalr1.cc:859
+#line 236 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -746,7 +746,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 34:
-#line 245 "dhcp4_parser.yy" // lalr1.cc:859
+#line 247 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), yystack_[0].value.as< ElementPtr > ());
@@ -755,7 +755,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 35:
-#line 249 "dhcp4_parser.yy" // lalr1.cc:859
+#line 251 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -765,7 +765,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 36:
-#line 256 "dhcp4_parser.yy" // lalr1.cc:859
+#line 258 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -774,7 +774,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 37:
-#line 259 "dhcp4_parser.yy" // lalr1.cc:859
+#line 261 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -782,7 +782,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 264 "dhcp4_parser.yy" // lalr1.cc:859
+#line 266 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // List parsing about to start
 }
@@ -790,7 +790,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 266 "dhcp4_parser.yy" // lalr1.cc:859
+#line 268 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -799,7 +799,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 275 "dhcp4_parser.yy" // lalr1.cc:859
+#line 277 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -808,7 +808,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 43:
-#line 279 "dhcp4_parser.yy" // lalr1.cc:859
+#line 281 "dhcp4_parser.yy" // lalr1.cc:859
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as< ElementPtr > ());
@@ -817,7 +817,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 290 "dhcp4_parser.yy" // lalr1.cc:859
+#line 292 "dhcp4_parser.yy" // lalr1.cc:859
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as< std::string > ();
@@ -828,7 +828,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 300 "dhcp4_parser.yy" // lalr1.cc:859
+#line 302 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -839,7 +839,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 305 "dhcp4_parser.yy" // lalr1.cc:859
+#line 307 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -849,7 +849,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 324 "dhcp4_parser.yy" // lalr1.cc:859
+#line 326 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -862,7 +862,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 331 "dhcp4_parser.yy" // lalr1.cc:859
+#line 333 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -874,7 +874,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 341 "dhcp4_parser.yy" // lalr1.cc:859
+#line 343 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -884,7 +884,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 345 "dhcp4_parser.yy" // lalr1.cc:859
+#line 347 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -892,7 +892,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 82:
-#line 379 "dhcp4_parser.yy" // lalr1.cc:859
+#line 381 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -901,7 +901,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 83:
-#line 384 "dhcp4_parser.yy" // lalr1.cc:859
+#line 386 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("renew-timer", prf);
@@ -910,7 +910,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 84:
-#line 389 "dhcp4_parser.yy" // lalr1.cc:859
+#line 391 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rebind-timer", prf);
@@ -919,7 +919,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 85:
-#line 394 "dhcp4_parser.yy" // lalr1.cc:859
+#line 396 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
@@ -928,7 +928,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 86:
-#line 399 "dhcp4_parser.yy" // lalr1.cc:859
+#line 401 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
@@ -937,7 +937,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 87:
-#line 404 "dhcp4_parser.yy" // lalr1.cc:859
+#line 406 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
@@ -946,7 +946,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 88:
-#line 410 "dhcp4_parser.yy" // lalr1.cc:859
+#line 412 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
@@ -957,7 +957,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 89:
-#line 415 "dhcp4_parser.yy" // lalr1.cc:859
+#line 417 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -966,7 +966,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 94:
-#line 428 "dhcp4_parser.yy" // lalr1.cc:859
+#line 430 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -976,7 +976,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 95:
-#line 432 "dhcp4_parser.yy" // lalr1.cc:859
+#line 434 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
@@ -984,7 +984,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 96:
-#line 436 "dhcp4_parser.yy" // lalr1.cc:859
+#line 438 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
@@ -995,7 +995,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 97:
-#line 441 "dhcp4_parser.yy" // lalr1.cc:859
+#line 443 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1003,26 +1003,26 @@ namespace isc { namespace dhcp {
 #line 1004 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 98:
-#line 446 "dhcp4_parser.yy" // lalr1.cc:859
+  case 100:
+#line 452 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ElementPtr type(new StringElement("raw", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("dhcp-socket-type", type);
 }
-#line 1012 "dhcp4_parser.cc" // lalr1.cc:859
+#line 1013 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 99:
-#line 448 "dhcp4_parser.yy" // lalr1.cc:859
+  case 101:
+#line 457 "dhcp4_parser.yy" // lalr1.cc:859
     {
-    ElementPtr type(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ElementPtr type(new StringElement("udp", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-socket-type", type);
-    ctx.leave();
 }
 #line 1022 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 100:
-#line 454 "dhcp4_parser.yy" // lalr1.cc:859
+  case 102:
+#line 462 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
@@ -1032,8 +1032,8 @@ namespace isc { namespace dhcp {
 #line 1033 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 101:
-#line 459 "dhcp4_parser.yy" // lalr1.cc:859
+  case 103:
+#line 467 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1041,8 +1041,8 @@ namespace isc { namespace dhcp {
 #line 1042 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 102:
-#line 464 "dhcp4_parser.yy" // lalr1.cc:859
+  case 104:
+#line 472 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
@@ -1052,8 +1052,8 @@ namespace isc { namespace dhcp {
 #line 1053 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 103:
-#line 469 "dhcp4_parser.yy" // lalr1.cc:859
+  case 105:
+#line 477 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1061,16 +1061,16 @@ namespace isc { namespace dhcp {
 #line 1062 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 115:
-#line 489 "dhcp4_parser.yy" // lalr1.cc:859
+  case 117:
+#line 497 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1070 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 116:
-#line 491 "dhcp4_parser.yy" // lalr1.cc:859
+  case 118:
+#line 499 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
@@ -1079,16 +1079,16 @@ namespace isc { namespace dhcp {
 #line 1080 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 117:
-#line 497 "dhcp4_parser.yy" // lalr1.cc:859
+  case 119:
+#line 505 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1088 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 118:
-#line 499 "dhcp4_parser.yy" // lalr1.cc:859
+  case 120:
+#line 507 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr user(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
@@ -1097,16 +1097,16 @@ namespace isc { namespace dhcp {
 #line 1098 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 119:
-#line 505 "dhcp4_parser.yy" // lalr1.cc:859
+  case 121:
+#line 513 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1106 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 120:
-#line 507 "dhcp4_parser.yy" // lalr1.cc:859
+  case 122:
+#line 515 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
@@ -1115,16 +1115,16 @@ namespace isc { namespace dhcp {
 #line 1116 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 121:
-#line 513 "dhcp4_parser.yy" // lalr1.cc:859
+  case 123:
+#line 521 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1124 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 122:
-#line 515 "dhcp4_parser.yy" // lalr1.cc:859
+  case 124:
+#line 523 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr h(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
@@ -1133,16 +1133,16 @@ namespace isc { namespace dhcp {
 #line 1134 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 123:
-#line 521 "dhcp4_parser.yy" // lalr1.cc:859
+  case 125:
+#line 529 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1142 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 124:
-#line 523 "dhcp4_parser.yy" // lalr1.cc:859
+  case 126:
+#line 531 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
@@ -1151,8 +1151,8 @@ namespace isc { namespace dhcp {
 #line 1152 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 125:
-#line 529 "dhcp4_parser.yy" // lalr1.cc:859
+  case 127:
+#line 537 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
@@ -1160,8 +1160,8 @@ namespace isc { namespace dhcp {
 #line 1161 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 126:
-#line 534 "dhcp4_parser.yy" // lalr1.cc:859
+  case 128:
+#line 542 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
@@ -1169,8 +1169,8 @@ namespace isc { namespace dhcp {
 #line 1170 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 127:
-#line 539 "dhcp4_parser.yy" // lalr1.cc:859
+  case 129:
+#line 547 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
@@ -1178,8 +1178,8 @@ namespace isc { namespace dhcp {
 #line 1179 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 128:
-#line 544 "dhcp4_parser.yy" // lalr1.cc:859
+  case 130:
+#line 552 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
@@ -1187,8 +1187,8 @@ namespace isc { namespace dhcp {
 #line 1188 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 129:
-#line 549 "dhcp4_parser.yy" // lalr1.cc:859
+  case 131:
+#line 557 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
@@ -1198,8 +1198,8 @@ namespace isc { namespace dhcp {
 #line 1199 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 130:
-#line 554 "dhcp4_parser.yy" // lalr1.cc:859
+  case 132:
+#line 562 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1207,8 +1207,8 @@ namespace isc { namespace dhcp {
 #line 1208 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 137:
-#line 569 "dhcp4_parser.yy" // lalr1.cc:859
+  case 139:
+#line 577 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
@@ -1216,8 +1216,8 @@ namespace isc { namespace dhcp {
 #line 1217 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 138:
-#line 574 "dhcp4_parser.yy" // lalr1.cc:859
+  case 140:
+#line 582 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
@@ -1225,8 +1225,8 @@ namespace isc { namespace dhcp {
 #line 1226 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 139:
-#line 579 "dhcp4_parser.yy" // lalr1.cc:859
+  case 141:
+#line 587 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
@@ -1234,8 +1234,8 @@ namespace isc { namespace dhcp {
 #line 1235 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 140:
-#line 584 "dhcp4_parser.yy" // lalr1.cc:859
+  case 142:
+#line 592 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
@@ -1245,8 +1245,8 @@ namespace isc { namespace dhcp {
 #line 1246 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 141:
-#line 589 "dhcp4_parser.yy" // lalr1.cc:859
+  case 143:
+#line 597 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1254,8 +1254,8 @@ namespace isc { namespace dhcp {
 #line 1255 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 146:
-#line 602 "dhcp4_parser.yy" // lalr1.cc:859
+  case 148:
+#line 610 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1264,16 +1264,16 @@ namespace isc { namespace dhcp {
 #line 1265 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 147:
-#line 606 "dhcp4_parser.yy" // lalr1.cc:859
+  case 149:
+#line 614 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1273 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 148:
-#line 610 "dhcp4_parser.yy" // lalr1.cc:859
+  case 150:
+#line 618 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1282,24 +1282,24 @@ namespace isc { namespace dhcp {
 #line 1283 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 149:
-#line 614 "dhcp4_parser.yy" // lalr1.cc:859
+  case 151:
+#line 622 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1291 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 155:
-#line 627 "dhcp4_parser.yy" // lalr1.cc:859
+  case 157:
+#line 635 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1299 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 156:
-#line 629 "dhcp4_parser.yy" // lalr1.cc:859
+  case 158:
+#line 637 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
@@ -1308,16 +1308,16 @@ namespace isc { namespace dhcp {
 #line 1309 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 157:
-#line 635 "dhcp4_parser.yy" // lalr1.cc:859
+  case 159:
+#line 643 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1317 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 158:
-#line 637 "dhcp4_parser.yy" // lalr1.cc:859
+  case 160:
+#line 645 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -1325,8 +1325,8 @@ namespace isc { namespace dhcp {
 #line 1326 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 159:
-#line 643 "dhcp4_parser.yy" // lalr1.cc:859
+  case 161:
+#line 651 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
@@ -1336,8 +1336,8 @@ namespace isc { namespace dhcp {
 #line 1337 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 160:
-#line 648 "dhcp4_parser.yy" // lalr1.cc:859
+  case 162:
+#line 656 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1345,8 +1345,8 @@ namespace isc { namespace dhcp {
 #line 1346 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 163:
-#line 660 "dhcp4_parser.yy" // lalr1.cc:859
+  case 165:
+#line 668 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr value(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set(yystack_[2].value.as< std::string > (), value);
@@ -1354,8 +1354,8 @@ namespace isc { namespace dhcp {
 #line 1355 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 164:
-#line 668 "dhcp4_parser.yy" // lalr1.cc:859
+  case 166:
+#line 676 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
@@ -1365,8 +1365,8 @@ namespace isc { namespace dhcp {
 #line 1366 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 165:
-#line 673 "dhcp4_parser.yy" // lalr1.cc:859
+  case 167:
+#line 681 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1374,8 +1374,8 @@ namespace isc { namespace dhcp {
 #line 1375 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 170:
-#line 693 "dhcp4_parser.yy" // lalr1.cc:859
+  case 172:
+#line 701 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1384,8 +1384,8 @@ namespace isc { namespace dhcp {
 #line 1385 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 171:
-#line 697 "dhcp4_parser.yy" // lalr1.cc:859
+  case 173:
+#line 705 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1407,8 +1407,8 @@ namespace isc { namespace dhcp {
 #line 1408 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 172:
-#line 716 "dhcp4_parser.yy" // lalr1.cc:859
+  case 174:
+#line 724 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1417,24 +1417,24 @@ namespace isc { namespace dhcp {
 #line 1418 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 173:
-#line 720 "dhcp4_parser.yy" // lalr1.cc:859
+  case 175:
+#line 728 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1426 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 196:
-#line 752 "dhcp4_parser.yy" // lalr1.cc:859
+  case 198:
+#line 760 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1434 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 197:
-#line 754 "dhcp4_parser.yy" // lalr1.cc:859
+  case 199:
+#line 762 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
@@ -1443,16 +1443,16 @@ namespace isc { namespace dhcp {
 #line 1444 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 198:
-#line 760 "dhcp4_parser.yy" // lalr1.cc:859
+  case 200:
+#line 768 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1452 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 199:
-#line 762 "dhcp4_parser.yy" // lalr1.cc:859
+  case 201:
+#line 770 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
@@ -1461,16 +1461,16 @@ namespace isc { namespace dhcp {
 #line 1462 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 200:
-#line 768 "dhcp4_parser.yy" // lalr1.cc:859
+  case 202:
+#line 776 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1470 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 201:
-#line 770 "dhcp4_parser.yy" // lalr1.cc:859
+  case 203:
+#line 778 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
@@ -1479,16 +1479,16 @@ namespace isc { namespace dhcp {
 #line 1480 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 202:
-#line 776 "dhcp4_parser.yy" // lalr1.cc:859
+  case 204:
+#line 784 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1488 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 203:
-#line 778 "dhcp4_parser.yy" // lalr1.cc:859
+  case 205:
+#line 786 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
@@ -1497,16 +1497,16 @@ namespace isc { namespace dhcp {
 #line 1498 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 204:
-#line 784 "dhcp4_parser.yy" // lalr1.cc:859
+  case 206:
+#line 792 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1506 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 205:
-#line 786 "dhcp4_parser.yy" // lalr1.cc:859
+  case 207:
+#line 794 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
@@ -1515,16 +1515,16 @@ namespace isc { namespace dhcp {
 #line 1516 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 206:
-#line 792 "dhcp4_parser.yy" // lalr1.cc:859
+  case 208:
+#line 800 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1524 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 207:
-#line 794 "dhcp4_parser.yy" // lalr1.cc:859
+  case 209:
+#line 802 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
@@ -1533,16 +1533,16 @@ namespace isc { namespace dhcp {
 #line 1534 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 208:
-#line 800 "dhcp4_parser.yy" // lalr1.cc:859
+  case 210:
+#line 808 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.CLIENT_CLASS);
 }
 #line 1542 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 209:
-#line 802 "dhcp4_parser.yy" // lalr1.cc:859
+  case 211:
+#line 810 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
@@ -1551,16 +1551,16 @@ namespace isc { namespace dhcp {
 #line 1552 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 210:
-#line 808 "dhcp4_parser.yy" // lalr1.cc:859
+  case 212:
+#line 816 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1560 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 211:
-#line 810 "dhcp4_parser.yy" // lalr1.cc:859
+  case 213:
+#line 818 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rm(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservation-mode", rm);
@@ -1569,8 +1569,8 @@ namespace isc { namespace dhcp {
 #line 1570 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 212:
-#line 816 "dhcp4_parser.yy" // lalr1.cc:859
+  case 214:
+#line 824 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
@@ -1578,8 +1578,8 @@ namespace isc { namespace dhcp {
 #line 1579 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 213:
-#line 821 "dhcp4_parser.yy" // lalr1.cc:859
+  case 215:
+#line 829 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
@@ -1587,8 +1587,8 @@ namespace isc { namespace dhcp {
 #line 1588 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 214:
-#line 830 "dhcp4_parser.yy" // lalr1.cc:859
+  case 216:
+#line 838 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
@@ -1598,8 +1598,8 @@ namespace isc { namespace dhcp {
 #line 1599 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 215:
-#line 835 "dhcp4_parser.yy" // lalr1.cc:859
+  case 217:
+#line 843 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1607,8 +1607,8 @@ namespace isc { namespace dhcp {
 #line 1608 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 220:
-#line 852 "dhcp4_parser.yy" // lalr1.cc:859
+  case 222:
+#line 860 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1617,16 +1617,16 @@ namespace isc { namespace dhcp {
 #line 1618 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 221:
-#line 856 "dhcp4_parser.yy" // lalr1.cc:859
+  case 223:
+#line 864 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1626 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 222:
-#line 863 "dhcp4_parser.yy" // lalr1.cc:859
+  case 224:
+#line 871 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1635,16 +1635,16 @@ namespace isc { namespace dhcp {
 #line 1636 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 223:
-#line 867 "dhcp4_parser.yy" // lalr1.cc:859
+  case 225:
+#line 875 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1644 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 237:
-#line 893 "dhcp4_parser.yy" // lalr1.cc:859
+  case 239:
+#line 901 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr code(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
@@ -1652,16 +1652,16 @@ namespace isc { namespace dhcp {
 #line 1653 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 240:
-#line 902 "dhcp4_parser.yy" // lalr1.cc:859
+  case 242:
+#line 910 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1661 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 241:
-#line 904 "dhcp4_parser.yy" // lalr1.cc:859
+  case 243:
+#line 912 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
@@ -1670,16 +1670,16 @@ namespace isc { namespace dhcp {
 #line 1671 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 242:
-#line 910 "dhcp4_parser.yy" // lalr1.cc:859
+  case 244:
+#line 918 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1679 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 243:
-#line 912 "dhcp4_parser.yy" // lalr1.cc:859
+  case 245:
+#line 920 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
@@ -1688,16 +1688,16 @@ namespace isc { namespace dhcp {
 #line 1689 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 245:
-#line 920 "dhcp4_parser.yy" // lalr1.cc:859
+  case 247:
+#line 928 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1697 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 246:
-#line 922 "dhcp4_parser.yy" // lalr1.cc:859
+  case 248:
+#line 930 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
@@ -1706,8 +1706,8 @@ namespace isc { namespace dhcp {
 #line 1707 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 247:
-#line 928 "dhcp4_parser.yy" // lalr1.cc:859
+  case 249:
+#line 936 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
@@ -1715,8 +1715,8 @@ namespace isc { namespace dhcp {
 #line 1716 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 248:
-#line 937 "dhcp4_parser.yy" // lalr1.cc:859
+  case 250:
+#line 945 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
@@ -1726,8 +1726,8 @@ namespace isc { namespace dhcp {
 #line 1727 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 249:
-#line 942 "dhcp4_parser.yy" // lalr1.cc:859
+  case 251:
+#line 950 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1735,8 +1735,8 @@ namespace isc { namespace dhcp {
 #line 1736 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 254:
-#line 961 "dhcp4_parser.yy" // lalr1.cc:859
+  case 256:
+#line 969 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1745,16 +1745,16 @@ namespace isc { namespace dhcp {
 #line 1746 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 255:
-#line 965 "dhcp4_parser.yy" // lalr1.cc:859
+  case 257:
+#line 973 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1754 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 256:
-#line 972 "dhcp4_parser.yy" // lalr1.cc:859
+  case 258:
+#line 980 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1763,24 +1763,24 @@ namespace isc { namespace dhcp {
 #line 1764 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 257:
-#line 976 "dhcp4_parser.yy" // lalr1.cc:859
+  case 259:
+#line 984 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1772 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 269:
-#line 1005 "dhcp4_parser.yy" // lalr1.cc:859
+  case 271:
+#line 1013 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1780 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 270:
-#line 1007 "dhcp4_parser.yy" // lalr1.cc:859
+  case 272:
+#line 1015 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr data(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
@@ -1789,8 +1789,8 @@ namespace isc { namespace dhcp {
 #line 1790 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 273:
-#line 1017 "dhcp4_parser.yy" // lalr1.cc:859
+  case 275:
+#line 1025 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as< bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
@@ -1798,8 +1798,8 @@ namespace isc { namespace dhcp {
 #line 1799 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 274:
-#line 1025 "dhcp4_parser.yy" // lalr1.cc:859
+  case 276:
+#line 1033 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
@@ -1809,8 +1809,8 @@ namespace isc { namespace dhcp {
 #line 1810 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 275:
-#line 1030 "dhcp4_parser.yy" // lalr1.cc:859
+  case 277:
+#line 1038 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1818,8 +1818,8 @@ namespace isc { namespace dhcp {
 #line 1819 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 280:
-#line 1045 "dhcp4_parser.yy" // lalr1.cc:859
+  case 282:
+#line 1053 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1828,16 +1828,16 @@ namespace isc { namespace dhcp {
 #line 1829 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 281:
-#line 1049 "dhcp4_parser.yy" // lalr1.cc:859
+  case 283:
+#line 1057 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1837 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 282:
-#line 1053 "dhcp4_parser.yy" // lalr1.cc:859
+  case 284:
+#line 1061 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1846,24 +1846,24 @@ namespace isc { namespace dhcp {
 #line 1847 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 283:
-#line 1057 "dhcp4_parser.yy" // lalr1.cc:859
+  case 285:
+#line 1065 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1855 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 289:
-#line 1070 "dhcp4_parser.yy" // lalr1.cc:859
+  case 291:
+#line 1078 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1863 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 290:
-#line 1072 "dhcp4_parser.yy" // lalr1.cc:859
+  case 292:
+#line 1080 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
@@ -1872,8 +1872,8 @@ namespace isc { namespace dhcp {
 #line 1873 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 291:
-#line 1081 "dhcp4_parser.yy" // lalr1.cc:859
+  case 293:
+#line 1089 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
@@ -1883,8 +1883,8 @@ namespace isc { namespace dhcp {
 #line 1884 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 292:
-#line 1086 "dhcp4_parser.yy" // lalr1.cc:859
+  case 294:
+#line 1094 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -1892,8 +1892,8 @@ namespace isc { namespace dhcp {
 #line 1893 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 297:
-#line 1099 "dhcp4_parser.yy" // lalr1.cc:859
+  case 299:
+#line 1107 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -1902,16 +1902,16 @@ namespace isc { namespace dhcp {
 #line 1903 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 298:
-#line 1103 "dhcp4_parser.yy" // lalr1.cc:859
+  case 300:
+#line 1111 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 1911 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 299:
-#line 1107 "dhcp4_parser.yy" // lalr1.cc:859
+  case 301:
+#line 1115 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1920,24 +1920,24 @@ namespace isc { namespace dhcp {
 #line 1921 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 300:
-#line 1111 "dhcp4_parser.yy" // lalr1.cc:859
+  case 302:
+#line 1119 "dhcp4_parser.yy" // lalr1.cc:859
     {
     // parsing completed
 }
 #line 1929 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 317:
-#line 1138 "dhcp4_parser.yy" // lalr1.cc:859
+  case 319:
+#line 1146 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1937 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 318:
-#line 1140 "dhcp4_parser.yy" // lalr1.cc:859
+  case 320:
+#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr next_server(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
@@ -1946,16 +1946,16 @@ namespace isc { namespace dhcp {
 #line 1947 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 319:
-#line 1146 "dhcp4_parser.yy" // lalr1.cc:859
+  case 321:
+#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1955 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 320:
-#line 1148 "dhcp4_parser.yy" // lalr1.cc:859
+  case 322:
+#line 1156 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr srv(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
@@ -1964,16 +1964,16 @@ namespace isc { namespace dhcp {
 #line 1965 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 321:
-#line 1154 "dhcp4_parser.yy" // lalr1.cc:859
+  case 323:
+#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1973 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 322:
-#line 1156 "dhcp4_parser.yy" // lalr1.cc:859
+  case 324:
+#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
@@ -1982,16 +1982,16 @@ namespace isc { namespace dhcp {
 #line 1983 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 323:
-#line 1162 "dhcp4_parser.yy" // lalr1.cc:859
+  case 325:
+#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1991 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 324:
-#line 1164 "dhcp4_parser.yy" // lalr1.cc:859
+  case 326:
+#line 1172 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
@@ -2000,16 +2000,16 @@ namespace isc { namespace dhcp {
 #line 2001 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 325:
-#line 1170 "dhcp4_parser.yy" // lalr1.cc:859
+  case 327:
+#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2009 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 326:
-#line 1172 "dhcp4_parser.yy" // lalr1.cc:859
+  case 328:
+#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr d(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
@@ -2018,16 +2018,16 @@ namespace isc { namespace dhcp {
 #line 2019 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 327:
-#line 1178 "dhcp4_parser.yy" // lalr1.cc:859
+  case 329:
+#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2027 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 328:
-#line 1180 "dhcp4_parser.yy" // lalr1.cc:859
+  case 330:
+#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
@@ -2036,16 +2036,16 @@ namespace isc { namespace dhcp {
 #line 2037 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 329:
-#line 1186 "dhcp4_parser.yy" // lalr1.cc:859
+  case 331:
+#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2045 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 330:
-#line 1188 "dhcp4_parser.yy" // lalr1.cc:859
+  case 332:
+#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
@@ -2054,16 +2054,16 @@ namespace isc { namespace dhcp {
 #line 2055 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 331:
-#line 1194 "dhcp4_parser.yy" // lalr1.cc:859
+  case 333:
+#line 1202 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2063 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 332:
-#line 1196 "dhcp4_parser.yy" // lalr1.cc:859
+  case 334:
+#line 1204 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
@@ -2072,16 +2072,16 @@ namespace isc { namespace dhcp {
 #line 2073 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 333:
-#line 1203 "dhcp4_parser.yy" // lalr1.cc:859
+  case 335:
+#line 1211 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2081 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 334:
-#line 1205 "dhcp4_parser.yy" // lalr1.cc:859
+  case 336:
+#line 1213 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr host(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
@@ -2090,8 +2090,8 @@ namespace isc { namespace dhcp {
 #line 2091 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 335:
-#line 1211 "dhcp4_parser.yy" // lalr1.cc:859
+  case 337:
+#line 1219 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
@@ -2101,8 +2101,8 @@ namespace isc { namespace dhcp {
 #line 2102 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 336:
-#line 1216 "dhcp4_parser.yy" // lalr1.cc:859
+  case 338:
+#line 1224 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2110,8 +2110,8 @@ namespace isc { namespace dhcp {
 #line 2111 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 337:
-#line 1224 "dhcp4_parser.yy" // lalr1.cc:859
+  case 339:
+#line 1232 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
@@ -2121,8 +2121,8 @@ namespace isc { namespace dhcp {
 #line 2122 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 338:
-#line 1229 "dhcp4_parser.yy" // lalr1.cc:859
+  case 340:
+#line 1237 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2130,16 +2130,16 @@ namespace isc { namespace dhcp {
 #line 2131 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 339:
-#line 1234 "dhcp4_parser.yy" // lalr1.cc:859
+  case 341:
+#line 1242 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2139 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 340:
-#line 1236 "dhcp4_parser.yy" // lalr1.cc:859
+  case 342:
+#line 1244 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr ip(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", ip);
@@ -2148,8 +2148,8 @@ namespace isc { namespace dhcp {
 #line 2149 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 341:
-#line 1245 "dhcp4_parser.yy" // lalr1.cc:859
+  case 343:
+#line 1253 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
@@ -2159,8 +2159,8 @@ namespace isc { namespace dhcp {
 #line 2160 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 342:
-#line 1250 "dhcp4_parser.yy" // lalr1.cc:859
+  case 344:
+#line 1258 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2168,8 +2168,8 @@ namespace isc { namespace dhcp {
 #line 2169 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 345:
-#line 1259 "dhcp4_parser.yy" // lalr1.cc:859
+  case 347:
+#line 1267 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2178,24 +2178,24 @@ namespace isc { namespace dhcp {
 #line 2179 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 346:
-#line 1263 "dhcp4_parser.yy" // lalr1.cc:859
+  case 348:
+#line 1271 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2187 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 359:
-#line 1286 "dhcp4_parser.yy" // lalr1.cc:859
+  case 361:
+#line 1294 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2195 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 360:
-#line 1288 "dhcp4_parser.yy" // lalr1.cc:859
+  case 362:
+#line 1296 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr test(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
@@ -2204,8 +2204,8 @@ namespace isc { namespace dhcp {
 #line 2205 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 361:
-#line 1297 "dhcp4_parser.yy" // lalr1.cc:859
+  case 363:
+#line 1305 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
@@ -2215,8 +2215,8 @@ namespace isc { namespace dhcp {
 #line 2216 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 362:
-#line 1302 "dhcp4_parser.yy" // lalr1.cc:859
+  case 364:
+#line 1310 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2224,8 +2224,8 @@ namespace isc { namespace dhcp {
 #line 2225 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 372:
-#line 1320 "dhcp4_parser.yy" // lalr1.cc:859
+  case 374:
+#line 1328 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
@@ -2233,16 +2233,16 @@ namespace isc { namespace dhcp {
 #line 2234 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 373:
-#line 1325 "dhcp4_parser.yy" // lalr1.cc:859
+  case 375:
+#line 1333 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2242 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 374:
-#line 1327 "dhcp4_parser.yy" // lalr1.cc:859
+  case 376:
+#line 1335 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr id(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
@@ -2251,8 +2251,8 @@ namespace isc { namespace dhcp {
 #line 2252 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 375:
-#line 1333 "dhcp4_parser.yy" // lalr1.cc:859
+  case 377:
+#line 1341 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
@@ -2260,8 +2260,8 @@ namespace isc { namespace dhcp {
 #line 2261 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 376:
-#line 1338 "dhcp4_parser.yy" // lalr1.cc:859
+  case 378:
+#line 1346 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
@@ -2269,8 +2269,8 @@ namespace isc { namespace dhcp {
 #line 2270 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 377:
-#line 1345 "dhcp4_parser.yy" // lalr1.cc:859
+  case 379:
+#line 1353 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr time(new IntElement(yystack_[0].value.as< int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
@@ -2278,8 +2278,8 @@ namespace isc { namespace dhcp {
 #line 2279 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 378:
-#line 1352 "dhcp4_parser.yy" // lalr1.cc:859
+  case 380:
+#line 1360 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
@@ -2289,8 +2289,8 @@ namespace isc { namespace dhcp {
 #line 2290 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 379:
-#line 1357 "dhcp4_parser.yy" // lalr1.cc:859
+  case 381:
+#line 1365 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2298,16 +2298,16 @@ namespace isc { namespace dhcp {
 #line 2299 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 384:
-#line 1370 "dhcp4_parser.yy" // lalr1.cc:859
+  case 386:
+#line 1378 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2307 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 385:
-#line 1372 "dhcp4_parser.yy" // lalr1.cc:859
+  case 387:
+#line 1380 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
@@ -2316,16 +2316,16 @@ namespace isc { namespace dhcp {
 #line 2317 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 386:
-#line 1378 "dhcp4_parser.yy" // lalr1.cc:859
+  case 388:
+#line 1386 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2325 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 387:
-#line 1380 "dhcp4_parser.yy" // lalr1.cc:859
+  case 389:
+#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr name(new StringElement(yystack_[0].value.as< std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
@@ -2334,8 +2334,8 @@ namespace isc { namespace dhcp {
 #line 2335 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 388:
-#line 1388 "dhcp4_parser.yy" // lalr1.cc:859
+  case 390:
+#line 1396 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
@@ -2345,8 +2345,8 @@ namespace isc { namespace dhcp {
 #line 2346 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 389:
-#line 1393 "dhcp4_parser.yy" // lalr1.cc:859
+  case 391:
+#line 1401 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2354,16 +2354,16 @@ namespace isc { namespace dhcp {
 #line 2355 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 390:
-#line 1400 "dhcp4_parser.yy" // lalr1.cc:859
+  case 392:
+#line 1408 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2363 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 391:
-#line 1402 "dhcp4_parser.yy" // lalr1.cc:859
+  case 393:
+#line 1410 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2371,16 +2371,16 @@ namespace isc { namespace dhcp {
 #line 2372 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 392:
-#line 1407 "dhcp4_parser.yy" // lalr1.cc:859
+  case 394:
+#line 1415 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2380 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 393:
-#line 1409 "dhcp4_parser.yy" // lalr1.cc:859
+  case 395:
+#line 1417 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as< ElementPtr > ());
     ctx.leave();
@@ -2388,8 +2388,8 @@ namespace isc { namespace dhcp {
 #line 2389 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 394:
-#line 1419 "dhcp4_parser.yy" // lalr1.cc:859
+  case 396:
+#line 1427 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
@@ -2399,8 +2399,8 @@ namespace isc { namespace dhcp {
 #line 2400 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 395:
-#line 1424 "dhcp4_parser.yy" // lalr1.cc:859
+  case 397:
+#line 1432 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2408,8 +2408,8 @@ namespace isc { namespace dhcp {
 #line 2409 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 399:
-#line 1441 "dhcp4_parser.yy" // lalr1.cc:859
+  case 401:
+#line 1449 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
@@ -2419,8 +2419,8 @@ namespace isc { namespace dhcp {
 #line 2420 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 400:
-#line 1446 "dhcp4_parser.yy" // lalr1.cc:859
+  case 402:
+#line 1454 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2428,8 +2428,8 @@ namespace isc { namespace dhcp {
 #line 2429 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 403:
-#line 1458 "dhcp4_parser.yy" // lalr1.cc:859
+  case 405:
+#line 1466 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
@@ -2438,16 +2438,16 @@ namespace isc { namespace dhcp {
 #line 2439 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 404:
-#line 1462 "dhcp4_parser.yy" // lalr1.cc:859
+  case 406:
+#line 1470 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2447 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 412:
-#line 1477 "dhcp4_parser.yy" // lalr1.cc:859
+  case 414:
+#line 1485 "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);
@@ -2455,16 +2455,16 @@ namespace isc { namespace dhcp {
 #line 2456 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 413:
-#line 1481 "dhcp4_parser.yy" // lalr1.cc:859
+  case 415:
+#line 1489 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2464 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 414:
-#line 1483 "dhcp4_parser.yy" // lalr1.cc:859
+  case 416:
+#line 1491 "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);
@@ -2473,8 +2473,8 @@ namespace isc { namespace dhcp {
 #line 2474 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 415:
-#line 1489 "dhcp4_parser.yy" // lalr1.cc:859
+  case 417:
+#line 1497 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
@@ -2484,8 +2484,8 @@ namespace isc { namespace dhcp {
 #line 2485 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 416:
-#line 1494 "dhcp4_parser.yy" // lalr1.cc:859
+  case 418:
+#line 1502 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
     ctx.leave();
@@ -2493,8 +2493,8 @@ namespace isc { namespace dhcp {
 #line 2494 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 419:
-#line 1503 "dhcp4_parser.yy" // lalr1.cc:859
+  case 421:
+#line 1511 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
@@ -2503,24 +2503,24 @@ namespace isc { namespace dhcp {
 #line 2504 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 420:
-#line 1507 "dhcp4_parser.yy" // lalr1.cc:859
+  case 422:
+#line 1515 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.stack_.pop_back();
 }
 #line 2512 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 423:
-#line 1515 "dhcp4_parser.yy" // lalr1.cc:859
+  case 425:
+#line 1523 "dhcp4_parser.yy" // lalr1.cc:859
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 2520 "dhcp4_parser.cc" // lalr1.cc:859
     break;
 
-  case 424:
-#line 1517 "dhcp4_parser.yy" // lalr1.cc:859
+  case 426:
+#line 1525 "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);
@@ -2785,84 +2785,84 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short int Dhcp4Parser::yypact_ninf_ = -411;
+  const short int Dhcp4Parser::yypact_ninf_ = -414;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short int
   Dhcp4Parser::yypact_[] =
   {
-     187,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,    32,    20,    73,    80,   106,   110,   122,   123,   126,
-     134,   153,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,    20,    64,    18,    95,    56,    24,    -4,    30,
-     146,   115,   -33,  -411,   179,   193,   212,   198,   215,  -411,
-    -411,  -411,  -411,   216,  -411,    34,  -411,  -411,  -411,  -411,
-    -411,  -411,   218,   219,  -411,  -411,  -411,   220,   227,   228,
-     230,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   231,
-    -411,  -411,  -411,    41,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,    42,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     232,   235,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,    48,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,    52,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,   207,   238,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     244,  -411,  -411,  -411,   245,  -411,  -411,  -411,   234,   249,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,   254,  -411,  -411,  -411,  -411,   251,   250,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,    63,  -411,  -411,
-    -411,  -411,    20,    20,  -411,   162,   257,   261,   263,   265,
-    -411,    18,  -411,   267,   171,   172,   281,   282,   283,   190,
-     191,   192,   194,   284,   288,   290,   291,   292,   293,   294,
-     295,   203,   296,   297,    95,  -411,   299,   300,    56,  -411,
-      46,   301,   302,   303,   304,   305,   306,   307,   213,   214,
-     309,   310,   312,   313,    24,  -411,   314,    -4,  -411,   315,
-     316,   317,   318,   319,   320,   321,   322,   323,  -411,    30,
-     324,   325,   233,   326,   327,   329,   236,  -411,   146,   330,
-     237,  -411,   115,   335,   336,    11,  -411,  -411,  -411,   337,
-     338,   339,    20,    20,  -411,   340,  -411,  -411,   246,   341,
-     342,  -411,  -411,  -411,  -411,   345,   346,   347,   348,   349,
-     350,   351,   352,  -411,   355,   356,  -411,   359,   258,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,   334,   354,  -411,
-    -411,  -411,   269,   270,   271,   365,   273,   274,   275,  -411,
-    -411,   277,   278,   373,   372,  -411,   285,  -411,   286,   287,
-     359,   289,   298,   308,   311,   328,   331,  -411,   332,   333,
-    -411,   343,   344,   353,  -411,  -411,   357,  -411,  -411,   358,
-      20,  -411,    20,    95,   262,  -411,  -411,    56,  -411,   113,
-     113,   374,   379,   381,   168,    29,   383,   360,   127,    98,
-      64,  -411,  -411,  -411,   376,  -411,    46,  -411,  -411,  -411,
-     384,  -411,  -411,  -411,  -411,  -411,   385,   362,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,    93,  -411,   100,
-    -411,  -411,   104,  -411,  -411,  -411,   390,   391,   393,  -411,
-     139,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-     155,  -411,   392,   396,  -411,  -411,   394,   398,  -411,  -411,
-     397,   399,  -411,  -411,  -411,  -411,  -411,  -411,    35,  -411,
-    -411,  -411,  -411,  -411,    94,  -411,   401,   402,  -411,   400,
-     169,  -411,  -411,   404,   406,   407,  -411,  -411,  -411,   170,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,   180,  -411,  -411,
-    -411,   199,    20,   361,  -411,  -411,   408,   409,  -411,  -411,
-     410,   414,  -411,  -411,   411,  -411,   416,   262,  -411,  -411,
-     417,   418,   419,   363,   364,   366,   113,  -411,  -411,    24,
-    -411,   374,   146,  -411,   379,   115,  -411,   381,   168,  -411,
-      29,  -411,   -33,  -411,   383,   367,   360,  -411,   420,   369,
-     370,   371,   127,  -411,   421,   424,    98,  -411,  -411,   412,
-    -411,    -4,  -411,   384,    30,  -411,   385,   428,  -411,   429,
-    -411,   375,   377,   378,  -411,  -411,  -411,  -411,   200,  -411,
-     425,  -411,   427,  -411,  -411,  -411,   201,  -411,  -411,  -411,
-     380,  -411,  -411,  -411,  -411,   382,   386,  -411,  -411,   202,
-    -411,   430,  -411,   387,   432,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   163,
-    -411,    61,   432,  -411,  -411,   433,  -411,  -411,  -411,   209,
-    -411,  -411,  -411,  -411,  -411,   436,   388,   439,    61,  -411,
-     431,  -411,   395,  -411,   437,  -411,  -411,   189,  -411,   389,
-     437,  -411,  -411,   211,  -411,  -411,   441,   389,  -411,   403,
-    -411,  -411
+     187,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,    33,    20,    34,    53,    69,    75,    92,   100,   104,
+     110,   130,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,    20,   -69,    24,    70,   163,    19,    -7,    96,
+     126,    54,   -23,  -414,   146,    36,   152,   200,   211,  -414,
+    -414,  -414,  -414,   218,  -414,    32,  -414,  -414,  -414,  -414,
+    -414,  -414,   223,   227,  -414,  -414,  -414,   228,   229,   230,
+     232,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   233,
+    -414,  -414,  -414,    45,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,   234,    49,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,   237,   239,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,    58,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,    60,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,   236,   243,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,   246,  -414,  -414,  -414,   247,  -414,  -414,  -414,
+     252,   251,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,   257,  -414,  -414,  -414,  -414,   254,   260,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,    72,
+    -414,  -414,  -414,  -414,    20,    20,  -414,   167,   265,   267,
+     269,   270,  -414,    24,  -414,   271,   184,   185,   285,   286,
+     287,   154,   191,   193,   194,   289,   292,   293,   294,   295,
+     296,   297,   298,   202,   300,   301,    70,  -414,   302,   169,
+     163,  -414,    25,   303,   304,   305,   306,   307,   308,   309,
+     213,   212,   312,   313,   314,   315,    19,  -414,   316,    -7,
+    -414,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+    -414,    96,   326,   327,   231,   329,   330,   331,   238,  -414,
+     126,   332,   240,  -414,    54,   335,   336,   155,  -414,  -414,
+    -414,   338,   337,   339,    20,    20,  -414,   340,  -414,  -414,
+     245,   341,   342,  -414,  -414,  -414,  -414,   345,   346,   347,
+     348,   349,   350,   351,   352,  -414,   353,   354,  -414,   357,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+     358,   362,  -414,  -414,  -414,   256,   272,   273,   365,   274,
+     275,   276,  -414,  -414,   278,   280,   366,   360,  -414,   281,
+    -414,   282,   283,   357,   288,   290,   299,   310,   311,   328,
+    -414,   333,   334,  -414,   343,   344,   355,  -414,  -414,   356,
+    -414,  -414,   359,    20,  -414,    20,    70,   363,  -414,  -414,
+     163,  -414,   105,   105,   378,   379,   380,   157,    31,   382,
+     361,   113,   150,   -69,  -414,  -414,   388,  -414,    25,  -414,
+    -414,  -414,   386,  -414,  -414,  -414,  -414,  -414,   387,   364,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,    81,
+    -414,   102,  -414,  -414,   136,  -414,  -414,  -414,   392,   393,
+     394,  -414,   147,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,   182,  -414,   395,   397,  -414,  -414,   396,   400,
+    -414,  -414,   398,   402,  -414,  -414,  -414,  -414,  -414,  -414,
+      56,  -414,  -414,  -414,  -414,  -414,   140,  -414,   401,   403,
+    -414,   404,   189,  -414,  -414,   405,   408,   409,  -414,  -414,
+    -414,   192,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   195,
+    -414,  -414,  -414,   198,    20,   367,  -414,  -414,   411,   412,
+    -414,  -414,   413,   417,  -414,  -414,   406,  -414,   418,   363,
+    -414,  -414,   419,   420,   421,   368,   369,   370,   105,  -414,
+    -414,    19,  -414,   378,   126,  -414,   379,    54,  -414,   380,
+     157,  -414,    31,  -414,   -23,  -414,   382,   371,   361,  -414,
+     422,   373,   374,   375,   113,  -414,   423,   425,   150,  -414,
+    -414,   415,  -414,    -7,  -414,   386,    96,  -414,   387,   426,
+    -414,   427,  -414,   377,   381,   383,  -414,  -414,  -414,  -414,
+     199,  -414,   428,  -414,   429,  -414,  -414,  -414,   201,  -414,
+    -414,  -414,   384,  -414,  -414,  -414,  -414,   385,   389,  -414,
+    -414,   207,  -414,   430,  -414,   390,   432,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,   171,  -414,    78,   432,  -414,  -414,   431,  -414,  -414,
+    -414,   208,  -414,  -414,  -414,  -414,  -414,   436,   391,   437,
+      78,  -414,   440,  -414,   399,  -414,   435,  -414,  -414,   188,
+    -414,   372,   435,  -414,  -414,   209,  -414,  -414,   443,   372,
+    -414,   407,  -414,  -414
   };
 
   const unsigned short int
@@ -2872,105 +2872,105 @@ namespace isc { namespace dhcp {
       20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     1,    36,    30,    26,    25,    22,    23,    24,
       29,     3,    27,    28,    45,     5,    56,     7,    94,     9,
-     172,    11,   282,    13,   299,    15,   222,    17,   256,    19,
-     148,    21,    40,    32,     0,     0,     0,     0,     0,   301,
-     224,   258,     0,    42,     0,    41,     0,     0,    33,    54,
-     394,   390,   392,     0,    53,     0,    47,    49,    51,    52,
-      50,    88,     0,     0,   317,   100,   102,     0,     0,     0,
-       0,   164,   214,   248,   129,   341,   140,   159,   361,     0,
-     378,   388,    81,     0,    58,    60,    61,    62,    63,    78,
+     174,    11,   284,    13,   301,    15,   224,    17,   258,    19,
+     150,    21,    40,    32,     0,     0,     0,     0,     0,   303,
+     226,   260,     0,    42,     0,    41,     0,     0,    33,    54,
+     396,   392,   394,     0,    53,     0,    47,    49,    51,    52,
+      50,    88,     0,     0,   319,   102,   104,     0,     0,     0,
+       0,   166,   216,   250,   131,   343,   142,   161,   363,     0,
+     380,   390,    81,     0,    58,    60,    61,    62,    63,    78,
       79,    65,    66,    67,    68,    72,    73,    64,    70,    71,
-      80,    69,    74,    75,    76,    77,    96,    98,     0,    90,
-      92,    93,   345,   198,   200,   202,   274,   196,   204,   206,
-       0,     0,   210,   208,   291,   337,   195,   176,   177,   178,
-     190,     0,   174,   181,   192,   193,   194,   182,   183,   186,
-     188,   184,   185,   179,   180,   187,   191,   189,   289,   288,
-     287,     0,   284,   286,   319,   321,   335,   325,   327,   331,
-     329,   333,   323,   316,   312,     0,   302,   303,   313,   314,
-     315,   309,   305,   310,   307,   308,   311,   306,   115,   123,
-       0,   242,   240,   245,     0,   235,   239,   236,     0,   225,
-     226,   228,   238,   229,   230,   231,   244,   232,   233,   234,
-     269,     0,   267,   268,   271,   272,     0,   259,   260,   262,
-     263,   264,   265,   266,   155,   157,   152,     0,   150,   153,
-     154,    37,     0,     0,    31,     0,     0,     0,     0,     0,
-      44,     0,    46,     0,     0,     0,     0,     0,     0,     0,
+      80,    69,    74,    75,    76,    77,    96,     0,     0,    90,
+      92,    93,    98,    99,   347,   200,   202,   204,   276,   198,
+     206,   208,     0,     0,   212,   210,   293,   339,   197,   178,
+     179,   180,   192,     0,   176,   183,   194,   195,   196,   184,
+     185,   188,   190,   186,   187,   181,   182,   189,   193,   191,
+     291,   290,   289,     0,   286,   288,   321,   323,   337,   327,
+     329,   333,   331,   335,   325,   318,   314,     0,   304,   305,
+     315,   316,   317,   311,   307,   312,   309,   310,   313,   308,
+     117,   125,     0,   244,   242,   247,     0,   237,   241,   238,
+       0,   227,   228,   230,   240,   231,   232,   233,   246,   234,
+     235,   236,   271,     0,   269,   270,   273,   274,     0,   261,
+     262,   264,   265,   266,   267,   268,   157,   159,   154,     0,
+     152,   155,   156,    37,     0,     0,    31,     0,     0,     0,
+       0,     0,    44,     0,    46,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    57,     0,     0,     0,    95,
-     347,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   173,     0,     0,   283,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   300,     0,
-       0,     0,     0,     0,     0,     0,     0,   223,     0,     0,
-       0,   257,     0,     0,     0,     0,   149,    43,    34,     0,
-       0,     0,     0,     0,    48,     0,    86,    87,     0,     0,
-       0,    82,    83,    84,    85,     0,     0,     0,     0,     0,
-       0,     0,     0,   377,     0,     0,    59,     0,     0,    91,
-     359,   357,   358,   353,   354,   355,   356,     0,   348,   349,
-     351,   352,     0,     0,     0,     0,     0,     0,     0,   212,
-     213,     0,     0,     0,     0,   175,     0,   285,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   304,     0,     0,
-     237,     0,     0,     0,   247,   227,     0,   273,   261,     0,
-       0,   151,     0,     0,     0,   391,   393,     0,   318,     0,
-       0,   166,   216,   250,     0,     0,   142,     0,     0,     0,
-       0,    38,    97,    99,     0,   346,     0,   199,   201,   203,
-     276,   197,   205,   207,   211,   209,   293,     0,   290,   320,
-     322,   336,   326,   328,   332,   330,   334,   324,   116,   124,
-     243,   241,   246,   270,   156,   158,    35,     0,   399,     0,
-     396,   398,     0,   117,   119,   121,     0,     0,     0,   114,
-       0,   104,   106,   107,   108,   109,   110,   111,   112,   113,
-       0,   170,     0,   167,   168,   220,     0,   217,   218,   254,
-       0,   251,   252,   128,   137,   138,   139,   133,     0,   131,
-     134,   135,   136,   343,     0,   146,     0,   143,   144,     0,
-       0,   161,   373,     0,     0,     0,   371,   365,   370,     0,
-     363,   368,   366,   367,   369,   384,   386,     0,   380,   382,
-     383,     0,    40,     0,   350,   280,     0,   277,   278,   297,
-       0,   294,   295,   339,     0,    55,     0,     0,   395,    89,
-       0,     0,     0,     0,     0,     0,     0,   101,   103,     0,
-     165,     0,   224,   215,     0,   258,   249,     0,     0,   130,
-       0,   342,     0,   141,     0,     0,     0,   160,     0,     0,
-       0,     0,     0,   362,     0,     0,     0,   379,   389,     0,
-     360,     0,   275,     0,   301,   292,     0,     0,   338,     0,
-     397,     0,     0,     0,   125,   126,   127,   105,     0,   169,
-       0,   219,     0,   253,   132,   344,     0,   145,   163,   162,
-       0,   372,   375,   376,   364,     0,     0,   381,    39,     0,
-     279,     0,   296,     0,     0,   118,   120,   122,   171,   221,
-     255,   147,   374,   385,   387,   281,   298,   340,   403,     0,
-     401,     0,     0,   400,   415,     0,   413,   411,   407,     0,
-     405,   409,   410,   408,   402,     0,     0,     0,     0,   404,
-       0,   412,     0,   406,     0,   414,   419,     0,   417,     0,
-       0,   416,   423,     0,   421,   418,     0,     0,   420,     0,
-     422,   424
+       0,     0,     0,     0,     0,     0,     0,    57,     0,     0,
+       0,    95,   349,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   175,     0,     0,
+     285,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     302,     0,     0,     0,     0,     0,     0,     0,     0,   225,
+       0,     0,     0,   259,     0,     0,     0,     0,   151,    43,
+      34,     0,     0,     0,     0,     0,    48,     0,    86,    87,
+       0,     0,     0,    82,    83,    84,    85,     0,     0,     0,
+       0,     0,     0,     0,     0,   379,     0,     0,    59,     0,
+     100,   101,    91,   361,   359,   360,   355,   356,   357,   358,
+       0,   350,   351,   353,   354,     0,     0,     0,     0,     0,
+       0,     0,   214,   215,     0,     0,     0,     0,   177,     0,
+     287,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     306,     0,     0,   239,     0,     0,     0,   249,   229,     0,
+     275,   263,     0,     0,   153,     0,     0,     0,   393,   395,
+       0,   320,     0,     0,   168,   218,   252,     0,     0,   144,
+       0,     0,     0,     0,    38,    97,     0,   348,     0,   201,
+     203,   205,   278,   199,   207,   209,   213,   211,   295,     0,
+     292,   322,   324,   338,   328,   330,   334,   332,   336,   326,
+     118,   126,   245,   243,   248,   272,   158,   160,    35,     0,
+     401,     0,   398,   400,     0,   119,   121,   123,     0,     0,
+       0,   116,     0,   106,   108,   109,   110,   111,   112,   113,
+     114,   115,     0,   172,     0,   169,   170,   222,     0,   219,
+     220,   256,     0,   253,   254,   130,   139,   140,   141,   135,
+       0,   133,   136,   137,   138,   345,     0,   148,     0,   145,
+     146,     0,     0,   163,   375,     0,     0,     0,   373,   367,
+     372,     0,   365,   370,   368,   369,   371,   386,   388,     0,
+     382,   384,   385,     0,    40,     0,   352,   282,     0,   279,
+     280,   299,     0,   296,   297,   341,     0,    55,     0,     0,
+     397,    89,     0,     0,     0,     0,     0,     0,     0,   103,
+     105,     0,   167,     0,   226,   217,     0,   260,   251,     0,
+       0,   132,     0,   344,     0,   143,     0,     0,     0,   162,
+       0,     0,     0,     0,     0,   364,     0,     0,     0,   381,
+     391,     0,   362,     0,   277,     0,   303,   294,     0,     0,
+     340,     0,   399,     0,     0,     0,   127,   128,   129,   107,
+       0,   171,     0,   221,     0,   255,   134,   346,     0,   147,
+     165,   164,     0,   374,   377,   378,   366,     0,     0,   383,
+      39,     0,   281,     0,   298,     0,     0,   120,   122,   124,
+     173,   223,   257,   149,   376,   387,   389,   283,   300,   342,
+     405,     0,   403,     0,     0,   402,   417,     0,   415,   413,
+     409,     0,   407,   411,   412,   410,   404,     0,     0,     0,
+       0,   406,     0,   414,     0,   408,     0,   416,   421,     0,
+     419,     0,     0,   418,   425,     0,   423,   420,     0,     0,
+     422,     0,   424,   426
   };
 
   const short int
   Dhcp4Parser::yypgoto_[] =
   {
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,     3,  -411,  -411,  -411,  -411,    16,  -411,  -411,
-      57,  -411,   -94,  -411,   -54,  -411,  -411,  -411,   206,  -411,
-    -411,  -411,  -411,    36,   176,   -56,   -40,   -38,  -411,  -411,
-     -37,  -411,  -411,    37,   174,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,    33,  -106,  -398,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,   -59,  -411,  -410,  -411,  -411,
-    -411,  -411,  -411,  -411,  -117,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -122,  -411,  -411,  -411,  -111,   140,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -112,  -411,  -411,  -411,  -411,
-     -92,  -411,  -411,  -411,   -88,   183,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -399,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   -91,  -411,
-    -411,  -411,   -90,  -411,   173,  -411,   -52,  -411,  -411,  -411,
-    -411,   -48,  -411,  -411,  -411,  -411,  -411,   -47,  -411,  -411,
-    -411,   -89,  -411,  -411,  -411,   -86,  -411,   164,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -113,  -411,
-    -411,  -411,  -109,   197,  -411,  -411,  -411,  -411,  -411,  -411,
-    -110,  -411,  -411,  -411,  -107,  -411,   186,   -43,  -411,  -257,
-    -411,  -256,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,    62,  -411,  -411,
-    -411,  -411,  -411,  -411,   -93,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,   -96,  -411,  -411,  -411,  -411,  -411,
-    -411,  -411,  -411,  -411,  -411,  -411,  -411,  -411,   -55,  -411,
-    -411,  -411,  -159,  -411,  -411,  -174,  -411,  -411,  -411,  -411,
-    -411,  -411,  -185,  -411,  -411,  -191,  -411
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,     3,  -414,  -414,  -414,  -414,   -76,  -414,  -414,
+      55,  -414,   -95,  -414,   -54,  -414,  -414,  -414,   197,  -414,
+    -414,  -414,  -414,    35,   176,   -56,   -40,   -38,  -414,  -414,
+     -37,  -414,  -414,    38,   173,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,    37,  -114,  -401,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,   -59,  -414,  -413,  -414,
+    -414,  -414,  -414,  -414,  -414,  -118,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -123,  -414,  -414,  -414,  -120,   138,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -122,  -414,  -414,  -414,
+    -414,  -105,  -414,  -414,  -414,  -102,   183,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -400,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   -98,
+    -414,  -414,  -414,   -94,  -414,   162,  -414,   -52,  -414,  -414,
+    -414,  -414,   -48,  -414,  -414,  -414,  -414,  -414,   -47,  -414,
+    -414,  -414,   -93,  -414,  -414,  -414,   -90,  -414,   164,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -112,
+    -414,  -414,  -414,  -109,   196,  -414,  -414,  -414,  -414,  -414,
+    -414,  -117,  -414,  -414,  -414,  -110,  -414,   186,   -43,  -414,
+    -259,  -414,  -258,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,    62,  -414,
+    -414,  -414,  -414,  -414,  -414,   -96,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,   -97,  -414,  -414,  -414,  -414,
+    -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,  -414,   -57,
+    -414,  -414,  -414,  -161,  -414,  -414,  -176,  -414,  -414,  -414,
+    -414,  -414,  -414,  -187,  -414,  -414,  -193,  -414
   };
 
   const short int
@@ -2978,291 +2978,291 @@ namespace isc { namespace dhcp {
   {
       -1,    11,    12,    13,    14,    15,    16,    17,    18,    19,
       20,    21,    63,    31,    32,    53,    67,    68,    33,    52,
-     432,   542,    64,    65,   102,    35,    54,    75,    76,    77,
-     246,    37,    55,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   253,   128,   129,    39,    56,   130,   276,   131,
-     277,   112,   257,   113,   258,   480,   481,   206,   310,   483,
-     560,   484,   561,   485,   562,   207,   311,   487,   488,   489,
-     507,   114,   266,   508,   509,   510,   511,   512,   115,   268,
-     516,   517,   518,   582,    51,    62,   237,   238,   239,   323,
-     240,   324,   116,   269,   520,   521,   117,   263,   492,   493,
-     494,   569,    41,    57,   151,   152,   153,   285,   154,   281,
-     155,   282,   156,   283,   157,   286,   158,   287,   159,   291,
-     160,   290,   161,   162,   118,   264,   496,   497,   498,   572,
-      47,    60,   208,   209,   210,   211,   212,   213,   214,   215,
-     314,   216,   313,   217,   218,   315,   219,   119,   265,   500,
-     501,   502,   575,    49,    61,   226,   227,   228,   229,   230,
-     319,   231,   232,   233,   164,   284,   546,   547,   548,   601,
-      43,    58,   171,   172,   173,   296,   165,   292,   550,   551,
-     552,   604,    45,    59,   185,   186,   187,   120,   256,   189,
-     299,   190,   300,   191,   307,   192,   302,   193,   303,   194,
-     305,   195,   304,   196,   306,   197,   301,   167,   293,   554,
-     607,   121,   267,   514,   280,   367,   368,   369,   370,   371,
-     434,   122,   270,   529,   530,   531,   532,   588,   533,   534,
-     123,   124,   272,   537,   538,   539,   594,   540,   595,   125,
-     273,    78,   248,    79,   249,    80,   247,   469,   470,   471,
-     556,   659,   660,   661,   669,   670,   671,   672,   677,   673,
-     675,   687,   688,   689,   693,   694,   696
+     435,   544,    64,    65,   102,    35,    54,    75,    76,    77,
+     248,    37,    55,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   255,   128,   129,    39,    56,   130,   278,   131,
+     132,   133,   112,   259,   113,   260,   482,   483,   208,   312,
+     485,   562,   486,   563,   487,   564,   209,   313,   489,   490,
+     491,   509,   114,   268,   510,   511,   512,   513,   514,   115,
+     270,   518,   519,   520,   584,    51,    62,   239,   240,   241,
+     325,   242,   326,   116,   271,   522,   523,   117,   265,   494,
+     495,   496,   571,    41,    57,   153,   154,   155,   287,   156,
+     283,   157,   284,   158,   285,   159,   288,   160,   289,   161,
+     293,   162,   292,   163,   164,   118,   266,   498,   499,   500,
+     574,    47,    60,   210,   211,   212,   213,   214,   215,   216,
+     217,   316,   218,   315,   219,   220,   317,   221,   119,   267,
+     502,   503,   504,   577,    49,    61,   228,   229,   230,   231,
+     232,   321,   233,   234,   235,   166,   286,   548,   549,   550,
+     603,    43,    58,   173,   174,   175,   298,   167,   294,   552,
+     553,   554,   606,    45,    59,   187,   188,   189,   120,   258,
+     191,   301,   192,   302,   193,   309,   194,   304,   195,   305,
+     196,   307,   197,   306,   198,   308,   199,   303,   169,   295,
+     556,   609,   121,   269,   516,   282,   370,   371,   372,   373,
+     374,   436,   122,   272,   531,   532,   533,   534,   590,   535,
+     536,   123,   124,   274,   539,   540,   541,   596,   542,   597,
+     125,   275,    78,   250,    79,   251,    80,   249,   471,   472,
+     473,   558,   661,   662,   663,   671,   672,   673,   674,   679,
+     675,   677,   689,   690,   691,   695,   696,   698
   };
 
   const unsigned short int
   Dhcp4Parser::yytable_[] =
   {
-      74,   147,   223,   146,   169,   183,   205,   222,   236,   224,
-     163,   170,   184,   225,   166,    30,   188,   148,   528,   149,
-     150,   482,   482,   365,   366,    23,   513,    24,    69,    25,
-     527,   132,    22,    93,   234,   235,   132,   251,   578,    83,
-      84,   579,   252,   168,   274,   278,    84,   174,   175,   275,
-     279,   294,    87,    88,    89,   297,   295,   133,   134,   135,
-     298,    93,    84,   174,   175,    73,   325,    93,   126,   127,
-     136,   326,   137,   138,   139,   140,   141,   142,   234,   235,
-      34,   143,   144,    93,   199,   176,   143,    36,   145,   177,
-     178,   179,   180,   181,    73,   182,   274,   580,    70,   199,
-     581,   555,   360,   557,    71,    72,    81,   278,   558,    82,
-      83,    84,   559,    38,    85,    86,    73,    40,    26,    27,
-      28,    29,    73,    87,    88,    89,    90,    91,    73,    42,
-      44,    92,    93,    46,   198,   473,   474,   475,   476,   477,
-     478,    48,   566,   664,    73,   665,   666,   567,   198,    94,
-      95,   199,   476,   199,   220,   200,   201,   221,   566,    73,
-      50,    96,    66,   568,    97,    98,   662,   198,   482,   663,
-      99,   100,   586,   592,   101,   535,   536,   587,   593,   365,
-     366,   625,   528,   596,   199,   241,   200,   201,   597,   202,
-     203,   204,   690,    73,   527,   691,   242,    74,   522,   523,
-     524,   525,   245,   294,   325,   297,   244,   598,   648,   651,
-     655,    73,   678,    73,   697,   308,   243,   679,   245,   698,
-     250,   362,   254,   255,   259,    73,   361,   503,   504,   505,
-     506,   260,   261,   363,   262,   271,   288,   364,   147,   289,
-     146,   309,   317,   169,    73,   327,   328,   163,   312,   316,
-     170,   166,   318,   322,   148,   183,   149,   150,   320,   321,
-     329,   330,   184,   223,   205,   331,   188,   332,   222,   333,
-     224,   335,   336,   337,   225,     1,     2,     3,     4,     5,
-       6,     7,     8,     9,    10,   338,   339,   340,   345,   341,
-     342,   343,   346,   344,   347,   348,   349,   350,   351,   352,
-     354,   355,   353,   357,   358,   372,   373,   374,   375,   376,
-     377,   378,   379,   381,   382,   380,   383,   384,   386,   388,
-     389,   390,   391,   392,   393,   394,   395,   396,   398,   399,
-     401,   402,   400,   403,   406,   415,   416,   404,   407,   409,
-     410,   412,   435,   468,   418,   413,   414,   417,   419,   420,
-     421,   422,   423,   424,   425,   426,   433,   436,   427,   428,
-     486,   486,   429,   430,   431,   479,   479,   437,   438,   439,
-     440,   441,   442,   443,   526,   444,   445,   362,   446,   447,
-     543,   491,   361,   448,   449,   450,   495,   452,   499,   363,
-     515,   545,   549,   364,   563,   564,   453,   565,   570,   571,
-     573,   574,   577,   576,   585,   584,   454,   583,   589,   455,
-     590,   591,   603,   465,   602,   466,   605,   606,   638,   608,
-     609,   611,   612,   613,   630,   635,   456,   553,   636,   457,
-     458,   459,   643,   649,   644,   650,   684,   676,   656,   658,
-     680,   460,   461,   682,   686,   699,   541,   451,   599,   467,
-     356,   462,   359,   490,   472,   463,   464,   334,   519,   600,
-     617,   624,   627,   615,   614,   411,   628,   616,   631,   632,
-     633,   626,   692,   645,   629,   646,   647,   385,   652,   619,
-     653,   618,   620,   621,   654,   657,   408,   681,   623,   622,
-     640,   405,   639,   685,   387,   397,   642,   641,   544,   634,
-     637,   701,   610,   674,   683,   695,   700,   486,     0,     0,
-       0,     0,   479,   147,     0,   146,   223,     0,   205,     0,
-       0,   222,   163,   224,     0,     0,   166,   225,   236,   148,
-       0,   149,   150,     0,     0,     0,     0,     0,   526,     0,
-       0,     0,     0,     0,     0,     0,     0,   169,     0,     0,
-     183,     0,     0,     0,   170,     0,     0,   184,     0,     0,
-       0,   188,     0,     0,     0,     0,     0,     0,     0,     0,
+      74,   149,   225,   148,   171,   185,   207,   224,   238,   226,
+     165,   172,   186,   227,   168,    30,   190,   150,   530,   151,
+     152,   484,   484,   368,   369,    23,   134,    24,   515,    25,
+     529,    66,    93,    22,    69,   253,    83,    84,   134,   244,
+     254,    34,   170,    84,   176,   177,   236,   237,   276,    87,
+      88,    89,   280,   277,   135,   136,   137,   281,    93,   580,
+      36,   296,   581,   299,    93,   201,   297,   138,   300,   139,
+     140,   141,   142,   143,   144,   327,    38,    73,   145,   146,
+     328,    81,    40,   363,   276,   147,    82,    83,    84,   557,
+     145,    85,    86,    73,   201,   222,   202,   203,   223,    42,
+      87,    88,    89,    90,    91,   559,    70,    44,    92,    93,
+     560,    46,    71,    72,    84,   176,   177,    48,   201,    73,
+      26,    27,    28,    29,    73,    73,    94,    95,   200,   475,
+     476,   477,   478,   479,   480,    93,   200,    50,    96,   280,
+     478,    97,    98,   582,   561,   201,   583,    99,   100,   200,
+     568,   101,   243,   178,    73,   569,   245,   179,   180,   181,
+     182,   183,   666,   184,   667,   668,   201,   484,   202,   203,
+      73,   204,   205,   206,   664,   126,   127,   665,    73,   368,
+     369,   530,   627,   360,   361,   568,   524,   525,   526,   527,
+     570,   692,   588,   529,   693,   594,    73,   589,   598,    74,
+     595,   247,   296,   599,   327,    73,   600,   650,   246,   653,
+     299,   680,   699,    73,   247,   657,   681,   700,   505,   506,
+     507,   508,   252,   365,   236,   237,    73,   256,   364,   537,
+     538,   257,   261,   262,   263,   366,   264,   273,   279,   367,
+     149,   290,   148,   291,   310,   171,   311,   329,   330,   165,
+     314,   318,   172,   168,   320,   343,   150,   185,   151,   152,
+     319,   322,   323,   324,   186,   225,   207,   331,   190,   332,
+     224,   333,   226,   334,   335,   337,   227,     1,     2,     3,
+       4,     5,     6,     7,     8,     9,    10,   338,   339,   340,
+     341,   342,   344,   347,   345,   346,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   359,   375,   376,   377,
+     378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
+     389,   391,   392,   393,   394,   395,   396,   397,   398,   399,
+     401,   402,   403,   404,   405,   406,   409,   418,   419,   412,
+     413,   407,   415,   410,   416,   421,   417,   420,   422,   423,
+     424,   425,   426,   427,   428,   429,   439,   543,   430,   431,
+     432,   433,   434,   488,   488,   438,   437,   449,   481,   481,
+     442,   448,   440,   441,   443,   444,   445,   528,   446,   365,
+     447,   450,   451,   452,   364,   493,   497,   501,   454,   517,
+     455,   366,   545,   547,   551,   367,   565,   566,   567,   456,
+     573,   572,   575,   576,   578,   579,   586,   585,   587,   591,
+     457,   458,   592,   593,   610,   605,   467,   604,   468,   607,
+     608,   640,   611,   613,   614,   615,   632,   637,   459,   638,
+     645,   555,   646,   460,   461,   678,   651,   652,   658,   660,
+     682,   684,   688,   462,   463,   686,   470,   701,   453,   601,
+     336,   469,   358,   362,   619,   464,   465,   694,   474,   466,
+     492,   521,   626,   629,   628,   414,   631,   602,   621,   620,
+     617,   616,   630,   618,   633,   634,   635,   647,   623,   388,
+     622,   648,   408,   649,   654,   655,   625,   624,   411,   656,
+     659,   644,   683,   642,   641,   390,   643,   400,   636,   687,
+     546,   639,   612,   676,   685,   697,   702,   703,     0,   488,
+       0,     0,     0,     0,   481,   149,     0,   148,   225,     0,
+     207,     0,     0,   224,   165,   226,     0,     0,   168,   227,
+     238,   150,     0,   151,   152,     0,     0,     0,     0,     0,
+     528,     0,     0,     0,     0,     0,     0,     0,     0,   171,
+       0,     0,   185,     0,     0,     0,   172,     0,     0,   186,
+       0,     0,     0,   190,     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,   670,     0,     0,     0,     0,   669,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   668,     0,     0,     0,     0,   667,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   668,
-       0,     0,     0,     0,   667
+       0,   670,     0,     0,     0,     0,   669
   };
 
   const short int
   Dhcp4Parser::yycheck_[] =
   {
       54,    57,    61,    57,    58,    59,    60,    61,    62,    61,
-      57,    58,    59,    61,    57,    12,    59,    57,   428,    57,
-      57,   419,   420,   280,   280,     5,   425,     7,    10,     9,
-     428,     7,     0,    37,    67,    68,     7,     3,     3,    15,
-      16,     6,     8,    47,     3,     3,    16,    17,    18,     8,
-       8,     3,    28,    29,    30,     3,     8,    33,    34,    35,
-       8,    37,    16,    17,    18,    98,     3,    37,    12,    13,
-      46,     8,    48,    49,    50,    51,    52,    53,    67,    68,
-       7,    57,    58,    37,    38,    55,    57,     7,    64,    59,
-      60,    61,    62,    63,    98,    65,     3,     3,    80,    38,
-       6,     8,    56,     3,    86,    87,    11,     3,     8,    14,
-      15,    16,     8,     7,    19,    20,    98,     7,    98,    99,
-     100,   101,    98,    28,    29,    30,    31,    32,    98,     7,
-       7,    36,    37,     7,    21,    22,    23,    24,    25,    26,
-      27,     7,     3,    82,    98,    84,    85,     8,    21,    54,
-      55,    38,    25,    38,    39,    40,    41,    42,     3,    98,
-       7,    66,    98,     8,    69,    70,     3,    21,   566,     6,
-      75,    76,     3,     3,    79,    77,    78,     8,     8,   436,
-     436,   580,   592,     3,    38,     6,    40,    41,     8,    43,
-      44,    45,     3,    98,   592,     6,     3,   251,    71,    72,
-      73,    74,     3,     3,     3,     3,     8,     8,     8,     8,
-       8,    98,     3,    98,     3,     8,     4,     8,     3,     8,
-       4,   280,     4,     4,     4,    98,   280,    59,    60,    61,
-      62,     4,     4,   280,     4,     4,     4,   280,   294,     4,
-     294,     3,     8,   297,    98,   242,   243,   294,     4,     4,
-     297,   294,     3,     3,   294,   309,   294,   294,     4,     8,
-      98,     4,   309,   322,   318,     4,   309,     4,   322,     4,
-     322,     4,   101,   101,   322,    88,    89,    90,    91,    92,
-      93,    94,    95,    96,    97,     4,     4,     4,     4,    99,
-      99,    99,     4,    99,     4,     4,     4,     4,     4,     4,
-       4,     4,    99,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,    99,     4,     4,   101,     4,     4,     4,     4,
+      57,    58,    59,    61,    57,    12,    59,    57,   431,    57,
+      57,   422,   423,   282,   282,     5,     7,     7,   428,     9,
+     431,   100,    39,     0,    10,     3,    17,    18,     7,     3,
+       8,     7,    49,    18,    19,    20,    69,    70,     3,    30,
+      31,    32,     3,     8,    35,    36,    37,     8,    39,     3,
+       7,     3,     6,     3,    39,    40,     8,    48,     8,    50,
+      51,    52,    53,    54,    55,     3,     7,   100,    59,    60,
+       8,    11,     7,    58,     3,    66,    16,    17,    18,     8,
+      59,    21,    22,   100,    40,    41,    42,    43,    44,     7,
+      30,    31,    32,    33,    34,     3,    82,     7,    38,    39,
+       8,     7,    88,    89,    18,    19,    20,     7,    40,   100,
+     100,   101,   102,   103,   100,   100,    56,    57,    23,    24,
+      25,    26,    27,    28,    29,    39,    23,     7,    68,     3,
+      27,    71,    72,     3,     8,    40,     6,    77,    78,    23,
+       3,    81,     6,    57,   100,     8,     4,    61,    62,    63,
+      64,    65,    84,    67,    86,    87,    40,   568,    42,    43,
+     100,    45,    46,    47,     3,    12,    13,     6,   100,   438,
+     438,   594,   582,    14,    15,     3,    73,    74,    75,    76,
+       8,     3,     3,   594,     6,     3,   100,     8,     3,   253,
+       8,     3,     3,     8,     3,   100,     8,     8,     8,     8,
+       3,     3,     3,   100,     3,     8,     8,     8,    61,    62,
+      63,    64,     4,   282,    69,    70,   100,     4,   282,    79,
+      80,     4,     4,     4,     4,   282,     4,     4,     4,   282,
+     296,     4,   296,     4,     8,   299,     3,   244,   245,   296,
+       4,     4,   299,   296,     3,   101,   296,   311,   296,   296,
+       8,     4,     8,     3,   311,   324,   320,   100,   311,     4,
+     324,     4,   324,     4,     4,     4,   324,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   103,   103,     4,
+       4,     4,   101,     4,   101,   101,     4,     4,     4,     4,
+       4,     4,     4,   101,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   101,   103,     4,     4,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,    99,     4,     4,   332,   333,   101,   101,     4,
-       4,     4,     8,    81,    98,     7,     7,     7,     7,     7,
-       5,     5,     5,     5,     5,     5,    98,     3,     7,     7,
-     419,   420,     7,     7,     5,   419,   420,    98,    98,    98,
-       5,    98,    98,    98,   428,    98,    98,   436,     5,     7,
-       4,     7,   436,    98,    98,    98,     7,    98,     7,   436,
-       7,     7,     7,   436,     4,     4,    98,     4,     6,     3,
-       6,     3,     3,     6,     4,     3,    98,     6,     4,    98,
-       4,     4,     3,   410,     6,   412,     6,     3,     6,     8,
-       4,     4,     4,     4,     4,     4,    98,    65,     4,    98,
-      98,    98,     4,     8,     5,     8,     5,     4,     8,     7,
-       4,    98,    98,     4,     7,     4,   430,   390,   542,   413,
-     274,    98,   278,   420,   417,    98,    98,   251,    98,    98,
-     566,   578,   584,    99,   101,   325,    99,   101,    99,    99,
-      99,   582,    83,    98,   586,    98,    98,   294,    98,   571,
-      98,   569,   572,   574,    98,    98,   322,    99,   577,   575,
-     603,   318,   601,    98,   297,   309,   606,   604,   436,   592,
-     596,    98,   557,   662,   678,   690,   697,   566,    -1,    -1,
-      -1,    -1,   566,   569,    -1,   569,   575,    -1,   572,    -1,
-      -1,   575,   569,   575,    -1,    -1,   569,   575,   582,   569,
-      -1,   569,   569,    -1,    -1,    -1,    -1,    -1,   592,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   601,    -1,    -1,
-     604,    -1,    -1,    -1,   601,    -1,    -1,   604,    -1,    -1,
-      -1,   604,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       4,     4,   101,     4,     4,     4,     4,   334,   335,     4,
+       4,   103,     4,   103,     7,   100,     7,     7,     7,     7,
+       5,     5,     5,     5,     5,     5,   100,   433,     7,     7,
+       7,     7,     5,   422,   423,     3,     8,     7,   422,   423,
+       5,     5,   100,   100,   100,   100,   100,   431,   100,   438,
+     100,   100,   100,   100,   438,     7,     7,     7,   100,     7,
+     100,   438,     4,     7,     7,   438,     4,     4,     4,   100,
+       3,     6,     6,     3,     6,     3,     3,     6,     4,     4,
+     100,   100,     4,     4,     8,     3,   413,     6,   415,     6,
+       3,     6,     4,     4,     4,     4,     4,     4,   100,     4,
+       4,    67,     5,   100,   100,     4,     8,     8,     8,     7,
+       4,     4,     7,   100,   100,     5,    83,     4,   393,   544,
+     253,   416,   276,   280,   568,   100,   100,    85,   420,   100,
+     423,   100,   580,   586,   584,   327,   588,   100,   573,   571,
+     101,   103,   101,   103,   101,   101,   101,   100,   576,   296,
+     574,   100,   320,   100,   100,   100,   579,   577,   324,   100,
+     100,   608,   101,   605,   603,   299,   606,   311,   594,   100,
+     438,   598,   559,   664,   680,   692,   699,   100,    -1,   568,
+      -1,    -1,    -1,    -1,   568,   571,    -1,   571,   577,    -1,
+     574,    -1,    -1,   577,   571,   577,    -1,    -1,   571,   577,
+     584,   571,    -1,   571,   571,    -1,    -1,    -1,    -1,    -1,
+     594,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   603,
+      -1,    -1,   606,    -1,    -1,    -1,   603,    -1,    -1,   606,
+      -1,    -1,    -1,   606,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   663,    -1,    -1,    -1,    -1,   663,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   661,    -1,    -1,    -1,    -1,   661,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   678,
-      -1,    -1,    -1,    -1,   678
+      -1,   680,    -1,    -1,    -1,    -1,   680
   };
 
   const unsigned short int
   Dhcp4Parser::yystos_[] =
   {
-       0,    88,    89,    90,    91,    92,    93,    94,    95,    96,
-      97,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,     0,     5,     7,     9,    98,    99,   100,   101,
-     114,   115,   116,   120,     7,   127,     7,   133,     7,   147,
-       7,   204,     7,   272,     7,   284,     7,   232,     7,   255,
-       7,   186,   121,   117,   128,   134,   148,   205,   273,   285,
-     233,   256,   187,   114,   124,   125,    98,   118,   119,    10,
-      80,    86,    87,    98,   126,   129,   130,   131,   343,   345,
-     347,    11,    14,    15,    16,    19,    20,    28,    29,    30,
-      31,    32,    36,    37,    54,    55,    66,    69,    70,    75,
-      76,    79,   126,   135,   136,   137,   138,   139,   140,   141,
-     142,   143,   153,   155,   173,   180,   194,   198,   226,   249,
-     289,   313,   323,   332,   333,   341,    12,    13,   145,   146,
-     149,   151,     7,    33,    34,    35,    46,    48,    49,    50,
-      51,    52,    53,    57,    58,    64,   126,   137,   138,   139,
-     142,   206,   207,   208,   210,   212,   214,   216,   218,   220,
-     222,   224,   225,   249,   266,   278,   289,   309,    47,   126,
-     249,   274,   275,   276,    17,    18,    55,    59,    60,    61,
-      62,    63,    65,   126,   249,   286,   287,   288,   289,   291,
-     293,   295,   297,   299,   301,   303,   305,   307,    21,    38,
-      40,    41,    43,    44,    45,   126,   159,   167,   234,   235,
-     236,   237,   238,   239,   240,   241,   243,   245,   246,   248,
-      39,    42,   126,   167,   238,   243,   257,   258,   259,   260,
-     261,   263,   264,   265,    67,    68,   126,   188,   189,   190,
-     192,     6,     3,     4,     8,     3,   132,   348,   344,   346,
-       4,     3,     8,   144,     4,     4,   290,   154,   156,     4,
-       4,     4,     4,   199,   227,   250,   174,   314,   181,   195,
-     324,     4,   334,   342,     3,     8,   150,   152,     3,     8,
-     316,   211,   213,   215,   267,   209,   217,   219,     4,     4,
-     223,   221,   279,   310,     3,     8,   277,     3,     8,   292,
-     294,   308,   298,   300,   304,   302,   306,   296,     8,     3,
-     160,   168,     4,   244,   242,   247,     4,     8,     3,   262,
-       4,     8,     3,   191,   193,     3,     8,   114,   114,    98,
-       4,     4,     4,     4,   130,     4,   101,   101,     4,     4,
-       4,    99,    99,    99,    99,     4,     4,     4,     4,     4,
-       4,     4,     4,    99,     4,     4,   136,     4,     4,   146,
-      56,   126,   167,   249,   289,   291,   293,   317,   318,   319,
-     320,   321,     4,     4,     4,     4,     4,     4,     4,    99,
-     101,     4,     4,     4,     4,   207,     4,   275,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,   288,     4,     4,
-      99,     4,     4,     4,   101,   236,     4,   101,   259,     4,
-       4,   189,     4,     7,     7,   114,   114,     7,    98,     7,
-       7,     5,     5,     5,     5,     5,     5,     7,     7,     7,
-       7,     5,   122,    98,   322,     8,     3,    98,    98,    98,
-       5,    98,    98,    98,    98,    98,     5,     7,    98,    98,
-      98,   122,    98,    98,    98,    98,    98,    98,    98,    98,
-      98,    98,    98,    98,    98,   114,   114,   135,    81,   349,
-     350,   351,   145,    22,    23,    24,    25,    26,    27,   126,
-     157,   158,   159,   161,   163,   165,   167,   169,   170,   171,
-     157,     7,   200,   201,   202,     7,   228,   229,   230,     7,
-     251,   252,   253,    59,    60,    61,    62,   172,   175,   176,
-     177,   178,   179,   220,   315,     7,   182,   183,   184,    98,
-     196,   197,    71,    72,    73,    74,   126,   159,   169,   325,
-     326,   327,   328,   330,   331,    77,    78,   335,   336,   337,
-     339,   119,   123,     4,   319,     7,   268,   269,   270,     7,
-     280,   281,   282,    65,   311,     8,   352,     3,     8,     8,
-     162,   164,   166,     4,     4,     4,     3,     8,     8,   203,
-       6,     3,   231,     6,     3,   254,     6,     3,     3,     6,
-       3,     6,   185,     6,     3,     4,     3,     8,   329,     4,
-       4,     4,     3,     8,   338,   340,     3,     8,     8,   124,
-      98,   271,     6,     3,   283,     6,     3,   312,     8,     4,
-     350,     4,     4,     4,   101,    99,   101,   158,   206,   202,
-     234,   230,   257,   253,   176,   220,   188,   184,    99,   197,
-       4,    99,    99,    99,   326,     4,     4,   336,     6,   274,
-     270,   286,   282,     4,     5,    98,    98,    98,     8,     8,
-       8,     8,    98,    98,    98,     8,     8,    98,     7,   353,
-     354,   355,     3,     6,    82,    84,    85,   126,   167,   356,
-     357,   358,   359,   361,   354,   362,     4,   360,     3,     8,
-       4,    99,     4,   357,     5,    98,     7,   363,   364,   365,
-       3,     6,    83,   366,   367,   364,   368,     3,     8,     4,
-     367,    98
+       0,    90,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   105,   106,   107,   108,   109,   110,   111,   112,   113,
+     114,   115,     0,     5,     7,     9,   100,   101,   102,   103,
+     116,   117,   118,   122,     7,   129,     7,   135,     7,   149,
+       7,   207,     7,   275,     7,   287,     7,   235,     7,   258,
+       7,   189,   123,   119,   130,   136,   150,   208,   276,   288,
+     236,   259,   190,   116,   126,   127,   100,   120,   121,    10,
+      82,    88,    89,   100,   128,   131,   132,   133,   346,   348,
+     350,    11,    16,    17,    18,    21,    22,    30,    31,    32,
+      33,    34,    38,    39,    56,    57,    68,    71,    72,    77,
+      78,    81,   128,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   156,   158,   176,   183,   197,   201,   229,   252,
+     292,   316,   326,   335,   336,   344,    12,    13,   147,   148,
+     151,   153,   154,   155,     7,    35,    36,    37,    48,    50,
+      51,    52,    53,    54,    55,    59,    60,    66,   128,   139,
+     140,   141,   144,   209,   210,   211,   213,   215,   217,   219,
+     221,   223,   225,   227,   228,   252,   269,   281,   292,   312,
+      49,   128,   252,   277,   278,   279,    19,    20,    57,    61,
+      62,    63,    64,    65,    67,   128,   252,   289,   290,   291,
+     292,   294,   296,   298,   300,   302,   304,   306,   308,   310,
+      23,    40,    42,    43,    45,    46,    47,   128,   162,   170,
+     237,   238,   239,   240,   241,   242,   243,   244,   246,   248,
+     249,   251,    41,    44,   128,   170,   241,   246,   260,   261,
+     262,   263,   264,   266,   267,   268,    69,    70,   128,   191,
+     192,   193,   195,     6,     3,     4,     8,     3,   134,   351,
+     347,   349,     4,     3,     8,   146,     4,     4,   293,   157,
+     159,     4,     4,     4,     4,   202,   230,   253,   177,   317,
+     184,   198,   327,     4,   337,   345,     3,     8,   152,     4,
+       3,     8,   319,   214,   216,   218,   270,   212,   220,   222,
+       4,     4,   226,   224,   282,   313,     3,     8,   280,     3,
+       8,   295,   297,   311,   301,   303,   307,   305,   309,   299,
+       8,     3,   163,   171,     4,   247,   245,   250,     4,     8,
+       3,   265,     4,     8,     3,   194,   196,     3,     8,   116,
+     116,   100,     4,     4,     4,     4,   132,     4,   103,   103,
+       4,     4,     4,   101,   101,   101,   101,     4,     4,     4,
+       4,     4,     4,     4,     4,   101,     4,     4,   138,     4,
+      14,    15,   148,    58,   128,   170,   252,   292,   294,   296,
+     320,   321,   322,   323,   324,     4,     4,     4,     4,     4,
+       4,     4,   101,   103,     4,     4,     4,     4,   210,     4,
+     278,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     291,     4,     4,   101,     4,     4,     4,   103,   239,     4,
+     103,   262,     4,     4,   192,     4,     7,     7,   116,   116,
+       7,   100,     7,     7,     5,     5,     5,     5,     5,     5,
+       7,     7,     7,     7,     5,   124,   325,     8,     3,   100,
+     100,   100,     5,   100,   100,   100,   100,   100,     5,     7,
+     100,   100,   100,   124,   100,   100,   100,   100,   100,   100,
+     100,   100,   100,   100,   100,   100,   100,   116,   116,   137,
+      83,   352,   353,   354,   147,    24,    25,    26,    27,    28,
+      29,   128,   160,   161,   162,   164,   166,   168,   170,   172,
+     173,   174,   160,     7,   203,   204,   205,     7,   231,   232,
+     233,     7,   254,   255,   256,    61,    62,    63,    64,   175,
+     178,   179,   180,   181,   182,   223,   318,     7,   185,   186,
+     187,   100,   199,   200,    73,    74,    75,    76,   128,   162,
+     172,   328,   329,   330,   331,   333,   334,    79,    80,   338,
+     339,   340,   342,   121,   125,     4,   322,     7,   271,   272,
+     273,     7,   283,   284,   285,    67,   314,     8,   355,     3,
+       8,     8,   165,   167,   169,     4,     4,     4,     3,     8,
+       8,   206,     6,     3,   234,     6,     3,   257,     6,     3,
+       3,     6,     3,     6,   188,     6,     3,     4,     3,     8,
+     332,     4,     4,     4,     3,     8,   341,   343,     3,     8,
+       8,   126,   100,   274,     6,     3,   286,     6,     3,   315,
+       8,     4,   353,     4,     4,     4,   103,   101,   103,   161,
+     209,   205,   237,   233,   260,   256,   179,   223,   191,   187,
+     101,   200,     4,   101,   101,   101,   329,     4,     4,   339,
+       6,   277,   273,   289,   285,     4,     5,   100,   100,   100,
+       8,     8,     8,     8,   100,   100,   100,     8,     8,   100,
+       7,   356,   357,   358,     3,     6,    84,    86,    87,   128,
+     170,   359,   360,   361,   362,   364,   357,   365,     4,   363,
+       3,     8,     4,   101,     4,   360,     5,   100,     7,   366,
+     367,   368,     3,     6,    85,   369,   370,   367,   371,     3,
+       8,     4,   370,   100
   };
 
   const unsigned short int
   Dhcp4Parser::yyr1_[] =
   {
-       0,   102,   104,   103,   105,   103,   106,   103,   107,   103,
-     108,   103,   109,   103,   110,   103,   111,   103,   112,   103,
-     113,   103,   114,   114,   114,   114,   114,   114,   114,   115,
-     117,   116,   118,   118,   119,   119,   121,   120,   123,   122,
-     124,   124,   125,   125,   126,   128,   127,   129,   129,   130,
-     130,   130,   130,   130,   132,   131,   134,   133,   135,   135,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   137,   138,   139,   140,   141,   142,   144,   143,
-     145,   145,   146,   146,   148,   147,   150,   149,   152,   151,
-     154,   153,   156,   155,   157,   157,   158,   158,   158,   158,
-     158,   158,   158,   158,   158,   160,   159,   162,   161,   164,
-     163,   166,   165,   168,   167,   169,   170,   171,   172,   174,
-     173,   175,   175,   176,   176,   176,   176,   177,   178,   179,
-     181,   180,   182,   182,   183,   183,   185,   184,   187,   186,
-     188,   188,   188,   189,   189,   191,   190,   193,   192,   195,
-     194,   196,   196,   197,   199,   198,   200,   200,   201,   201,
-     203,   202,   205,   204,   206,   206,   207,   207,   207,   207,
-     207,   207,   207,   207,   207,   207,   207,   207,   207,   207,
-     207,   207,   207,   207,   207,   207,   209,   208,   211,   210,
-     213,   212,   215,   214,   217,   216,   219,   218,   221,   220,
-     223,   222,   224,   225,   227,   226,   228,   228,   229,   229,
-     231,   230,   233,   232,   234,   234,   235,   235,   236,   236,
-     236,   236,   236,   236,   236,   236,   237,   238,   239,   240,
-     242,   241,   244,   243,   245,   247,   246,   248,   250,   249,
-     251,   251,   252,   252,   254,   253,   256,   255,   257,   257,
-     258,   258,   259,   259,   259,   259,   259,   259,   260,   262,
-     261,   263,   264,   265,   267,   266,   268,   268,   269,   269,
-     271,   270,   273,   272,   274,   274,   275,   275,   275,   277,
-     276,   279,   278,   280,   280,   281,   281,   283,   282,   285,
-     284,   286,   286,   287,   287,   288,   288,   288,   288,   288,
-     288,   288,   288,   288,   288,   288,   288,   290,   289,   292,
-     291,   294,   293,   296,   295,   298,   297,   300,   299,   302,
-     301,   304,   303,   306,   305,   308,   307,   310,   309,   312,
-     311,   314,   313,   315,   315,   316,   220,   317,   317,   318,
-     318,   319,   319,   319,   319,   319,   319,   319,   320,   322,
-     321,   324,   323,   325,   325,   326,   326,   326,   326,   326,
-     326,   326,   327,   329,   328,   330,   331,   332,   334,   333,
-     335,   335,   336,   336,   338,   337,   340,   339,   342,   341,
-     344,   343,   346,   345,   348,   347,   349,   349,   350,   352,
-     351,   353,   353,   355,   354,   356,   356,   357,   357,   357,
-     357,   357,   358,   360,   359,   362,   361,   363,   363,   365,
-     364,   366,   366,   368,   367
+       0,   104,   106,   105,   107,   105,   108,   105,   109,   105,
+     110,   105,   111,   105,   112,   105,   113,   105,   114,   105,
+     115,   105,   116,   116,   116,   116,   116,   116,   116,   117,
+     119,   118,   120,   120,   121,   121,   123,   122,   125,   124,
+     126,   126,   127,   127,   128,   130,   129,   131,   131,   132,
+     132,   132,   132,   132,   134,   133,   136,   135,   137,   137,
+     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
+     138,   138,   139,   140,   141,   142,   143,   144,   146,   145,
+     147,   147,   148,   148,   150,   149,   152,   151,   153,   153,
+     154,   155,   157,   156,   159,   158,   160,   160,   161,   161,
+     161,   161,   161,   161,   161,   161,   161,   163,   162,   165,
+     164,   167,   166,   169,   168,   171,   170,   172,   173,   174,
+     175,   177,   176,   178,   178,   179,   179,   179,   179,   180,
+     181,   182,   184,   183,   185,   185,   186,   186,   188,   187,
+     190,   189,   191,   191,   191,   192,   192,   194,   193,   196,
+     195,   198,   197,   199,   199,   200,   202,   201,   203,   203,
+     204,   204,   206,   205,   208,   207,   209,   209,   210,   210,
+     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
+     210,   210,   210,   210,   210,   210,   210,   210,   212,   211,
+     214,   213,   216,   215,   218,   217,   220,   219,   222,   221,
+     224,   223,   226,   225,   227,   228,   230,   229,   231,   231,
+     232,   232,   234,   233,   236,   235,   237,   237,   238,   238,
+     239,   239,   239,   239,   239,   239,   239,   239,   240,   241,
+     242,   243,   245,   244,   247,   246,   248,   250,   249,   251,
+     253,   252,   254,   254,   255,   255,   257,   256,   259,   258,
+     260,   260,   261,   261,   262,   262,   262,   262,   262,   262,
+     263,   265,   264,   266,   267,   268,   270,   269,   271,   271,
+     272,   272,   274,   273,   276,   275,   277,   277,   278,   278,
+     278,   280,   279,   282,   281,   283,   283,   284,   284,   286,
+     285,   288,   287,   289,   289,   290,   290,   291,   291,   291,
+     291,   291,   291,   291,   291,   291,   291,   291,   291,   293,
+     292,   295,   294,   297,   296,   299,   298,   301,   300,   303,
+     302,   305,   304,   307,   306,   309,   308,   311,   310,   313,
+     312,   315,   314,   317,   316,   318,   318,   319,   223,   320,
+     320,   321,   321,   322,   322,   322,   322,   322,   322,   322,
+     323,   325,   324,   327,   326,   328,   328,   329,   329,   329,
+     329,   329,   329,   329,   330,   332,   331,   333,   334,   335,
+     337,   336,   338,   338,   339,   339,   341,   340,   343,   342,
+     345,   344,   347,   346,   349,   348,   351,   350,   352,   352,
+     353,   355,   354,   356,   356,   358,   357,   359,   359,   360,
+     360,   360,   360,   360,   361,   363,   362,   365,   364,   366,
+     366,   368,   367,   369,   369,   371,   370
   };
 
   const unsigned char
@@ -3277,40 +3277,40 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     3,     3,     3,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     0,     4,     0,     4,     0,     4,
-       0,     6,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     3,     3,     3,     1,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       1,     3,     1,     1,     1,     0,     4,     0,     4,     0,
-       6,     1,     3,     3,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     3,     1,     1,     0,     4,     0,     4,     1,     1,
+       3,     3,     0,     6,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     3,     3,     3,
+       1,     0,     6,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     0,     6,     0,     1,     1,     3,     0,     4,
+       0,     4,     1,     3,     1,     1,     1,     0,     4,     0,
+       4,     0,     6,     1,     3,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
        0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     3,     3,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     3,     1,     1,
-       0,     4,     0,     4,     1,     0,     4,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     1,     1,     3,     0,     6,     0,     1,     1,     3,
-       0,     4,     0,     4,     1,     3,     1,     1,     1,     0,
-       4,     0,     6,     0,     1,     1,     3,     0,     4,     0,
-       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
+       0,     4,     0,     4,     3,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       1,     1,     0,     4,     0,     4,     1,     0,     4,     3,
+       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     1,     1,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     0,     4,     1,     3,     1,     1,
+       1,     0,     4,     0,     6,     0,     1,     1,     3,     0,
+       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     6,     0,
-       4,     0,     6,     1,     3,     0,     4,     0,     1,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     3,     0,     4,     3,     3,     3,     0,     6,
-       1,     3,     1,     1,     0,     4,     0,     4,     0,     6,
-       0,     4,     0,     4,     0,     6,     1,     3,     1,     0,
-       6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
-       1,     1,     3,     0,     4,     0,     6,     1,     3,     0,
-       4,     1,     3,     0,     4
+       6,     0,     4,     0,     6,     1,     3,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     4,     0,     6,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     3,     0,     4,     3,     3,     3,
+       0,     6,     1,     3,     1,     1,     0,     4,     0,     4,
+       0,     6,     0,     4,     0,     4,     0,     6,     1,     3,
+       1,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     3,     0,     4,     0,     6,     1,
+       3,     0,     4,     1,     3,     0,     4
   };
 
 
@@ -3323,17 +3323,17 @@ namespace isc { namespace dhcp {
   "\"end of file\"", "error", "$undefined", "\",\"", "\":\"", "\"[\"",
   "\"]\"", "\"{\"", "\"}\"", "\"null\"", "\"Dhcp4\"",
   "\"interfaces-config\"", "\"interfaces\"", "\"dhcp-socket-type\"",
-  "\"echo-client-id\"", "\"match-client-id\"", "\"next-server\"",
-  "\"server-hostname\"", "\"boot-file-name\"", "\"lease-database\"",
-  "\"hosts-database\"", "\"type\"", "\"user\"", "\"password\"", "\"host\"",
-  "\"persist\"", "\"lfc-interval\"", "\"readonly\"", "\"valid-lifetime\"",
-  "\"renew-timer\"", "\"rebind-timer\"", "\"decline-probation-period\"",
-  "\"subnet4\"", "\"4o6-interface\"", "\"4o6-interface-id\"",
-  "\"4o6-subnet\"", "\"option-def\"", "\"option-data\"", "\"name\"",
-  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"",
-  "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
-  "\"pool\"", "\"subnet\"", "\"interface\"", "\"interface-id\"", "\"id\"",
-  "\"rapid-commit\"", "\"reservation-mode\"",
+  "\"raw\"", "\"udp\"", "\"echo-client-id\"", "\"match-client-id\"",
+  "\"next-server\"", "\"server-hostname\"", "\"boot-file-name\"",
+  "\"lease-database\"", "\"hosts-database\"", "\"type\"", "\"user\"",
+  "\"password\"", "\"host\"", "\"persist\"", "\"lfc-interval\"",
+  "\"readonly\"", "\"valid-lifetime\"", "\"renew-timer\"",
+  "\"rebind-timer\"", "\"decline-probation-period\"", "\"subnet4\"",
+  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
+  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
+  "\"space\"", "\"csv-format\"", "\"record-types\"", "\"encapsulate\"",
+  "\"array\"", "\"pools\"", "\"pool\"", "\"subnet\"", "\"interface\"",
+  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
   "\"host-reservation-identifiers\"", "\"client-classes\"", "\"test\"",
   "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
   "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"relay\"",
@@ -3356,107 +3356,108 @@ namespace isc { namespace dhcp {
   "renew_timer", "rebind_timer", "decline_probation_period",
   "echo_client_id", "match_client_id", "interfaces_config", "$@17",
   "interfaces_config_params", "interfaces_config_param", "sub_interfaces4",
-  "$@18", "interfaces_list", "$@19", "dhcp_socket_type", "$@20",
-  "lease_database", "$@21", "hosts_database", "$@22",
-  "database_map_params", "database_map_param", "type", "$@23", "user",
-  "$@24", "password", "$@25", "host", "$@26", "name", "$@27", "persist",
-  "lfc_interval", "readonly", "duid_id", "host_reservation_identifiers",
-  "$@28", "host_reservation_identifiers_list",
-  "host_reservation_identifier", "hw_address_id", "circuit_id",
-  "client_id", "hooks_libraries", "$@29", "hooks_libraries_list",
-  "not_empty_hooks_libraries_list", "hooks_library", "$@30",
-  "sub_hooks_library", "$@31", "hooks_params", "hooks_param", "library",
-  "$@32", "parameters", "$@33", "expired_leases_processing", "$@34",
-  "expired_leases_params", "expired_leases_param", "subnet4_list", "$@35",
-  "subnet4_list_content", "not_empty_subnet4_list", "subnet4", "$@36",
-  "sub_subnet4", "$@37", "subnet4_params", "subnet4_param", "subnet",
-  "$@38", "subnet_4o6_interface", "$@39", "subnet_4o6_interface_id",
-  "$@40", "subnet_4o6_subnet", "$@41", "interface", "$@42", "interface_id",
-  "$@43", "client_class", "$@44", "reservation_mode", "$@45", "id",
-  "rapid_commit", "option_def_list", "$@46", "option_def_list_content",
-  "not_empty_option_def_list", "option_def_entry", "$@47",
-  "sub_option_def", "$@48", "option_def_params",
+  "$@18", "interfaces_list", "$@19", "dhcp_socket_type",
+  "dhcp_socket_type_raw", "dhcp_socket_type_udp", "lease_database", "$@20",
+  "hosts_database", "$@21", "database_map_params", "database_map_param",
+  "type", "$@22", "user", "$@23", "password", "$@24", "host", "$@25",
+  "name", "$@26", "persist", "lfc_interval", "readonly", "duid_id",
+  "host_reservation_identifiers", "$@27",
+  "host_reservation_identifiers_list", "host_reservation_identifier",
+  "hw_address_id", "circuit_id", "client_id", "hooks_libraries", "$@28",
+  "hooks_libraries_list", "not_empty_hooks_libraries_list",
+  "hooks_library", "$@29", "sub_hooks_library", "$@30", "hooks_params",
+  "hooks_param", "library", "$@31", "parameters", "$@32",
+  "expired_leases_processing", "$@33", "expired_leases_params",
+  "expired_leases_param", "subnet4_list", "$@34", "subnet4_list_content",
+  "not_empty_subnet4_list", "subnet4", "$@35", "sub_subnet4", "$@36",
+  "subnet4_params", "subnet4_param", "subnet", "$@37",
+  "subnet_4o6_interface", "$@38", "subnet_4o6_interface_id", "$@39",
+  "subnet_4o6_subnet", "$@40", "interface", "$@41", "interface_id", "$@42",
+  "client_class", "$@43", "reservation_mode", "$@44", "id", "rapid_commit",
+  "option_def_list", "$@45", "option_def_list_content",
+  "not_empty_option_def_list", "option_def_entry", "$@46",
+  "sub_option_def", "$@47", "option_def_params",
   "not_empty_option_def_params", "option_def_param", "option_def_name",
   "code", "option_def_code", "option_def_type", "option_def_record_types",
-  "$@49", "space", "$@50", "option_def_space", "option_def_encapsulate",
-  "$@51", "option_def_array", "option_data_list", "$@52",
+  "$@48", "space", "$@49", "option_def_space", "option_def_encapsulate",
+  "$@50", "option_def_array", "option_data_list", "$@51",
   "option_data_list_content", "not_empty_option_data_list",
-  "option_data_entry", "$@53", "sub_option_data", "$@54",
+  "option_data_entry", "$@52", "sub_option_data", "$@53",
   "option_data_params", "not_empty_option_data_params",
-  "option_data_param", "option_data_name", "option_data_data", "$@55",
+  "option_data_param", "option_data_name", "option_data_data", "$@54",
   "option_data_code", "option_data_space", "option_data_csv_format",
-  "pools_list", "$@56", "pools_list_content", "not_empty_pools_list",
-  "pool_list_entry", "$@57", "sub_pool4", "$@58", "pool_params",
-  "pool_param", "pool_entry", "$@59", "reservations", "$@60",
+  "pools_list", "$@55", "pools_list_content", "not_empty_pools_list",
+  "pool_list_entry", "$@56", "sub_pool4", "$@57", "pool_params",
+  "pool_param", "pool_entry", "$@58", "reservations", "$@59",
   "reservations_list", "not_empty_reservations_list", "reservation",
-  "$@61", "sub_reservation", "$@62", "reservation_params",
+  "$@60", "sub_reservation", "$@61", "reservation_params",
   "not_empty_reservation_params", "reservation_param", "next_server",
-  "$@63", "server_hostname", "$@64", "boot_file_name", "$@65",
-  "ip_address", "$@66", "duid", "$@67", "hw_address", "$@68",
-  "client_id_value", "$@69", "circuit_id_value", "$@70", "hostname",
-  "$@71", "reservation_client_classes", "$@72", "relay", "$@73",
-  "relay_map", "$@74", "client_classes", "$@75", "client_classes_list",
-  "$@76", "client_class_params", "not_empty_client_class_params",
-  "client_class_param", "client_class_name", "client_class_test", "$@77",
-  "server_id", "$@78", "server_id_params", "server_id_param", "htype",
-  "identifier", "$@79", "time", "enterprise_id", "dhcp4o6_port",
-  "control_socket", "$@80", "control_socket_params",
-  "control_socket_param", "socket_type", "$@81", "socket_name", "$@82",
-  "dhcp_ddns", "$@83", "dhcp6_json_object", "$@84", "dhcpddns_json_object",
-  "$@85", "logging_object", "$@86", "logging_params", "logging_param",
-  "loggers", "$@87", "loggers_entries", "logger_entry", "$@88",
-  "logger_params", "logger_param", "debuglevel", "severity", "$@89",
-  "output_options_list", "$@90", "output_options_list_content",
-  "output_entry", "$@91", "output_params", "output_param", "$@92", YY_NULLPTR
+  "$@62", "server_hostname", "$@63", "boot_file_name", "$@64",
+  "ip_address", "$@65", "duid", "$@66", "hw_address", "$@67",
+  "client_id_value", "$@68", "circuit_id_value", "$@69", "hostname",
+  "$@70", "reservation_client_classes", "$@71", "relay", "$@72",
+  "relay_map", "$@73", "client_classes", "$@74", "client_classes_list",
+  "$@75", "client_class_params", "not_empty_client_class_params",
+  "client_class_param", "client_class_name", "client_class_test", "$@76",
+  "server_id", "$@77", "server_id_params", "server_id_param", "htype",
+  "identifier", "$@78", "time", "enterprise_id", "dhcp4o6_port",
+  "control_socket", "$@79", "control_socket_params",
+  "control_socket_param", "socket_type", "$@80", "socket_name", "$@81",
+  "dhcp_ddns", "$@82", "dhcp6_json_object", "$@83", "dhcpddns_json_object",
+  "$@84", "logging_object", "$@85", "logging_params", "logging_param",
+  "loggers", "$@86", "loggers_entries", "logger_entry", "$@87",
+  "logger_params", "logger_param", "debuglevel", "severity", "$@88",
+  "output_options_list", "$@89", "output_options_list_content",
+  "output_entry", "$@90", "output_params", "output_param", "$@91", YY_NULLPTR
   };
 
 #if PARSER4_DEBUG
   const unsigned short int
   Dhcp4Parser::yyrline_[] =
   {
-       0,   198,   198,   198,   199,   199,   200,   200,   201,   201,
-     202,   202,   203,   203,   204,   204,   205,   205,   206,   206,
-     207,   207,   215,   216,   217,   218,   219,   220,   221,   224,
-     229,   229,   241,   242,   245,   249,   256,   256,   264,   264,
-     271,   272,   275,   279,   290,   300,   300,   312,   313,   317,
-     318,   319,   320,   321,   324,   324,   341,   341,   349,   350,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   379,   384,   389,   394,   399,   404,   410,   410,
-     420,   421,   424,   425,   428,   428,   436,   436,   446,   446,
-     454,   454,   464,   464,   474,   475,   478,   479,   480,   481,
-     482,   483,   484,   485,   486,   489,   489,   497,   497,   505,
-     505,   513,   513,   521,   521,   529,   534,   539,   544,   549,
-     549,   559,   560,   563,   564,   565,   566,   569,   574,   579,
-     584,   584,   594,   595,   598,   599,   602,   602,   610,   610,
-     618,   619,   620,   623,   624,   627,   627,   635,   635,   643,
-     643,   653,   654,   660,   668,   668,   681,   682,   685,   686,
-     693,   693,   716,   716,   725,   726,   730,   731,   732,   733,
-     734,   735,   736,   737,   738,   739,   740,   741,   742,   743,
-     744,   745,   746,   747,   748,   749,   752,   752,   760,   760,
+       0,   200,   200,   200,   201,   201,   202,   202,   203,   203,
+     204,   204,   205,   205,   206,   206,   207,   207,   208,   208,
+     209,   209,   217,   218,   219,   220,   221,   222,   223,   226,
+     231,   231,   243,   244,   247,   251,   258,   258,   266,   266,
+     273,   274,   277,   281,   292,   302,   302,   314,   315,   319,
+     320,   321,   322,   323,   326,   326,   343,   343,   351,   352,
+     357,   358,   359,   360,   361,   362,   363,   364,   365,   366,
+     367,   368,   369,   370,   371,   372,   373,   374,   375,   376,
+     377,   378,   381,   386,   391,   396,   401,   406,   412,   412,
+     422,   423,   426,   427,   430,   430,   438,   438,   448,   449,
+     452,   457,   462,   462,   472,   472,   482,   483,   486,   487,
+     488,   489,   490,   491,   492,   493,   494,   497,   497,   505,
+     505,   513,   513,   521,   521,   529,   529,   537,   542,   547,
+     552,   557,   557,   567,   568,   571,   572,   573,   574,   577,
+     582,   587,   592,   592,   602,   603,   606,   607,   610,   610,
+     618,   618,   626,   627,   628,   631,   632,   635,   635,   643,
+     643,   651,   651,   661,   662,   668,   676,   676,   689,   690,
+     693,   694,   701,   701,   724,   724,   733,   734,   738,   739,
+     740,   741,   742,   743,   744,   745,   746,   747,   748,   749,
+     750,   751,   752,   753,   754,   755,   756,   757,   760,   760,
      768,   768,   776,   776,   784,   784,   792,   792,   800,   800,
-     808,   808,   816,   821,   830,   830,   842,   843,   846,   847,
-     852,   852,   863,   863,   873,   874,   877,   878,   881,   882,
-     883,   884,   885,   886,   887,   888,   891,   893,   898,   900,
-     902,   902,   910,   910,   918,   920,   920,   928,   937,   937,
-     949,   950,   955,   956,   961,   961,   972,   972,   983,   984,
-     989,   990,   995,   996,   997,   998,   999,  1000,  1003,  1005,
-    1005,  1013,  1015,  1017,  1025,  1025,  1037,  1038,  1041,  1042,
-    1045,  1045,  1053,  1053,  1061,  1062,  1065,  1066,  1067,  1070,
-    1070,  1081,  1081,  1091,  1092,  1095,  1096,  1099,  1099,  1107,
-    1107,  1115,  1116,  1119,  1120,  1124,  1125,  1126,  1127,  1128,
-    1129,  1130,  1131,  1132,  1133,  1134,  1135,  1138,  1138,  1146,
+     808,   808,   816,   816,   824,   829,   838,   838,   850,   851,
+     854,   855,   860,   860,   871,   871,   881,   882,   885,   886,
+     889,   890,   891,   892,   893,   894,   895,   896,   899,   901,
+     906,   908,   910,   910,   918,   918,   926,   928,   928,   936,
+     945,   945,   957,   958,   963,   964,   969,   969,   980,   980,
+     991,   992,   997,   998,  1003,  1004,  1005,  1006,  1007,  1008,
+    1011,  1013,  1013,  1021,  1023,  1025,  1033,  1033,  1045,  1046,
+    1049,  1050,  1053,  1053,  1061,  1061,  1069,  1070,  1073,  1074,
+    1075,  1078,  1078,  1089,  1089,  1099,  1100,  1103,  1104,  1107,
+    1107,  1115,  1115,  1123,  1124,  1127,  1128,  1132,  1133,  1134,
+    1135,  1136,  1137,  1138,  1139,  1140,  1141,  1142,  1143,  1146,
     1146,  1154,  1154,  1162,  1162,  1170,  1170,  1178,  1178,  1186,
-    1186,  1194,  1194,  1203,  1203,  1211,  1211,  1224,  1224,  1234,
-    1234,  1245,  1245,  1255,  1256,  1259,  1259,  1267,  1268,  1271,
-    1272,  1275,  1276,  1277,  1278,  1279,  1280,  1281,  1284,  1286,
-    1286,  1297,  1297,  1307,  1308,  1311,  1312,  1313,  1314,  1315,
-    1316,  1317,  1320,  1325,  1325,  1333,  1338,  1345,  1352,  1352,
-    1362,  1363,  1366,  1367,  1370,  1370,  1378,  1378,  1388,  1388,
-    1400,  1400,  1407,  1407,  1419,  1419,  1432,  1433,  1437,  1441,
-    1441,  1453,  1454,  1458,  1458,  1466,  1467,  1470,  1471,  1472,
-    1473,  1474,  1477,  1481,  1481,  1489,  1489,  1499,  1500,  1503,
-    1503,  1511,  1512,  1515,  1515
+    1186,  1194,  1194,  1202,  1202,  1211,  1211,  1219,  1219,  1232,
+    1232,  1242,  1242,  1253,  1253,  1263,  1264,  1267,  1267,  1275,
+    1276,  1279,  1280,  1283,  1284,  1285,  1286,  1287,  1288,  1289,
+    1292,  1294,  1294,  1305,  1305,  1315,  1316,  1319,  1320,  1321,
+    1322,  1323,  1324,  1325,  1328,  1333,  1333,  1341,  1346,  1353,
+    1360,  1360,  1370,  1371,  1374,  1375,  1378,  1378,  1386,  1386,
+    1396,  1396,  1408,  1408,  1415,  1415,  1427,  1427,  1440,  1441,
+    1445,  1449,  1449,  1461,  1462,  1466,  1466,  1474,  1475,  1478,
+    1479,  1480,  1481,  1482,  1485,  1489,  1489,  1497,  1497,  1507,
+    1508,  1511,  1511,  1519,  1520,  1523,  1523
   };
 
   // Print the state stack on the debug stream.
@@ -3491,8 +3492,8 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:1167
 } } // isc::dhcp
-#line 3495 "dhcp4_parser.cc" // lalr1.cc:1167
-#line 1523 "dhcp4_parser.yy" // lalr1.cc:1168
+#line 3496 "dhcp4_parser.cc" // lalr1.cc:1167
+#line 1531 "dhcp4_parser.yy" // lalr1.cc:1168
 
 
 void
index c17beb521ddb2f6aa04a691f3953f09eebe6a2c1..6ec3447b29e1d46895abd7556d73853b9153d16f 100644 (file)
@@ -352,94 +352,96 @@ namespace isc { namespace dhcp {
         TOKEN_INTERFACES_CONFIG = 266,
         TOKEN_INTERFACES = 267,
         TOKEN_DHCP_SOCKET_TYPE = 268,
-        TOKEN_ECHO_CLIENT_ID = 269,
-        TOKEN_MATCH_CLIENT_ID = 270,
-        TOKEN_NEXT_SERVER = 271,
-        TOKEN_SERVER_HOSTNAME = 272,
-        TOKEN_BOOT_FILE_NAME = 273,
-        TOKEN_LEASE_DATABASE = 274,
-        TOKEN_HOSTS_DATABASE = 275,
-        TOKEN_TYPE = 276,
-        TOKEN_USER = 277,
-        TOKEN_PASSWORD = 278,
-        TOKEN_HOST = 279,
-        TOKEN_PERSIST = 280,
-        TOKEN_LFC_INTERVAL = 281,
-        TOKEN_READONLY = 282,
-        TOKEN_VALID_LIFETIME = 283,
-        TOKEN_RENEW_TIMER = 284,
-        TOKEN_REBIND_TIMER = 285,
-        TOKEN_DECLINE_PROBATION_PERIOD = 286,
-        TOKEN_SUBNET4 = 287,
-        TOKEN_SUBNET_4O6_INTERFACE = 288,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 289,
-        TOKEN_SUBNET_4O6_SUBNET = 290,
-        TOKEN_OPTION_DEF = 291,
-        TOKEN_OPTION_DATA = 292,
-        TOKEN_NAME = 293,
-        TOKEN_DATA = 294,
-        TOKEN_CODE = 295,
-        TOKEN_SPACE = 296,
-        TOKEN_CSV_FORMAT = 297,
-        TOKEN_RECORD_TYPES = 298,
-        TOKEN_ENCAPSULATE = 299,
-        TOKEN_ARRAY = 300,
-        TOKEN_POOLS = 301,
-        TOKEN_POOL = 302,
-        TOKEN_SUBNET = 303,
-        TOKEN_INTERFACE = 304,
-        TOKEN_INTERFACE_ID = 305,
-        TOKEN_ID = 306,
-        TOKEN_RAPID_COMMIT = 307,
-        TOKEN_RESERVATION_MODE = 308,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 309,
-        TOKEN_CLIENT_CLASSES = 310,
-        TOKEN_TEST = 311,
-        TOKEN_CLIENT_CLASS = 312,
-        TOKEN_RESERVATIONS = 313,
-        TOKEN_DUID = 314,
-        TOKEN_HW_ADDRESS = 315,
-        TOKEN_CIRCUIT_ID = 316,
-        TOKEN_CLIENT_ID = 317,
-        TOKEN_HOSTNAME = 318,
-        TOKEN_RELAY = 319,
-        TOKEN_IP_ADDRESS = 320,
-        TOKEN_HOOKS_LIBRARIES = 321,
-        TOKEN_LIBRARY = 322,
-        TOKEN_PARAMETERS = 323,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 324,
-        TOKEN_SERVER_ID = 325,
-        TOKEN_IDENTIFIER = 326,
-        TOKEN_HTYPE = 327,
-        TOKEN_TIME = 328,
-        TOKEN_ENTERPRISE_ID = 329,
-        TOKEN_DHCP4O6_PORT = 330,
-        TOKEN_CONTROL_SOCKET = 331,
-        TOKEN_SOCKET_TYPE = 332,
-        TOKEN_SOCKET_NAME = 333,
-        TOKEN_DHCP_DDNS = 334,
-        TOKEN_LOGGING = 335,
-        TOKEN_LOGGERS = 336,
-        TOKEN_OUTPUT_OPTIONS = 337,
-        TOKEN_OUTPUT = 338,
-        TOKEN_DEBUGLEVEL = 339,
-        TOKEN_SEVERITY = 340,
-        TOKEN_DHCP6 = 341,
-        TOKEN_DHCPDDNS = 342,
-        TOKEN_TOPLEVEL_JSON = 343,
-        TOKEN_TOPLEVEL_DHCP4 = 344,
-        TOKEN_SUB_DHCP4 = 345,
-        TOKEN_SUB_INTERFACES4 = 346,
-        TOKEN_SUB_SUBNET4 = 347,
-        TOKEN_SUB_POOL4 = 348,
-        TOKEN_SUB_RESERVATION = 349,
-        TOKEN_SUB_OPTION_DEF = 350,
-        TOKEN_SUB_OPTION_DATA = 351,
-        TOKEN_SUB_HOOKS_LIBRARY = 352,
-        TOKEN_STRING = 353,
-        TOKEN_INTEGER = 354,
-        TOKEN_FLOAT = 355,
-        TOKEN_BOOLEAN = 356
+        TOKEN_DHCP_SOCKET_TYPE_RAW = 269,
+        TOKEN_DHCP_SOCKET_TYPE_UDP = 270,
+        TOKEN_ECHO_CLIENT_ID = 271,
+        TOKEN_MATCH_CLIENT_ID = 272,
+        TOKEN_NEXT_SERVER = 273,
+        TOKEN_SERVER_HOSTNAME = 274,
+        TOKEN_BOOT_FILE_NAME = 275,
+        TOKEN_LEASE_DATABASE = 276,
+        TOKEN_HOSTS_DATABASE = 277,
+        TOKEN_TYPE = 278,
+        TOKEN_USER = 279,
+        TOKEN_PASSWORD = 280,
+        TOKEN_HOST = 281,
+        TOKEN_PERSIST = 282,
+        TOKEN_LFC_INTERVAL = 283,
+        TOKEN_READONLY = 284,
+        TOKEN_VALID_LIFETIME = 285,
+        TOKEN_RENEW_TIMER = 286,
+        TOKEN_REBIND_TIMER = 287,
+        TOKEN_DECLINE_PROBATION_PERIOD = 288,
+        TOKEN_SUBNET4 = 289,
+        TOKEN_SUBNET_4O6_INTERFACE = 290,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 291,
+        TOKEN_SUBNET_4O6_SUBNET = 292,
+        TOKEN_OPTION_DEF = 293,
+        TOKEN_OPTION_DATA = 294,
+        TOKEN_NAME = 295,
+        TOKEN_DATA = 296,
+        TOKEN_CODE = 297,
+        TOKEN_SPACE = 298,
+        TOKEN_CSV_FORMAT = 299,
+        TOKEN_RECORD_TYPES = 300,
+        TOKEN_ENCAPSULATE = 301,
+        TOKEN_ARRAY = 302,
+        TOKEN_POOLS = 303,
+        TOKEN_POOL = 304,
+        TOKEN_SUBNET = 305,
+        TOKEN_INTERFACE = 306,
+        TOKEN_INTERFACE_ID = 307,
+        TOKEN_ID = 308,
+        TOKEN_RAPID_COMMIT = 309,
+        TOKEN_RESERVATION_MODE = 310,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 311,
+        TOKEN_CLIENT_CLASSES = 312,
+        TOKEN_TEST = 313,
+        TOKEN_CLIENT_CLASS = 314,
+        TOKEN_RESERVATIONS = 315,
+        TOKEN_DUID = 316,
+        TOKEN_HW_ADDRESS = 317,
+        TOKEN_CIRCUIT_ID = 318,
+        TOKEN_CLIENT_ID = 319,
+        TOKEN_HOSTNAME = 320,
+        TOKEN_RELAY = 321,
+        TOKEN_IP_ADDRESS = 322,
+        TOKEN_HOOKS_LIBRARIES = 323,
+        TOKEN_LIBRARY = 324,
+        TOKEN_PARAMETERS = 325,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 326,
+        TOKEN_SERVER_ID = 327,
+        TOKEN_IDENTIFIER = 328,
+        TOKEN_HTYPE = 329,
+        TOKEN_TIME = 330,
+        TOKEN_ENTERPRISE_ID = 331,
+        TOKEN_DHCP4O6_PORT = 332,
+        TOKEN_CONTROL_SOCKET = 333,
+        TOKEN_SOCKET_TYPE = 334,
+        TOKEN_SOCKET_NAME = 335,
+        TOKEN_DHCP_DDNS = 336,
+        TOKEN_LOGGING = 337,
+        TOKEN_LOGGERS = 338,
+        TOKEN_OUTPUT_OPTIONS = 339,
+        TOKEN_OUTPUT = 340,
+        TOKEN_DEBUGLEVEL = 341,
+        TOKEN_SEVERITY = 342,
+        TOKEN_DHCP6 = 343,
+        TOKEN_DHCPDDNS = 344,
+        TOKEN_TOPLEVEL_JSON = 345,
+        TOKEN_TOPLEVEL_DHCP4 = 346,
+        TOKEN_SUB_DHCP4 = 347,
+        TOKEN_SUB_INTERFACES4 = 348,
+        TOKEN_SUB_SUBNET4 = 349,
+        TOKEN_SUB_POOL4 = 350,
+        TOKEN_SUB_RESERVATION = 351,
+        TOKEN_SUB_OPTION_DEF = 352,
+        TOKEN_SUB_OPTION_DATA = 353,
+        TOKEN_SUB_HOOKS_LIBRARY = 354,
+        TOKEN_STRING = 355,
+        TOKEN_INTEGER = 356,
+        TOKEN_FLOAT = 357,
+        TOKEN_BOOLEAN = 358
       };
     };
 
@@ -602,6 +604,14 @@ namespace isc { namespace dhcp {
     symbol_type
     make_DHCP_SOCKET_TYPE (const location_type& l);
 
+    static inline
+    symbol_type
+    make_DHCP_SOCKET_TYPE_RAW (const location_type& l);
+
+    static inline
+    symbol_type
+    make_DHCP_SOCKET_TYPE_UDP (const location_type& l);
+
     static inline
     symbol_type
     make_ECHO_CLIENT_ID (const location_type& l);
@@ -1159,12 +1169,12 @@ namespace isc { namespace dhcp {
     enum
     {
       yyeof_ = 0,
-      yylast_ = 624,     ///< Last index in yytable_.
-      yynnts_ = 267,  ///< Number of nonterminal symbols.
+      yylast_ = 626,     ///< Last index in yytable_.
+      yynnts_ = 268,  ///< Number of nonterminal symbols.
       yyfinal_ = 22, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 102  ///< Number of tokens.
+      yyntokens_ = 104  ///< Number of tokens.
     };
 
 
@@ -1216,9 +1226,9 @@ namespace isc { namespace dhcp {
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101
+      95,    96,    97,    98,    99,   100,   101,   102,   103
     };
-    const unsigned int user_token_number_max_ = 356;
+    const unsigned int user_token_number_max_ = 358;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int>(t) <= yyeof_)
@@ -1251,23 +1261,23 @@ namespace isc { namespace dhcp {
   {
       switch (other.type_get ())
     {
-      case 114: // value
+      case 116: // value
         value.copy< ElementPtr > (other.value);
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.copy< bool > (other.value);
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.copy< double > (other.value);
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.copy< int64_t > (other.value);
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.copy< std::string > (other.value);
         break;
 
@@ -1288,23 +1298,23 @@ namespace isc { namespace dhcp {
     (void) v;
       switch (this->type_get ())
     {
-      case 114: // value
+      case 116: // value
         value.copy< ElementPtr > (v);
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.copy< bool > (v);
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.copy< double > (v);
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.copy< int64_t > (v);
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.copy< std::string > (v);
         break;
 
@@ -1384,23 +1394,23 @@ namespace isc { namespace dhcp {
     // Type destructor.
     switch (yytype)
     {
-      case 114: // value
+      case 116: // value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1427,23 +1437,23 @@ namespace isc { namespace dhcp {
     super_type::move(s);
       switch (this->type_get ())
     {
-      case 114: // value
+      case 116: // value
         value.move< ElementPtr > (s.value);
         break;
 
-      case 101: // "boolean"
+      case 103: // "boolean"
         value.move< bool > (s.value);
         break;
 
-      case 100: // "floating point"
+      case 102: // "floating point"
         value.move< double > (s.value);
         break;
 
-      case 99: // "integer"
+      case 101: // "integer"
         value.move< int64_t > (s.value);
         break;
 
-      case 98: // "constant string"
+      case 100: // "constant string"
         value.move< std::string > (s.value);
         break;
 
@@ -1512,7 +1522,7 @@ namespace isc { namespace dhcp {
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356
+     355,   356,   357,   358
     };
     return static_cast<token_type> (yytoken_number_[type]);
   }
@@ -1589,6 +1599,18 @@ namespace isc { namespace dhcp {
     return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE, l);
   }
 
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_SOCKET_TYPE_RAW (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE_RAW, l);
+  }
+
+  Dhcp4Parser::symbol_type
+  Dhcp4Parser::make_DHCP_SOCKET_TYPE_UDP (const location_type& l)
+  {
+    return symbol_type (token::TOKEN_DHCP_SOCKET_TYPE_UDP, l);
+  }
+
   Dhcp4Parser::symbol_type
   Dhcp4Parser::make_ECHO_CLIENT_ID (const location_type& l)
   {
@@ -2120,7 +2142,7 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy" // lalr1.cc:377
 } } // isc::dhcp
-#line 2124 "dhcp4_parser.h" // lalr1.cc:377
+#line 2146 "dhcp4_parser.h" // lalr1.cc:377
 
 
 
index 5fa0df8e9c7c1702264ee26a2a65f62189f58d40..5adf7ed36976dbdf9bf87963684e9b79005f0a8f 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701031624
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Locations for Bison parsers in C++
index 90205858a483be1fa9892c8b5c913d7204c8be06..f3aea1451a820b662b5f227d72964cc052dd6a02 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701031624
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Positions for Bison parsers in C++
index 3f47b56e18c573b1b70d2f9d501c1cf05e73063d..1c3a29746a9189ffbe34b1a1f0a35c2511aa60b5 100644 (file)
@@ -1,4 +1,4 @@
-// Generated 201612201711
+// Generated 201701031624
 // A Bison parser, made by GNU Bison 3.0.4.
 
 // Stack handling for Bison parsers in C++