+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
case VIR_DOMAIN_NET_TYPE_BRIDGE:
VIR_FREE(def->data.bridge.brname);
+ VIR_FREE(def->data.bridge.script);
break;
}
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")) {
}
def->data.bridge.brname = bridge;
bridge = NULL;
+ if (script != NULL) {
+ def->data.bridge.script = script;
+ script = NULL;
+ }
break;
case VIR_DOMAIN_NET_TYPE_CLIENT:
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:
} network;
struct {
char *brname;
+ char *script;
} bridge;
} data;
char *ifname;
#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
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");
!(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;
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) {
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:
return -1;
}
virBufferVSprintf(buf, "(bridge '%s')", bridge);
- virBufferAddLit(buf, "(script 'vif-bridge')");
+ virBufferVSprintf(buf, "(script '%s')", script);
VIR_FREE(bridge);
}
break;
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)))
<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'>
<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'>
<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'/>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'>
<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'/>
<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'/>
<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'/>
<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'/>
<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'/>
<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'/>
<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'/>
<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'>
<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>