From patchwork Fri Jan 18 00:41:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1027061 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=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="ri4aDazI"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43ghvd6DwKz9sCh for ; Fri, 18 Jan 2019 11:41:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726366AbfARAlL (ORCPT ); Thu, 17 Jan 2019 19:41:11 -0500 Received: from mail-io1-f73.google.com ([209.85.166.73]:53569 "EHLO mail-io1-f73.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725982AbfARAlL (ORCPT ); Thu, 17 Jan 2019 19:41:11 -0500 Received: by mail-io1-f73.google.com with SMTP id t133so8811799iof.20 for ; Thu, 17 Jan 2019 16:41:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=k7TWLdbBTo6jXGUIY/VIB8gFh42N3OpsGTQMTEOikhM=; b=ri4aDazID+IA15oaFmv3biovBre0sVxg24XT0i3Thw6VCwdKWiZn/TG/0xyw3Zm7pn Tl4TGntjQT3GtsQIvALZz0/GLzMm4JQIyN/YtYfa2sKXwkB3vypy0CtveVJ0oPJiT39w k+qMd/q+lKvVZmprPFBHtvlVXcEmnMINabmN7wGb9JIM3BKnwsy/4OCZioZnSg7kX38i WEAVb3v1ofce8UuyT1kmC4aaceE0RWR3uG76bFT91kMyDBxbJi2qGTM/+Y8+D1oNfwdO EjLYHGOtoG+gsvq9zWwImvHhDQojED/gCW5SRkk4tN8lurv6s1ASJyU8d+BkXN/eDB+o mF/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=k7TWLdbBTo6jXGUIY/VIB8gFh42N3OpsGTQMTEOikhM=; b=HtrXPPekWLmzWcnyhV+3q72OWsIK9+bh4ofuRBpX9vWip/qvekSSXk+J6TPavmVvXK jsKy8EhECd7mDgYq8ON3KYFIBBGtQO+roIhERSyJVCF/q9Fqo6NvfglfNnNF+UowQOGV UaxR6HSUURBJpKE93AOLmRRwX1hDf8NFYdOK4pHc6qqCQEDaJ4y2SUpixOcqdwLiJm4S xvZCW0dSQIAuyp2i63Uv+It50sBBX1ueszEM3tpS/yNpI2xUBfiUmIKiSwYXRiTEZVeM BBvJnWrahbCsQ1BtQrZoLEbtEm+1UJlwXxVHHCJrTr6boMf9yOtqiNFbSleninNu6Abb HdMA== X-Gm-Message-State: AJcUukdEMBPyEtxKmhmYT6bSa6vcPZEU3ZIBJ78Tw75ei+7e57QE3y4B wxWZgHRwzCXH6HzGVirSrkywgSmqk8vxe0/6TplmlZQUW+eOjVd7lieRtat3wO6Y0A9RanWB1p7 lE3D20Jq8wL8papx80ODif3+nTIdVTQ4V49u0BKrarwFIhXT7zcmQhg== X-Google-Smtp-Source: ALg8bN6BjdEc78keedxk2gt1LVPDU6cZmaTRTS+ZiZ5Yp4yue8ZLOwazlvEhOyk7PLh03JFFBChbCb8= X-Received: by 2002:a24:2c43:: with SMTP id i64mr10734958iti.2.1547772070419; Thu, 17 Jan 2019 16:41:10 -0800 (PST) Date: Thu, 17 Jan 2019 16:41:01 -0800 Message-Id: <20190118004106.163825-1-sdf@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.20.1.321.g9e740568ce-goog Subject: [PATCH bpf-next 0/5] add bpf cgroup hooks that trigger on socket close From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, Stanislav Fomichev Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently, we have BPF_CGROUP_INET_SOCK_CREATE hook that triggers on socket creation and there is no way to know when the socket is being closed. Add new set of hooks BPF_CGROUP_INET{4,6}_SOCK_RELEASE that trigger when the socket is closed. Initial intended usecase is to cleanup statistics after POST{4,6}_BIND. Hooks have read-only access to all fields of struct bpf_sock. First patch adds hooks, the rest of the patches add uapi and tests to make sure these hooks work. Stanislav Fomichev (5): bpf: add BPF_CGROUP_INET{4,6}_SOCK_RELEASE hooks tools: bpf: support BPF_CGROUP_INET{4,6}_SOCK_RELEASE in libbpf/bpftool selftests/bpf: add BPF_CGROUP_INET{4,6}_SOCK_RELEASE to test_section_names.c selftests/bpf: add BPF_CGROUP_INET{4,6}_SOCK_RELEASE to test_sock.c selftests/bpf: add BPF_CGROUP_INET{4,6}_SOCK_RELEASE to test_sock_addr.c include/linux/bpf-cgroup.h | 6 + include/net/inet_common.h | 1 + include/uapi/linux/bpf.h | 2 + kernel/bpf/syscall.c | 8 ++ net/core/filter.c | 7 + net/ipv4/af_inet.c | 13 +- net/ipv6/af_inet6.c | 5 +- tools/bpf/bpftool/cgroup.c | 2 + tools/include/uapi/linux/bpf.h | 2 + tools/lib/bpf/libbpf.c | 4 + .../selftests/bpf/test_section_names.c | 10 ++ tools/testing/selftests/bpf/test_sock.c | 119 ++++++++++++++++ tools/testing/selftests/bpf/test_sock_addr.c | 131 +++++++++++++++++- 13 files changed, 307 insertions(+), 3 deletions(-)