[libvirt] [PATCH] nwfilter: drop use of awk

Daniel Veillard veillard at redhat.com
Tue Sep 4 12:13:39 UTC 2012


On Fri, Aug 31, 2012 at 03:56:58PM -0700, Eric Blake wrote:
> Commit 2a41bc9 dropped a dependency on gawk, but we can go one step
> further and avoid awk altogether.
> 
> * src/nwfilter/nwfilter_ebiptables_driver.c
> (iptablesLinkIPTablesBaseChain): Simplify command.
> (ebiptablesDriverInit, ebiptablesDriverShutdown): Drop awk probe.
> ---
> 
> Caveat - I was not set up to test this via actual nwfilter operations,
> so it needs a thorough testing review.
> 
>  src/nwfilter/nwfilter_ebiptables_driver.c | 14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
> 
> diff --git a/src/nwfilter/nwfilter_ebiptables_driver.c b/src/nwfilter/nwfilter_ebiptables_driver.c
> index 034e6c4..8ffe737 100644
> --- a/src/nwfilter/nwfilter_ebiptables_driver.c
> +++ b/src/nwfilter/nwfilter_ebiptables_driver.c
> @@ -84,7 +84,6 @@ static char *ebtables_cmd_path;
>  static char *iptables_cmd_path;
>  static char *ip6tables_cmd_path;
>  static char *grep_cmd_path;
> -static char *awk_cmd_path;
> 
>  #define PRINT_ROOT_CHAIN(buf, prefix, ifname) \
>      snprintf(buf, sizeof(buf), "libvirt-%c-%s", prefix, ifname)
> @@ -565,12 +564,11 @@ static int iptablesLinkIPTablesBaseChain(virBufferPtr buf,
>                                           int stopOnError)
>  {
>      virBufferAsprintf(buf,
> -                      "res=$($IPT -L %s -n --line-number | "
> -                          "%s \" %s \")\n"
> +                      "res=$($IPT -L %s -n --line-number | %s '%s')\n"
>                        "if [ $? -ne 0 ]; then\n"
>                        "  $IPT -I %s %d -j %s\n"
>                        "else\n"
> -                      "  r=$(echo $res | %s '{print $1}')\n"
> +                      "  set dummy $res; r=$2\n"
>                        "  if [ \"${r}\" != \"%d\" ]; then\n"
>                        "    " CMD_DEF("$IPT -I %s %d -j %s") CMD_SEPARATOR
>                        "    " CMD_EXEC
> @@ -582,11 +580,9 @@ static int iptablesLinkIPTablesBaseChain(virBufferPtr buf,
>                        "  fi\n"
>                        "fi\n",
> 
> -                      syschain,
> -                      grep_cmd_path, udchain,
> +                      syschain, grep_cmd_path, udchain,
> 
>                        syschain, pos, udchain,
> -                      awk_cmd_path,
> 
>                        pos,
> 
> @@ -4295,7 +4291,6 @@ ebiptablesDriverInit(bool privileged)
>      if (virMutexInit(&execCLIMutex) < 0)
>          return -EINVAL;
> 
> -    awk_cmd_path = virFindFileInPath("awk");
>      grep_cmd_path = virFindFileInPath("grep");
> 
>      /*
> @@ -4311,7 +4306,7 @@ ebiptablesDriverInit(bool privileged)
> 
>      /* ip(6)tables support needs awk & grep, ebtables doesn't */
>      if ((iptables_cmd_path != NULL || ip6tables_cmd_path != NULL) &&
> -        (!grep_cmd_path || !awk_cmd_path)) {
> +        !grep_cmd_path) {
>          VIR_ERROR(_("essential tools to support ip(6)tables "
>                    "firewalls could not be located"));
>          VIR_FREE(iptables_cmd_path);
> @@ -4333,7 +4328,6 @@ ebiptablesDriverInit(bool privileged)
>  static void
>  ebiptablesDriverShutdown(void)
>  {
> -    VIR_FREE(awk_cmd_path);
>      VIR_FREE(grep_cmd_path);
>      VIR_FREE(ebtables_cmd_path);
>      VIR_FREE(iptables_cmd_path);

 ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list