[libvirt] [PATCH] v2:Support for adding a static route to a bridge

Gene Czarcinski gene at czarc.net
Sat Mar 16 13:32:11 UTC 2013


On 03/15/2013 03:48 PM, Gene Czarcinski wrote:
> On 03/15/2013 02:10 PM, Gene Czarcinski wrote:
>> This patch adds support for adding a static route for
>> a network.  The "via" specifies the gateway's IP
>> address.  Both IPv4 and IPv6 static routes are
>> supported although it is expected that this
>> functionality will have more use with IPv6.
>>
>> Extensive tests are done to validate that the input
>> definitions are correct.  For example, for a static
>> route ip definition, the address must be for a network
>> and not a host.  Additional checks are added to ensure
>> that the specified gateway has a network defined on
>> this bridge.
>>
>> Whan a static route is added to a bridge, there is a slight
>> possibility that the gateway address will be incorrect.  If
>> this is handled as an error, that bridge becomes unusable and
>> can only be recovered by rebooting.  If the error is
>> ignored, then that network can be destroyed and the network
>> definition file edited to correct the problem.  Unfortunately,
>> the error message only appears in syslog.  However, with
>> the checks performed when the network definition file is parsed,
>> it is unlikely that this condition will ever occur.
>>
>> The command used is of the following form:
>>
>> ip route add <address>/<prefix> via <gateway> dev <virbr-bridge> \
>> proto static metric 1
> When you examine that part of the patch in virNetworkIPdefParseXML() 
> in network_conf.c, you will nitice that I have added a large number of 
> tests/check that the data entered is valid.  These checks and the 
> associated error messages are intended for the situation where you are 
> using virsh net-edit.  As such, I believe these are quite good with 
> respect to providing some guidance to the user.
>
> Unfortuately, these same parse function is used by libvert without 
> virsh and, when that occurs and the network definition (xml) file is 
> found to be flawed, libvert will ignore that network definition. 
> Better diagnostics and recovery is needed here but (currently) it is 
> not clear how to provide it.
>
> It would be nice if there was some way to "force" virsh net-edit to 
> edit the xml file regardless of errors which could then be corrected 
> as if a good file was being edited and bad configuration was entered. 
> [any suggestions welcome]
>
OK, I believe I have found a way to get things correct and NOT require a 
libvirtd restart.  It does not ijvolve code but instead uses a process 
of existing functions.

Assume you have a network such as net3 defined (there is a net3.xml 
file) but the network does not show up in a net-list but you know it is 
there.  OK, simply use:
          virsh net-define /etc/libvirt/qemu/networks/net3.xml
If the network definition is good, it will be loaded.  If it is not, 
there a diagnostic message will be issued pointing to the error. Use vi 
to correct the error and then run net-define again.  Repeat until the 
network is defined.

This was obvious after I realized what I could do but not so obvious 
before that.  I am going to add some documentation in the 
docs/formatnetwork.html.in file to describe this process.

Question: should some additional diagnostic messaging be issued when 
net-edit, net-start, net-destroy, etc. to use net-define or net-create 
to determine the problem with the network (xml) definition file.

Gene




More information about the libvir-list mailing list