From patchwork Thu Aug 31 22:05:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Ahern X-Patchwork-Id: 808437 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="abZGF1Xd"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xjxKS146Pz9s8J for ; Fri, 1 Sep 2017 08:06:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751618AbdHaWGN (ORCPT ); Thu, 31 Aug 2017 18:06:13 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36316 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751205AbdHaWGK (ORCPT ); Thu, 31 Aug 2017 18:06:10 -0400 Received: by mail-pf0-f193.google.com with SMTP id k3so530060pfc.3 for ; Thu, 31 Aug 2017 15:06:10 -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=VjFxVof2IgrFcNrCbA0jxzEi1xSH3nHX44SD1b/EWT0=; b=abZGF1Xd3KAA2jc0lS6QUlZIok+4fPbYIMCmFA5UtvxH9gflEeCtNuR/6U17kxR0/Z h/7reWjJrztpFsabysa4RzbLqMUvSoxyh9+eUgxXSjFmfLGxaiuSS02e3W9QgeDAkRcx JxP/xGSXRQfon5kB/BL0yLQUiXIJDFq/hVyzKAQW5PjT8n8oU692qajQ7+SA6DIQFOUZ 9Jckka7oRrz7x6ukVn6FR+nIanB6bZP4lfXauGxJu43nuEYMjwEXDdS6rqxyrmVP5rhb NuQkwmvKcw5m6m0tRiKkiNBJcI8Q79qK+YH8bK50aWqqTHz2DiaWwcsIP9IE4HasYxSP H7Dw== 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=VjFxVof2IgrFcNrCbA0jxzEi1xSH3nHX44SD1b/EWT0=; b=bDLO1HqCSz75gVaze9Jmgr61Q74R9eDyefNQxGVKhI6vfxzrtm/m1mSl7uVtQc8JM8 6k6LDWcgiNh4UoovkxU+ruxEN0eP3IuzNUNYLwNN5idIAibj2oSoZKHoJ+TApry+UgCR PiAtKcN1jjQuTHKI8dLSnr9a0y7YmmhvYVNCSwpS6VWZSQOdw4+Y/knouPNx/+ZiY2fO o+dYf/x/ZrhFpf0wFs/MtV0rb8U+O4MQhFPr0UBQJHoAHHNjnXexbDbW9Vba+LvxTaMa THZ6jyrCSVhkL9QEfWH/RtvDO1thmJzMGXFBU0H42Zj9PqpGAbHCONrQ2gYmGd1NJijZ BRDQ== X-Gm-Message-State: AHYfb5j0u8UIqSvJokuSNzyGNOhgzS6YNhLoJn5Mk8N1fZ2YvMkNdKF1 YOgiti4fclusYLcK X-Google-Smtp-Source: ADKCNb4nZ7wRN+bP1SChOenLZwpm/JqJPtwr0XrtkrLuN7l4sFi0E1k60iHA/Y9Y4w2Y9hnWgMbKTQ== X-Received: by 10.84.133.14 with SMTP id 14mr4231076plf.44.1504217169653; Thu, 31 Aug 2017 15:06:09 -0700 (PDT) Received: from kenny.it.cumulusnetworks.com. (fw.cumulusnetworks.com. [216.129.126.126]) by smtp.googlemail.com with ESMTPSA id x12sm845336pfk.42.2017.08.31.15.06.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 31 Aug 2017 15:06:09 -0700 (PDT) From: David Ahern To: netdev@vger.kernel.org, daniel@iogearbox.net, ast@kernel.org Cc: David Ahern Subject: [PATCH v3 net-next 1/7] bpf: Add mark and priority to sock options that can be set Date: Thu, 31 Aug 2017 15:05:44 -0700 Message-Id: <1504217150-16151-2-git-send-email-dsahern@gmail.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1504217150-16151-1-git-send-email-dsahern@gmail.com> References: <1504217150-16151-1-git-send-email-dsahern@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add socket mark and priority to fields that can be set by ebpf program when a socket is created. Signed-off-by: David Ahern Acked-by: Alexei Starovoitov Acked-by: Daniel Borkmann --- include/uapi/linux/bpf.h | 2 ++ net/core/filter.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index d46cf326b95f..e9c89e20adff 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -758,6 +758,8 @@ struct bpf_sock { __u32 family; __u32 type; __u32 protocol; + __u32 mark; + __u32 priority; }; #define XDP_PACKET_HEADROOM 256 diff --git a/net/core/filter.c b/net/core/filter.c index c6a37fe0285b..f51b9690adf3 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3455,6 +3455,10 @@ static bool sock_filter_is_valid_access(int off, int size, switch (off) { case offsetof(struct bpf_sock, bound_dev_if): break; + case offsetof(struct bpf_sock, mark): + break; + case offsetof(struct bpf_sock, priority): + break; default: return false; } @@ -3958,6 +3962,28 @@ static u32 sock_filter_convert_ctx_access(enum bpf_access_type type, offsetof(struct sock, sk_bound_dev_if)); break; + case offsetof(struct bpf_sock, mark): + BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_mark) != 4); + + if (type == BPF_WRITE) + *insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg, + offsetof(struct sock, sk_mark)); + else + *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg, + offsetof(struct sock, sk_mark)); + break; + + case offsetof(struct bpf_sock, priority): + BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_priority) != 4); + + if (type == BPF_WRITE) + *insn++ = BPF_STX_MEM(BPF_W, si->dst_reg, si->src_reg, + offsetof(struct sock, sk_priority)); + else + *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg, + offsetof(struct sock, sk_priority)); + break; + case offsetof(struct bpf_sock, family): BUILD_BUG_ON(FIELD_SIZEOF(struct sock, sk_family) != 2);