]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Support script for bridge interface type
authorJohn Levon <john.levon@sun.com>
Thu, 22 Jan 2009 18:29:13 +0000 (18:29 +0000)
committerJohn Levon <john.levon@sun.com>
Thu, 22 Jan 2009 18:29:13 +0000 (18:29 +0000)
27 files changed:
ChangeLog
src/domain_conf.c
src/domain_conf.h
src/xend_internal.c
src/xm_internal.c
tests/sexpr2xmldata/sexpr2xml-curmem.xml
tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml
tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml
tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml
tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml
tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml
tests/sexpr2xmldata/sexpr2xml-fv-sound.xml
tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml
tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml
tests/sexpr2xmldata/sexpr2xml-fv-utc.xml
tests/sexpr2xmldata/sexpr2xml-fv-v2.xml
tests/sexpr2xmldata/sexpr2xml-fv.xml
tests/sexpr2xmldata/sexpr2xml-net-bridged.xml
tests/sexpr2xmldata/sexpr2xml-net-e1000.xml

index 308d1b0199e27e5b16786b826acde57c2567b614..fe360a02f060efdbefcfc0748764478c4e830b16 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+Thu Jan 22 09:51:29 PST 2009 John Levon <john.levon@sun.com>
+
+       * src/domain_conf.h, src/domain_conf.c, src/xend_internal.c,
+       src/xm_internal.c: Support script for bridge interface type
+
+       * tests/sexpr2xmldata/sexpr2xml-curmem.xml,
+       tests/sexpr2xmldata/sexpr2xml-disk-block-shareable.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp-telnet.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-sound.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-utc.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv-v2.xml,
+       tests/sexpr2xmldata/sexpr2xml-fv.xml,
+       tests/sexpr2xmldata/sexpr2xml-net-bridged.xml,
+       tests/sexpr2xmldata/sexpr2xml-net-e1000.xml: update tests
+
 Wed Jan 21 18:18:12 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        Missing test case fix up from Xen threadsafety changes
index 6e3b317ee124b12143e1cc90e0f220456e1e6110..feb77cac92b727599e8b72abe9df528856a0d5f8 100644 (file)
@@ -288,6 +288,7 @@ void virDomainNetDefFree(virDomainNetDefPtr def)
 
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
         VIR_FREE(def->data.bridge.brname);
+        VIR_FREE(def->data.bridge.script);
         break;
     }
 
@@ -897,7 +898,8 @@ virDomainNetDefParseXML(virConnectPtr conn,
                     VIR_FREE(ifname);
                 }
             } else if ((script == NULL) &&
-                       (def->type == VIR_DOMAIN_NET_TYPE_ETHERNET) &&
+                       (def->type == VIR_DOMAIN_NET_TYPE_ETHERNET ||
+                        def->type == VIR_DOMAIN_NET_TYPE_BRIDGE) &&
                        xmlStrEqual(cur->name, BAD_CAST "script")) {
                 script = virXMLPropString(cur, "path");
             } else if (xmlStrEqual (cur->name, BAD_CAST "model")) {
@@ -948,6 +950,10 @@ virDomainNetDefParseXML(virConnectPtr conn,
         }
         def->data.bridge.brname = bridge;
         bridge = NULL;
+        if (script != NULL) {
+            def->data.bridge.script = script;
+            script = NULL;
+        }
         break;
 
     case VIR_DOMAIN_NET_TYPE_CLIENT:
@@ -2883,6 +2889,9 @@ virDomainNetDefFormat(virConnectPtr conn,
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
         virBufferEscapeString(buf, "      <source bridge='%s'/>\n",
                               def->data.bridge.brname);
+        if (def->data.bridge.script)
+            virBufferEscapeString(buf, "      <script path='%s'/>\n",
+                                  def->data.bridge.script);
         break;
 
     case VIR_DOMAIN_NET_TYPE_SERVER:
index 4b9dcb3344eabaf42fd9dc3c6c22de72905d8bb1..e37a2d246e602651f5fb384e104fcfde706dd460 100644 (file)
@@ -154,6 +154,7 @@ struct _virDomainNetDef {
         } network;
         struct {
             char *brname;
+            char *script;
         } bridge;
     } data;
     char *ifname;
index cd726599e892c2c0514b883db998fc1101094b80..8c6e6524e7341987548ba0ec079d4e33a83fa819 100644 (file)
 
 #endif /* PROXY */
 
+#ifdef __sun
+#define DEFAULT_VIF_SCRIPT "vif-vnic"
+#else
+#define DEFAULT_VIF_SCRIPT "vif-bridge"
+#endif
+
 #ifdef WITH_RHEL5_API
 #define XEND_CONFIG_MAX_VERS_NET_TYPE_IOEMU 0
 #define XEND_CONFIG_MIN_VERS_PVFB_NEWCONF 2
@@ -1739,15 +1745,22 @@ xenDaemonParseSxprNets(virConnectPtr conn,
             if (VIR_ALLOC(net) < 0)
                 goto no_memory;
 
-            if ((tmp2 && strstr(tmp2, "bridge")) || tmp) {
+            if (tmp != NULL || (STREQ(tmp2, DEFAULT_VIF_SCRIPT))) {
                 net->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
                 /* XXX virtual network reverse resolve */
 
                 if (tmp &&
                     !(net->data.bridge.brname = strdup(tmp)))
                     goto no_memory;
+                if (tmp2 &&
+                    net->type == VIR_DOMAIN_NET_TYPE_BRIDGE &&
+                    !(net->data.bridge.script = strdup(tmp2)))
+                    goto no_memory;
             } else {
                 net->type = VIR_DOMAIN_NET_TYPE_ETHERNET;
+                if (tmp2 &&
+                    !(net->data.ethernet.script = strdup(tmp2)))
+                    goto no_memory;
             }
 
             tmp = sexpr_node(node, "device/vif/vifname");
@@ -1786,11 +1799,6 @@ xenDaemonParseSxprNets(virConnectPtr conn,
                 !(net->data.ethernet.ipaddr = strdup(tmp)))
                 goto no_memory;
 
-            if (tmp2 &&
-                net->type == VIR_DOMAIN_NET_TYPE_ETHERNET &&
-                !(net->data.ethernet.script = strdup(tmp2)))
-                goto no_memory;
-
             if (model &&
                 !(net->model = strdup(model)))
                 goto no_memory;
@@ -5089,6 +5097,8 @@ xenDaemonFormatSxprNet(virConnectPtr conn,
                        int xendConfigVersion,
                        int isAttach)
 {
+    const char *script = DEFAULT_VIF_SCRIPT;
+
     if (def->type != VIR_DOMAIN_NET_TYPE_BRIDGE &&
         def->type != VIR_DOMAIN_NET_TYPE_NETWORK &&
         def->type != VIR_DOMAIN_NET_TYPE_ETHERNET) {
@@ -5110,7 +5120,10 @@ xenDaemonFormatSxprNet(virConnectPtr conn,
     switch (def->type) {
     case VIR_DOMAIN_NET_TYPE_BRIDGE:
         virBufferVSprintf(buf, "(bridge '%s')", def->data.bridge.brname);
-        virBufferAddLit(buf, "(script 'vif-bridge')");
+        if (def->data.bridge.script)
+            script = def->data.bridge.script;
+
+        virBufferVSprintf(buf, "(script '%s')", script);
         break;
 
     case VIR_DOMAIN_NET_TYPE_NETWORK:
@@ -5133,7 +5146,7 @@ xenDaemonFormatSxprNet(virConnectPtr conn,
             return -1;
         }
         virBufferVSprintf(buf, "(bridge '%s')", bridge);
-        virBufferAddLit(buf, "(script 'vif-bridge')");
+        virBufferVSprintf(buf, "(script '%s')", script);
         VIR_FREE(bridge);
     }
     break;
index f7bd774206f0d9fbeabd8b7220071b313c6dfbf9..31f56b73e16c2188e17be3e0326cf56fe7dd518d 100644 (file)
@@ -1075,15 +1075,20 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
                 net->mac[5] = rawmac[5];
             }
 
-            if (bridge[0] || STREQ(script, "vif-bridge"))
+            if (bridge[0] || STREQ(script, "vif-bridge") ||
+                STREQ(script, "vif-vnic")) {
                 net->type = VIR_DOMAIN_NET_TYPE_BRIDGE;
-            else
+            } else {
                 net->type = VIR_DOMAIN_NET_TYPE_ETHERNET;
+            }
 
             if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE) {
                 if (bridge[0] &&
                     !(net->data.bridge.brname = strdup(bridge)))
                     goto no_memory;
+                if (script[0] &&
+                    !(net->data.bridge.script = strdup(script)))
+                    goto no_memory;
             } else {
                 if (script[0] &&
                     !(net->data.ethernet.script = strdup(script)))
index accf3dd960fbc5e2e48ec59375ae5b386511b67a..fb1217b72572e910d7a9956a536cd04a5ca54d80 100644 (file)
@@ -24,6 +24,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1d:06:15'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif5.0'/>
     </interface>
     <console type='pty'>
index 5316c554261ca412a554fbf2b5ee018a65d04b61..f164c4d4c664c384d2bb87984b12aaa0c324e1a1 100644 (file)
@@ -22,6 +22,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:23:9e:eb'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif6.0'/>
     </interface>
     <console type='pty'>
index 9ddc79b2fcedd6e5b621902881b6389185480cea..da3b3aef71cefc9c97f25c7413f42a5a2072bb34 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index 67bf3e73a1b81c5f5eefd24e174ba406f5b83372..e39b638b11bedd8e26fc0a3cda256bef7376fd2a 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <parallel type='tcp'>
index a44dff4f2a438f7ef7b22ee4ac6a97822fec0af4..5a6b4149609b854bd8dcb268ba2f845586ff17be 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='file'>
index 5e2d446b5365f0017ddbdff8640b79c03948a2ac..f4964339146806f572ccac73941299f7a2576b7c 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='null'>
index 568d0b62c4d06597a4a583db6fe826c2db1f6da0..97d45288961c99ff483399f385b58f985b6f4b3d 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='pipe'>
index 419f6462df38891d467e76e16d18ddd48d6033aa..06da049f7a0d9afcd6e4036b133d703066f7009a 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='pty'>
index b134c3c653065ceb4114bb7aa3bf9d5d16dc94fe..5f89a752e0402e13c6ed8aabaa337ec730a251dd 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='stdio'>
index 8b10cd450380a5f675ba15a53bb1e7880cce34a8..e6cb3575218c89aa2bb6224a18b7a33d5bde936a 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='tcp'>
index 5af249ef06715c76153e1ea2ceaa5e2e6d5edc86..2eac19c60ce7cdd0b4b359f14deb6281df8eeff6 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='tcp'>
index f868eae0484cee9aafcc9e35832b28a34e755d53..9a3a0e2bfebd170d0a7991725b7331d02320b39d 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='udp'>
index 38e8069eda765b6af40a925f65a73a3a3b5163f2..e026cf87f0b8e3535b2131a2f0ba3e94ae84db29 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif1.0'/>
     </interface>
     <serial type='unix'>
index 6a4e9beb580f925166c10be409e60baa8e7f5ac2..16355842d135c9034ff6ede0f6b9c2689f213851 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index 6a4e9beb580f925166c10be409e60baa8e7f5ac2..16355842d135c9034ff6ede0f6b9c2689f213851 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index 9a02c2ed37a31dfd08ed93c64742da268021878d..48708634c4b822e12d74ab5cc6b07ecec376bd00 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='usb'/>
index b09d4176f1b7b02a749e7996bd1ea57db1f6f083..74f4bdf08a4a66b0ac896f6e731105e23ebb8e8e 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='tablet' bus='usb'/>
index d529a9d7ab512f0b1d244e458b232a550b5fc67e..5dbc64dbe10bb2a8bdcf351d814790edb8bc1b04 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index 1014d7660d967337814a5ddb623b99fc7eae7714..e3c4e20c623b18f26642571d04505d28cac7ad1f 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index d529a9d7ab512f0b1d244e458b232a550b5fc67e..5dbc64dbe10bb2a8bdcf351d814790edb8bc1b04 100644 (file)
@@ -32,6 +32,7 @@
     <interface type='bridge'>
       <mac address='00:16:3e:1b:b1:47'/>
       <source bridge='xenbr0'/>
+      <script path='vif-bridge'/>
       <target dev='vif3.0'/>
     </interface>
     <input type='mouse' bus='ps2'/>
index 0a5bf5eead96f67cbd26bc1c41a7217f75c3de38..717ec790870c0afbbae442dfdaad94df6ec07ac0 100644 (file)
@@ -23,6 +23,7 @@
     <interface type='bridge'>
       <mac address='00:11:22:33:44:55'/>
       <source bridge='xenbr2'/>
+      <script path='vif-bridge'/>
       <target dev='vif6.0'/>
     </interface>
     <console type='pty'>
index cadd0d98d03e41350ac595d66eb6ec643f3b618c..be77a82e51961bbace7accaaddf6a6e076669ca2 100644 (file)
@@ -23,6 +23,7 @@
     <interface type='bridge'>
       <mac address='00:11:22:33:44:55'/>
       <source bridge='xenbr2'/>
+      <script path='vif-bridge'/>
       <target dev='vif6.0'/>
       <model type='e1000'/>
     </interface>