Annotation of embedaddon/libxml2/test/relaxng/libvirt.rng, revision 1.1

1.1     ! misho       1: <?xml version="1.0"?>
        !             2: <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
        !             3:   <!-- We handle only document defining a domain -->
        !             4:   <start>
        !             5:     <ref name="domain"/>
        !             6:   </start>
        !             7: 
        !             8:   <!--
        !             9:       We handle only document defining a domain
        !            10:     -->
        !            11:   <define name="domain">
        !            12:     <element name="domain">
        !            13:       <ref name="hvs"/>
        !            14:       <ref name="ids"/>
        !            15:       <interleave>
        !            16:         <ref name="os"/>
        !            17:         <ref name="clock"/>
        !            18:         <ref name="resources"/>
        !            19:         <ref name="features"/>
        !            20:         <ref name="termination"/>
        !            21:         <optional>
        !            22:           <ref name="devices"/>
        !            23:         </optional>
        !            24:         <optional>
        !            25:           <ref name="seclabel"/>
        !            26:         </optional>
        !            27:       </interleave>
        !            28:     </element>
        !            29:   </define>
        !            30:   <define name="seclabel">
        !            31:     <element name="seclabel">
        !            32:       <attribute name="model">
        !            33:         <text/>
        !            34:       </attribute>
        !            35:       <attribute name="type">
        !            36:         <choice>
        !            37:           <value>dynamic</value>
        !            38:           <value>static</value>
        !            39:         </choice>
        !            40:       </attribute>
        !            41:       <element name="label">
        !            42:         <text/>
        !            43:       </element>
        !            44:     </element>
        !            45:   </define>
        !            46:   <define name="hvs">
        !            47:     <attribute name="type">
        !            48:       <choice>
        !            49:         <value>xen</value>
        !            50:         <value>kvm</value>
        !            51:         <value>kqemu</value>
        !            52:         <value>qemu</value>
        !            53:         <value>lxc</value>
        !            54:         <value>openvz</value>
        !            55:         <value>test</value>
        !            56:       </choice>
        !            57:     </attribute>
        !            58:   </define>
        !            59:   <define name="os">
        !            60:     <choice>
        !            61:       <ref name="osxen"/>
        !            62:       <ref name="oshvm"/>
        !            63:       <ref name="osexe"/>
        !            64:     </choice>
        !            65:   </define>
        !            66:   <define name="osxen">
        !            67:     <choice>
        !            68:       <group>
        !            69:         <optional>
        !            70:           <ref name="bootloader"/>
        !            71:         </optional>
        !            72:         <element name="os">
        !            73:           <ref name="ostypexen"/>
        !            74:           <ref name="osbootkernel"/>
        !            75:         </element>
        !            76:       </group>
        !            77:       <group>
        !            78:         <ref name="bootloader"/>
        !            79:         <optional>
        !            80:           <element name="os">
        !            81:             <ref name="ostypexen"/>
        !            82:             <optional>
        !            83:               <ref name="osbootkernel"/>
        !            84:             </optional>
        !            85:           </element>
        !            86:         </optional>
        !            87:       </group>
        !            88:     </choice>
        !            89:   </define>
        !            90:   <define name="oshvm">
        !            91:     <element name="os">
        !            92:       <ref name="ostypehvm"/>
        !            93:       <interleave>
        !            94:         <optional>
        !            95:           <element name="loader">
        !            96:             <ref name="absFilePath"/>
        !            97:           </element>
        !            98:         </optional>
        !            99:         <choice>
        !           100:           <ref name="osbootkernel"/>
        !           101:           <ref name="osbootdev"/>
        !           102:         </choice>
        !           103:       </interleave>
        !           104:     </element>
        !           105:   </define>
        !           106:   <define name="ostypexen">
        !           107:     <element name="type">
        !           108:       <optional>
        !           109:         <attribute name="arch">
        !           110:           <choice>
        !           111:             <value>i686</value>
        !           112:             <value>x86_64</value>
        !           113:             <value>ia64</value>
        !           114:           </choice>
        !           115:         </attribute>
        !           116:       </optional>
        !           117:       <optional>
        !           118:         <attribute name="machine">
        !           119:           <choice>
        !           120:             <value>xenpv</value>
        !           121:             <value>xenner</value>
        !           122:           </choice>
        !           123:         </attribute>
        !           124:       </optional>
        !           125:       <choice>
        !           126:         <value>xen</value>
        !           127:         <value>linux</value>
        !           128:       </choice>
        !           129:     </element>
        !           130:   </define>
        !           131:   <define name="ostypehvm">
        !           132:     <element name="type">
        !           133:       <optional>
        !           134:         <choice>
        !           135:           <ref name="hvmx86"/>
        !           136:           <ref name="hvmmips"/>
        !           137:           <ref name="hvmsparc"/>
        !           138:           <ref name="hvmppc"/>
        !           139:         </choice>
        !           140:       </optional>
        !           141:       <value>hvm</value>
        !           142:     </element>
        !           143:   </define>
        !           144:   <define name="hvmx86">
        !           145:     <group>
        !           146:       <attribute name="arch">
        !           147:         <choice>
        !           148:           <value>i686</value>
        !           149:           <value>x86_64</value>
        !           150:         </choice>
        !           151:       </attribute>
        !           152:       <attribute name="machine">
        !           153:         <choice>
        !           154:           <value>xenfv</value>
        !           155:           <value>pc</value>
        !           156:           <value>isapc</value>
        !           157:         </choice>
        !           158:       </attribute>
        !           159:     </group>
        !           160:   </define>
        !           161:   <define name="hvmmips">
        !           162:     <group>
        !           163:       <attribute name="arch">
        !           164:         <value>mips</value>
        !           165:       </attribute>
        !           166:       <attribute name="machine">
        !           167:         <value>mips</value>
        !           168:       </attribute>
        !           169:     </group>
        !           170:   </define>
        !           171:   <define name="hvmsparc">
        !           172:     <group>
        !           173:       <attribute name="arch">
        !           174:         <value>sparc</value>
        !           175:       </attribute>
        !           176:       <attribute name="machine">
        !           177:         <value>sun4m</value>
        !           178:       </attribute>
        !           179:     </group>
        !           180:   </define>
        !           181:   <define name="hvmppc">
        !           182:     <group>
        !           183:       <attribute name="arch">
        !           184:         <value>ppc</value>
        !           185:       </attribute>
        !           186:       <attribute name="machine">
        !           187:         <choice>
        !           188:           <value>g3beige</value>
        !           189:           <value>mac99</value>
        !           190:           <value>prep</value>
        !           191:         </choice>
        !           192:       </attribute>
        !           193:     </group>
        !           194:   </define>
        !           195:   <define name="osexe">
        !           196:     <element name="os">
        !           197:       <element name="type">
        !           198:         <value>exe</value>
        !           199:       </element>
        !           200:       <interleave>
        !           201:         <optional>
        !           202:           <element name="init">
        !           203:             <ref name="absFilePath"/>
        !           204:           </element>
        !           205:         </optional>
        !           206:       </interleave>
        !           207:     </element>
        !           208:   </define>
        !           209:   <!--
        !           210:       The Identifiers can be:
        !           211:       - an optional id attribute with a number on the domain element
        !           212:       - a mandatory name
        !           213:       - an optional uuid
        !           214:     -->
        !           215:   <define name="ids">
        !           216:     <optional>
        !           217:       <attribute name="id">
        !           218:         <ref name="unsignedInt"/>
        !           219:       </attribute>
        !           220:     </optional>
        !           221:     <interleave>
        !           222:       <element name="name">
        !           223:         <ref name="domainName"/>
        !           224:       </element>
        !           225:       <optional>
        !           226:         <element name="uuid">
        !           227:           <ref name="UUID"/>
        !           228:         </element>
        !           229:       </optional>
        !           230:     </interleave>
        !           231:   </define>
        !           232:   <!--
        !           233:       Resources usage defines the amount of memory (maximum and possibly
        !           234:       current usage) and number of virtual CPUs used by that domain.
        !           235:       We can't check here the rule that currentMemory <= memory
        !           236:     -->
        !           237:   <define name="resources">
        !           238:     <interleave>
        !           239:       <element name="memory">
        !           240:         <ref name="memoryKB"/>
        !           241:       </element>
        !           242:       <optional>
        !           243:         <element name="currentMemory">
        !           244:           <ref name="memoryKB"/>
        !           245:         </element>
        !           246:       </optional>
        !           247:       <optional>
        !           248:        <element name="memoryBacking">
        !           249:          <optional>
        !           250:            <element name="hugepages">
        !           251:              <empty/>
        !           252:            </element>
        !           253:          </optional>
        !           254:        </element>
        !           255:       </optional>
        !           256:       <optional>
        !           257:         <element name="vcpu">
        !           258:           <optional>
        !           259:             <attribute name="cpuset"/>
        !           260:           </optional>
        !           261:           <ref name="countCPU"/>
        !           262:         </element>
        !           263:       </optional>
        !           264:     </interleave>
        !           265:   </define>
        !           266:   <define name="clock">
        !           267:     <optional>
        !           268:       <element name="clock">
        !           269:         <attribute name="offset">
        !           270:           <choice>
        !           271:             <value>localtime</value>
        !           272:             <value>utc</value>
        !           273:           </choice>
        !           274:         </attribute>
        !           275:         <empty/>
        !           276:       </element>
        !           277:     </optional>
        !           278:   </define>
        !           279:   <!--
        !           280:       A bootloader may be used to extract the OS information instead of
        !           281:       defining the OS parameter in the instance. It points just to the
        !           282:       binary or script used to extract the data from the first disk device.
        !           283:     -->
        !           284:   <define name="bootloader">
        !           285:     <interleave>
        !           286:       <element name="bootloader">
        !           287:         <choice>
        !           288:           <ref name="absFilePath"/>
        !           289:           <empty/>
        !           290:         </choice>
        !           291:       </element>
        !           292:       <optional>
        !           293:         <element name="bootloader_args">
        !           294:           <text/>
        !           295:         </element>
        !           296:       </optional>
        !           297:     </interleave>
        !           298:   </define>
        !           299:   <define name="osbootkernel">
        !           300:     <interleave>
        !           301:       <element name="kernel">
        !           302:         <ref name="absFilePath"/>
        !           303:       </element>
        !           304:       <optional>
        !           305:         <element name="initrd">
        !           306:           <ref name="absFilePath"/>
        !           307:         </element>
        !           308:       </optional>
        !           309:       <optional>
        !           310:         <element name="root">
        !           311:           <ref name="devicePath"/>
        !           312:         </element>
        !           313:       </optional>
        !           314:       <optional>
        !           315:         <element name="cmdline">
        !           316:           <text/>
        !           317:         </element>
        !           318:       </optional>
        !           319:     </interleave>
        !           320:   </define>
        !           321:   <define name="osbootdev">
        !           322:     <element name="boot">
        !           323:       <attribute name="dev">
        !           324:         <choice>
        !           325:           <value>hd</value>
        !           326:           <value>fd</value>
        !           327:           <value>cdrom</value>
        !           328:           <value>network</value>
        !           329:         </choice>
        !           330:       </attribute>
        !           331:       <empty/>
        !           332:     </element>
        !           333:   </define>
        !           334:   <define name="diskspec">
        !           335:     <optional>
        !           336:       <ref name="driver"/>
        !           337:     </optional>
        !           338:     <ref name="target"/>
        !           339:     <optional>
        !           340:       <element name="readonly">
        !           341:         <empty/>
        !           342:       </element>
        !           343:     </optional>
        !           344:     <optional>
        !           345:       <element name="shareable">
        !           346:         <empty/>
        !           347:       </element>
        !           348:     </optional>
        !           349:     <optional>
        !           350:       <element name="serial">
        !           351:         <ref name="diskSerial"/>
        !           352:       </element>
        !           353:     </optional>
        !           354:   </define>
        !           355:   <!--
        !           356:       A disk description can be either of type file or block
        !           357:       The name of the attribute on the source element depends on the type
        !           358: 
        !           359:     -->
        !           360:   <define name="disk">
        !           361:     <element name="disk">
        !           362:       <optional>
        !           363:         <attribute name="device">
        !           364:           <choice>
        !           365:             <value>floppy</value>
        !           366:             <value>disk</value>
        !           367:             <value>cdrom</value>
        !           368:           </choice>
        !           369:         </attribute>
        !           370:       </optional>
        !           371:       <choice>
        !           372:         <group>
        !           373:           <attribute name="type">
        !           374:             <value>file</value>
        !           375:           </attribute>
        !           376:           <interleave>
        !           377:             <optional>
        !           378:               <element name="source">
        !           379:                 <attribute name="file">
        !           380:                   <ref name="absFilePath"/>
        !           381:                 </attribute>
        !           382:                 <empty/>
        !           383:               </element>
        !           384:             </optional>
        !           385:             <ref name="diskspec"/>
        !           386:           </interleave>
        !           387:         </group>
        !           388:         <group>
        !           389:           <attribute name="type">
        !           390:             <value>block</value>
        !           391:           </attribute>
        !           392:           <interleave>
        !           393:             <optional>
        !           394:               <element name="source">
        !           395:                 <attribute name="dev">
        !           396:                   <ref name="deviceName"/>
        !           397:                 </attribute>
        !           398:                 <empty/>
        !           399:               </element>
        !           400:             </optional>
        !           401:             <ref name="diskspec"/>
        !           402:           </interleave>
        !           403:         </group>
        !           404:         <ref name="diskspec"/>
        !           405:       </choice>
        !           406:     </element>
        !           407:   </define>
        !           408:   <define name="target">
        !           409:     <element name="target">
        !           410:       <attribute name="dev">
        !           411:         <ref name="deviceName"/>
        !           412:       </attribute>
        !           413:       <optional>
        !           414:         <attribute name="bus">
        !           415:           <choice>
        !           416:             <value>ide</value>
        !           417:             <value>fdc</value>
        !           418:             <value>scsi</value>
        !           419:             <value>virtio</value>
        !           420:             <value>xen</value>
        !           421:             <value>usb</value>
        !           422:             <value>uml</value>
        !           423:           </choice>
        !           424:         </attribute>
        !           425:       </optional>
        !           426:     </element>
        !           427:   </define>
        !           428:   <!--
        !           429:       Disk may use a special driver for access. Currently this is
        !           430:       only defined for Xen for tap/aio and file, but will certainly be
        !           431:       extended in the future, and libvirt doesn't look for specific values.
        !           432:     -->
        !           433:   <define name="driver">
        !           434:     <element name="driver">
        !           435:       <choice>
        !           436:         <group>
        !           437:           <ref name="driverFormat"/>
        !           438:           <optional>
        !           439:             <ref name="driverCache"/>
        !           440:           </optional>
        !           441:         </group>
        !           442:         <group>
        !           443:           <optional>
        !           444:             <ref name="driverFormat"/>
        !           445:           </optional>
        !           446:           <ref name="driverCache"/>
        !           447:         </group>
        !           448:       </choice>
        !           449:       <empty/>
        !           450:     </element>
        !           451:   </define>
        !           452:   <define name="driverFormat">
        !           453:     <attribute name="name">
        !           454:       <ref name="genericName"/>
        !           455:     </attribute>
        !           456:     <optional>
        !           457:       <attribute name="type">
        !           458:         <ref name="genericName"/>
        !           459:       </attribute>
        !           460:     </optional>
        !           461:   </define>
        !           462:   <define name="driverCache">
        !           463:     <attribute name="cache">
        !           464:       <choice>
        !           465:         <value>none</value>
        !           466:         <value>writeback</value>
        !           467:         <value>writethrough</value>
        !           468:       </choice>
        !           469:     </attribute>
        !           470:   </define>
        !           471:   <define name="filesystem">
        !           472:     <element name="filesystem">
        !           473:       <choice>
        !           474:         <group>
        !           475:           <attribute name="type">
        !           476:             <value>file</value>
        !           477:           </attribute>
        !           478:           <interleave>
        !           479:             <element name="source">
        !           480:               <attribute name="file">
        !           481:                 <ref name="absFilePath"/>
        !           482:               </attribute>
        !           483:               <empty/>
        !           484:             </element>
        !           485:             <ref name="filesystemtgt"/>
        !           486:           </interleave>
        !           487:         </group>
        !           488:         <group>
        !           489:           <attribute name="type">
        !           490:             <value>block</value>
        !           491:           </attribute>
        !           492:           <interleave>
        !           493:             <element name="source">
        !           494:               <attribute name="dev">
        !           495:                 <ref name="deviceName"/>
        !           496:               </attribute>
        !           497:               <empty/>
        !           498:             </element>
        !           499:             <ref name="filesystemtgt"/>
        !           500:           </interleave>
        !           501:         </group>
        !           502:         <group>
        !           503:           <attribute name="type">
        !           504:             <value>mount</value>
        !           505:           </attribute>
        !           506:           <interleave>
        !           507:             <element name="source">
        !           508:               <attribute name="dir">
        !           509:                 <ref name="absFilePath"/>
        !           510:               </attribute>
        !           511:               <empty/>
        !           512:             </element>
        !           513:             <ref name="filesystemtgt"/>
        !           514:           </interleave>
        !           515:         </group>
        !           516:         <group>
        !           517:           <attribute name="type">
        !           518:             <value>template</value>
        !           519:           </attribute>
        !           520:           <interleave>
        !           521:             <element name="source">
        !           522:               <attribute name="name">
        !           523:                 <ref name="genericName"/>
        !           524:               </attribute>
        !           525:               <empty/>
        !           526:             </element>
        !           527:             <ref name="filesystemtgt"/>
        !           528:           </interleave>
        !           529:         </group>
        !           530:       </choice>
        !           531:     </element>
        !           532:   </define>
        !           533:   <define name="filesystemtgt">
        !           534:     <element name="target">
        !           535:       <attribute name="dir">
        !           536:         <ref name="absDirPath"/>
        !           537:       </attribute>
        !           538:       <empty/>
        !           539:     </element>
        !           540:   </define>
        !           541:   <!--
        !           542:       An interface description can either be of type bridge in which case
        !           543:       it will use a bridging source, or of type ethernet which uses a device
        !           544:       source and a device target instead. They both share a set of interface
        !           545:       options. FIXME
        !           546:     -->
        !           547:   <define name="interface">
        !           548:     <element name="interface">
        !           549:       <choice>
        !           550:         <group>
        !           551:           <attribute name="type">
        !           552:             <value>bridge</value>
        !           553:           </attribute>
        !           554:           <interleave>
        !           555:             <optional>
        !           556:               <element name="source">
        !           557:                 <attribute name="bridge">
        !           558:                   <ref name="deviceName"/>
        !           559:                 </attribute>
        !           560:                 <empty/>
        !           561:               </element>
        !           562:             </optional>
        !           563:             <ref name="interface-options"/>
        !           564:           </interleave>
        !           565:         </group>
        !           566:         <group>
        !           567:           <attribute name="type">
        !           568:             <value>ethernet</value>
        !           569:           </attribute>
        !           570:           <interleave>
        !           571:             <optional>
        !           572:               <element name="source">
        !           573:                 <attribute name="dev">
        !           574:                   <ref name="deviceName"/>
        !           575:                 </attribute>
        !           576:                 <empty/>
        !           577:               </element>
        !           578:             </optional>
        !           579:             <ref name="interface-options"/>
        !           580:           </interleave>
        !           581:         </group>
        !           582:         <group>
        !           583:           <attribute name="type">
        !           584:             <value>network</value>
        !           585:           </attribute>
        !           586:           <interleave>
        !           587:             <element name="source">
        !           588:               <attribute name="network">
        !           589:                 <ref name="deviceName"/>
        !           590:               </attribute>
        !           591:               <empty/>
        !           592:             </element>
        !           593:             <ref name="interface-options"/>
        !           594:           </interleave>
        !           595:         </group>
        !           596:         <group>
        !           597:           <attribute name="type">
        !           598:             <value>user</value>
        !           599:           </attribute>
        !           600:           <interleave>
        !           601:             <ref name="interface-options"/>
        !           602:           </interleave>
        !           603:         </group>
        !           604:         <group>
        !           605:           <attribute name="type">
        !           606:             <value>internal</value>
        !           607:           </attribute>
        !           608:           <interleave>
        !           609:             <element name="source">
        !           610:               <attribute name="name">
        !           611:                 <ref name="deviceName"/>
        !           612:               </attribute>
        !           613:               <empty/>
        !           614:             </element>
        !           615:             <ref name="interface-options"/>
        !           616:           </interleave>
        !           617:         </group>
        !           618:       </choice>
        !           619:     </element>
        !           620:   </define>
        !           621:   <!--
        !           622:       The interface options possible are:
        !           623:         - the MAC address
        !           624:         - the IP address bound to the interface
        !           625:         - the name of the script used to set up the binding
        !           626:         - the target device used
        !           627:     -->
        !           628:   <define name="interface-options">
        !           629:     <interleave>
        !           630:       <optional>
        !           631:         <element name="target">
        !           632:           <attribute name="dev">
        !           633:             <ref name="deviceName"/>
        !           634:           </attribute>
        !           635:           <empty/>
        !           636:         </element>
        !           637:       </optional>
        !           638:       <optional>
        !           639:         <element name="mac">
        !           640:           <attribute name="address">
        !           641:             <ref name="addrMAC"/>
        !           642:           </attribute>
        !           643:           <empty/>
        !           644:         </element>
        !           645:       </optional>
        !           646:       <optional>
        !           647:         <element name="ip">
        !           648:           <attribute name="address">
        !           649:             <ref name="addrIP"/>
        !           650:           </attribute>
        !           651:           <empty/>
        !           652:         </element>
        !           653:       </optional>
        !           654:       <optional>
        !           655:         <element name="script">
        !           656:           <attribute name="path">
        !           657:             <ref name="filePath"/>
        !           658:           </attribute>
        !           659:           <empty/>
        !           660:         </element>
        !           661:       </optional>
        !           662:       <optional>
        !           663:         <element name="model">
        !           664:           <attribute name="type"/>
        !           665:           <empty/>
        !           666:         </element>
        !           667:       </optional>
        !           668:     </interleave>
        !           669:   </define>
        !           670:   <!--
        !           671:       An emulator description is just a path to the binary used for the task
        !           672:     -->
        !           673:   <define name="emulator">
        !           674:     <element name="emulator">
        !           675:       <ref name="absFilePath"/>
        !           676:     </element>
        !           677:   </define>
        !           678:   <!--
        !           679:       A graphic description, currently in Xen only 2 types are supported:
        !           680:         - sdl with optional display, xauth and fullscreen
        !           681:         - vnc with a required port and optional listen IP address, password
        !           682:           and keymap
        !           683:     -->
        !           684:   <define name="graphic">
        !           685:     <element name="graphics">
        !           686:       <choice>
        !           687:         <group>
        !           688:           <attribute name="type">
        !           689:             <value>sdl</value>
        !           690:           </attribute>
        !           691:           <optional>
        !           692:             <attribute name="display">
        !           693:               <text/>
        !           694:             </attribute>
        !           695:           </optional>
        !           696:           <optional>
        !           697:             <attribute name="xauth">
        !           698:               <text/>
        !           699:             </attribute>
        !           700:           </optional>
        !           701:           <optional>
        !           702:             <attribute name="fullscreen">
        !           703:               <choice>
        !           704:                 <value>yes</value>
        !           705:                 <value>no</value>
        !           706:               </choice>
        !           707:             </attribute>
        !           708:           </optional>
        !           709:         </group>
        !           710:         <group>
        !           711:           <attribute name="type">
        !           712:             <value>vnc</value>
        !           713:           </attribute>
        !           714:           <optional>
        !           715:             <attribute name="port">
        !           716:               <ref name="PortNumber"/>
        !           717:             </attribute>
        !           718:           </optional>
        !           719:           <optional>
        !           720:             <attribute name="autoport">
        !           721:               <choice>
        !           722:                 <value>yes</value>
        !           723:                 <value>no</value>
        !           724:               </choice>
        !           725:             </attribute>
        !           726:           </optional>
        !           727:           <optional>
        !           728:             <attribute name="listen">
        !           729:               <ref name="addrIP"/>
        !           730:             </attribute>
        !           731:           </optional>
        !           732:           <optional>
        !           733:             <attribute name="passwd">
        !           734:               <text/>
        !           735:             </attribute>
        !           736:           </optional>
        !           737:           <optional>
        !           738:             <attribute name="keymap">
        !           739:               <text/>
        !           740:             </attribute>
        !           741:           </optional>
        !           742:         </group>
        !           743:         <group>
        !           744:           <attribute name="type">
        !           745:             <value>rdp</value>
        !           746:           </attribute>
        !           747:           <optional>
        !           748:             <attribute name="port">
        !           749:               <ref name="PortNumber"/>
        !           750:             </attribute>
        !           751:           </optional>
        !           752:           <optional>
        !           753:             <attribute name="autoport">
        !           754:               <choice>
        !           755:                 <value>yes</value>
        !           756:                 <value>no</value>
        !           757:               </choice>
        !           758:             </attribute>
        !           759:           </optional>
        !           760:           <optional>
        !           761:             <attribute name="replaceUser">
        !           762:               <choice>
        !           763:                 <value>yes</value>
        !           764:                 <value>no</value>
        !           765:               </choice>
        !           766:             </attribute>
        !           767:           </optional>
        !           768:           <optional>
        !           769:             <attribute name="multiUser">
        !           770:               <choice>
        !           771:                 <value>yes</value>
        !           772:                 <value>no</value>
        !           773:               </choice>
        !           774:             </attribute>
        !           775:           </optional>
        !           776:           <optional>
        !           777:             <attribute name="listen">
        !           778:               <ref name="addrIP"/>
        !           779:             </attribute>
        !           780:           </optional>
        !           781:         </group>
        !           782:         <group>
        !           783:           <attribute name="type">
        !           784:             <value>desktop</value>
        !           785:           </attribute>
        !           786:           <optional>
        !           787:             <attribute name="display">
        !           788:               <text/>
        !           789:             </attribute>
        !           790:           </optional>
        !           791:           <optional>
        !           792:             <attribute name="fullscreen">
        !           793:               <choice>
        !           794:                 <value>yes</value>
        !           795:                 <value>no</value>
        !           796:               </choice>
        !           797:             </attribute>
        !           798:           </optional>
        !           799:         </group>
        !           800:       </choice>
        !           801:     </element>
        !           802:   </define>
        !           803:   <!--
        !           804:      A graphic description, currently in Xen only 2 types are supported:
        !           805:        - sdl with optional display, xauth and fullscreen
        !           806:        - vnc with a required port and optional listen IP address, password
        !           807:          and keymap
        !           808:    -->
        !           809:   <define name="video">
        !           810:     <element name="video">
        !           811:       <optional>
        !           812:        <element name="model">
        !           813:           <attribute name="type">
        !           814:             <choice>
        !           815:               <value>vga</value>
        !           816:               <value>cirrus</value>
        !           817:               <value>vmvga</value>
        !           818:               <value>xen</value>
        !           819:               <value>vbox</value>
        !           820:             </choice>
        !           821:           </attribute>
        !           822:           <optional>
        !           823:             <attribute name="vram">
        !           824:               <ref name="unsignedInt"/>
        !           825:             </attribute>
        !           826:           </optional>
        !           827:           <optional>
        !           828:             <attribute name="heads">
        !           829:               <ref name="unsignedInt"/>
        !           830:             </attribute>
        !           831:           </optional>
        !           832:           <optional>
        !           833:             <element name="acceleration">
        !           834:               <optional>
        !           835:                 <attribute name="accel3d">
        !           836:                   <choice>
        !           837:                     <value>yes</value>
        !           838:                     <value>no</value>
        !           839:                   </choice>
        !           840:                 </attribute>
        !           841:               </optional>
        !           842:               <optional>
        !           843:                 <attribute name="accel2d">
        !           844:                   <choice>
        !           845:                     <value>yes</value>
        !           846:                     <value>no</value>
        !           847:                   </choice>
        !           848:                 </attribute>
        !           849:               </optional>
        !           850:             </element>
        !           851:           </optional>
        !           852:        </element>
        !           853:       </optional>
        !           854:     </element>
        !           855:   </define>
        !           856:   <!--
        !           857:       When a domain terminates multiple policies can be applied depending
        !           858:       on how it ended:
        !           859:     -->
        !           860:   <define name="termination">
        !           861:     <interleave>
        !           862:       <optional>
        !           863:         <element name="on_reboot">
        !           864:           <ref name="offOptions"/>
        !           865:         </element>
        !           866:       </optional>
        !           867:       <optional>
        !           868:         <element name="on_poweroff">
        !           869:           <ref name="offOptions"/>
        !           870:         </element>
        !           871:       </optional>
        !           872:       <optional>
        !           873:         <element name="on_crash">
        !           874:           <ref name="offOptions"/>
        !           875:         </element>
        !           876:       </optional>
        !           877:     </interleave>
        !           878:   </define>
        !           879:   <!--
        !           880:       Options when a domain terminates:
        !           881:       destroy: The domain is cleaned up
        !           882:       restart: A new domain is started in place of the old one
        !           883:       preserve: The domain will remain in memory until it is destroyed manually
        !           884:       rename-restart: a variant of the previous one but where the old domain is
        !           885:                       renamed before being saved to allow a restart
        !           886:     -->
        !           887:   <define name="offOptions">
        !           888:     <choice>
        !           889:       <value>destroy</value>
        !           890:       <value>restart</value>
        !           891:       <value>preserve</value>
        !           892:       <value>rename-restart</value>
        !           893:     </choice>
        !           894:   </define>
        !           895:   <!--
        !           896:       Specific setup for a qemu emulated character device.  Note: this
        !           897:       definition doesn't fully specify the constraints on this node.
        !           898:     -->
        !           899:   <define name="qemucdev">
        !           900:     <attribute name="type">
        !           901:       <choice>
        !           902:         <value>dev</value>
        !           903:         <value>file</value>
        !           904:         <value>pipe</value>
        !           905:         <value>unix</value>
        !           906:         <value>tcp</value>
        !           907:         <value>udp</value>
        !           908:         <value>null</value>
        !           909:         <value>stdio</value>
        !           910:         <value>vc</value>
        !           911:         <value>pty</value>
        !           912:       </choice>
        !           913:     </attribute>
        !           914:     <interleave>
        !           915:       <optional>
        !           916:         <oneOrMore>
        !           917:           <element name="source">
        !           918:             <optional>
        !           919:               <attribute name="mode"/>
        !           920:             </optional>
        !           921:             <optional>
        !           922:               <attribute name="path"/>
        !           923:             </optional>
        !           924:             <optional>
        !           925:               <attribute name="host"/>
        !           926:             </optional>
        !           927:             <optional>
        !           928:               <attribute name="service"/>
        !           929:             </optional>
        !           930:             <optional>
        !           931:               <attribute name="wiremode"/>
        !           932:             </optional>
        !           933:           </element>
        !           934:         </oneOrMore>
        !           935:       </optional>
        !           936:       <optional>
        !           937:         <element name="protocol">
        !           938:           <optional>
        !           939:             <attribute name="type"/>
        !           940:           </optional>
        !           941:         </element>
        !           942:       </optional>
        !           943:       <optional>
        !           944:         <element name="target">
        !           945:           <optional>
        !           946:             <attribute name="port"/>
        !           947:           </optional>
        !           948:         </element>
        !           949:       </optional>
        !           950:     </interleave>
        !           951:   </define>
        !           952:   <!--
        !           953:       The description for a console
        !           954:       just a tty device
        !           955:     -->
        !           956:   <define name="console">
        !           957:     <element name="console">
        !           958:       <choice>
        !           959:         <group>
        !           960:           <optional>
        !           961:             <attribute name="tty">
        !           962:               <ref name="devicePath"/>
        !           963:             </attribute>
        !           964:           </optional>
        !           965:           <empty/>
        !           966:         </group>
        !           967:         <ref name="qemucdev"/>
        !           968:       </choice>
        !           969:     </element>
        !           970:   </define>
        !           971:   <define name="sound">
        !           972:     <element name="sound">
        !           973:       <attribute name="model">
        !           974:         <choice>
        !           975:           <value>sb16</value>
        !           976:           <value>es1370</value>
        !           977:           <value>pcspk</value>
        !           978:           <value>ac97</value>
        !           979:         </choice>
        !           980:       </attribute>
        !           981:     </element>
        !           982:   </define>
        !           983:   <define name="parallel">
        !           984:     <element name="parallel">
        !           985:       <ref name="qemucdev"/>
        !           986:     </element>
        !           987:   </define>
        !           988:   <define name="serial">
        !           989:     <element name="serial">
        !           990:       <ref name="qemucdev"/>
        !           991:     </element>
        !           992:   </define>
        !           993:   <define name="input">
        !           994:     <element name="input">
        !           995:       <attribute name="type">
        !           996:         <choice>
        !           997:           <value>tablet</value>
        !           998:           <value>mouse</value>
        !           999:         </choice>
        !          1000:       </attribute>
        !          1001:       <optional>
        !          1002:         <attribute name="bus">
        !          1003:           <choice>
        !          1004:             <value>ps2</value>
        !          1005:             <value>usb</value>
        !          1006:             <value>xen</value>
        !          1007:           </choice>
        !          1008:         </attribute>
        !          1009:       </optional>
        !          1010:     </element>
        !          1011:   </define>
        !          1012:   <define name="hostdev">
        !          1013:     <element name="hostdev">
        !          1014:       <optional>
        !          1015:         <attribute name="mode">
        !          1016:           <choice>
        !          1017:             <value>subsystem</value>
        !          1018:             <value>capabilities</value>
        !          1019:           </choice>
        !          1020:         </attribute>
        !          1021:         <attribute name="type">
        !          1022:           <choice>
        !          1023:             <value>usb</value>
        !          1024:             <value>pci</value>
        !          1025:           </choice>
        !          1026:         </attribute>
        !          1027:         <attribute name="managed">
        !          1028:           <choice>
        !          1029:             <value>yes</value>
        !          1030:             <value>no</value>
        !          1031:           </choice>
        !          1032:         </attribute>
        !          1033:       </optional>
        !          1034:       <group>
        !          1035:         <element name="source">
        !          1036:           <choice>
        !          1037:             <ref name="usbproduct"/>
        !          1038:             <ref name="usbaddress"/>
        !          1039:             <ref name="pciaddress"/>
        !          1040:           </choice>
        !          1041:         </element>
        !          1042:       </group>
        !          1043:     </element>
        !          1044:   </define>
        !          1045:   <define name="usbproduct">
        !          1046:     <element name="vendor">
        !          1047:       <attribute name="id">
        !          1048:         <ref name="usbId"/>
        !          1049:       </attribute>
        !          1050:     </element>
        !          1051:     <element name="product">
        !          1052:       <attribute name="id">
        !          1053:         <ref name="usbId"/>
        !          1054:       </attribute>
        !          1055:     </element>
        !          1056:   </define>
        !          1057:   <define name="usbaddress">
        !          1058:     <element name="address">
        !          1059:       <attribute name="bus">
        !          1060:         <ref name="usbAddr"/>
        !          1061:       </attribute>
        !          1062:       <attribute name="device">
        !          1063:         <ref name="usbAddr"/>
        !          1064:       </attribute>
        !          1065:     </element>
        !          1066:   </define>
        !          1067:   <define name="pciaddress">
        !          1068:     <element name="address">
        !          1069:       <optional>
        !          1070:         <attribute name="domain">
        !          1071:           <ref name="pciDomain"/>
        !          1072:         </attribute>
        !          1073:       </optional>
        !          1074:       <attribute name="bus">
        !          1075:         <ref name="pciBus"/>
        !          1076:       </attribute>
        !          1077:       <attribute name="slot">
        !          1078:         <ref name="pciSlot"/>
        !          1079:       </attribute>
        !          1080:       <attribute name="function">
        !          1081:         <ref name="pciFunc"/>
        !          1082:       </attribute>
        !          1083:     </element>
        !          1084:   </define>
        !          1085:   <!--
        !          1086:       Devices attached to a domain.
        !          1087:     -->
        !          1088:   <define name="devices">
        !          1089:     <element name="devices">
        !          1090:       <interleave>
        !          1091:         <optional>
        !          1092:           <ref name="emulator"/>
        !          1093:         </optional>
        !          1094:         <zeroOrMore>
        !          1095:           <choice>
        !          1096:             <ref name="disk"/>
        !          1097:             <ref name="filesystem"/>
        !          1098:             <ref name="interface"/>
        !          1099:             <ref name="input"/>
        !          1100:             <ref name="sound"/>
        !          1101:             <ref name="hostdev"/>
        !          1102:             <ref name="graphic"/>
        !          1103:             <ref name="video"/>
        !          1104:             <ref name="console"/>
        !          1105:             <ref name="parallel"/>
        !          1106:             <ref name="serial"/>
        !          1107:           </choice>
        !          1108:         </zeroOrMore>
        !          1109:       </interleave>
        !          1110:     </element>
        !          1111:   </define>
        !          1112:   <!--
        !          1113:       A set of optional features: PAE, APIC and ACPI support
        !          1114:     -->
        !          1115:   <define name="features">
        !          1116:     <optional>
        !          1117:       <element name="features">
        !          1118:         <interleave>
        !          1119:           <optional>
        !          1120:             <element name="pae">
        !          1121:               <empty/>
        !          1122:             </element>
        !          1123:           </optional>
        !          1124:           <optional>
        !          1125:             <element name="apic">
        !          1126:               <empty/>
        !          1127:             </element>
        !          1128:           </optional>
        !          1129:           <optional>
        !          1130:             <element name="acpi">
        !          1131:               <empty/>
        !          1132:             </element>
        !          1133:           </optional>
        !          1134:         </interleave>
        !          1135:       </element>
        !          1136:     </optional>
        !          1137:   </define>
        !          1138:   <!--
        !          1139:        Type library
        !          1140: 
        !          1141:        Our unsignedInt doesn't allow a leading '+' in its lexical form
        !          1142:        A domain name shoul be made of ascii, numbers, _-+ and is non-empty
        !          1143:        UUID currently allows only the 32 characters strict syntax
        !          1144:        memoryKB request at least 4Mbytes though Xen will grow bigger if too low
        !          1145:     -->
        !          1146:   <define name="unsignedInt">
        !          1147:     <data type="unsignedInt">
        !          1148:       <param name="pattern">[0-9]+</param>
        !          1149:     </data>
        !          1150:   </define>
        !          1151:   <define name="countCPU">
        !          1152:     <data type="unsignedShort">
        !          1153:       <param name="pattern">[0-9]+</param>
        !          1154:       <param name="minInclusive">1</param>
        !          1155:     </data>
        !          1156:   </define>
        !          1157:   <define name="PortNumber">
        !          1158:     <data type="short">
        !          1159:       <param name="minInclusive">-1</param>
        !          1160:     </data>
        !          1161:   </define>
        !          1162:   <define name="memoryKB">
        !          1163:     <data type="unsignedInt">
        !          1164:       <param name="pattern">[0-9]+</param>
        !          1165:       <param name="minInclusive">4000</param>
        !          1166:     </data>
        !          1167:   </define>
        !          1168:   <define name="domainName">
        !          1169:     <data type="string">
        !          1170:       <param name="pattern">[A-Za-z0-9_\.\+\-&amp;:/]+</param>
        !          1171:     </data>
        !          1172:   </define>
        !          1173:   <define name="diskSerial">
        !          1174:     <data type="string">
        !          1175:       <param name="pattern">[A-Za-z0-9_\.\+\-]+</param>
        !          1176:     </data>
        !          1177:   </define>
        !          1178:   <define name="genericName">
        !          1179:     <data type="string">
        !          1180:       <param name="pattern">[a-zA-Z0-9_\+\-]+</param>
        !          1181:     </data>
        !          1182:   </define>
        !          1183:   <define name="UUID">
        !          1184:     <choice>
        !          1185:       <data type="string">
        !          1186:         <param name="pattern">[a-fA-F0-9]{32}</param>
        !          1187:       </data>
        !          1188:       <data type="string">
        !          1189:         <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
        !          1190:       </data>
        !          1191:     </choice>
        !          1192:   </define>
        !          1193:   <define name="filePath">
        !          1194:     <data type="string">
        !          1195:       <param name="pattern">[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
        !          1196:     </data>
        !          1197:   </define>
        !          1198:   <define name="absFilePath">
        !          1199:     <data type="string">
        !          1200:       <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
        !          1201:     </data>
        !          1202:   </define>
        !          1203:   <define name="absDirPath">
        !          1204:     <data type="string">
        !          1205:       <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]*</param>
        !          1206:     </data>
        !          1207:   </define>
        !          1208:   <define name="devicePath">
        !          1209:     <data type="string">
        !          1210:       <param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
        !          1211:     </data>
        !          1212:   </define>
        !          1213:   <define name="deviceName">
        !          1214:     <data type="string">
        !          1215:       <param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
        !          1216:     </data>
        !          1217:   </define>
        !          1218:   <define name="addrMAC">
        !          1219:     <data type="string">
        !          1220:       <param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
        !          1221:     </data>
        !          1222:   </define>
        !          1223:   <define name="addrIP">
        !          1224:     <data type="string">
        !          1225:       <param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
        !          1226:     </data>
        !          1227:   </define>
        !          1228:   <define name="usbId">
        !          1229:     <data type="string">
        !          1230:       <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
        !          1231:     </data>
        !          1232:   </define>
        !          1233:   <define name="usbAddr">
        !          1234:     <data type="string">
        !          1235:       <param name="pattern">(0x)?[0-9a-fA-F]{1,3}</param>
        !          1236:     </data>
        !          1237:   </define>
        !          1238:   <define name="pciDomain">
        !          1239:     <data type="string">
        !          1240:       <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
        !          1241:     </data>
        !          1242:   </define>
        !          1243:   <define name="pciBus">
        !          1244:     <data type="string">
        !          1245:       <param name="pattern">(0x)?[0-9a-fA-F]{1,2}</param>
        !          1246:     </data>
        !          1247:   </define>
        !          1248:   <define name="pciSlot">
        !          1249:     <data type="string">
        !          1250:       <param name="pattern">(0x)?[0-1]?[0-9a-fA-F]</param>
        !          1251:     </data>
        !          1252:   </define>
        !          1253:   <define name="pciFunc">
        !          1254:     <data type="string">
        !          1255:       <param name="pattern">(0x)?[0-7]</param>
        !          1256:     </data>
        !          1257:   </define>
        !          1258: </grammar>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>