From patchwork Sat May 27 22:19:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 767789 X-Patchwork-Delegate: davem@davemloft.net 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 3wZy9k3qKzz9s7q for ; Sun, 28 May 2017 08:20:10 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="r7flF8aD"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750912AbdE0WUF (ORCPT ); Sat, 27 May 2017 18:20:05 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:35442 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750825AbdE0WTv (ORCPT ); Sat, 27 May 2017 18:19:51 -0400 Received: by mail-pf0-f194.google.com with SMTP id u26so8199849pfd.2 for ; Sat, 27 May 2017 15:19:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=r9Gi+4xsSKVSrRQrQ6/LFQe4pu9QJp9iWra7Weo/Ng4=; b=r7flF8aD8HuI10Fb4jS/Lre30saXEu1OSQkiYpYCxqLLMpJgDBdz2PWCLf8Y0igJ3q 2m4Xo6Xbnn4ApPrijwRzI1FvcM4kfWbZxnZKJOA1jAuG0/Z7Mt6JLEZZ/S5F5e5LQ1dt N6EJifpUsouyRlWf+lujCIaPOAeQvfNuhXKhTOKHUg0st27o7TDdRDfubEGQeWX2kgfs qCsJxJsIBGR1M2J4en72cG+HJURfAVdXUn6YItuSc2IFJsKl+2LkpuZsNJMSa5JfSfOU HwLw7i2wzDp+CkZn3v7cJvVnuOyUsSsMmmQfRht3kAZpLrDkVxqQc1u9sRRU+qzXUik3 /GHA== 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:in-reply-to :references; bh=r9Gi+4xsSKVSrRQrQ6/LFQe4pu9QJp9iWra7Weo/Ng4=; b=E+nMlLZOvukqWrzJsEUKK8WbfImxV2FbfodSaA478oKwNpi1SEZ/bfoY673bWITZyN JOeoM0IkG8pC7ZXAfsv7sODTGBNpGSowgkf11+H75+GBb2+V3y6kBsU1LYXzDURf8cOe YnXj9zVAw7cdZWrFvGEB2qn1SuhQEvZFZZzmXSofjH5f1xXSEaRlhWHcW0arDc7Kk/Hm 2PTbGUCtvZ6r7XE9u+NIZTFJ2l9MkrbCoXt+RlyzUEMLckK1hQGI8NZ5QPjdB86XR0Q7 CvJyd7JMKb0shrMTA5DsupN4uNl9ppPwfi6v4QDY4SSmpAqnqfdN1kGFjRU8WTqvkbJ3 wApQ== X-Gm-Message-State: AODbwcDYlcQI7m5F0ZcYOkDMmZzXr8DTA1d5nizFqLkHBxdMADCpovLA W/LVG7tOMI82TEki X-Received: by 10.98.217.7 with SMTP id s7mr9708641pfg.39.1495923590693; Sat, 27 May 2017 15:19:50 -0700 (PDT) Received: from Davids-MacBook-Pro.local.net (c-73-181-33-26.hsd1.co.comcast.net. [73.181.33.26]) by smtp.gmail.com with ESMTPSA id v188sm7965428pgv.51.2017.05.27.15.19.49 (version=TLS1 cipher=AES128-SHA bits=128/128); Sat, 27 May 2017 15:19:49 -0700 (PDT) From: David Ahern To: netdev@vger.kernel.org Cc: roopa@cumulusnetworks.com, David Ahern Subject: [PATCH v2 net-next 8/9] net: mpls: Make nla_get_via in af_mpls.c Date: Sat, 27 May 2017 16:19:32 -0600 Message-Id: <20170527221933.57644-9-dsahern@gmail.com> X-Mailer: git-send-email 2.11.0 (Apple Git-81) In-Reply-To: <20170527221933.57644-1-dsahern@gmail.com> References: <20170527221933.57644-1-dsahern@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org nla_get_via is only used in af_mpls.c. Remove declaration from internal.h and move up in af_mpls.c before first use. Code move only; no functional change intended. Signed-off-by: David Ahern --- net/mpls/af_mpls.c | 96 ++++++++++++++++++++++++++--------------------------- net/mpls/internal.h | 2 -- 2 files changed, 48 insertions(+), 50 deletions(-) diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index 0133d1ad9032..a953fcf169ba 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -684,6 +684,54 @@ static int mpls_nh_assign_dev(struct net *net, struct mpls_route *rt, return err; } +static int nla_get_via(const struct nlattr *nla, u8 *via_alen, u8 *via_table, + u8 via_addr[], struct netlink_ext_ack *extack) +{ + struct rtvia *via = nla_data(nla); + int err = -EINVAL; + int alen; + + if (nla_len(nla) < offsetof(struct rtvia, rtvia_addr)) { + NL_SET_ERR_MSG_ATTR(extack, nla, + "Invalid attribute length for RTA_VIA"); + goto errout; + } + alen = nla_len(nla) - + offsetof(struct rtvia, rtvia_addr); + if (alen > MAX_VIA_ALEN) { + NL_SET_ERR_MSG_ATTR(extack, nla, + "Invalid address length for RTA_VIA"); + goto errout; + } + + /* Validate the address family */ + switch (via->rtvia_family) { + case AF_PACKET: + *via_table = NEIGH_LINK_TABLE; + break; + case AF_INET: + *via_table = NEIGH_ARP_TABLE; + if (alen != 4) + goto errout; + break; + case AF_INET6: + *via_table = NEIGH_ND_TABLE; + if (alen != 16) + goto errout; + break; + default: + /* Unsupported address family */ + goto errout; + } + + memcpy(via_addr, via->rtvia_addr, alen); + *via_alen = alen; + err = 0; + +errout: + return err; +} + static int mpls_nh_build_from_cfg(struct mpls_route_config *cfg, struct mpls_route *rt) { @@ -1641,54 +1689,6 @@ int nla_get_labels(const struct nlattr *nla, u8 max_labels, u8 *labels, } EXPORT_SYMBOL_GPL(nla_get_labels); -int nla_get_via(const struct nlattr *nla, u8 *via_alen, u8 *via_table, - u8 via_addr[], struct netlink_ext_ack *extack) -{ - struct rtvia *via = nla_data(nla); - int err = -EINVAL; - int alen; - - if (nla_len(nla) < offsetof(struct rtvia, rtvia_addr)) { - NL_SET_ERR_MSG_ATTR(extack, nla, - "Invalid attribute length for RTA_VIA"); - goto errout; - } - alen = nla_len(nla) - - offsetof(struct rtvia, rtvia_addr); - if (alen > MAX_VIA_ALEN) { - NL_SET_ERR_MSG_ATTR(extack, nla, - "Invalid address length for RTA_VIA"); - goto errout; - } - - /* Validate the address family */ - switch (via->rtvia_family) { - case AF_PACKET: - *via_table = NEIGH_LINK_TABLE; - break; - case AF_INET: - *via_table = NEIGH_ARP_TABLE; - if (alen != 4) - goto errout; - break; - case AF_INET6: - *via_table = NEIGH_ND_TABLE; - if (alen != 16) - goto errout; - break; - default: - /* Unsupported address family */ - goto errout; - } - - memcpy(via_addr, via->rtvia_addr, alen); - *via_alen = alen; - err = 0; - -errout: - return err; -} - static int rtm_to_route_config(struct sk_buff *skb, struct nlmsghdr *nlh, struct mpls_route_config *cfg, diff --git a/net/mpls/internal.h b/net/mpls/internal.h index a015a6a1143b..cf65aec2e551 100644 --- a/net/mpls/internal.h +++ b/net/mpls/internal.h @@ -204,8 +204,6 @@ int nla_put_labels(struct sk_buff *skb, int attrtype, u8 labels, const u32 label[]); int nla_get_labels(const struct nlattr *nla, u8 max_labels, u8 *labels, u32 label[], struct netlink_ext_ack *extack); -int nla_get_via(const struct nlattr *nla, u8 *via_alen, u8 *via_table, - u8 via[], struct netlink_ext_ack *extack); bool mpls_output_possible(const struct net_device *dev); unsigned int mpls_dev_mtu(const struct net_device *dev); bool mpls_pkt_too_big(const struct sk_buff *skb, unsigned int mtu);