[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180102200425.GA725@localhost.localdomain>
Date: Tue, 2 Jan 2018 18:04:25 -0200
From: Marcelo Ricardo Leitner <marcelo.leitner@...il.com>
To: Chris Mi <chrism@...lanox.com>
Cc: netdev@...r.kernel.org, gerlitz.or@...il.com,
stephen@...workplumber.org, dsahern@...il.com
Subject: Re: [patch iproute2 v4 2/3] tc: Add -bs option to batch mode
On Tue, Jan 02, 2018 at 11:28:03PM +0900, Chris Mi wrote:
> @@ -240,23 +244,49 @@ static int batch(const char *name)
> }
>
> cmdlineno = 0;
> - while (getcmdline(&line, &len, stdin) != -1) {
> + if (getcmdline(&line, &len, stdin) == -1)
> + goto Exit;
> + do {
> char *largv[100];
> int largc;
>
> + if (getcmdline(&line2, &len, stdin) == -1)
> + lastline = true;
> +
> largc = makeargs(line, largv, 100);
> if (largc == 0)
> continue; /* blank line */
If it reads a new line, it won't process anything else after it
because line won't get updated.
Marcelo
>
> - if (do_cmd(largc, largv)) {
> - fprintf(stderr, "Command failed %s:%d\n", name, cmdlineno);
> + line = line2;
> + line2 = NULL;
> + len = 0;
> +
> + /*
> + * In batch mode, if we haven't accumulated enough commands
> + * and this is not the last command, don't send the message
> + * immediately.
> + */
> + if (batch_size > 1 && msg_iov_index + 1 != batch_size
> + && !lastline)
> + send = false;
> + else
> + send = true;
> +
> + ret = do_cmd(largc, largv, batch_size, msg_iov_index++, send);
> + if (ret < 0) {
> + fprintf(stderr, "Command failed %s:%d\n", name,
> + cmdlineno);
> ret = 1;
> if (!force)
> break;
> }
> - }
> - if (line)
> - free(line);
> + msg_iov_index %= batch_size;
> + } while (!lastline);
> +
> + free_filter_reqs();
> + free_action_reqs();
> +Exit:
> + free(line);
>
> rtnl_close(&rth);
> return ret;
Powered by blists - more mailing lists