[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] libxl: update flex output files



Libxl ships output files from flex (libxlu_*_l.{c,h}). We use the flex
shipped in Debian to generate those files. Debian just patched their
flex (DSA 3653-1) to fix CVE-2016-6354, which is a buffer overrun bug.

Note that libxl is _NOT_ vulnerable to that CVE. See below for Ian's
analysis to security@xen.

It would still be nice that we update our shipped flex output files to
avoid confusion.

===QUOTE===

The bug is that with input >16K[1] flex would usually fail to resize
the input buffer, and then overrun it.

I have read the code in libxlu_cfg_l.c to try to understand the
implications for libxl.

AFAICT
 - libxl always does config file reading _from the file_ itself, and
   provides flex with a string or buffer.
 - so we always call whatever_yy_scan_bytes, not any other flex setup
   function to set up a `buffer' (as flex calls it)
 - yy_scan_bytes calls yy_scan_buffer to set up the buffer
 - yy_scan_buffer sets b->yy_fill_buffer
 - The effect of this is that yy_get_next_buffer will always
   return early, rather than continuing on to the vulnerable code.

So I think libxl is not vulnerable, regardless of the contents of the
configuration file.

[1] the default buffer size, or whatever other buffer size is
configured (but we don't change it)

===ENDQUOTE===

Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
 tools/libxl/libxlu_cfg_l.c  |   2 +-
 tools/libxl/libxlu_disk_l.c | 906 +++++++++++++++++++++++++-------------------
 tools/libxl/libxlu_disk_l.h |   2 +-
 3 files changed, 519 insertions(+), 391 deletions(-)

diff --git a/tools/libxl/libxlu_cfg_l.c b/tools/libxl/libxlu_cfg_l.c
index 2d2be39..7fedd41 100644
--- a/tools/libxl/libxlu_cfg_l.c
+++ b/tools/libxl/libxlu_cfg_l.c
@@ -1173,7 +1173,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
        else
                {
-                       yy_size_t num_to_read =
+                       int num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move 
- 1;
 
                while ( num_to_read <= 0 )
diff --git a/tools/libxl/libxlu_disk_l.c b/tools/libxl/libxlu_disk_l.c
index d15d7d6..06f839e 100644
--- a/tools/libxl/libxlu_disk_l.c
+++ b/tools/libxl/libxlu_disk_l.c
@@ -362,8 +362,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t 
yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 29
-#define YY_END_OF_BUFFER 30
+#define YY_NUM_RULES 36
+#define YY_END_OF_BUFFER 37
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,96 +371,114 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_acclist[490] =
+static yyconst flex_int16_t yy_acclist[575] =
     {   0,
-       28,   28,   30,   26,   27,   29, 8193,   26,   27,   29,
-    16385, 8193,   26,   29,16385,   26,   27,   29,   27,   29,
-       26,   27,   29,   26,   27,   29,   26,   27,   29,   26,
-       27,   29,   26,   27,   29,   26,   27,   29,   26,   27,
-       29,   26,   27,   29,   26,   27,   29,   26,   27,   29,
-       26,   27,   29,   26,   27,   29,   26,   27,   29,   26,
-       27,   29,   26,   27,   29,   28,   29,   29,   26,   26,
-     8193,   26, 8193,   26,16385, 8193,   26, 8193,   26,   26,
-     8217,   26,16409,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-
-       26,   26,   26,   26,   28, 8193,   26, 8193,   26, 8193,
-     8217,   26, 8217,   26, 8217,   16,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
-       26,   26,   26,   26,   26,   26,   26, 8217,   26, 8217,
-       26, 8217,   16,   26,   21, 8217,   26,16409,   26,   26,
-       26,   26,   26,   26,   26,   26,   26, 8210, 8217,   26,
-    16402,16409,   26,   24, 8217,   26,16409,   26, 8209, 8217,
-       26,16401,16409,   26,   26, 8212, 8217,   26,16404,16409,
-       26,   26,   26,   26,   21, 8217,   26,   21, 8217,   26,
-       21,   26,   21, 8217,   26,    3,   26,   26,   26,   26,
-
-       23, 8217,   26,16409,   26,   26, 8210, 8217,   26, 8210,
-     8217,   26, 8210,   26, 8210, 8217,   26,   24, 8217,   26,
-       24, 8217,   26,   24,   26,   24, 8217, 8209, 8217,   26,
-     8209, 8217,   26, 8209,   26, 8209, 8217,   26, 8212, 8217,
-       26, 8212, 8217,   26, 8212,   26, 8212, 8217,   26,   26,
-       10,   26,   21, 8217,   26,   21, 8217,   26,   21, 8217,
-       21,   26,   21,   26,    3,   26,   26,   26,   26,   23,
-     8217,   26,   23, 8217,   26,   23,   26,   23, 8217,   26,
-       22, 8217,   26,16409, 8210, 8217,   26, 8210, 8217,   26,
-     8210, 8217, 8210,   26, 8210,   26,   24, 8217,   26,   24,
-
-     8217,   26,   24, 8217,   24,   26,   24, 8209, 8217,   26,
-     8209, 8217,   26, 8209, 8217, 8209,   26, 8209,   26, 8212,
-     8217,   26, 8212, 8217,   26, 8212, 8217, 8212,   26, 8212,
-       26,   26,   10,   16,   10,    7,   26,   26,   26,   13,
-       26,   23, 8217,   26,   23, 8217,   26,   23, 8217,   23,
-       26,   23,    2,   22, 8217,   26,   22, 8217,   26,   22,
-       26,   22, 8217,   26,   11,   26,   15,   10,   10,   16,
-        7,   16,    7,    8,   26,    6,   26,   13,   26,    2,
-       16,    2,   22, 8217,   26,   22, 8217,   26,   22, 8217,
-       22,   26,   22,   26,   11,   16,   11,   19, 8217,   26,
-
-    16409,   15,   16,   15,    7,    7,   16,    8,   16,    8,
-       26,    6,   16,    6,    6,   16,    6,   16,   26,    2,
-        2,   16,   26,   11,   11,   16,   19, 8217,   26,   19,
-     8217,   26,   19,   26,   19, 8217,   15,   16,    8,    8,
-       16,   26,    6,    6,   16,    6,    6,   26,   14,   26,
-       19, 8217,   26,   19, 8217,   26,   19, 8217,   19,   26,
-       19,   26,    6,    6,   26,   14,   26,    9,    6,    5,
-        6,   26,    9,   16,    9,    4,    6,    5,    6,   26,
-        9,    9,   16,    4,    6,   12,   26,   12,   26
+       35,   35,   37,   33,   34,   36, 8193,   33,   34,   36,
+    16385, 8193,   33,   36,16385,   33,   34,   36,   34,   36,
+       33,   34,   36,   33,   34,   36,   33,   34,   36,   33,
+       34,   36,   33,   34,   36,   33,   34,   36,   33,   34,
+       36,   33,   34,   36,   33,   34,   36,   33,   34,   36,
+       33,   34,   36,   33,   34,   36,   33,   34,   36,   33,
+       34,   36,   33,   34,   36,   33,   34,   36,   35,   36,
+       36,   33,   33, 8193,   33, 8193,   33,16385, 8193,   33,
+     8193,   33,   33, 8224,   33,16416,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   35,
+     8193,   33, 8193,   33, 8193, 8224,   33, 8224,   33, 8224,
+       23,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33, 8224,   33, 8224,   33, 8224,
+       23,   33,   33,   28, 8224,   33,16416,   33,   33,   15,
+       33,   33,   33,   33,   33,   33,   33,   33,   33, 8217,
+     8224,   33,16409,16416,   33,   33,   31, 8224,   33,16416,
+       33, 8216, 8224,   33,16408,16416,   33,   33, 8219, 8224,
+       33,16411,16416,   33,   33,   33,   33,   33,   28, 8224,
+
+       33,   28, 8224,   33,   28,   33,   28, 8224,   33,    3,
+       33,   15,   33,   33,   33,   33,   33,   30, 8224,   33,
+    16416,   33,   33,   33, 8217, 8224,   33, 8217, 8224,   33,
+     8217,   33, 8217, 8224,   33,   33,   31, 8224,   33,   31,
+     8224,   33,   31,   33,   31, 8224, 8216, 8224,   33, 8216,
+     8224,   33, 8216,   33, 8216, 8224,   33, 8219, 8224,   33,
+     8219, 8224,   33, 8219,   33, 8219, 8224,   33,   33,   10,
+       33,   33,   28, 8224,   33,   28, 8224,   33,   28, 8224,
+       28,   33,   28,   33,    3,   33,   33,   33,   33,   33,
+       33,   33,   30, 8224,   33,   30, 8224,   33,   30,   33,
+
+       30, 8224,   33,   33,   29, 8224,   33,16416, 8217, 8224,
+       33, 8217, 8224,   33, 8217, 8224, 8217,   33, 8217,   33,
+       33,   31, 8224,   33,   31, 8224,   33,   31, 8224,   31,
+       33,   31, 8216, 8224,   33, 8216, 8224,   33, 8216, 8224,
+     8216,   33, 8216,   33, 8219, 8224,   33, 8219, 8224,   33,
+     8219, 8224, 8219,   33, 8219,   33,   33,   10,   23,   10,
+        7,   33,   33,   33,   33,   33,   33,   33,   13,   33,
+       30, 8224,   33,   30, 8224,   33,   30, 8224,   30,   33,
+       30,    2,   33,   29, 8224,   33,   29, 8224,   33,   29,
+       33,   29, 8224,   16,   33,   33,   11,   33,   22,   10,
+
+       10,   23,    7,   23,    7,   33,    8,   33,   33,   33,
+       33,    6,   33,   13,   33,    2,   23,    2,   33,   29,
+     8224,   33,   29, 8224,   33,   29, 8224,   29,   33,   29,
+       16,   33,   33,   11,   23,   11,   26, 8224,   33,16416,
+       22,   23,   22,    7,    7,   23,   33,    8,   23,    8,
+       33,   33,   33,   33,    6,   23,    6,    6,   23,    6,
+       23,   33,    2,    2,   23,   33,   33,   11,   11,   23,
+       26, 8224,   33,   26, 8224,   33,   26,   33,   26, 8224,
+       22,   23,   33,    8,    8,   23,   33,   33,   17,   18,
+        6,    6,   23,    6,    6,   33,   33,   14,   33,   26,
+
+     8224,   33,   26, 8224,   33,   26, 8224,   26,   33,   26,
+       33,   33,   33,   17,   23,   17,   18,   23,   18,    6,
+        6,   33,   33,   14,   33,   20,    9,   19,   17,   17,
+       23,   18,   18,   23,    6,    5,    6,   33,   21,   20,
+       23,   20,    9,   23,    9,   19,   23,   19,    4,    6,
+        5,    6,   33,   21,   23,   21,   20,   20,   23,    9,
+        9,   23,   19,   19,   23,    4,    6,   12,   33,   21,
+       21,   23,   12,   33
     } ;
 
-static yyconst flex_int16_t yy_accept[287] =
+static yyconst flex_int16_t yy_accept[356] =
     {   0,
         1,    1,    1,    2,    3,    4,    7,   12,   16,   19,
        21,   24,   27,   30,   33,   36,   39,   42,   45,   48,
-       51,   54,   57,   60,   63,   66,   68,   69,   70,   71,
-       73,   76,   78,   79,   80,   81,   84,   84,   85,   86,
-       87,   88,   89,   90,   91,   92,   93,   94,   95,   96,
-       97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
-      108,  110,  111,  113,  115,  116,  117,  118,  119,  120,
-      121,  122,  123,  124,  125,  126,  127,  128,  129,  130,
-      131,  132,  133,  134,  135,  136,  137,  138,  140,  142,
-      143,  144,  145,  149,  150,  151,  152,  153,  154,  155,
-
-      156,  157,  158,  163,  164,  168,  169,  174,  175,  176,
-      181,  182,  183,  184,  185,  188,  191,  193,  195,  196,
-      198,  199,  200,  201,  205,  206,  207,  210,  213,  215,
-      217,  218,  221,  224,  226,  228,  231,  234,  236,  238,
-      239,  242,  245,  247,  249,  250,  251,  252,  253,  256,
-      259,  261,  263,  264,  265,  267,  268,  269,  270,  273,
-      276,  278,  280,  281,  285,  288,  291,  293,  295,  296,
-      297,  300,  303,  305,  307,  308,  311,  314,  316,  318,
-      319,  320,  323,  326,  328,  330,  331,  332,  333,  335,
-      336,  337,  338,  339,  340,  342,  345,  348,  350,  352,
-
-      353,  354,  357,  360,  362,  364,  365,  366,  367,  368,
-      369,  371,  373,  374,  375,  376,  377,  378,  380,  382,
-      383,  386,  389,  391,  393,  394,  395,  397,  398,  402,
-      404,  405,  406,  408,  410,  411,  412,  414,  415,  417,
-      419,  420,  421,  423,  424,  425,  427,  430,  433,  435,
-      437,  439,  440,  442,  443,  444,  446,  447,  448,  449,
-      451,  454,  457,  459,  461,  462,  463,  464,  465,  466,
-      468,  469,  470,  472,  473,  475,  476,  478,  480,  481,
-      482,  484,  486,  488,  490,  490
+       51,   54,   57,   60,   63,   66,   69,   71,   72,   73,
+       74,   76,   79,   81,   82,   83,   84,   87,   87,   88,
+       89,   90,   91,   92,   93,   94,   95,   96,   97,   98,
+       99,  100,  101,  102,  103,  104,  105,  106,  107,  108,
+      109,  110,  111,  113,  115,  116,  118,  120,  121,  122,
+      123,  124,  125,  126,  127,  128,  129,  130,  131,  132,
+      133,  134,  135,  136,  137,  138,  139,  140,  141,  142,
+      143,  144,  145,  146,  148,  150,  151,  152,  153,  154,
+
+      158,  159,  160,  162,  163,  164,  165,  166,  167,  168,
+      169,  170,  175,  176,  177,  181,  182,  187,  188,  189,
+      194,  195,  196,  197,  198,  199,  202,  205,  207,  209,
+      210,  212,  214,  215,  216,  217,  218,  222,  223,  224,
+      225,  228,  231,  233,  235,  236,  237,  240,  243,  245,
+      247,  250,  253,  255,  257,  258,  261,  264,  266,  268,
+      269,  270,  271,  272,  273,  276,  279,  281,  283,  284,
+      285,  287,  288,  289,  290,  291,  292,  293,  296,  299,
+      301,  303,  304,  305,  309,  312,  315,  317,  319,  320,
+      321,  322,  325,  328,  330,  332,  333,  336,  339,  341,
+
+      343,  344,  345,  348,  351,  353,  355,  356,  357,  358,
+      360,  361,  362,  363,  364,  365,  366,  367,  368,  369,
+      371,  374,  377,  379,  381,  382,  383,  384,  387,  390,
+      392,  394,  396,  397,  398,  399,  400,  401,  403,  405,
+      406,  407,  408,  409,  410,  411,  412,  413,  414,  416,
+      418,  419,  420,  423,  426,  428,  430,  431,  433,  434,
+      436,  437,  441,  443,  444,  445,  447,  448,  450,  451,
+      452,  453,  454,  455,  457,  458,  460,  462,  463,  464,
+      466,  467,  468,  469,  471,  474,  477,  479,  481,  483,
+      484,  485,  487,  488,  489,  490,  491,  492,  494,  495,
+
+      496,  497,  498,  500,  503,  506,  508,  510,  511,  512,
+      513,  514,  516,  517,  519,  520,  521,  522,  523,  524,
+      526,  527,  528,  529,  530,  532,  533,  535,  536,  538,
+      539,  540,  542,  543,  545,  546,  548,  549,  551,  553,
+      554,  556,  557,  558,  560,  561,  563,  564,  566,  568,
+      570,  571,  573,  575,  575
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -477,8 +495,8 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1,    1,   10,   11,   12,   13,
 
        14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
-       24,   25,   26,   27,   28,   29,   30,   31,   32,   19,
-       33,   19,    1,    1,    1,    1,    1,    1,    1,    1,
+       24,   25,   26,   27,   28,   29,   30,   31,   32,   33,
+       34,   19,    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,
@@ -495,270 +513,328 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[34] =
+static yyconst flex_int32_t yy_meta[35] =
     {   0,
         1,    1,    2,    3,    1,    1,    1,    1,    4,    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
     } ;
 
-static yyconst flex_int16_t yy_base[345] =
+static yyconst flex_int16_t yy_base[424] =
     {   0,
-        0,    0,  714,  713,  715,  700,   32,   35,  718,  718,
-       44,   62,   30,   41,   50,   51,  690,   64,   66,   40,
-       68,  674,   69,  662,   72,    0,  718,  640,  718,   90,
-       93,    0,    0,  102,  622,  111,    0,   74,   77,   88,
-       81,   97,   99,  107,  111,  113,  114,   44,  119,  120,
-      127,  115,  125,  126,  128,  129,  130,  132,    0,  143,
-        0,    0,  156,    0,    0,  616,  143,  153,  152,  140,
-      141,  157,  156,  163,  164,  159,  165,  167,  172,  195,
-      175,  169,  176,  182,  181,  195,  183,  203,    0,    0,
-      718,  192,  220,  199,  205,  200,  206,  606,  209,  602,
-
-      216,  220,  246,  218,  255,  227,  264,  251,  231,  276,
-      222,  260,  233,  234,  279,    0,  283,    0,  279,  286,
-      281,  242,  283,  310,  265,  287,  295,    0,  313,    0,
-      292,  320,    0,  322,    0,  324,    0,  331,    0,  320,
-      333,    0,  335,    0,  293,  322,  604,  291,  343,    0,
-        0,    0,    0,  335,  718,  340,  348,  346,  357,    0,
-      359,    0,  298,  368,  371,    0,    0,    0,    0,  352,
-      375,    0,    0,    0,    0,  378,    0,    0,    0,    0,
-      376,  385,    0,    0,    0,    0,  347,  381,  596,  718,
-      588,  383,  386,  384,  394,  396,    0,    0,    0,    0,
-
-      580,  404,    0,  406,    0,  393,  572,  333,  413,  564,
-      718,  556,  718,  544,  391,  407,  401,  718,  516,  718,
-      418,    0,    0,    0,    0,  405,  509,  718,  432,  500,
-        0,  492,  718,  474,  718,  413,  473,  718,  426,  424,
-      240,  472,  718,  461,  425,  718,  440,    0,  442,    0,
-        0,  379,  718,  438,  351,  718,  427,  422,  434,  451,
-      454,    0,    0,    0,    0,  450,  449,  452,  455,  718,
-      305,  457,  186,  454,  139,  718,   79,  718,  457,   38,
-      718,  718,  462,  718,  718,  479,  483,  486,  490,  494,
-      498,  502,  506,  510,  514,  518,  522,  526,  530,  534,
-
-      538,  542,  546,  550,  554,  558,  562,  566,  570,  574,
-      578,  582,  586,  590,  594,  598,  602,  606,  610,  614,
-      618,  622,  626,  630,  634,  638,  642,  646,  650,  654,
-      658,  662,  666,  670,  674,  678,  682,  686,  690,  694,
-      698,  702,  706,  710
+        0,    0,  901,  900,  902,  897,   33,   36,  905,  905,
+       45,   63,   31,   42,   51,   52,  890,   33,   65,   67,
+       69,   70,  889,   71,  888,   75,    0,  905,  893,  905,
+       91,   94,    0,    0,  103,  886,  112,    0,   89,   98,
+      113,   92,  114,   99,  100,   48,  121,  116,  119,   74,
+      124,  129,  123,  135,  132,  133,  137,  134,  138,  139,
+      141,    0,  155,    0,    0,  164,    0,    0,  849,  142,
+      152,  164,  140,  161,  165,  166,  167,  168,  169,  173,
+      174,  178,  176,  180,  184,  208,  189,  183,  192,  195,
+      215,  191,  193,  223,    0,    0,  905,  208,  204,  236,
+
+      219,  209,  238,  196,  237,  831,  242,  815,  241,  224,
+      243,  261,  244,  259,  277,  266,  286,  250,  288,  298,
+      249,  283,  274,  282,  294,  308,    0,  310,    0,  295,
+      305,  905,  308,  306,  313,  314,  342,  319,  316,  320,
+      331,    0,  349,    0,  342,  344,  356,    0,  358,    0,
+      365,    0,  367,    0,  354,  375,    0,  377,    0,  363,
+      356,  809,  327,  322,  384,    0,    0,    0,    0,  379,
+      905,  382,  384,  386,  390,  372,  392,  403,    0,  410,
+        0,  407,  413,  423,  426,    0,    0,    0,    0,  409,
+      424,  435,    0,    0,    0,    0,  437,    0,    0,    0,
+
+        0,  433,  444,    0,    0,    0,    0,  391,  440,  781,
+      905,  769,  439,  445,  444,  447,  449,  454,  453,  399,
+      464,    0,    0,    0,    0,  757,  465,  476,    0,  478,
+        0,  479,  476,  753,  462,  490,  749,  905,  745,  905,
+      483,  737,  424,  485,  487,  490,  500,  493,  905,  729,
+      905,  502,  518,    0,    0,    0,    0,  905,  498,  721,
+      905,  527,  713,    0,  705,  905,  495,  697,  905,  365,
+      521,  528,  530,  685,  905,  534,  540,  540,  657,  905,
+      537,  542,  650,  905,  553,    0,  557,    0,    0,  551,
+      641,  905,  558,  557,  633,  614,  613,  905,  547,  555,
+
+      563,  565,  569,  584,    0,    0,    0,    0,  583,  570,
+      585,  612,  905,  601,  905,  522,  580,  589,  594,  905,
+      600,  585,  563,  520,  905,  514,  905,  586,  486,  597,
+      480,  441,  905,  416,  905,  345,  905,  334,  905,  601,
+      254,  905,  242,  905,  200,  905,  151,  905,  905,  607,
+       86,  905,  905,  905,  620,  624,  627,  631,  635,  639,
+      643,  647,  651,  655,  659,  663,  667,  671,  675,  679,
+      683,  687,  691,  695,  699,  703,  707,  711,  715,  719,
+      723,  727,  731,  735,  739,  743,  747,  751,  755,  759,
+      763,  767,  771,  775,  779,  783,  787,  791,  795,  799,
+
+      803,  807,  811,  815,  819,  823,  827,  831,  835,  839,
+      843,  847,  851,  855,  859,  863,  867,  871,  875,  879,
+      883,  887,  891
     } ;
 
-static yyconst flex_int16_t yy_def[345] =
+static yyconst flex_int16_t yy_def[424] =
     {   0,
-      285,    1,  286,  286,  285,  287,  288,  288,  285,  285,
-      289,  289,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,  290,  285,  287,  285,  291,
-      288,  292,  292,  293,   12,  287,  294,   12,   12,   12,
+      354,    1,  355,  355,  354,  356,  357,  357,  354,  354,
+      358,  358,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,  359,  354,  356,  354,
+      360,  357,  361,  361,  362,   12,  356,  363,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,  290,  291,
-      292,  292,  295,  296,  296,  285,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,  293,
-       12,   12,   12,   12,   12,   12,   12,  295,  296,  296,
-      285,   12,  297,   12,   12,   12,   12,   12,   12,   12,
-
-       12,   12,  298,   80,  299,   12,  300,   12,   12,  301,
-       12,   12,   12,   12,  302,  303,  297,  303,   12,   12,
-       12,   12,   12,  304,   12,   12,  305,  306,  298,  306,
-       80,  307,  308,  299,  308,  309,  310,  300,  310,   12,
-      311,  312,  301,  312,   12,   12,  313,   12,  302,  303,
-      303,  314,  314,   12,  285,   12,   12,   12,  315,  316,
-      304,  316,   12,  317,  305,  306,  306,  318,  318,   80,
-      307,  308,  308,  319,  319,  309,  310,  310,  320,  320,
-       12,  311,  312,  312,  321,  321,   12,   12,  322,  285,
-      323,   12,   12,   80,   12,  315,  316,  316,  324,  324,
-
-      325,  326,  327,  317,  327,   80,  328,   12,  329,  322,
-      285,  330,  285,  331,   12,  332,   80,  285,  333,  285,
-      326,  327,  327,  334,  334,   80,  335,  285,  336,  337,
-      337,  330,  285,  338,  285,   12,  339,  285,  339,  339,
-       80,  333,  285,   80,  335,  285,  340,  341,  336,  341,
-      337,  338,  285,   12,  339,  285,  339,  339,   80,   80,
-      340,  341,  341,  342,  342,   12,  339,  339,   80,  285,
-      343,  339,  339,   80,  344,  285,  339,  285,   80,  344,
-      285,  285,   80,  285,    0,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,  359,  360,  361,  361,  364,  365,  365,  354,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,  362,   12,   12,   12,   12,
+       12,   12,   12,  364,  365,  365,  354,   12,   12,  366,
+
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,  367,   86,   86,  368,   12,  369,   12,   12,  370,
+       12,   12,   12,   12,   12,  371,  372,  366,  372,   12,
+       12,  354,   86,   12,   12,   12,  373,   12,   12,   12,
+      374,  375,  367,  375,   86,   86,  376,  377,  368,  377,
+      378,  379,  369,  379,   12,  380,  381,  370,  381,   12,
+       12,  382,   12,   12,  371,  372,  372,  383,  383,   12,
+      354,   86,   86,   86,   12,   12,   12,  384,  385,  373,
+      385,   12,   12,  386,  374,  375,  375,  387,  387,   86,
+       86,  376,  377,  377,  388,  388,  378,  379,  379,  389,
+
+      389,   12,  380,  381,  381,  390,  390,   12,   12,  391,
+      354,  392,   86,   12,   86,   86,   86,   12,   86,   12,
+      384,  385,  385,  393,  393,  394,   86,  395,  396,  386,
+      396,   86,   86,  397,   12,  398,  391,  354,  399,  354,
+       86,  400,   12,   86,   86,   86,  401,   86,  354,  402,
+      354,   86,  395,  396,  396,  403,  403,  354,   86,  404,
+      354,  405,  406,  406,  399,  354,   86,  407,  354,   12,
+       86,   86,   86,  408,  354,  408,  408,   86,  402,  354,
+       86,   86,  404,  354,  409,  410,  405,  410,  406,   86,
+      407,  354,   12,   86,  411,  412,  408,  354,  408,  408,
+
+       86,   86,   86,  409,  410,  410,  413,  413,   86,   12,
+       86,  414,  354,  415,  354,  408,  408,   86,   86,  354,
+      416,  417,  418,  414,  354,  415,  354,  408,  408,   86,
+      419,  420,  354,  421,  354,  422,  354,  408,  354,   86,
+      423,  354,  420,  354,  421,  354,  422,  354,  354,   86,
+      423,  354,  354,    0,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354
     } ;
 
-static yyconst flex_int16_t yy_nxt[752] =
+static yyconst flex_int16_t yy_nxt[940] =
     {   0,
         6,    7,    8,    9,    6,    6,    6,    6,   10,   11,
-       12,   13,   14,   15,   16,   17,   17,   18,   17,   17,
-       17,   17,   19,   17,   20,   21,   22,   23,   24,   17,
-       25,   17,   17,   31,   31,   32,   31,   31,   32,   35,
-       33,  276,   41,   33,   28,   28,   28,   29,   34,   35,
-       35,   36,   37,   35,   42,   38,   52,   77,   43,   35,
-       35,   39,   28,   28,   28,   29,   34,   44,   46,   36,
-       37,   40,   45,   35,   47,   35,   50,   35,   35,   53,
-       55,   35,  282,   35,   57,   67,   35,   48,   58,   51,
-       35,   49,   28,   61,   31,   31,   32,   35,   62,   69,
-
-       68,   33,   28,   28,   28,   29,   35,   70,   35,   28,
-       37,   63,   63,   63,   64,   63,   35,   74,   63,   65,
-       35,   50,   35,   35,   35,   72,   73,   71,   35,   35,
-       78,   80,   79,   75,   35,   35,   35,   35,   35,   35,
-       76,   35,  281,   87,   83,   28,   61,   81,   82,   35,
-       35,   62,   35,   85,   84,   86,   92,   83,   28,   89,
-       93,   35,   35,   95,   90,   35,   35,   98,   35,   96,
-       97,   94,   35,   35,   35,   79,   35,   99,   35,  103,
-      100,   35,  105,  107,   35,   35,  101,  109,  110,  278,
-       35,   35,   35,  111,  102,   28,   28,   28,   29,  108,
-
-      106,   35,   28,   37,   35,   28,   89,  104,   35,   35,
-      112,   90,  119,  113,   35,   35,  124,  122,   35,  114,
-      115,  115,   63,  116,  115,   35,  120,  115,  118,   35,
-       34,   35,  121,   83,  107,  131,   35,   79,  110,  145,
-       35,  147,   35,   35,  259,  126,  127,  127,   63,  128,
-      127,   35,   34,  127,  130,  132,  132,   63,  133,  132,
-       35,  148,  132,  135,  136,  136,   63,  137,  136,   35,
-      157,  136,  139,  146,   35,  140,  141,  141,   63,  142,
-      141,   28,  150,  141,  144,   28,  152,  151,   35,  155,
-       35,  153,   35,  163,  164,   35,   35,   28,  166,  191,
-
-       35,  154,   35,  167,   34,  156,  201,   35,  276,  158,
-      159,  159,   63,  160,  159,   28,  168,  159,  162,  170,
-      187,  169,   28,  172,   28,  174,   28,  177,  173,   35,
-      175,   35,  178,   28,  179,   28,  183,   28,  185,  180,
-      229,  184,   35,  186,   35,   28,  150,  192,  181,   35,
-      188,  151,  194,  193,  238,   35,   35,   35,  195,   28,
-      197,   28,  199,  206,   34,  198,  208,  200,  202,  202,
-       63,  203,  202,   28,  166,  202,  205,   28,  172,  167,
-       28,  177,  235,  173,  207,   35,  178,   28,  183,  209,
-       35,  214,   35,  184,  216,   35,   34,  218,   28,  197,
-
-       35,  217,  226,   35,  198,   34,   28,  222,   28,  224,
-      238,  215,  223,   34,  225,   66,  231,   34,  239,  240,
-       28,  222,   35,  236,  241,  238,  223,  256,  228,  256,
-      238,  244,  247,  247,   63,  248,  247,  254,  257,  247,
-      250,  258,   28,  262,   28,  264,   34,   35,  263,  268,
-      265,  266,  238,  267,  270,  238,   28,  262,  271,   35,
-      238,  269,  263,   34,  274,  284,   34,   34,  279,   34,
-      283,  273,  272,  260,   34,  220,  256,  253,  277,   26,
-       26,   26,   26,   28,   28,   28,   30,   30,   30,   30,
-       35,   35,   35,   35,   59,  213,   59,   59,   60,   60,
-
-       60,   60,   62,  251,   62,   62,   34,   34,   34,   34,
-       66,   66,  246,   66,   88,   88,   88,   88,   90,  243,
-       90,   90,  117,  117,  117,  117,  129,  129,  129,  129,
-      134,  134,  134,  134,  138,  138,  138,  138,  143,  143,
-      143,  143,  149,  149,  149,  149,  151,  235,  151,  151,
-      161,  161,  161,  161,  165,  165,  165,  165,  167,  233,
-      167,  167,  171,  171,  171,  171,  173,  190,  173,  173,
-      176,  176,  176,  176,  178,  228,  178,  178,  182,  182,
-      182,  182,  184,  220,  184,  184,  189,  189,  189,  189,
-      153,  213,  153,  153,  196,  196,  196,  196,  198,  211,
-
-      198,  198,  204,  204,  204,  204,  169,  190,  169,  169,
-      175,  125,  175,  175,  180,  123,  180,  180,  186,   91,
-      186,  186,  210,  210,  210,  210,  212,  212,  212,  212,
-      200,   35,  200,  200,  219,  219,  219,  219,  221,  221,
-      221,  221,  223,   29,  223,  223,  227,  227,  227,  227,
-      230,  230,  230,  230,  232,  232,  232,  232,  234,  234,
-      234,  234,  237,  237,  237,  237,  242,  242,  242,  242,
-      225,   56,  225,  225,  245,  245,  245,  245,  249,  249,
-      249,  249,  231,   54,  231,  231,  252,  252,  252,  252,
-      255,  255,  255,  255,  261,  261,  261,  261,  263,   35,
-
-      263,  263,  265,   29,  265,  265,  275,  275,  275,  275,
-      280,  280,  280,  280,  285,   27,   27,    5,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285
+       12,   13,   14,   15,   16,   17,   18,   19,   17,   17,
+       17,   17,   20,   17,   21,   22,   23,   24,   25,   17,
+       26,   17,   17,   17,   32,   32,   33,   32,   32,   33,
+       36,   34,   36,   42,   34,   29,   29,   29,   30,   35,
+       50,   36,   37,   38,   43,   44,   39,   36,   79,   45,
+       36,   36,   40,   29,   29,   29,   30,   35,   46,   48,
+       37,   38,   41,   47,   36,   49,   36,   53,   36,   36,
+       36,   56,   58,   36,   36,   55,   82,   60,   51,  342,
+       54,   61,   52,   29,   64,   32,   32,   33,   36,   65,
+
+       70,   36,   34,   29,   29,   29,   30,   36,   36,   36,
+       29,   38,   66,   66,   66,   67,   66,   71,   74,   66,
+       68,   72,   36,   36,   73,   36,   77,   78,   36,   76,
+       36,   53,   36,   36,   75,   85,   80,   83,   36,   86,
+       84,   36,   36,   36,   36,   81,   36,   36,   36,   36,
+       36,   36,   93,   89,  337,   98,   88,   29,   64,  101,
+       90,   36,   91,   65,   92,   87,   29,   95,   89,   99,
+       36,  100,   96,   36,   36,   36,   36,   36,   36,  106,
+      105,   85,   36,   36,  102,   36,  107,   36,  103,   36,
+      109,  112,   36,   36,  104,  108,  115,  110,   36,  117,
+
+       36,   36,   36,  335,   36,   36,  122,  111,   29,   29,
+       29,   30,  118,   36,  116,   29,   38,   36,   36,  113,
+      114,  119,  120,  123,   36,   29,   95,  121,   36,  134,
+      131,   96,  130,   36,  125,  124,  126,  126,   66,  127,
+      126,  132,  133,  126,  129,  333,   36,   36,  135,  137,
+       36,   36,   36,  140,  139,   35,   35,  352,   36,   36,
+       85,  141,  141,   66,  142,  141,  160,  145,  141,  144,
+       35,   35,   89,  117,  155,   36,  146,  147,  147,   66,
+      148,  147,  162,   36,  147,  150,  151,  151,   66,  152,
+      151,   36,   36,  151,  154,  120,  161,   36,  156,  156,
+
+       66,  157,  156,   36,   36,  156,  159,  164,  171,  163,
+       29,  166,   29,  168,   36,   36,  167,  170,  169,   35,
+       35,  172,   36,   36,  173,   36,  213,  184,   36,   36,
+      175,   36,  174,   29,  186,  212,   36,  349,  183,  187,
+      177,  176,  178,  178,   66,  179,  178,  182,  348,  178,
+      181,   29,  188,   35,   35,   35,   35,  189,   29,  193,
+       29,  195,  190,   36,  194,   36,  196,   29,  198,   29,
+      200,  191,   36,  199,   36,  201,  219,   29,  204,   29,
+      206,   36,  202,  205,  209,  207,   29,  166,   36,  293,
+      208,  214,  167,   35,   35,   35,   35,   35,   35,   36,
+
+       36,   36,  249,  218,  220,   29,  222,  216,   36,  217,
+      235,  223,   29,  224,  215,  226,   36,  227,  225,  346,
+       35,   35,   36,  228,  228,   66,  229,  228,   29,  186,
+      228,  231,  232,   36,  187,  233,   35,   29,  193,   29,
+      198,  234,   36,  194,  344,  199,   29,  204,  236,   36,
+       35,  241,  205,  242,   36,   35,   35,  270,   35,   35,
+       35,   35,  247,   36,   35,   35,   29,  222,  244,  262,
+      248,   36,  223,  243,  245,  246,   35,  252,   29,  254,
+       29,  256,  258,  342,  255,  259,  257,   35,   35,  339,
+       35,   35,   69,  264,   35,   35,   35,   35,   35,   35,
+
+      267,   35,   35,  275,   35,   35,   35,   35,  271,   35,
+       35,  276,  277,   35,   35,  272,  278,  315,  273,  281,
+       29,  254,  290,  313,  282,  275,  255,  285,  285,   66,
+      286,  285,   35,   35,  285,  288,  295,  298,  296,   35,
+       35,   35,   35,  298,  301,  328,  299,  294,   35,   35,
+      275,   35,   35,   35,  303,   29,  305,  300,  275,   29,
+      307,  306,   35,   35,  302,  308,  337,   36,   35,   35,
+      309,  310,  320,  316,   35,   35,   35,   35,  322,   36,
+       35,   35,  317,  275,  319,  311,   29,  305,  335,  275,
+      318,  321,  306,  323,   35,   35,   35,   35,  330,  329,
+
+       35,   35,  331,  333,  327,   35,   35,  338,   35,   35,
+      353,  340,   35,   35,  350,  325,  275,  315,   35,   35,
+       27,   27,   27,   27,   29,   29,   29,   31,   31,   31,
+       31,   36,   36,   36,   36,   62,  313,   62,   62,   63,
+       63,   63,   63,   65,  269,   65,   65,   35,   35,   35,
+       35,   69,   69,  261,   69,   94,   94,   94,   94,   96,
+      251,   96,   96,  128,  128,  128,  128,  143,  143,  143,
+      143,  149,  149,  149,  149,  153,  153,  153,  153,  158,
+      158,  158,  158,  165,  165,  165,  165,  167,  298,  167,
+      167,  180,  180,  180,  180,  185,  185,  185,  185,  187,
+
+      292,  187,  187,  192,  192,  192,  192,  194,  240,  194,
+      194,  197,  197,  197,  197,  199,  289,  199,  199,  203,
+      203,  203,  203,  205,  284,  205,  205,  210,  210,  210,
+      210,  169,  280,  169,  169,  221,  221,  221,  221,  223,
+      269,  223,  223,  230,  230,  230,  230,  189,  266,  189,
+      189,  196,  211,  196,  196,  201,  261,  201,  201,  207,
+      251,  207,  207,  237,  237,  237,  237,  239,  239,  239,
+      239,  225,  240,  225,  225,  250,  250,  250,  250,  253,
+      253,  253,  253,  255,  238,  255,  255,  260,  260,  260,
+      260,  263,  263,  263,  263,  265,  265,  265,  265,  268,
+
+      268,  268,  268,  274,  274,  274,  274,  279,  279,  279,
+      279,  257,  211,  257,  257,  283,  283,  283,  283,  287,
+      287,  287,  287,  264,  138,  264,  264,  291,  291,  291,
+      291,  297,  297,  297,  297,  304,  304,  304,  304,  306,
+      136,  306,  306,  312,  312,  312,  312,  314,  314,  314,
+      314,  308,   97,  308,  308,  324,  324,  324,  324,  326,
+      326,  326,  326,  332,  332,  332,  332,  334,  334,  334,
+      334,  336,  336,  336,  336,  341,  341,  341,  341,  343,
+      343,  343,  343,  345,  345,  345,  345,  347,  347,  347,
+      347,  351,  351,  351,  351,   36,   30,   59,   57,   36,
+
+       30,  354,   28,   28,    5,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354
     } ;
 
-static yyconst flex_int16_t yy_chk[752] =
+static yyconst flex_int16_t yy_chk[940] =
     {   0,
         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,    7,    7,    7,    8,    8,    8,   13,
-        7,  280,   13,    8,   11,   11,   11,   11,   11,   20,
-       14,   11,   11,   48,   14,   11,   20,   48,   14,   15,
-       16,   11,   12,   12,   12,   12,   12,   14,   16,   12,
-       12,   12,   15,   18,   16,   19,   19,   21,   23,   21,
-       23,   25,  277,   38,   25,   38,   39,   18,   25,   19,
-       41,   18,   30,   30,   31,   31,   31,   40,   30,   40,
-
-       39,   31,   34,   34,   34,   34,   42,   41,   43,   34,
-       34,   36,   36,   36,   36,   36,   44,   44,   36,   36,
-       45,   45,   46,   47,   52,   43,   43,   42,   49,   50,
-       49,   51,   50,   46,   53,   54,   51,   55,   56,   57,
-       47,   58,  275,   57,   58,   60,   60,   52,   53,   70,
-       71,   60,   67,   56,   55,   56,   67,   54,   63,   63,
-       68,   69,   68,   70,   63,   73,   72,   73,   76,   71,
-       72,   69,   74,   75,   77,   74,   78,   75,   82,   79,
-       76,   79,   81,   83,   81,   83,   77,   85,   85,  273,
-       85,   84,   87,   85,   78,   80,   80,   80,   80,   84,
-
-       82,   92,   80,   80,   86,   88,   88,   80,   94,   96,
-       86,   88,   94,   87,   95,   97,   99,   97,   99,   92,
-       93,   93,   93,   93,   93,  101,   95,   93,   93,  102,
-      104,  111,   96,  106,  106,  104,  106,  102,  109,  111,
-      109,  113,  113,  114,  241,  101,  103,  103,  103,  103,
-      103,  122,  241,  103,  103,  105,  105,  105,  105,  105,
-      108,  114,  105,  105,  107,  107,  107,  107,  107,  112,
-      122,  107,  107,  112,  125,  108,  110,  110,  110,  110,
-      110,  115,  115,  110,  110,  117,  117,  115,  119,  120,
-      121,  117,  123,  125,  126,  120,  126,  127,  127,  148,
-
-      148,  119,  145,  127,  131,  121,  163,  163,  271,  123,
-      124,  124,  124,  124,  124,  129,  129,  124,  124,  131,
-      145,  129,  132,  132,  134,  134,  136,  136,  132,  140,
-      134,  146,  136,  138,  138,  141,  141,  143,  143,  138,
-      208,  141,  208,  143,  154,  149,  149,  154,  140,  156,
-      146,  149,  157,  156,  255,  158,  187,  157,  158,  159,
-      159,  161,  161,  170,  170,  159,  187,  161,  164,  164,
-      164,  164,  164,  165,  165,  164,  164,  171,  171,  165,
-      176,  176,  252,  171,  181,  181,  176,  182,  182,  188,
-      188,  192,  192,  182,  193,  193,  194,  195,  196,  196,
-
-      215,  194,  206,  195,  196,  206,  202,  202,  204,  204,
-      216,  192,  202,  217,  204,  209,  209,  226,  216,  216,
-      221,  221,  236,  215,  217,  258,  221,  240,  245,  239,
-      257,  226,  229,  229,  229,  229,  229,  236,  239,  229,
-      229,  240,  247,  247,  249,  249,  259,  254,  247,  258,
-      249,  254,  267,  257,  260,  268,  261,  261,  266,  266,
-      272,  259,  261,  260,  269,  283,  274,  269,  274,  279,
-      279,  268,  267,  244,  283,  242,  237,  234,  272,  286,
-      286,  286,  286,  287,  287,  287,  288,  288,  288,  288,
-      289,  289,  289,  289,  290,  232,  290,  290,  291,  291,
-
-      291,  291,  292,  230,  292,  292,  293,  293,  293,  293,
-      294,  294,  227,  294,  295,  295,  295,  295,  296,  219,
-      296,  296,  297,  297,  297,  297,  298,  298,  298,  298,
-      299,  299,  299,  299,  300,  300,  300,  300,  301,  301,
-      301,  301,  302,  302,  302,  302,  303,  214,  303,  303,
-      304,  304,  304,  304,  305,  305,  305,  305,  306,  212,
-      306,  306,  307,  307,  307,  307,  308,  210,  308,  308,
-      309,  309,  309,  309,  310,  207,  310,  310,  311,  311,
-      311,  311,  312,  201,  312,  312,  313,  313,  313,  313,
-      314,  191,  314,  314,  315,  315,  315,  315,  316,  189,
-
-      316,  316,  317,  317,  317,  317,  318,  147,  318,  318,
-      319,  100,  319,  319,  320,   98,  320,  320,  321,   66,
-      321,  321,  322,  322,  322,  322,  323,  323,  323,  323,
-      324,   35,  324,  324,  325,  325,  325,  325,  326,  326,
-      326,  326,  327,   28,  327,  327,  328,  328,  328,  328,
-      329,  329,  329,  329,  330,  330,  330,  330,  331,  331,
-      331,  331,  332,  332,  332,  332,  333,  333,  333,  333,
-      334,   24,  334,  334,  335,  335,  335,  335,  336,  336,
-      336,  336,  337,   22,  337,  337,  338,  338,  338,  338,
-      339,  339,  339,  339,  340,  340,  340,  340,  341,   17,
-
-      341,  341,  342,    6,  342,  342,  343,  343,  343,  343,
-      344,  344,  344,  344,    5,    4,    3,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285,  285,  285,  285,  285,  285,  285,  285,  285,  285,
-      285
+        1,    1,    1,    1,    7,    7,    7,    8,    8,    8,
+       13,    7,   18,   13,    8,   11,   11,   11,   11,   11,
+       18,   14,   11,   11,   13,   14,   11,   46,   46,   14,
+       15,   16,   11,   12,   12,   12,   12,   12,   14,   16,
+       12,   12,   12,   15,   19,   16,   20,   20,   21,   22,
+       24,   22,   24,   50,   26,   21,   50,   26,   19,  351,
+       20,   26,   19,   31,   31,   32,   32,   32,   39,   31,
+
+       39,   42,   32,   35,   35,   35,   35,   40,   44,   45,
+       35,   35,   37,   37,   37,   37,   37,   39,   42,   37,
+       37,   40,   41,   43,   41,   48,   45,   45,   49,   44,
+       47,   47,   53,   51,   43,   53,   48,   51,   52,   54,
+       52,   55,   56,   58,   54,   49,   57,   59,   60,   73,
+       61,   70,   60,   61,  347,   70,   56,   63,   63,   73,
+       58,   71,   59,   63,   59,   55,   66,   66,   57,   71,
+       74,   72,   66,   72,   75,   76,   77,   78,   79,   78,
+       77,   79,   80,   81,   74,   83,   80,   82,   75,   84,
+       82,   85,   88,   85,   76,   81,   87,   83,   87,   89,
+
+       92,   89,   93,  345,   90,  104,   92,   84,   86,   86,
+       86,   86,   90,   99,   88,   86,   86,   98,  102,   86,
+       86,   91,   91,   93,   91,   94,   94,   91,  101,  104,
+      102,   94,  101,  110,   99,   98,  100,  100,  100,  100,
+      100,  103,  103,  100,  100,  343,  105,  103,  105,  107,
+      109,  107,  111,  110,  109,  113,  113,  341,  121,  118,
+      111,  112,  112,  112,  112,  112,  121,  113,  112,  112,
+      114,  114,  116,  116,  118,  116,  114,  115,  115,  115,
+      115,  115,  123,  123,  115,  115,  117,  117,  117,  117,
+      117,  124,  122,  117,  117,  119,  122,  119,  120,  120,
+
+      120,  120,  120,  125,  130,  120,  120,  125,  131,  124,
+      126,  126,  128,  128,  131,  134,  126,  130,  128,  133,
+      133,  133,  135,  136,  133,  139,  164,  140,  138,  140,
+      134,  164,  133,  141,  141,  163,  163,  338,  139,  141,
+      136,  135,  137,  137,  137,  137,  137,  138,  336,  137,
+      137,  143,  143,  145,  145,  146,  146,  143,  147,  147,
+      149,  149,  145,  155,  147,  161,  149,  151,  151,  153,
+      153,  146,  160,  151,  270,  153,  176,  156,  156,  158,
+      158,  176,  155,  156,  161,  158,  165,  165,  170,  270,
+      160,  170,  165,  172,  172,  173,  173,  174,  174,  175,
+
+      208,  177,  220,  175,  177,  178,  178,  173,  220,  174,
+      208,  178,  180,  180,  172,  182,  182,  183,  180,  334,
+      190,  190,  183,  184,  184,  184,  184,  184,  185,  185,
+      184,  184,  190,  243,  185,  191,  191,  192,  192,  197,
+      197,  202,  202,  192,  332,  197,  203,  203,  209,  209,
+      213,  213,  203,  214,  214,  215,  215,  243,  216,  216,
+      217,  217,  218,  218,  219,  219,  221,  221,  215,  235,
+      219,  235,  221,  214,  216,  217,  227,  227,  228,  228,
+      230,  230,  232,  331,  228,  233,  230,  233,  233,  329,
+      232,  232,  236,  236,  241,  241,  244,  244,  245,  245,
+
+      241,  246,  246,  247,  248,  248,  267,  267,  244,  259,
+      259,  247,  247,  252,  252,  245,  248,  326,  246,  252,
+      253,  253,  267,  324,  259,  316,  253,  262,  262,  262,
+      262,  262,  271,  271,  262,  262,  272,  276,  273,  272,
+      272,  273,  273,  277,  278,  316,  276,  271,  281,  281,
+      299,  278,  278,  282,  282,  285,  285,  277,  300,  287,
+      287,  285,  290,  290,  281,  287,  323,  293,  294,  294,
+      290,  293,  303,  299,  301,  301,  302,  302,  310,  310,
+      303,  303,  300,  317,  302,  294,  304,  304,  322,  328,
+      301,  309,  304,  311,  309,  309,  311,  311,  318,  317,
+
+      318,  318,  319,  321,  314,  319,  319,  328,  330,  330,
+      350,  330,  340,  340,  340,  312,  297,  296,  350,  350,
+      355,  355,  355,  355,  356,  356,  356,  357,  357,  357,
+      357,  358,  358,  358,  358,  359,  295,  359,  359,  360,
+      360,  360,  360,  361,  291,  361,  361,  362,  362,  362,
+      362,  363,  363,  283,  363,  364,  364,  364,  364,  365,
+      279,  365,  365,  366,  366,  366,  366,  367,  367,  367,
+      367,  368,  368,  368,  368,  369,  369,  369,  369,  370,
+      370,  370,  370,  371,  371,  371,  371,  372,  274,  372,
+      372,  373,  373,  373,  373,  374,  374,  374,  374,  375,
+
+      268,  375,  375,  376,  376,  376,  376,  377,  265,  377,
+      377,  378,  378,  378,  378,  379,  263,  379,  379,  380,
+      380,  380,  380,  381,  260,  381,  381,  382,  382,  382,
+      382,  383,  250,  383,  383,  384,  384,  384,  384,  385,
+      242,  385,  385,  386,  386,  386,  386,  387,  239,  387,
+      387,  388,  237,  388,  388,  389,  234,  389,  389,  390,
+      226,  390,  390,  391,  391,  391,  391,  392,  392,  392,
+      392,  393,  212,  393,  393,  394,  394,  394,  394,  395,
+      395,  395,  395,  396,  210,  396,  396,  397,  397,  397,
+      397,  398,  398,  398,  398,  399,  399,  399,  399,  400,
+
+      400,  400,  400,  401,  401,  401,  401,  402,  402,  402,
+      402,  403,  162,  403,  403,  404,  404,  404,  404,  405,
+      405,  405,  405,  406,  108,  406,  406,  407,  407,  407,
+      407,  408,  408,  408,  408,  409,  409,  409,  409,  410,
+      106,  410,  410,  411,  411,  411,  411,  412,  412,  412,
+      412,  413,   69,  413,  413,  414,  414,  414,  414,  415,
+      415,  415,  415,  416,  416,  416,  416,  417,  417,  417,
+      417,  418,  418,  418,  418,  419,  419,  419,  419,  420,
+      420,  420,  420,  421,  421,  421,  421,  422,  422,  422,
+      422,  423,  423,  423,  423,   36,   29,   25,   23,   17,
+
+        6,    5,    4,    3,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354,  354,
+      354,  354,  354,  354,  354,  354,  354,  354,  354
     } ;
 
 #define YY_TRAILING_MASK 0x2000
@@ -888,6 +964,16 @@ static void setbackendtype(DiskParseContext *dpc, const 
char *str) {
     else xlu__disk_err(dpc,str,"unknown value for backendtype");
 }
 
+/* Sets ->colo-port from the string.  COLO need this. */
+static void setcoloport(DiskParseContext *dpc, const char *str) {
+    int port = atoi(str);
+    if (port) {
+       dpc->disk->colo_port = port;
+    } else {
+       xlu__disk_err(dpc,str,"unknown value for colo_port");
+    }
+}
+
 #define DEPRECATE(usewhatinstead) /* not currently reported */
 
 /* Handles a vdev positional parameter which includes a devtype. */
@@ -915,7 +1001,7 @@ static int vdev_and_devtype(DiskParseContext *dpc, char 
*str) {
 #define DPC ((DiskParseContext*)yyextra)
 
 
-#line 919 "libxlu_disk_l.c"
+#line 1005 "libxlu_disk_l.c"
 
 #define INITIAL 0
 #define LEXERR 1
@@ -1188,12 +1274,12 @@ YY_DECL
                }
 
        {
-#line 155 "libxlu_disk_l.l"
+#line 165 "libxlu_disk_l.l"
 
 
  /*----- the scanner rules which do the parsing -----*/
 
-#line 1197 "libxlu_disk_l.c"
+#line 1283 "libxlu_disk_l.c"
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
@@ -1225,14 +1311,14 @@ 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 >= 286 )
+                               if ( yy_current_state >= 355 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + 
(unsigned int) yy_c];
                        *yyg->yy_state_ptr++ = yy_current_state;
                        ++yy_cp;
                        }
-               while ( yy_current_state != 285 );
+               while ( yy_current_state != 354 );
 
 yy_find_action:
                yy_current_state = *--yyg->yy_state_ptr;
@@ -1282,110 +1368,152 @@ do_action:    /* This label is used only to access 
EOF actions. */
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 159 "libxlu_disk_l.l"
+#line 169 "libxlu_disk_l.l"
 { /* ignore whitespace before parameters */ }
        YY_BREAK
 /* ordinary parameters setting enums or strings */
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 163 "libxlu_disk_l.l"
+#line 173 "libxlu_disk_l.l"
 { STRIP(','); setformat(DPC, FROMEQUALS); }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 165 "libxlu_disk_l.l"
+#line 175 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 1; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 166 "libxlu_disk_l.l"
+#line 176 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 1; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 167 "libxlu_disk_l.l"
+#line 177 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 0; }
        YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 168 "libxlu_disk_l.l"
+#line 178 "libxlu_disk_l.l"
 { xlu__disk_err(DPC,yytext,"unknown value for type"); }
        YY_BREAK
 case 7:
 /* rule 7 can match eol */
 YY_RULE_SETUP
-#line 170 "libxlu_disk_l.l"
+#line 180 "libxlu_disk_l.l"
 { STRIP(','); setaccess(DPC, FROMEQUALS); }
        YY_BREAK
 case 8:
 /* rule 8 can match eol */
 YY_RULE_SETUP
-#line 171 "libxlu_disk_l.l"
+#line 181 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("backend", backend_domname, FROMEQUALS); }
        YY_BREAK
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 172 "libxlu_disk_l.l"
+#line 182 "libxlu_disk_l.l"
 { STRIP(','); setbackendtype(DPC,FROMEQUALS); }
        YY_BREAK
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 174 "libxlu_disk_l.l"
+#line 184 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
        YY_BREAK
 case 11:
 /* rule 11 can match eol */
 YY_RULE_SETUP
-#line 175 "libxlu_disk_l.l"
+#line 185 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 176 "libxlu_disk_l.l"
+#line 186 "libxlu_disk_l.l"
 { DPC->disk->direct_io_safe = 1; }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 177 "libxlu_disk_l.l"
+#line 187 "libxlu_disk_l.l"
 { libxl_defbool_set(&DPC->disk->discard_enable, true); }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 178 "libxlu_disk_l.l"
+#line 188 "libxlu_disk_l.l"
 { libxl_defbool_set(&DPC->disk->discard_enable, false); }
        YY_BREAK
-/* the target magic parameter, eats the rest of the string */
+/* Note that the COLO configuration settings should be considered unstable.
+  * They may change incompatibly in future versions of Xen. */
 case 15:
 YY_RULE_SETUP
-#line 182 "libxlu_disk_l.l"
+#line 191 "libxlu_disk_l.l"
+{ libxl_defbool_set(&DPC->disk->colo_enable, true); }
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 192 "libxlu_disk_l.l"
+{ libxl_defbool_set(&DPC->disk->colo_enable, false); }
+       YY_BREAK
+case 17:
+/* rule 17 can match eol */
+YY_RULE_SETUP
+#line 193 "libxlu_disk_l.l"
+{ STRIP(','); SAVESTRING("colo-host", colo_host, FROMEQUALS); }
+       YY_BREAK
+case 18:
+/* rule 18 can match eol */
+YY_RULE_SETUP
+#line 194 "libxlu_disk_l.l"
+{ STRIP(','); setcoloport(DPC, FROMEQUALS); }
+       YY_BREAK
+case 19:
+/* rule 19 can match eol */
+YY_RULE_SETUP
+#line 195 "libxlu_disk_l.l"
+{ STRIP(','); SAVESTRING("colo-export", colo_export, FROMEQUALS); }
+       YY_BREAK
+case 20:
+/* rule 20 can match eol */
+YY_RULE_SETUP
+#line 196 "libxlu_disk_l.l"
+{ STRIP(','); SAVESTRING("active-disk", active_disk, FROMEQUALS); }
+       YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+#line 197 "libxlu_disk_l.l"
+{ STRIP(','); SAVESTRING("hidden-disk", hidden_disk, FROMEQUALS); }
+       YY_BREAK
+/* the target magic parameter, eats the rest of the string */
+case 22:
+YY_RULE_SETUP
+#line 201 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("target", pdev_path, FROMEQUALS); }
        YY_BREAK
 /* unknown parameters */
-case 16:
-/* rule 16 can match eol */
+case 23:
+/* rule 23 can match eol */
 YY_RULE_SETUP
-#line 186 "libxlu_disk_l.l"
+#line 205 "libxlu_disk_l.l"
 { xlu__disk_err(DPC,yytext,"unknown parameter"); }
        YY_BREAK
 /* deprecated prefixes */
 /* the "/.*" in these patterns ensures that they count as if they
    * matched the whole string, so these patterns take precedence */
-case 17:
+case 24:
 YY_RULE_SETUP
-#line 193 "libxlu_disk_l.l"
+#line 212 "libxlu_disk_l.l"
 {
                     STRIP(':');
                     DPC->had_depr_prefix=1; DEPRECATE("use `[format=]...,'");
                     setformat(DPC, yytext);
                  }
        YY_BREAK
-case 18:
+case 25:
 YY_RULE_SETUP
-#line 199 "libxlu_disk_l.l"
+#line 218 "libxlu_disk_l.l"
 {
                     char *newscript;
                     STRIP(':');
@@ -1399,65 +1527,65 @@ YY_RULE_SETUP
                     free(newscript);
                 }
        YY_BREAK
-case 19:
+case 26:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 8;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 212 "libxlu_disk_l.l"
+#line 231 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 20:
+case 27:
 YY_RULE_SETUP
-#line 213 "libxlu_disk_l.l"
+#line 232 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 21:
+case 28:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 214 "libxlu_disk_l.l"
+#line 233 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 22:
+case 29:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 6;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 215 "libxlu_disk_l.l"
+#line 234 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 23:
+case 30:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 5;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 216 "libxlu_disk_l.l"
+#line 235 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 24:
+case 31:
 *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
 yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 217 "libxlu_disk_l.l"
+#line 236 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 25:
-/* rule 25 can match eol */
+case 32:
+/* rule 32 can match eol */
 YY_RULE_SETUP
-#line 219 "libxlu_disk_l.l"
+#line 238 "libxlu_disk_l.l"
 {
                  xlu__disk_err(DPC,yytext,"unknown deprecated disk prefix");
                  return 0;
                }
        YY_BREAK
 /* positional parameters */
-case 26:
-/* rule 26 can match eol */
+case 33:
+/* rule 33 can match eol */
 YY_RULE_SETUP
-#line 226 "libxlu_disk_l.l"
+#line 245 "libxlu_disk_l.l"
 {
     STRIP(',');
 
@@ -1484,27 +1612,27 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 27:
+case 34:
 YY_RULE_SETUP
-#line 252 "libxlu_disk_l.l"
+#line 271 "libxlu_disk_l.l"
 {
     BEGIN(LEXERR);
     yymore();
 }
        YY_BREAK
-case 28:
+case 35:
 YY_RULE_SETUP
-#line 256 "libxlu_disk_l.l"
+#line 275 "libxlu_disk_l.l"
 {
     xlu__disk_err(DPC,yytext,"bad disk syntax"); return 0;
 }
        YY_BREAK
-case 29:
+case 36:
 YY_RULE_SETUP
-#line 259 "libxlu_disk_l.l"
+#line 278 "libxlu_disk_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1508 "libxlu_disk_l.c"
+#line 1636 "libxlu_disk_l.c"
                        case YY_STATE_EOF(INITIAL):
                        case YY_STATE_EOF(LEXERR):
                                yyterminate();
@@ -1693,7 +1821,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
        else
                {
-                       yy_size_t num_to_read =
+                       int num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move 
- 1;
 
                while ( num_to_read <= 0 )
@@ -1769,7 +1897,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
                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 >= 286 )
+                       if ( yy_current_state >= 355 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned 
int) yy_c];
@@ -1793,11 +1921,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        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 >= 286 )
+               if ( yy_current_state >= 355 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) 
yy_c];
-       yy_is_jam = (yy_current_state == 285);
+       yy_is_jam = (yy_current_state == 354);
        if ( ! yy_is_jam )
                *yyg->yy_state_ptr++ = yy_current_state;
 
@@ -2594,4 +2722,4 @@ void xlu__disk_yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 258 "libxlu_disk_l.l"
+#line 277 "libxlu_disk_l.l"
diff --git a/tools/libxl/libxlu_disk_l.h b/tools/libxl/libxlu_disk_l.h
index 496f208..794274f 100644
--- a/tools/libxl/libxlu_disk_l.h
+++ b/tools/libxl/libxlu_disk_l.h
@@ -348,7 +348,7 @@ extern int xlu__disk_yylex (yyscan_t yyscanner);
 #undef YY_DECL
 #endif
 
-#line 258 "libxlu_disk_l.l"
+#line 277 "libxlu_disk_l.l"
 
 #line 354 "libxlu_disk_l.h"
 #undef xlu__disk_yyIN_HEADER
-- 
2.1.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.