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

[Xen-devel] [PATCH 7/9] libxl: disks: allow specification of "backendtype=phy|tap|qdisk"



Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
---
 docs/misc/xl-disk-configuration.txt |   17 +
 tools/libxl/libxlu_disk_l.c         |  690 +++++++++++++++++++----------------
 tools/libxl/libxlu_disk_l.h         |    2 +-
 tools/libxl/libxlu_disk_l.l         |    9 +
 4 files changed, 395 insertions(+), 323 deletions(-)

diff --git a/docs/misc/xl-disk-configuration.txt 
b/docs/misc/xl-disk-configuration.txt
index de0a75e..91e0cc7 100644
--- a/docs/misc/xl-disk-configuration.txt
+++ b/docs/misc/xl-disk-configuration.txt
@@ -139,6 +139,23 @@ cdrom
 Convenience alias for "devtype=cdrom".
 
 
+backendtype=<backend-type>
+--------------------------
+
+Description:           Specifies the backend implementation to use
+Supported values:      phy, tap, qdisk
+Mandatory:             No
+Default value:         Automatically determine which backend to use.
+
+This does not affect the guest's view of the device.  It controls
+which software implementation of the Xen backend driver us used.
+
+Not all backend drivers support all combinations of other options.
+For example, "phy" does not support formats other than "raw".
+Normally this option should not be specified, in which case libxl will
+automatically determine the most suitable backend.
+
+
 script=<script>
 ---------------
 
diff --git a/tools/libxl/libxlu_disk_l.c b/tools/libxl/libxlu_disk_l.c
index e653d8d..14d3dce 100644
--- a/tools/libxl/libxlu_disk_l.c
+++ b/tools/libxl/libxlu_disk_l.c
@@ -357,8 +357,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 24
-#define YY_END_OF_BUFFER 25
+#define YY_NUM_RULES 25
+#define YY_END_OF_BUFFER 26
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -366,86 +366,90 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_acclist[436] =
+static yyconst flex_int16_t yy_acclist[453] =
     {   0,
-       23,   23,   25,   21,   22,   24, 8193,   21,   22,   24,
-    16385, 8193,   21,   24,16385,   21,   22,   24,   22,   24,
-       21,   22,   24,   21,   22,   24,   21,   22,   24,   21,
-       22,   24,   21,   22,   24,   21,   22,   24,   21,   22,
-       24,   21,   22,   24,   21,   22,   24,   21,   22,   24,
-       21,   22,   24,   21,   22,   24,   21,   22,   24,   21,
-       22,   24,   23,   24,   24,   21,   21, 8193,   21, 8193,
-       21,16385, 8193,   21, 8193,   21,   21, 8212,   21,16404,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   23, 8193,   21,
-
-     8193,   21, 8193, 8212,   21, 8212,   21, 8212,   11,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21, 8212,   21, 8212,   21, 8212,
-       11,   21,   16, 8212,   21,16404,   21,   21,   21,   21,
-       21,   21, 8212,   21,16404,   19, 8212,   21,16404,   21,
-     8204, 8212,   21,16396,16404,   21,   21, 8207, 8212,   21,
-    16399,16404,   21,   21,   21,   21,   16, 8212,   21,   16,
-     8212,   21,   16,   21,   16, 8212,    3,   21,   21,   18,
-     8212,   21,16404,   21,   21,   21,   21,   19, 8212,   21,
-       19, 8212,   21,   19,   21,   19, 8212, 8204, 8212,   21,
-
-     8204, 8212,   21, 8204,   21, 8204, 8212,   21, 8207, 8212,
-       21, 8207, 8212,   21, 8207,   21, 8207, 8212,   21,   21,
-        8,   21,   16, 8212,   21,   16, 8212,   21,   16, 8212,
-       16,   21,   16,    3,   21,   21,   18, 8212,   21,   18,
-     8212,   21,   18,   21,   18, 8212,   21,   17, 8212,   21,
-    16404, 8205, 8212,   21,16397,16404,   21,   19, 8212,   21,
-       19, 8212,   21,   19, 8212,   19,   21,   19, 8204, 8212,
-       21, 8204, 8212,   21, 8204, 8212, 8204,   21, 8204,   21,
-     8207, 8212,   21, 8207, 8212,   21, 8207, 8212, 8207,   21,
-     8207,   21,   21,    8,   11,    8,    7,   21,   18, 8212,
-
-       21,   18, 8212,   21,   18, 8212,   18,   21,   18,    2,
-       17, 8212,   21,   17, 8212,   21,   17,   21,   17, 8212,
-     8205, 8212,   21, 8205, 8212,   21, 8205,   21, 8205, 8212,
-       21,    9,   21,   10,    8,    8,   11,    7,   11,    7,
-        6,    2,   11,    2,   17, 8212,   21,   17, 8212,   21,
-       17, 8212,   17,   21,   17, 8205, 8212,   21, 8205, 8212,
-       21, 8205, 8212, 8205,   21, 8205,   21,    9,   11,    9,
-       14, 8212,   21,16404,   10,   11,   10,    7,    7,   11,
-        6,   11,    6,    6,   11,    6,   11,    2,    2,   11,
-     8205,   21,16397,    9,    9,   11,   14, 8212,   21,   14,
-
-     8212,   21,   14,   21,   14, 8212,   10,   11,    6,    6,
-       11,    6,    6,   14, 8212,   21,   14, 8212,   21,   14,
-     8212,   14,   21,   14,    6,    6,    6,    5,    6,    4,
-        6,    5,    6,    4,    6
+       24,   24,   26,   22,   23,   25, 8193,   22,   23,   25,
+    16385, 8193,   22,   25,16385,   22,   23,   25,   23,   25,
+       22,   23,   25,   22,   23,   25,   22,   23,   25,   22,
+       23,   25,   22,   23,   25,   22,   23,   25,   22,   23,
+       25,   22,   23,   25,   22,   23,   25,   22,   23,   25,
+       22,   23,   25,   22,   23,   25,   22,   23,   25,   22,
+       23,   25,   22,   23,   25,   24,   25,   25,   22,   22,
+     8193,   22, 8193,   22,16385, 8193,   22, 8193,   22,   22,
+     8213,   22,16405,   22,   22,   22,   22,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+
+       22,   24, 8193,   22, 8193,   22, 8193, 8213,   22, 8213,
+       22, 8213,   12,   22,   22,   22,   22,   22,   22,   22,
+       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+     8213,   22, 8213,   22, 8213,   12,   22,   17, 8213,   22,
+    16405,   22,   22,   22,   22,   22,   22,   22, 8213,   22,
+    16405,   20, 8213,   22,16405,   22, 8205, 8213,   22,16397,
+    16405,   22,   22, 8208, 8213,   22,16400,16405,   22,   22,
+       22,   22,   17, 8213,   22,   17, 8213,   22,   17,   22,
+       17, 8213,   22,    3,   22,   22,   19, 8213,   22,16405,
+       22,   22,   22,   22,   20, 8213,   22,   20, 8213,   22,
+
+       20,   22,   20, 8213, 8205, 8213,   22, 8205, 8213,   22,
+     8205,   22, 8205, 8213,   22, 8208, 8213,   22, 8208, 8213,
+       22, 8208,   22, 8208, 8213,   22,   22,    9,   22,   17,
+     8213,   22,   17, 8213,   22,   17, 8213,   17,   22,   17,
+       22,    3,   22,   22,   19, 8213,   22,   19, 8213,   22,
+       19,   22,   19, 8213,   22,   18, 8213,   22,16405, 8206,
+     8213,   22,16398,16405,   22,   20, 8213,   22,   20, 8213,
+       22,   20, 8213,   20,   22,   20, 8205, 8213,   22, 8205,
+     8213,   22, 8205, 8213, 8205,   22, 8205,   22, 8208, 8213,
+       22, 8208, 8213,   22, 8208, 8213, 8208,   22, 8208,   22,
+
+       22,    9,   12,    9,    7,   22,   22,   19, 8213,   22,
+       19, 8213,   22,   19, 8213,   19,   22,   19,    2,   18,
+     8213,   22,   18, 8213,   22,   18,   22,   18, 8213, 8206,
+     8213,   22, 8206, 8213,   22, 8206,   22, 8206, 8213,   22,
+       10,   22,   11,    9,    9,   12,    7,   12,    7,   22,
+        6,    2,   12,    2,   18, 8213,   22,   18, 8213,   22,
+       18, 8213,   18,   22,   18, 8206, 8213,   22, 8206, 8213,
+       22, 8206, 8213, 8206,   22, 8206,   22,   10,   12,   10,
+       15, 8213,   22,16405,   11,   12,   11,    7,    7,   12,
+       22,    6,   12,    6,    6,   12,    6,   12,    2,    2,
+
+       12, 8206,   22,16398,   10,   10,   12,   15, 8213,   22,
+       15, 8213,   22,   15,   22,   15, 8213,   11,   12,   22,
+        6,    6,   12,    6,    6,   15, 8213,   22,   15, 8213,
+       22,   15, 8213,   15,   22,   15,   22,    6,    6,    8,
+        6,    5,    6,    8,   12,    4,    6,    5,    6,    8,
+        4,    6
     } ;
 
-static yyconst flex_int16_t yy_accept[241] =
+static yyconst flex_int16_t yy_accept[255] =
     {   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,   65,   66,   67,   68,   70,
-       73,   75,   76,   77,   78,   81,   81,   82,   83,   84,
-       85,   86,   87,   88,   89,   90,   91,   92,   93,   94,
-       95,   96,   97,   98,   99,  101,  103,  104,  106,  108,
-      109,  110,  111,  112,  113,  114,  115,  116,  117,  118,
-      119,  120,  121,  122,  123,  124,  125,  126,  128,  130,
-      131,  132,  133,  137,  138,  139,  140,  141,  142,  143,
-      146,  150,  151,  156,  157,  158,  163,  164,  165,  166,
-
-      167,  170,  173,  175,  177,  179,  180,  184,  185,  186,
-      187,  188,  191,  194,  196,  198,  201,  204,  206,  208,
-      209,  212,  215,  217,  219,  220,  221,  222,  223,  226,
-      229,  231,  233,  234,  236,  237,  240,  243,  245,  247,
-      248,  252,  257,  258,  261,  264,  266,  268,  269,  272,
-      275,  277,  279,  280,  281,  284,  287,  289,  291,  292,
-      293,  294,  296,  297,  298,  299,  302,  305,  307,  309,
-      310,  311,  314,  317,  319,  321,  324,  327,  329,  331,
-      332,  333,  334,  335,  336,  338,  340,  341,  342,  344,
-      345,  348,  351,  353,  355,  356,  359,  362,  364,  366,
-
-      367,  368,  370,  371,  375,  377,  378,  379,  381,  383,
-      384,  386,  388,  389,  391,  394,  395,  397,  400,  403,
-      405,  407,  409,  410,  412,  413,  414,  417,  420,  422,
-      424,  425,  426,  427,  428,  430,  432,  434,  436,  436
+       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,  105,  107,  108,
+      110,  112,  113,  114,  115,  116,  117,  118,  119,  120,
+      121,  122,  123,  124,  125,  126,  127,  128,  129,  130,
+      131,  133,  135,  136,  137,  138,  142,  143,  144,  145,
+      146,  147,  148,  149,  152,  156,  157,  162,  163,  164,
+
+      169,  170,  171,  172,  173,  176,  179,  181,  183,  184,
+      186,  187,  191,  192,  193,  194,  195,  198,  201,  203,
+      205,  208,  211,  213,  215,  216,  219,  222,  224,  226,
+      227,  228,  229,  230,  233,  236,  238,  240,  241,  242,
+      244,  245,  248,  251,  253,  255,  256,  260,  265,  266,
+      269,  272,  274,  276,  277,  280,  283,  285,  287,  288,
+      289,  292,  295,  297,  299,  300,  301,  302,  304,  305,
+      306,  307,  308,  311,  314,  316,  318,  319,  320,  323,
+      326,  328,  330,  333,  336,  338,  340,  341,  342,  343,
+      344,  345,  347,  349,  350,  351,  352,  354,  355,  358,
+
+      361,  363,  365,  366,  369,  372,  374,  376,  377,  378,
+      380,  381,  385,  387,  388,  389,  391,  392,  394,  395,
+      397,  399,  400,  402,  405,  406,  408,  411,  414,  416,
+      418,  420,  421,  422,  424,  425,  426,  429,  432,  434,
+      436,  437,  438,  439,  440,  441,  442,  444,  446,  448,
+      450,  451,  453,  453
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -488,214 +492,242 @@ static yyconst flex_int32_t yy_meta[34] =
         1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[295] =
+static yyconst flex_int16_t yy_base[311] =
     {   0,
-        0,    0,  545,  544,  546,  541,   32,   35,  549,  549,
-       44,   62,  531,  529,  519,   33,   26,  530,  523,  527,
-      528,  525,  526,   42,    0,  549,  531,  549,   65,   73,
-        0,    0,   82,    0,   91,    0,  522,  509,  505,  500,
-      519,  508,  501,  513,  514,  512,  491,  499,  490,  494,
-       15,  506,  506,    0,   69,    0,    0,   94,    0,    0,
-      514,  503,  508,  491,  485,  499,  490,  489,  482,  501,
-      500,  475,  498,  487,   94,  488,  472,  101,    0,    0,
-      549,  474,  110,  477,  462,  475,  461,  437,  425,  422,
-      119,   53,  128,  398,  403,  137,  389,  389,  382,  355,
-
-      140,    0,  144,    0,  371,  342,  153,  330,  339,  315,
-       54,  156,    0,  160,    0,  163,    0,  167,    0,  287,
-      170,    0,  174,    0,  279,  270,  277,  271,  177,    0,
-        0,    0,    0,  549,  265,  181,    0,  184,    0,  269,
-      193,  202,   76,  205,    0,    0,    0,    0,  209,    0,
-        0,    0,    0,  268,  212,    0,    0,    0,    0,  256,
-      266,  270,  549,  269,  263,  216,    0,    0,    0,    0,
-      267,  219,    0,  223,    0,  226,    0,  230,    0,   75,
-      265,  260,  105,  241,  549,  234,  549,  113,  227,  549,
-      233,    0,    0,    0,    0,  237,    0,    0,    0,    0,
-
-      239,  220,  549,  247,  196,    0,  148,  549,  147,  549,
-      178,  171,  131,  549,  250,  112,  549,  254,    0,  257,
-        0,    0,  102,  549,  240,  164,  261,    0,    0,    0,
-        0,  258,  130,  195,   85,   39,  549,  549,  549,  282,
-      286,  289,  293,  297,  301,  305,  309,  313,  317,  321,
-      325,  329,  333,  337,  341,  345,  349,  353,  357,  361,
-      365,  369,  373,  377,  381,  385,  389,  393,  397,  401,
-      405,  409,  413,  417,  421,  425,  429,  433,  437,  441,
-      445,  449,  453,  457,  461,  465,  469,  473,  477,  481,
-      485,  489,  493,  497
-
+        0,    0,  560,  556,  555,  539,   32,   35,  662,  662,
+       44,   62,   30,   40,   32,   50,  525,   49,   47,   59,
+       68,  517,   69,  509,   72,    0,  662,  507,  662,   83,
+       91,    0,    0,  100,  489,  109,    0,   78,   51,   86,
+       89,   74,   96,  105,  109,  110,  111,  112,  117,   73,
+      119,  118,  121,  120,  122,    0,  134,    0,    0,  138,
+        0,    0,  471,  130,  144,  129,  143,  145,  146,  147,
+      148,  149,  153,  154,  155,  158,  161,  165,  166,  170,
+      180,    0,    0,  662,  171,  201,  176,  175,  178,  183,
+      458,  182,  190,  446,  212,  188,  221,  208,  224,  234,
+
+      209,  230,  236,  221,  244,    0,  247,    0,  184,  248,
+      244,  269,  231,  247,  251,  258,  272,    0,  279,    0,
+      283,    0,  286,    0,  255,  290,    0,  293,    0,  270,
+      281,  447,  254,  297,    0,    0,    0,    0,  294,  662,
+      295,  308,    0,  310,    0,  257,  319,  328,  304,  331,
+        0,    0,    0,    0,  335,    0,    0,    0,    0,  316,
+      338,    0,    0,    0,    0,  333,  336,  429,  662,  428,
+      338,  340,  348,    0,    0,    0,    0,  427,  351,    0,
+      355,    0,  359,    0,  362,    0,  357,  426,  308,  369,
+      425,  662,  423,  662,  346,  365,  421,  662,  371,    0,
+
+        0,    0,    0,  378,    0,    0,    0,    0,  380,  420,
+      662,  388,  419,    0,  418,  662,  373,  417,  662,  372,
+      382,  416,  662,  398,  415,  662,  400,    0,  402,    0,
+        0,  385,  264,  662,  390,  275,  409,    0,    0,    0,
+        0,  405,  404,  406,    0,  412,  224,  129,   87,  662,
+       47,  662,  662,  434,  438,  441,  445,  449,  453,  457,
+      461,  465,  469,  473,  477,  481,  485,  489,  493,  497,
+      501,  505,  509,  513,  517,  521,  525,  529,  533,  537,
+      541,  545,  549,  553,  557,  561,  565,  569,  573,  577,
+      581,  585,  589,  593,  597,  601,  605,  609,  613,  617,
+
+      621,  625,  629,  633,  637,  641,  645,  649,  653,  657
     } ;
 
-static yyconst flex_int16_t yy_def[295] =
+static yyconst flex_int16_t yy_def[311] =
     {   0,
-      239,    1,  240,  240,  239,  241,  242,  242,  239,  239,
-      243,  243,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,  244,  239,  241,  239,  245,  242,
-      246,  246,  247,   12,  241,  248,   12,   12,   12,   12,
+      253,    1,  254,  254,  253,  255,  256,  256,  253,  253,
+      257,  257,   12,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,  258,  253,  255,  253,  259,
+      256,  260,  260,  261,   12,  255,  262,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,  244,  245,  246,  246,  249,  250,  250,
-      239,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   12,  249,  250,  250,
-      239,   12,  251,   12,   12,   12,   12,   12,   12,   35,
-      252,   12,  253,   12,   12,  254,   12,   12,   12,   12,
-
-      255,  256,  251,  256,   12,   12,  257,   12,   12,   12,
-      241,  258,  259,  252,  259,  260,  261,  253,  261,   12,
-      262,  263,  254,  263,   12,   12,  264,   12,  255,  256,
-      256,  265,  265,  239,   12,  266,  267,  257,  267,   12,
-      268,  269,  241,  258,  259,  259,  270,  270,  260,  261,
-      261,  271,  271,   12,  262,  263,  263,  272,  272,   12,
-       12,  273,  239,  274,   12,  266,  267,  267,  275,  275,
-      276,  277,  278,  268,  278,  279,  280,  269,  280,  241,
-      281,   12,  282,  273,  239,  283,  239,  284,  285,  239,
-      277,  278,  278,  286,  286,  279,  280,  280,  287,  287,
-
-      241,  288,  239,  289,  290,  290,  283,  239,  291,  239,
-      291,  291,  285,  239,  269,  288,  239,  292,  293,  289,
-      293,  290,  291,  239,  291,  291,  292,  293,  293,  294,
-      294,  291,  291,  291,  291,  291,  239,  239,    0,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239
-
+       12,   12,   12,   12,   12,  258,  259,  260,  260,  263,
+      264,  264,  253,   12,   12,   12,   12,   12,   12,   12,
+       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
+      263,  264,  264,  253,   12,  265,   12,   12,   12,   12,
+       12,   12,   12,   36,  266,   12,  267,   12,   12,  268,
+
+       12,   12,   12,   12,  269,  270,  265,  270,   12,   12,
+       12,  271,   12,   12,   12,  255,  272,  273,  266,  273,
+      274,  275,  267,  275,   12,  276,  277,  268,  277,   12,
+       12,  278,   12,  269,  270,  270,  279,  279,   12,  253,
+       12,  280,  281,  271,  281,   12,  282,  283,  255,  272,
+      273,  273,  284,  284,  274,  275,  275,  285,  285,   12,
+      276,  277,  277,  286,  286,   12,   12,  287,  253,  288,
+       12,   12,  280,  281,  281,  289,  289,  290,  291,  292,
+      282,  292,  293,  294,  283,  294,  255,  295,   12,  296,
+      287,  253,  297,  253,   12,  298,  299,  253,  291,  292,
+
+      292,  300,  300,  293,  294,  294,  301,  301,  255,  302,
+      253,  303,  304,  304,  297,  253,   12,  305,  253,  305,
+      305,  299,  253,  283,  302,  253,  306,  307,  303,  307,
+      304,   12,  305,  253,  305,  305,  306,  307,  307,  308,
+      308,   12,  305,  305,  309,  305,  305,  310,  305,  253,
+      310,  253,    0,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253
     } ;
 
-static yyconst flex_int16_t yy_nxt[583] =
+static yyconst flex_int16_t yy_nxt[696] =
     {   0,
         6,    7,    8,    9,    6,    6,    6,    6,   10,   11,
-       12,   13,   14,   15,   16,   12,   12,   17,   12,   12,
-       12,   12,   18,   12,   19,   20,   21,   22,   23,   12,
-       24,   12,   12,   30,   30,   31,   30,   30,   31,   75,
-       32,   76,  238,   32,   27,   27,   27,   28,   33,   44,
-       42,   35,   36,   45,   52,   37,   43,   28,   53,   73,
-       93,   38,   27,   27,   27,   28,   33,   27,   56,   35,
-       36,   27,   56,   57,   30,   30,   31,   57,   28,   28,
-      143,   32,   27,   27,   27,   28,  180,  201,  237,   27,
-       36,   58,   58,   58,   59,   58,   27,   79,   58,   60,
-
-       95,   96,   80,   27,   79,  210,   97,   61,  206,   80,
-      101,  101,   58,  102,  101,  203,  210,  101,  104,  112,
-      112,   58,  113,  112,  211,  212,  112,  115,  116,  116,
-       58,  117,  116,  210,  190,  116,  119,  121,  121,   58,
-      122,  121,   27,  130,  121,  124,   27,  132,  131,  235,
-      224,  187,  133,  136,  136,   58,  137,  136,   27,  145,
-      136,  139,   27,  147,  146,   27,  150,  210,  148,   27,
-      152,  151,   27,  156,  224,  153,   27,  158,  157,   27,
-      130,  224,  159,   27,  167,  131,   27,  169,  226,  168,
-      225,  233,  170,  172,  172,   58,  173,  172,  210,  222,
-
-      172,  175,  176,  176,   58,  177,  176,   27,  145,  176,
-      179,   27,  150,  146,   27,  156,  236,  151,   27,  167,
-      157,   27,  192,  217,  168,   27,  194,  193,   27,  197,
-      214,  195,   27,  199,  198,   27,  192,  208,  200,   27,
-      197,  193,   28,  210,  163,  198,  215,  218,  218,   58,
-      219,  218,   27,  199,  218,  221,   27,  228,  200,   27,
-      230,  210,  229,   27,  228,  231,  232,  204,  203,  229,
-      190,  188,  187,  185,  183,  182,  181,  171,  165,  164,
-      163,  234,   25,   25,   25,   25,   27,   27,   27,   29,
-       29,   29,   29,   34,   34,   34,   34,   54,  161,   54,
-
-       54,   55,   55,   55,   55,   57,  160,   57,   57,   33,
-       33,   33,   33,   61,   61,  154,   61,   78,   78,   78,
-       78,   80,  142,   80,   80,  103,  103,  103,  103,  114,
-      114,  114,  114,  118,  118,  118,  118,  123,  123,  123,
-      123,  129,  129,  129,  129,  131,  141,  131,  131,  138,
-      138,  138,  138,  144,  144,  144,  144,  146,  140,  146,
-      146,  149,  149,  149,  149,  151,  135,  151,  151,  155,
-      155,  155,  155,  157,  134,  157,  157,  162,  162,  162,
-      162,  133,  128,  133,  133,  166,  166,  166,  166,  168,
-      127,  168,  168,  174,  174,  174,  174,  178,  178,  178,
-
-      178,  148,  126,  148,  148,  153,  125,  153,  153,  159,
-       96,  159,  159,  184,  184,  184,  184,  186,  186,  186,
-      186,  170,  120,  170,  170,  189,  189,  189,  189,  191,
-      191,  191,  191,  193,  111,  193,  193,  196,  196,  196,
-      196,  198,  110,  198,  198,  202,  202,  202,  202,  205,
-      205,  205,  205,  207,  207,  207,  207,  209,  209,  209,
-      209,  213,  213,  213,  213,  195,  109,  195,  195,  200,
-      108,  200,  200,  216,  216,  216,  216,  220,  220,  220,
-      220,  206,  107,  206,  206,  223,  223,  223,  223,  227,
-      227,  227,  227,  229,  106,  229,  229,  231,  105,  231,
-
-      231,  100,   99,   98,   94,   93,   92,   91,   90,   89,
-       88,   87,   86,   85,   84,   83,   82,   81,   73,   77,
-       74,   73,   72,   71,   70,   69,   68,   67,   66,   46,
-       65,   64,   63,   62,   28,   51,   50,   49,   48,   47,
-       46,   41,   40,   39,   28,  239,   26,   26,    5,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239
+       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,   35,   41,   33,   28,   28,   28,   29,   34,   35,
+      253,   36,   37,   42,   43,   38,   35,   48,   35,   35,
+       35,   39,   28,   28,   28,   29,   34,   44,   35,   36,
+       37,   40,   46,   45,   65,   49,   47,   35,   35,   50,
+       52,   35,   35,   35,   54,   28,   58,   35,   55,   64,
+      252,   59,   31,   31,   32,   35,   75,   66,   35,   33,
+
+       28,   28,   28,   29,   68,   35,   48,   28,   37,   60,
+       60,   60,   61,   60,   35,   67,   60,   62,   35,   35,
+       35,   35,   72,   71,   73,   69,   35,   35,   35,   35,
+       35,   35,   84,   80,   76,   70,   28,   58,   35,   35,
+       28,   82,   59,   85,   77,   78,   83,   79,   87,   74,
+       76,   86,   35,   35,   35,   35,   35,   35,   35,   90,
+       94,   95,   35,   35,   35,   97,   88,   35,   91,   92,
+       35,   99,  100,   89,   35,   35,   93,  101,   98,   35,
+       35,  102,   28,   82,   35,   35,   96,   35,   83,  109,
+      112,   35,   35,   35,   76,   97,  110,   35,  104,   35,
+
+      103,  105,  105,   60,  106,  105,  139,  115,  105,  108,
+      111,  114,  117,  117,   60,  118,  117,   35,   35,  117,
+      120,  121,  121,   60,  122,  121,  130,  250,  121,  124,
+       35,  100,  125,   35,  126,  126,   60,  127,  126,   35,
+       35,  126,  129,  131,  132,   35,   28,  135,  133,   28,
+      137,  140,  136,   35,  147,  138,   35,   35,  148,  146,
+       35,   29,  170,   35,   35,  178,   35,  219,  141,  142,
+      142,   60,  143,  142,   28,  151,  142,  145,  219,   35,
+      152,   28,  153,  160,  149,   28,  156,  154,   28,  158,
+       35,  157,   28,  162,  159,   28,  164,  166,  163,   28,
+
+      135,  165,  244,   35,   35,  136,  171,   29,  172,  167,
+       28,  174,   28,  176,  187,  212,  175,   35,  177,  179,
+      179,   60,  180,  179,  188,   35,  179,  182,  183,  183,
+       60,  184,  183,   28,  151,  183,  186,   28,  156,  152,
+       28,  162,   35,  157,  190,   35,  163,   35,  196,   35,
+       28,  174,  189,   28,  200,   35,  175,   28,  202,  201,
+       29,   28,  205,  203,   28,  207,  195,  206,  219,  209,
+      208,   63,  214,   28,  200,  234,  220,  221,  217,  201,
+       28,  205,   35,   29,  235,  234,  206,  224,  227,  227,
+       60,  228,  227,  219,   35,  227,  230,  232,  242,  236,
+
+       28,  207,   28,  238,   28,  240,  208,  219,  239,  219,
+      241,   28,  238,  245,   35,  219,  243,  239,  211,  198,
+      234,  194,  231,  226,  223,  247,  216,  246,  169,  211,
+      198,  194,  192,  249,   26,   26,   26,   26,   28,   28,
+       28,   30,   30,   30,   30,   35,   35,   35,   35,   56,
+      169,   56,   56,   57,   57,   57,   57,   59,  116,   59,
+       59,   34,   34,   34,   34,   63,   63,  113,   63,   81,
+       81,   81,   81,   83,   84,   83,   83,  107,  107,  107,
+      107,  119,  119,  119,  119,  123,  123,  123,  123,  128,
+      128,  128,  128,  134,  134,  134,  134,  136,   35,  136,
+
+      136,  144,  144,  144,  144,  150,  150,  150,  150,  152,
+       29,  152,  152,  155,  155,  155,  155,  157,   53,  157,
+      157,  161,  161,  161,  161,  163,   51,  163,  163,  168,
+      168,  168,  168,  138,   35,  138,  138,  173,  173,  173,
+      173,  175,   29,  175,  175,  181,  181,  181,  181,  185,
+      185,  185,  185,  154,  253,  154,  154,  159,   27,  159,
+      159,  165,   27,  165,  165,  191,  191,  191,  191,  193,
+      193,  193,  193,  177,  253,  177,  177,  197,  197,  197,
+      197,  199,  199,  199,  199,  201,  253,  201,  201,  204,
+      204,  204,  204,  206,  253,  206,  206,  210,  210,  210,
+
+      210,  213,  213,  213,  213,  215,  215,  215,  215,  218,
+      218,  218,  218,  222,  222,  222,  222,  203,  253,  203,
+      203,  208,  253,  208,  208,  225,  225,  225,  225,  229,
+      229,  229,  229,  214,  253,  214,  214,  233,  233,  233,
+      233,  237,  237,  237,  237,  239,  253,  239,  239,  241,
+      253,  241,  241,  248,  248,  253,  248,  251,  251,  251,
+      251,    5,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253
+
     } ;
 
-static yyconst flex_int16_t yy_chk[583] =
+static yyconst flex_int16_t yy_chk[696] =
     {   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,   51,
-        7,   51,  236,    8,   11,   11,   11,   11,   11,   17,
-       16,   11,   11,   17,   24,   11,   16,  111,   24,   92,
-       92,   11,   12,   12,   12,   12,   12,   29,   29,   12,
-       12,   55,   55,   29,   30,   30,   30,   55,  180,  143,
-      111,   30,   33,   33,   33,   33,  143,  180,  235,   33,
-       33,   35,   35,   35,   35,   35,   58,   58,   35,   35,
-
-       75,   75,   58,   78,   78,  223,   75,  183,  183,   78,
-       83,   83,   83,   83,   83,  216,  188,   83,   83,   91,
-       91,   91,   91,   91,  188,  188,   91,   91,   93,   93,
-       93,   93,   93,  233,  213,   93,   93,   96,   96,   96,
-       96,   96,  101,  101,   96,   96,  103,  103,  101,  233,
-      209,  207,  103,  107,  107,  107,  107,  107,  112,  112,
-      107,  107,  114,  114,  112,  116,  116,  226,  114,  118,
-      118,  116,  121,  121,  212,  118,  123,  123,  121,  129,
-      129,  211,  123,  136,  136,  129,  138,  138,  212,  136,
-      211,  226,  138,  141,  141,  141,  141,  141,  234,  205,
-
-      141,  141,  142,  142,  142,  142,  142,  144,  144,  142,
-      142,  149,  149,  144,  155,  155,  234,  149,  166,  166,
-      155,  172,  172,  202,  166,  174,  174,  172,  176,  176,
-      189,  174,  178,  178,  176,  191,  191,  186,  178,  196,
-      196,  191,  201,  225,  184,  196,  201,  204,  204,  204,
-      204,  204,  215,  215,  204,  204,  218,  218,  215,  220,
-      220,  232,  218,  227,  227,  220,  225,  182,  181,  227,
-      171,  165,  164,  162,  161,  160,  154,  140,  135,  128,
-      127,  232,  240,  240,  240,  240,  241,  241,  241,  242,
-      242,  242,  242,  243,  243,  243,  243,  244,  126,  244,
-
-      244,  245,  245,  245,  245,  246,  125,  246,  246,  247,
-      247,  247,  247,  248,  248,  120,  248,  249,  249,  249,
-      249,  250,  110,  250,  250,  251,  251,  251,  251,  252,
-      252,  252,  252,  253,  253,  253,  253,  254,  254,  254,
-      254,  255,  255,  255,  255,  256,  109,  256,  256,  257,
-      257,  257,  257,  258,  258,  258,  258,  259,  108,  259,
-      259,  260,  260,  260,  260,  261,  106,  261,  261,  262,
-      262,  262,  262,  263,  105,  263,  263,  264,  264,  264,
-      264,  265,  100,  265,  265,  266,  266,  266,  266,  267,
-       99,  267,  267,  268,  268,  268,  268,  269,  269,  269,
-
-      269,  270,   98,  270,  270,  271,   97,  271,  271,  272,
-       95,  272,  272,  273,  273,  273,  273,  274,  274,  274,
-      274,  275,   94,  275,  275,  276,  276,  276,  276,  277,
-      277,  277,  277,  278,   90,  278,  278,  279,  279,  279,
-      279,  280,   89,  280,  280,  281,  281,  281,  281,  282,
-      282,  282,  282,  283,  283,  283,  283,  284,  284,  284,
-      284,  285,  285,  285,  285,  286,   88,  286,  286,  287,
-       87,  287,  287,  288,  288,  288,  288,  289,  289,  289,
-      289,  290,   86,  290,  290,  291,  291,  291,  291,  292,
-      292,  292,  292,  293,   85,  293,  293,  294,   84,  294,
-
-      294,   82,   77,   76,   74,   73,   72,   71,   70,   69,
-       68,   67,   66,   65,   64,   63,   62,   61,   53,   52,
-       50,   49,   48,   47,   46,   45,   44,   43,   42,   41,
-       40,   39,   38,   37,   27,   23,   22,   21,   20,   19,
-       18,   15,   14,   13,    6,    5,    4,    3,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
-      239,  239
+        1,    1,    1,    7,    7,    7,    8,    8,    8,   13,
+        7,   15,   13,    8,   11,   11,   11,   11,   11,   14,
+      251,   11,   11,   14,   15,   11,   19,   19,   18,   16,
+       39,   11,   12,   12,   12,   12,   12,   16,   20,   12,
+       12,   12,   18,   16,   39,   20,   18,   21,   23,   21,
+       23,   25,   50,   42,   25,   30,   30,   38,   25,   38,
+      249,   30,   31,   31,   31,   40,   50,   40,   41,   31,
+
+       34,   34,   34,   34,   42,   43,   43,   34,   34,   36,
+       36,   36,   36,   36,   44,   41,   36,   36,   45,   46,
+       47,   48,   47,   46,   48,   44,   49,   52,   51,   54,
+       53,   55,  248,   54,   55,   45,   57,   57,   66,   64,
+       60,   60,   57,   64,   52,   53,   60,   53,   66,   49,
+       51,   65,   67,   65,   68,   69,   70,   71,   72,   69,
+       73,   74,   73,   74,   75,   76,   67,   76,   70,   71,
+       77,   78,   78,   68,   78,   79,   72,   78,   77,   80,
+       85,   79,   81,   81,   88,   87,   75,   89,   81,   87,
+       90,   92,   90,  109,   96,   96,   88,   96,   85,   93,
+
+       80,   86,   86,   86,   86,   86,  109,   93,   86,   86,
+       89,   92,   95,   95,   95,   95,   95,   98,  101,   95,
+       95,   97,   97,   97,   97,   97,  101,  247,   97,   97,
+      104,   99,   98,   99,  100,  100,  100,  100,  100,  102,
+      113,  100,  100,  102,  103,  103,  105,  105,  104,  107,
+      107,  110,  105,  111,  114,  107,  114,  110,  115,  113,
+      115,  116,  133,  133,  125,  146,  146,  233,  111,  112,
+      112,  112,  112,  112,  117,  117,  112,  112,  236,  130,
+      117,  119,  119,  125,  116,  121,  121,  119,  123,  123,
+      131,  121,  126,  126,  123,  128,  128,  130,  126,  134,
+
+      134,  128,  236,  139,  141,  134,  139,  149,  141,  131,
+      142,  142,  144,  144,  149,  189,  142,  189,  144,  147,
+      147,  147,  147,  147,  160,  160,  147,  147,  148,  148,
+      148,  148,  148,  150,  150,  148,  148,  155,  155,  150,
+      161,  161,  166,  155,  167,  167,  161,  171,  172,  172,
+      173,  173,  166,  179,  179,  195,  173,  181,  181,  179,
+      187,  183,  183,  181,  185,  185,  171,  183,  196,  187,
+      185,  190,  190,  199,  199,  220,  196,  196,  195,  199,
+      204,  204,  217,  209,  220,  221,  204,  209,  212,  212,
+      212,  212,  212,  235,  232,  212,  212,  217,  232,  221,
+
+      224,  224,  227,  227,  229,  229,  224,  243,  227,  244,
+      229,  237,  237,  242,  242,  246,  235,  237,  225,  222,
+      218,  215,  213,  210,  197,  244,  193,  243,  191,  188,
+      178,  170,  168,  246,  254,  254,  254,  254,  255,  255,
+      255,  256,  256,  256,  256,  257,  257,  257,  257,  258,
+      132,  258,  258,  259,  259,  259,  259,  260,   94,  260,
+      260,  261,  261,  261,  261,  262,  262,   91,  262,  263,
+      263,  263,  263,  264,   63,  264,  264,  265,  265,  265,
+      265,  266,  266,  266,  266,  267,  267,  267,  267,  268,
+      268,  268,  268,  269,  269,  269,  269,  270,   35,  270,
+
+      270,  271,  271,  271,  271,  272,  272,  272,  272,  273,
+       28,  273,  273,  274,  274,  274,  274,  275,   24,  275,
+      275,  276,  276,  276,  276,  277,   22,  277,  277,  278,
+      278,  278,  278,  279,   17,  279,  279,  280,  280,  280,
+      280,  281,    6,  281,  281,  282,  282,  282,  282,  283,
+      283,  283,  283,  284,    5,  284,  284,  285,    4,  285,
+      285,  286,    3,  286,  286,  287,  287,  287,  287,  288,
+      288,  288,  288,  289,    0,  289,  289,  290,  290,  290,
+      290,  291,  291,  291,  291,  292,    0,  292,  292,  293,
+      293,  293,  293,  294,    0,  294,  294,  295,  295,  295,
+
+      295,  296,  296,  296,  296,  297,  297,  297,  297,  298,
+      298,  298,  298,  299,  299,  299,  299,  300,    0,  300,
+      300,  301,    0,  301,  301,  302,  302,  302,  302,  303,
+      303,  303,  303,  304,    0,  304,  304,  305,  305,  305,
+      305,  306,  306,  306,  306,  307,    0,  307,  307,  308,
+        0,  308,  308,  309,  309,    0,  309,  310,  310,  310,
+      310,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
+      253,  253,  253,  253,  253
+
     } ;
 
 #define YY_TRAILING_MASK 0x2000
@@ -815,10 +847,18 @@ static void setformat(DiskParseContext *dpc, const char 
*str) {
     else xlu__disk_err(dpc,str,"unknown value for format");
 }
  
+/* Sets ->backend from the string.  IDL should provide something for this. */
+static void setbackendtype(DiskParseContext *dpc, const char *str) {
+    if (     !strcmp(str,"phy"))   DSET(dpc,backend,BACKEND,str,PHY);
+    else if (!strcmp(str,"tap"))   DSET(dpc,backend,BACKEND,str,TAP);
+    else if (!strcmp(str,"qdisk")) DSET(dpc,backend,BACKEND,str,QDISK);
+    else xlu__disk_err(dpc,str,"unknown value for backendtype");
+}
+ 
 #define DEPRECATE(usewhatinstead) /* not currently reported */
 
 
-#line 822 "libxlu_disk_l.c"
+#line 862 "libxlu_disk_l.c"
 
 #define INITIAL 0
 #define LEXERR 1
@@ -1054,12 +1094,12 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 118 "libxlu_disk_l.l"
+#line 126 "libxlu_disk_l.l"
 
 
  /*----- the scanner rules which do the parsing -----*/
 
-#line 1063 "libxlu_disk_l.c"
+#line 1103 "libxlu_disk_l.c"
 
        if ( !yyg->yy_init )
                {
@@ -1123,14 +1163,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 >= 240 )
+                               if ( yy_current_state >= 254 )
                                        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 != 239 );
+               while ( yy_current_state != 253 );
 
 yy_find_action:
                yy_current_state = *--yyg->yy_state_ptr;
@@ -1180,148 +1220,154 @@ do_action:    /* This label is used only to access 
EOF actions. */
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 122 "libxlu_disk_l.l"
+#line 130 "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 126 "libxlu_disk_l.l"
+#line 134 "libxlu_disk_l.l"
 { STRIP(','); setformat(DPC, FROMEQUALS); }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 128 "libxlu_disk_l.l"
+#line 136 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 1; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 129 "libxlu_disk_l.l"
+#line 137 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 1; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 130 "libxlu_disk_l.l"
+#line 138 "libxlu_disk_l.l"
 { DPC->disk->is_cdrom = 0; }
        YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 131 "libxlu_disk_l.l"
+#line 139 "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 133 "libxlu_disk_l.l"
+#line 141 "libxlu_disk_l.l"
 { STRIP(','); setaccess(DPC, FROMEQUALS); }
        YY_BREAK
 case 8:
 /* rule 8 can match eol */
 YY_RULE_SETUP
-#line 135 "libxlu_disk_l.l"
-{ STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
+#line 142 "libxlu_disk_l.l"
+{ STRIP(','); setbackendtype(DPC,yytext); }
        YY_BREAK
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 136 "libxlu_disk_l.l"
+#line 144 "libxlu_disk_l.l"
+{ STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
+       YY_BREAK
+case 10:
+/* rule 10 can match eol */
+YY_RULE_SETUP
+#line 145 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
        YY_BREAK
 /* the target magic parameter, eats the rest of the string */
-case 10:
+case 11:
 YY_RULE_SETUP
-#line 140 "libxlu_disk_l.l"
+#line 149 "libxlu_disk_l.l"
 { STRIP(','); SAVESTRING("target", pdev_path, FROMEQUALS); }
        YY_BREAK
 /* unknown parameters */
-case 11:
-/* rule 11 can match eol */
+case 12:
+/* rule 12 can match eol */
 YY_RULE_SETUP
-#line 144 "libxlu_disk_l.l"
+#line 153 "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 12:
+case 13:
 YY_RULE_SETUP
-#line 151 "libxlu_disk_l.l"
+#line 160 "libxlu_disk_l.l"
 {
                     STRIP(':');
                     DPC->had_depr_prefix=1; DEPRECATE("use `[format=]...,'");
                     setformat(DPC, yytext);
                  }
        YY_BREAK
-case 13:
+case 14:
 YY_RULE_SETUP
-#line 157 "libxlu_disk_l.l"
+#line 166 "libxlu_disk_l.l"
 {
                    STRIP(':');
                     DPC->had_depr_prefix=1; DEPRECATE("use `script=...'");
                    SAVESTRING("script", script, yytext);
                }
        YY_BREAK
-case 14:
+case 15:
 *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 163 "libxlu_disk_l.l"
+#line 172 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 15:
+case 16:
 YY_RULE_SETUP
-#line 164 "libxlu_disk_l.l"
+#line 173 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 16:
+case 17:
 *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 165 "libxlu_disk_l.l"
+#line 174 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 17:
+case 18:
 *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 166 "libxlu_disk_l.l"
+#line 175 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 18:
+case 19:
 *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 167 "libxlu_disk_l.l"
+#line 176 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 19:
+case 20:
 *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 168 "libxlu_disk_l.l"
+#line 177 "libxlu_disk_l.l"
 { DPC->had_depr_prefix=1; DEPRECATE(0); }
        YY_BREAK
-case 20:
-/* rule 20 can match eol */
+case 21:
+/* rule 21 can match eol */
 YY_RULE_SETUP
-#line 170 "libxlu_disk_l.l"
+#line 179 "libxlu_disk_l.l"
 {
                  xlu__disk_err(DPC,yytext,"unknown deprecated disk prefix");
                  return 0;
                }
        YY_BREAK
 /* positional parameters */
-case 21:
-/* rule 21 can match eol */
+case 22:
+/* rule 22 can match eol */
 YY_RULE_SETUP
-#line 177 "libxlu_disk_l.l"
+#line 186 "libxlu_disk_l.l"
 {
     char *colon;
     STRIP(',');
@@ -1356,27 +1402,27 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 22:
+case 23:
 YY_RULE_SETUP
-#line 211 "libxlu_disk_l.l"
+#line 220 "libxlu_disk_l.l"
 {
     BEGIN(LEXERR);
     yymore();
 }
        YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 215 "libxlu_disk_l.l"
+#line 224 "libxlu_disk_l.l"
 {
     xlu__disk_err(DPC,yytext,"bad disk syntax"); return 0;
 }
        YY_BREAK
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 218 "libxlu_disk_l.l"
+#line 227 "libxlu_disk_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1380 "libxlu_disk_l.c"
+#line 1426 "libxlu_disk_l.c"
                        case YY_STATE_EOF(INITIAL):
                        case YY_STATE_EOF(LEXERR):
                                yyterminate();
@@ -1640,7 +1686,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 >= 240 )
+                       if ( yy_current_state >= 254 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned 
int) yy_c];
@@ -1664,11 +1710,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 >= 240 )
+               if ( yy_current_state >= 254 )
                        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 == 239);
+       yy_is_jam = (yy_current_state == 253);
        if ( ! yy_is_jam )
                *yyg->yy_state_ptr++ = yy_current_state;
 
@@ -2468,4 +2514,4 @@ void xlu__disk_yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 218 "libxlu_disk_l.l"
+#line 227 "libxlu_disk_l.l"
diff --git a/tools/libxl/libxlu_disk_l.h b/tools/libxl/libxlu_disk_l.h
index 7c1a8a0..2b6396e 100644
--- a/tools/libxl/libxlu_disk_l.h
+++ b/tools/libxl/libxlu_disk_l.h
@@ -340,7 +340,7 @@ extern int xlu__disk_yylex (yyscan_t yyscanner);
 #undef YY_DECL
 #endif
 
-#line 218 "libxlu_disk_l.l"
+#line 227 "libxlu_disk_l.l"
 
 #line 346 "libxlu_disk_l.h"
 #undef xlu__disk_yyIN_HEADER
diff --git a/tools/libxl/libxlu_disk_l.l b/tools/libxl/libxlu_disk_l.l
index 48a1314..e9d43c9 100644
--- a/tools/libxl/libxlu_disk_l.l
+++ b/tools/libxl/libxlu_disk_l.l
@@ -100,6 +100,14 @@ static void setformat(DiskParseContext *dpc, const char 
*str) {
     else xlu__disk_err(dpc,str,"unknown value for format");
 }
  
+/* Sets ->backend from the string.  IDL should provide something for this. */
+static void setbackendtype(DiskParseContext *dpc, const char *str) {
+    if (     !strcmp(str,"phy"))   DSET(dpc,backend,BACKEND,str,PHY);
+    else if (!strcmp(str,"tap"))   DSET(dpc,backend,BACKEND,str,TAP);
+    else if (!strcmp(str,"qdisk")) DSET(dpc,backend,BACKEND,str,QDISK);
+    else xlu__disk_err(dpc,str,"unknown value for backendtype");
+}
+ 
 #define DEPRECATE(usewhatinstead) /* not currently reported */
 
 %}
@@ -131,6 +139,7 @@ devtype=disk,?      { DPC->disk->is_cdrom = 0; }
 devtype=[^,]*,?        { xlu__disk_err(DPC,yytext,"unknown value for type"); }
 
 access=[^,]*,? { STRIP(','); setaccess(DPC, FROMEQUALS); }
+backendtype=[^,]*? { STRIP(','); setbackendtype(DPC,yytext); }
 
 vdev=[^,]*,?   { STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
 script=[^,]*,? { STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
-- 
1.5.6.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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