From patchwork Mon Jul 22 14:01:16 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sanket Shah X-Patchwork-Id: 260721 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 9BB812C00A3 for ; Tue, 23 Jul 2013 00:07:29 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755783Ab3GVOH2 (ORCPT ); Mon, 22 Jul 2013 10:07:28 -0400 Received: from mailhost.elitecore.com ([203.88.135.194]:10115 "EHLO elitecore.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755599Ab3GVOH1 (ORCPT ); Mon, 22 Jul 2013 10:07:27 -0400 X-Greylist: delayed 396 seconds by postgrey-1.27 at vger.kernel.org; Mon, 22 Jul 2013 10:07:26 EDT Received: (qmail 58255 invoked from network); 22 Jul 2013 14:00:44 -0000 Received: from unknown (HELO localhost.localdomain) (sanket.shah@[10.103.6.186]) (envelope-sender ) by elitecore.com (qmail-ldap-1.03) with SMTP for ; 22 Jul 2013 14:00:44 -0000 From: Sanket Shah To: netfilter-devel@vger.kernel.org Cc: bdschuym@pandora.be, Sanket Shah , Ankit Shah Subject: [PATCH] ebtables: Adding --noflush command line support for ebtables-restore Date: Mon, 22 Jul 2013 19:31:16 +0530 Message-Id: <1374501676-28005-1-git-send-email-sanket.shah@cyberoam.com> X-Mailer: git-send-email 1.8.3.2.721.g56df44a X-Cyberoam-smtpxy-version: 1.0.6.3 X-Cyberoam-AV-Policy: default X-CTCH-PVer: 0000001 X-CTCH-Spam: Unknown X-CTCH-VOD: Unknown X-CTCH-Flags: 0 X-CTCH-RefID: str=0001.0A150204.51ED3B0B.0181, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-Score: 0.000 X-CTCH-ScoreCust: 0.000 X-CTCH-Rules: X-Cyberoam-smtpxy-version: 1.0.6.3 X-Cyberoam-AV-Policy: Default Rule Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Similar to iptables-restore with noflush. Signed-off-by: Ankit Shah Signed-off-by: Sanket Shah --- userspace/ebtables2/ebtables-restore.c | 29 +++++++++++++++++++++++++---- 1 files changed, 25 insertions(+), 4 deletions(-) diff --git a/userspace/ebtables2/ebtables-restore.c b/userspace/ebtables2/ebtables-restore.c index ea02960..bb4d0cf 100644 --- a/userspace/ebtables2/ebtables-restore.c +++ b/userspace/ebtables2/ebtables-restore.c @@ -22,13 +22,25 @@ #include #include #include +#include #include "include/ebtables_u.h" +static const struct option options[] = { + {.name = "noflush", .has_arg = 0, .val = 'n'}, + { 0 } +}; + static struct ebt_u_replace replace[3]; void ebt_early_init_once(); #define OPT_KERNELDATA 0x800 /* Also defined in ebtables.c */ +static void print_usage() +{ + fprintf(stderr, "Usage: ebtables-restore [ --noflush ]\n"); + exit(1); +} + static void copy_table_names() { strcpy(replace[0].name, "filter"); @@ -41,11 +53,20 @@ static void copy_table_names() int main(int argc_, char *argv_[]) { char *argv[EBTD_ARGC_MAX], cmdline[EBTD_CMDLINE_MAXLN]; - int i, offset, quotemode = 0, argc, table_nr = -1, line = 0, whitespace; + int i, offset, quotemode = 0, argc, table_nr = -1, line = 0, whitespace, c, flush = 1; char ebtables_str[] = "ebtables"; - if (argc_ != 1) - ebtrest_print_error("options are not supported"); + while ((c = getopt_long(argc_, argv_, "n", options, NULL)) != -1) { + switch(c) { + case 'n': + flush = 0; + break; + default: + print_usage(); + break; + } + } + ebt_silent = 0; copy_table_names(); ebt_early_init_once(); @@ -68,7 +89,7 @@ int main(int argc_, char *argv_[]) ebtrest_print_error("table '%s' was not recognized", cmdline+1); table_nr = i; replace[table_nr].command = 11; - ebt_get_kernel_table(&replace[table_nr], 1); + ebt_get_kernel_table(&replace[table_nr], flush); replace[table_nr].command = 0; replace[table_nr].flags = OPT_KERNELDATA; /* Prevent do_command from initialising replace */ continue;