From patchwork Mon Sep 19 21:39:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mahesh Bandewar X-Patchwork-Id: 671953 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3sdK6p4ggBz9s9x for ; Tue, 20 Sep 2016 07:40:02 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bandewar-net.20150623.gappssmtp.com header.i=@bandewar-net.20150623.gappssmtp.com header.b=MjEv1Gpq; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933139AbcISVjz (ORCPT ); Mon, 19 Sep 2016 17:39:55 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36387 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932199AbcISVjy (ORCPT ); Mon, 19 Sep 2016 17:39:54 -0400 Received: by mail-pf0-f193.google.com with SMTP id n24so7755410pfb.3 for ; Mon, 19 Sep 2016 14:39:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bandewar-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=HKbNxojr03BxTkrMSCXM1h44IJQZ3oV2e/U7z3PbduQ=; b=MjEv1GpqtCck8E/UuGwDaBmEi6FR1rPQom7FNYki69jW2EQvrrl1VFKzDKoIo+l+jo rTTFxOqIA/tmSCpgj/f5t8xIAuIbtP9Y5WTaE3Abd/tCobtwO/yueBFWHtEGM8IgQmeU oSN6aAqk0i0u9+YCvwlZaXjO6VPYCmmupffdyC/6P9frQNPAW2n+XODB8r2dvbTxBLvn YJYlRgv+Av8XiVxHx/8tebADc7hzoIb/rdFa21/KlJ9dAoBaHg2pIvTJEi4vUA107sRM 6tm3S6YcIdkzm79X4xeaTk9gvanBZ5yGaemKUruFhRTnuvJYodkuGN2+Qd4bzhBt2o2Y Mu5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=HKbNxojr03BxTkrMSCXM1h44IJQZ3oV2e/U7z3PbduQ=; b=V5Z0wdKGp7yWf837f8SEpQZndvBHGVcCp0U+AedhbaQ1MnmeW8ECP6vrcWciVSMDHy tUAg0qpXFle7FKEUQ2voy3WItSi9IGob1bqkT21mbU4T2Tn/NIlnxvxR+N8HdOSA07Jm XnHNqLPUqj2xCTfhA+Ej5GzIUTPran2lVW+h71EjiySSZo80KGCkY/wo40nXcZxRKq3G gTWmpUR+uFKDz2MY0avYW1YGBitMf023It7ut+ToVbPneG19h6Bb6aey3I1sP73HqFNu Hp2S6XEItbEtgfB7cPvLZClHfcOZVCfpmZFsU4AlYIG2VrcEtfrBSMCPHQhSHwq1cFM9 6ZDQ== X-Gm-Message-State: AE9vXwNW37dOIm2AKIwuyqNPK3vCnnSpdLeS6nwETzUOwwgyeSMMBdwZIKSKUE5pz0E/WA== X-Received: by 10.98.156.193 with SMTP id u62mr8743048pfk.57.1474321188491; Mon, 19 Sep 2016 14:39:48 -0700 (PDT) Received: from localhost ([2620:0:1000:3012:71f5:d20d:8cc2:3686]) by smtp.gmail.com with ESMTPSA id f124sm8072112pfg.7.2016.09.19.14.39.47 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Mon, 19 Sep 2016 14:39:47 -0700 (PDT) From: Mahesh Bandewar To: netdev Cc: Stephen Hemminger , Mahesh Bandewar Subject: [PATCH] ip: (ipvlan) introduce L3s mode Date: Mon, 19 Sep 2016 14:39:40 -0700 Message-Id: <1474321180-31717-1-git-send-email-mahesh@bandewar.net> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Mahesh Bandewar The new mode 'l3s' can be set like - ip link add link dev type ipvlan mode l3s e.g. ip link add link eth0 dev ipvl0 type ipvlan mode l3s Also did some trivial code restructuring. Signed-off-by: Mahesh Bandewar --- include/linux/if_link.h | 1 + ip/iplink_ipvlan.c | 32 +++++++++++++------------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/include/linux/if_link.h b/include/linux/if_link.h index 1feb708902ac..78ef2c6ae04e 100644 --- a/include/linux/if_link.h +++ b/include/linux/if_link.h @@ -461,6 +461,7 @@ enum { enum ipvlan_mode { IPVLAN_MODE_L2 = 0, IPVLAN_MODE_L3, + IPVLAN_MODE_L3S, IPVLAN_MODE_MAX }; diff --git a/ip/iplink_ipvlan.c b/ip/iplink_ipvlan.c index a6273be88a2a..f7735f3a13ef 100644 --- a/ip/iplink_ipvlan.c +++ b/ip/iplink_ipvlan.c @@ -20,18 +20,7 @@ static void ipvlan_explain(FILE *f) { - fprintf(f, "Usage: ... ipvlan [ mode { l2 | l3 } ]\n"); -} - -static void explain(void) -{ - ipvlan_explain(stderr); -} - -static int mode_arg(void) -{ - fprintf(stderr, "Error: argument of \"mode\" must be either \"l2\", or \"l3\"\n"); - return -1; + fprintf(f, "Usage: ... ipvlan [ mode { l2 | l3 | l3s } ]\n"); } static int ipvlan_parse_opt(struct link_util *lu, int argc, char **argv, @@ -47,20 +36,24 @@ static int ipvlan_parse_opt(struct link_util *lu, int argc, char **argv, mode = IPVLAN_MODE_L2; else if (strcmp(*argv, "l3") == 0) mode = IPVLAN_MODE_L3; - else - return mode_arg(); - + else if (strcmp(*argv, "l3s") == 0) + mode = IPVLAN_MODE_L3S; + else { + fprintf(stderr, "Error: argument of \"mode\" must be either \"l2\", \"l3\" or \"l3s\"\n"); + return -1; + } addattr16(n, 1024, IFLA_IPVLAN_MODE, mode); } else if (matches(*argv, "help") == 0) { - explain(); + ipvlan_explain(stderr); return -1; } else { fprintf(stderr, "ipvlan: unknown option \"%s\"?\n", *argv); - explain(); + ipvlan_explain(stderr); return -1; } - argc--, argv++; + argc--; + argv++; } return 0; @@ -78,7 +71,8 @@ static void ipvlan_print_opt(struct link_util *lu, FILE *f, struct rtattr *tb[]) fprintf(f, " mode %s ", mode == IPVLAN_MODE_L2 ? "l2" : - mode == IPVLAN_MODE_L3 ? "l3" : "unknown"); + mode == IPVLAN_MODE_L3 ? "l3" : + mode == IPVLAN_MODE_L3S ? "l3s" : "unknown"); } } }