
On 10/05/2012 01:13 AM, Eric Blake wrote:
On 10/04/2012 01:09 PM, Harsh Bora wrote:
On 10/04/2012 09:17 PM, Deepak C Shetty wrote:
On 10/04/2012 07:01 PM, Harsh Prateek Bora wrote:
Qemu accepts gluster protocol as supported storage backend beside others. This patch allows users to specify disks on gluster backends like this:
<disk type='network' device='disk'> <driver name='qemu' type='raw'/> <source protocol='gluster' name='volume/image'> <host name='example.org' port='6000' transport='tcp'/>
+ <attribute name="transport"> + <choice> + <value>tcp</value> + <value>unix</value> + <value>rdma</value> + </choice> + </attribute> 'transport' attribute is optional, so it should be placed inside <optional> </optional> ?
Not necessarily, <zeroOrMore> works for it. You may want to test the patch without specifying 'transport' attribute!
Deepak is right - the <attribute name="transport"> block must be embedded in an <optional> block. <zeroOrMore> only applies to elements, but as written, your zeroOrMore says that it is okay to omit the overall <host> element, but that if you provide a <host> element, it MUST have a transport='...' attribute, and that is not correct. For back-compat reasons, ALL new attributes must be in an <optional> block since older clients of the XML did not provide the new attributes.
Looking at the grammar, it appeared to me like what you said, however, when I tested the patch, zeroOrMore worked successfully for the transport attribute as well. However, I am willing to use <optional> block for consistency.
I chose to check for only ':' to decide if its a IPv6 addr because it doesnt make sense to be partial towards '.' What if someone specifies a host name like 12:12;12,12 or 23:23,23,23 ? A '.' in an IPv6 addr is as bad as any other invalid char.
'.' is valid in IPv6 addr. But yes, ':' is mandatory in IPv6, and forbidden in IPv4, so it makes a good distinguishing test between the two families.
So, are you suggesting to validate IPv4 only and that too based on the absence of ':' and presence of '.'? Does that really suffice to validate an IPv4 since any other special character is also an invalid separator for IPv4 ? regards, Harsh