[libvirt] [PATCH] Re-add use of locking with iptables/ip6tables/ebtables

Daniel P. Berrange berrange at redhat.com
Tue Nov 18 13:28:32 UTC 2014


On Tue, Nov 18, 2014 at 06:26:54AM -0700, Eric Blake wrote:
> On 11/11/2014 05:42 AM, Daniel P. Berrange wrote:
> > A previous commit introduced use of locking with invocation
> > of iptables in the viriptables.c module
> > 
> >   commit ba95426d6f39aec1da6e069dd7222f7a8c6a5862
> >   Author: Serge Hallyn <serge.hallyn at ubuntu.com>
> >   Date:   Fri Nov 1 12:36:59 2013 -0500
> > 
> >     util: use -w flag when calling iptables
> > 
> > This only ever had effect with the virtual network driver,
> > as it was not wired up into the nwfilter driver. Unfortunately
> > in the firewall refactoring the use of the -w flag was
> > accidentally lost.
> > 
> > This patch introduces it to the virfirewall.c module so that
> > both the virtual network and nwfilter drivers will be using
> > it. It also ensures that the equivalent --concurrent flag
> > to ebtables is used.
> > ---
> >  src/util/virfirewall.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++---
> >  src/util/viriptables.c |  2 --
> >  2 files changed, 63 insertions(+), 6 deletions(-)
> 
> With this patch applied, and testing on Fedora 20, I see the following
> messages at startup of libvirtd:
> 
> 2014-11-18 13:22:49.979+0000: 31329: info : libvirt version: 1.2.11
> 2014-11-18 13:22:49.979+0000: 31329: error : virCommandWait:2532 :
> internal error: Child process (/usr/sbin/iptables -w -L -n) unexpected
> exit status 2: iptables v1.4.19.1: unknown option "-w"
> Try `iptables -h' or 'iptables --help' for more information.
> 
> 2014-11-18 13:22:49.982+0000: 31329: error : virCommandWait:2532 :
> internal error: Child process (/usr/sbin/ip6tables -w -L -n) unexpected
> exit status 2: ip6tables v1.4.19.1: unknown option "-w"
> Try `ip6tables -h' or 'ip6tables --help' for more information.
> 
> Do we need a followup patch to avoid logging failures when probing for
> whether -w works?
> 
> 
> > +
> > +static void
> > +virFirewallCheckUpdateLock(bool *lockflag,
> > +                           const char *const*args)
> > +{
> > +    virCommandPtr cmd = virCommandNewArgs(args);
> > +    if (virCommandRun(cmd, NULL) < 0) {
> > +        VIR_INFO("locking not supported by %s", args[0]);
> 
> Generally, it would be done by passing a non-NULL parameter to
> virCommandRun and checking the status ourselves (since virCommandRun
> with a NULL argument logs all non-zero exit).

Ok, I'll look at doing that. I think that's actually what the original
code did before it got accidentally lost.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list