From patchwork Thu Oct 11 20:45:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roopa Prabhu X-Patchwork-Id: 982715 X-Patchwork-Delegate: dsahern@gmail.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=cumulusnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b="R3xZq0wT"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 42WNJY5Hfvz9s7h for ; Fri, 12 Oct 2018 07:45:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726053AbeJLEOM (ORCPT ); Fri, 12 Oct 2018 00:14:12 -0400 Received: from mail-pl1-f196.google.com ([209.85.214.196]:42788 "EHLO mail-pl1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725903AbeJLEOL (ORCPT ); Fri, 12 Oct 2018 00:14:11 -0400 Received: by mail-pl1-f196.google.com with SMTP id c8-v6so4772461plo.9 for ; Thu, 11 Oct 2018 13:45:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id; bh=thbud1xXZNce7JFoWsO6AC82oh4x4S/YIox84KKrvAI=; b=R3xZq0wTRZZYZnMf/2CdBSIkbKo3wqG3/YFlIgtHEDR9PX/5VyDG8uwo9Rye2/1oYM R5tEuwOWK4QgJJWPTLWzLGivG6qJnS38h4E+Ob/+jHutmgyrDbD8pIGr/GoC2egLeWdv FTH4C3XqFbcZCKe3jNnzNExU8/0/ZQdLqtLL4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=thbud1xXZNce7JFoWsO6AC82oh4x4S/YIox84KKrvAI=; b=UOgM3EtAWp9yEY52vRLS91iieAGTqO2rwP1C5PpSZr4cZWSTIDzSEFAL959yOCXWW/ GsgYi4fV+lPp+vs5ka6ZC8b5XVEZPVk/N8FA3PLLy/fXXSotjuik2mN0m7KTumDT+NwW 3OYgqA9nKN6EFSsCUwS4WmoAjM/+HqykGpZAxMdelCOG6IRWrjDmFEVaRPtLLwIh1xFc bxqFyXhEd3efWRl6fSGstyDWJkxtQSlqbXT0I8F5EEdU/Clm/ZCrM6BxD1t3tVbqGMrT KRtpmMc3kJX6N/N0ouACx04n7NaQ/6tSnaGNO5e+w0qf91oqIHUX+BJlsGNDJ8c2Tckn 6NgA== X-Gm-Message-State: ABuFfojWTwmIJa3oqBq4VUP6zjM2PGGPh0HPHi7aJlVXVXY0iSu0FqEL CiszJ5CaqS06rTwXrfsh/69jsOwTAXZj1w== X-Google-Smtp-Source: ACcGV62bXNyDC2qYVNrr5PexGfcv3KXKWY2tE+sFHMoA1ulbkrOwmuqR5d5SXGaS+vurjNoyMUc7zg== X-Received: by 2002:a17:902:64c2:: with SMTP id y2-v6mr2989501pli.35.1539290714728; Thu, 11 Oct 2018 13:45:14 -0700 (PDT) Received: from monster-08.mvlab.cumulusnetworks.com. (fw.cumulusnetworks.com. [216.129.126.126]) by smtp.googlemail.com with ESMTPSA id u36-v6sm72979990pgn.56.2018.10.11.13.45.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 11 Oct 2018 13:45:13 -0700 (PDT) From: Roopa Prabhu X-Google-Original-From: Roopa Prabhu To: dsahern@gmail.com Cc: netdev@vger.kernel.org Subject: [PATCH iproute2 net-next] ipneigh: support for NTF_EXT_LEARNED flag on neigh entries Date: Thu, 11 Oct 2018 13:45:10 -0700 Message-Id: <1539290710-942-1-git-send-email-roopa@cumulusnetworks.com> X-Mailer: git-send-email 2.1.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Roopa Prabhu Adds new option extern_learn to set NTF_EXT_LEARNED flag on neigh entries. Signed-off-by: Roopa Prabhu --- ip/ipneigh.c | 7 ++++++- man/man8/ip-neighbour.8 | 9 ++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ip/ipneigh.c b/ip/ipneigh.c index 165546e..042d01f 100644 --- a/ip/ipneigh.c +++ b/ip/ipneigh.c @@ -48,7 +48,7 @@ static void usage(void) { fprintf(stderr, "Usage: ip neigh { add | del | change | replace }\n" " { ADDR [ lladdr LLADDR ] [ nud STATE ] | proxy ADDR } [ dev DEV ]\n"); - fprintf(stderr, " [ router ]\n\n"); + fprintf(stderr, " [ router ] [ extern_learn ]\n\n"); fprintf(stderr, " ip neigh { show | flush } [ proxy ] [ to PREFIX ] [ dev DEV ] [ nud STATE ]\n"); fprintf(stderr, " [ vrf NAME ]\n\n"); fprintf(stderr, "STATE := { permanent | noarp | stale | reachable | none |\n" @@ -142,6 +142,8 @@ static int ipneigh_modify(int cmd, int flags, int argc, char **argv) req.ndm.ndm_flags |= NTF_PROXY; } else if (strcmp(*argv, "router") == 0) { req.ndm.ndm_flags |= NTF_ROUTER; + } else if (matches(*argv, "extern_learn") == 0) { + req.ndm.ndm_flags |= NTF_EXT_LEARNED; } else if (strcmp(*argv, "dev") == 0) { NEXT_ARG(); dev = *argv; @@ -354,6 +356,9 @@ int print_neigh(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) if (r->ndm_flags & NTF_PROXY) print_null(PRINT_ANY, "proxy", " %s", "proxy"); + if (r->ndm_flags & NTF_EXT_LEARNED) + print_null(PRINT_ANY, "extern_learn", " %s ", "extern_learn"); + if (show_stats) { if (tb[NDA_CACHEINFO]) print_cacheinfo(RTA_DATA(tb[NDA_CACHEINFO])); diff --git a/man/man8/ip-neighbour.8 b/man/man8/ip-neighbour.8 index db286d1..4a672bb 100644 --- a/man/man8/ip-neighbour.8 +++ b/man/man8/ip-neighbour.8 @@ -24,7 +24,8 @@ ip-neighbour \- neighbour/arp tables management. .IR ADDR " } [ " .B dev .IR DEV " ] [ " -.BR router " ] " +.BR router " ] [ " +.BR extern_learn " ]" .ti -8 .BR "ip neigh" " { " show " | " flush " } [ " proxy " ] [ " to @@ -85,6 +86,12 @@ indicates whether we are proxying for this neigbour entry indicates whether neigbour is a router .TP +.BI extern_learn +this neigh entry was learned externally. This option can be used to +indicate to the kernel that this is a controller learnt dynamic entry. +Kernel will not gc such an entry. + +.TP .BI lladdr " LLADDRESS" the link layer address of the neighbour. .I LLADDRESS