WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 7/9] libxl: disks: allow specification of "backendtyp

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

<Prev in Thread] Current Thread [Next in Thread>