Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp7563177imm; Thu, 28 Jun 2018 05:59:32 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLKSknoNFvR6axjfFmLCafIH3CvTHlW+bLmR8pV1aNA8FclGStTJw9Cg+SXcuo1PNcwXWLD X-Received: by 2002:a17:902:9a8a:: with SMTP id w10-v6mr10413305plp.333.1530190772755; Thu, 28 Jun 2018 05:59:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530190772; cv=none; d=google.com; s=arc-20160816; b=KJNLC9zk3IuVLS0F+Z2f5/Iy+OIEKXXyGD2LdtdB3gpKKr7Gtge0d8vSn8bJ0xAb2+ t5JzFUH2oIG2M8R+c1ymr0MKiADAIg75Mih11E3FGLqeR/R43SoEFc886HcYK3OVrxfe +3pIPhtAUBmbUTEex9fmv+jcEkqd2zITdVspD91BXx97wFzQSwXSFau4QNdWWLdIE0Lt qmRLTS4WwCOgzzDsZBD81JothrjBr2eZpzSu0ydxeZOn/OTzL/JHAp9nnbGEtBQ4nTqg NZEpdBbNhCdul+n54o828HDzpyaXWn9UYk44v/QGrppZKKcqV1DkslzYJCANFYhfiGyo MRMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=kEFx0Nf6J4J9XhqwRpgnGzLrnp6MlJNY7N9FPdJ/mj8=; b=YTdRy/QXOCf/GxZR+pmh6ePIonBkpxe7BAsrWCBfKOaOsBDmi6o97+atX1aX2PTntI foQtXgy+9ZM8gonToUQwYNu22IRyA5LeEjk7NFe96in8JFX/Btn4TUQDNi5EQRTescNO ZcskruQYO09fAtHUC6gu54BkDQmIJVCaiC2HM1JZBejUzIIjJn0PJknzp7gKxiCPimMg naKvof9KQPSq8riR6L3zdyXjQ8rtsxEb71NKsKy0H02nFdnmSqDzcfq8p0s030fwUQN4 Z0KJ9Cjs5/HcG8XPOzgAV4z1lc8kQhVLpvB6xFLi8IeKk7lDygKj6Dd2YnFYZk8hmFPC 6DVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=tgpzQTBf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r59-v6si6529841plb.187.2018.06.28.05.59.17; Thu, 28 Jun 2018 05:59:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=tgpzQTBf; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965891AbeF1Mqj (ORCPT + 99 others); Thu, 28 Jun 2018 08:46:39 -0400 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:36231 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965788AbeF1Mqh (ORCPT ); Thu, 28 Jun 2018 08:46:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1530189997; x=1561725997; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=kEFx0Nf6J4J9XhqwRpgnGzLrnp6MlJNY7N9FPdJ/mj8=; b=tgpzQTBfa9dpLuLl5qOudaA/mkIdl+1KUF6gSz581Jf0okjQ8wWgEJdh dlumycVRiCMZ7N7oVMY6dU0ja2LXRJAxlJb73NnZSrjP8DFWqgEsoE491 NFuA5DDl1O2Tfd1L/1++ADoKR+gx+LmPfc5VC3B60q3pVRv0Co1gGL3xY c=; X-IronPort-AV: E=Sophos;i="5.51,283,1526342400"; d="scan'208";a="740115556" Received: from sea3-co-svc-lb6-vlan2.sea.amazon.com (HELO email-inbound-relay-2b-8cc5d68b.us-west-2.amazon.com) ([10.47.22.34]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 28 Jun 2018 12:46:34 +0000 Received: from EX13MTAUEA001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan2.pdx.amazon.com [10.236.137.194]) by email-inbound-relay-2b-8cc5d68b.us-west-2.amazon.com (8.14.7/8.14.7) with ESMTP id w5SCkVww048699 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Thu, 28 Jun 2018 12:46:33 GMT Received: from EX13D02EUB003.ant.amazon.com (10.43.166.172) by EX13MTAUEA001.ant.amazon.com (10.43.61.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 28 Jun 2018 12:46:33 +0000 Received: from EX13MTAUEE001.ant.amazon.com (10.43.62.200) by EX13D02EUB003.ant.amazon.com (10.43.166.172) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 28 Jun 2018 12:46:32 +0000 Received: from uc1a35a69ae4659.ant.amazon.com (10.28.85.80) by mail-relay.amazon.com (10.43.62.226) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Thu, 28 Jun 2018 12:46:30 +0000 From: Norbert Manthey To: Norbert Manthey , CC: "David S. Miller" , David Ahern , Jiri Pirko , Jon Maloy , "Simon Horman" , Paolo Abeni , "Tom Herbert" , Michal Kubecek , "Sven Eckelmann" , WANG Cong , Subject: [less-CONFIG_NET v2 2/8] net: reorder flow_dissector Date: Thu, 28 Jun 2018 14:45:30 +0200 Message-ID: <1530189936-25780-3-git-send-email-nmanthey@amazon.de> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1530189936-25780-1-git-send-email-nmanthey@amazon.de> References: <1530189936-25780-1-git-send-email-nmanthey@amazon.de> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This commit reorders the definitions, such that in the next step we can easily cut the file into a commonly used part, as well as a part that is only required in case CONFIG_NET is used. This is part of the effort to split CONFIG_SECCOMP_FILTER and CONFIG_NET. Signed-off-by: Norbert Manthey --- net/core/flow_dissector.c | 206 +++++++++++++++++++++++----------------------- 1 file changed, 103 insertions(+), 103 deletions(-) diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 53f96e4..76d0b23 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -1085,36 +1085,6 @@ static inline size_t flow_keys_hash_length(const struct flow_keys *flow) return (sizeof(*flow) - diff) / sizeof(u32); } -__be32 flow_get_u32_src(const struct flow_keys *flow) -{ - switch (flow->control.addr_type) { - case FLOW_DISSECTOR_KEY_IPV4_ADDRS: - return flow->addrs.v4addrs.src; - case FLOW_DISSECTOR_KEY_IPV6_ADDRS: - return (__force __be32)ipv6_addr_hash( - &flow->addrs.v6addrs.src); - case FLOW_DISSECTOR_KEY_TIPC: - return flow->addrs.tipckey.key; - default: - return 0; - } -} -EXPORT_SYMBOL(flow_get_u32_src); - -__be32 flow_get_u32_dst(const struct flow_keys *flow) -{ - switch (flow->control.addr_type) { - case FLOW_DISSECTOR_KEY_IPV4_ADDRS: - return flow->addrs.v4addrs.dst; - case FLOW_DISSECTOR_KEY_IPV6_ADDRS: - return (__force __be32)ipv6_addr_hash( - &flow->addrs.v6addrs.dst); - default: - return 0; - } -} -EXPORT_SYMBOL(flow_get_u32_dst); - static inline void __flow_hash_consistentify(struct flow_keys *keys) { int addr_diff, i; @@ -1162,49 +1132,6 @@ static inline u32 __flow_hash_from_keys(struct flow_keys *keys, u32 keyval) return hash; } -u32 flow_hash_from_keys(struct flow_keys *keys) -{ - __flow_hash_secret_init(); - return __flow_hash_from_keys(keys, hashrnd); -} -EXPORT_SYMBOL(flow_hash_from_keys); - -static inline u32 ___skb_get_hash(const struct sk_buff *skb, - struct flow_keys *keys, u32 keyval) -{ - skb_flow_dissect_flow_keys(skb, keys, - FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL); - - return __flow_hash_from_keys(keys, keyval); -} - -struct _flow_keys_digest_data { - __be16 n_proto; - u8 ip_proto; - u8 padding; - __be32 ports; - __be32 src; - __be32 dst; -}; - -void make_flow_keys_digest(struct flow_keys_digest *digest, - const struct flow_keys *flow) -{ - struct _flow_keys_digest_data *data = - (struct _flow_keys_digest_data *)digest; - - BUILD_BUG_ON(sizeof(*data) > sizeof(*digest)); - - memset(digest, 0, sizeof(*digest)); - - data->n_proto = flow->basic.n_proto; - data->ip_proto = flow->basic.ip_proto; - data->ports = flow->ports.ports; - data->src = flow->addrs.v4addrs.src; - data->dst = flow->addrs.v4addrs.dst; -} -EXPORT_SYMBOL(make_flow_keys_digest); - static struct flow_dissector flow_keys_dissector_symmetric __read_mostly; u32 __skb_get_hash_symmetric(const struct sk_buff *skb) @@ -1222,36 +1149,6 @@ u32 __skb_get_hash_symmetric(const struct sk_buff *skb) } EXPORT_SYMBOL_GPL(__skb_get_hash_symmetric); -/** - * __skb_get_hash: calculate a flow hash - * @skb: sk_buff to calculate flow hash from - * - * This function calculates a flow hash based on src/dst addresses - * and src/dst port numbers. Sets hash in skb to non-zero hash value - * on success, zero indicates no valid hash. Also, sets l4_hash in skb - * if hash is a canonical 4-tuple hash over transport ports. - */ -void __skb_get_hash(struct sk_buff *skb) -{ - struct flow_keys keys; - u32 hash; - - __flow_hash_secret_init(); - - hash = ___skb_get_hash(skb, &keys, hashrnd); - - __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys)); -} -EXPORT_SYMBOL(__skb_get_hash); - -__u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb) -{ - struct flow_keys keys; - - return ___skb_get_hash(skb, &keys, perturb); -} -EXPORT_SYMBOL(skb_get_hash_perturb); - u32 __skb_get_poff(const struct sk_buff *skb, void *data, const struct flow_keys_basic *keys, int hlen) { @@ -1322,6 +1219,109 @@ u32 skb_get_poff(const struct sk_buff *skb) return __skb_get_poff(skb, skb->data, &keys, skb_headlen(skb)); } +__be32 flow_get_u32_src(const struct flow_keys *flow) +{ + switch (flow->control.addr_type) { + case FLOW_DISSECTOR_KEY_IPV4_ADDRS: + return flow->addrs.v4addrs.src; + case FLOW_DISSECTOR_KEY_IPV6_ADDRS: + return (__force __be32)ipv6_addr_hash( + &flow->addrs.v6addrs.src); + case FLOW_DISSECTOR_KEY_TIPC: + return flow->addrs.tipckey.key; + default: + return 0; + } +} +EXPORT_SYMBOL(flow_get_u32_src); + +__be32 flow_get_u32_dst(const struct flow_keys *flow) +{ + switch (flow->control.addr_type) { + case FLOW_DISSECTOR_KEY_IPV4_ADDRS: + return flow->addrs.v4addrs.dst; + case FLOW_DISSECTOR_KEY_IPV6_ADDRS: + return (__force __be32)ipv6_addr_hash( + &flow->addrs.v6addrs.dst); + default: + return 0; + } +} +EXPORT_SYMBOL(flow_get_u32_dst); + +u32 flow_hash_from_keys(struct flow_keys *keys) +{ + __flow_hash_secret_init(); + return __flow_hash_from_keys(keys, hashrnd); +} +EXPORT_SYMBOL(flow_hash_from_keys); + +static inline u32 ___skb_get_hash(const struct sk_buff *skb, + struct flow_keys *keys, u32 keyval) +{ + skb_flow_dissect_flow_keys(skb, keys, + FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL); + + return __flow_hash_from_keys(keys, keyval); +} + +struct _flow_keys_digest_data { + __be16 n_proto; + u8 ip_proto; + u8 padding; + __be32 ports; + __be32 src; + __be32 dst; +}; + +void make_flow_keys_digest(struct flow_keys_digest *digest, + const struct flow_keys *flow) +{ + struct _flow_keys_digest_data *data = + (struct _flow_keys_digest_data *)digest; + + BUILD_BUG_ON(sizeof(*data) > sizeof(*digest)); + + memset(digest, 0, sizeof(*digest)); + + data->n_proto = flow->basic.n_proto; + data->ip_proto = flow->basic.ip_proto; + data->ports = flow->ports.ports; + data->src = flow->addrs.v4addrs.src; + data->dst = flow->addrs.v4addrs.dst; +} +EXPORT_SYMBOL(make_flow_keys_digest); + +/** + * __skb_get_hash: calculate a flow hash + * @skb: sk_buff to calculate flow hash from + * + * This function calculates a flow hash based on src/dst addresses + * and src/dst port numbers. Sets hash in skb to non-zero hash value + * on success, zero indicates no valid hash. Also, sets l4_hash in skb + * if hash is a canonical 4-tuple hash over transport ports. + */ +void __skb_get_hash(struct sk_buff *skb) +{ + struct flow_keys keys; + u32 hash; + + __flow_hash_secret_init(); + + hash = ___skb_get_hash(skb, &keys, hashrnd); + + __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys)); +} +EXPORT_SYMBOL(__skb_get_hash); + +__u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb) +{ + struct flow_keys keys; + + return ___skb_get_hash(skb, &keys, perturb); +} +EXPORT_SYMBOL(skb_get_hash_perturb); + __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys) { memset(keys, 0, sizeof(*keys)); -- 2.7.4 Amazon Development Center Germany GmbH Berlin - Dresden - Aachen main office: Krausenstr. 38, 10117 Berlin Geschaeftsfuehrer: Dr. Ralf Herbrich, Christian Schlaeger Ust-ID: DE289237879 Eingetragen am Amtsgericht Charlottenburg HRB 149173 B