From patchwork Thu Nov 30 13:42:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Gushchin X-Patchwork-Id: 843012 X-Patchwork-Delegate: bpf@iogearbox.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 (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="m12WGWsm"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="QVP7f9rn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yndwQ2HVFz9ryv for ; Fri, 1 Dec 2017 00:46:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753086AbdK3Np7 (ORCPT ); Thu, 30 Nov 2017 08:45:59 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:40578 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752785AbdK3Nnu (ORCPT ); Thu, 30 Nov 2017 08:43:50 -0500 Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAUDhGu3006502; Thu, 30 Nov 2017 05:43:34 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=xViVc10QaShn/blxFD6aOE0+UHom8VFe60tzGeUt+q8=; b=m12WGWsmJYCbLgPxplBkLl4schbaJKBoHn6NB4xNXBsW62dTX2VpcZQOrHhlh5c4hEeQ VsEfdXjVJI6kSzvCeFXw+fgOQscaqBLQjG27/cOEGfW7vwv8jzpXoyYWSHJ3WXJQkbVH ELZSot5vHPm585nDohEn3Z8bHMFeKKS5LwE= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2ejasws948-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Nov 2017 05:43:34 -0800 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.23) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 30 Nov 2017 08:43:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xViVc10QaShn/blxFD6aOE0+UHom8VFe60tzGeUt+q8=; b=QVP7f9rniAvf2OAtOl+HmO3JBp9ds9Fo4UDwUSZpoFqnKRHEAsYwNTOLRxdr/M2hnOIx3JPo4msJAjYvrxkIFgIK6x5AKKCLLGJ+/hEoZZVbfFzktNnpL9bTFx9A93fwuk4Y5T9vdqp2MeH6jIO86oP5/E0A0YD/AgB684GjqT0= Received: from castle.thefacebook.com (2620:10d:c092:200::1:638c) by CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 13:43:28 +0000 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 1/5] libbpf: add ability to guess program type based on section name Date: Thu, 30 Nov 2017 13:42:58 +0000 Message-ID: <20171130134302.2840-2-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3edd907b-d98f-4b2b-ce60-08d537f857cd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 3:lnAuW6Piq4iZLTolSIvEcRD0K30e1WE3Xaq1lt4P01pOhG6p7Edh2b+dmMye6N2yNRmlr/YrlEnFuUrSxbkii3a+vScQWPNxbkV+tFvI3FYOr6IXh8V7L0Gw8jgDiaBp6bgsoADUGeUVe4PxA5XzwZip3fcjqm0iQE0Ynwm0XpVR2fk8X7etTSGlDDMCKECGmLpV39X7BxKW7iR5mjziRvrQZX9xZWZhEpyqbDPlflNwsw16T243k4wbUYNAJc4W; 25:0w6AhGpzzaAVasyxfVwYn+iBQ68ICmzqu9WAAsQKaHp8PiRQTrCEB6PTj2RbdRDsP/f3Jk48/iBh+IThTZUN1lywjdL5u8QOTQZLghf5mpMF/wUNyDght3tDSO4mYLQ0DQf7yrk+/oAPHvH/dX6UoyO/8LsEJSsbhjNclvjeDCsTkn3lXXhl4jux8yb4S29DrpFj4cuTe5wDfcDRXlUJFibTgjhNdxYE1BSDblsL2iETMQv0uZ8m8OBLM60EXUAwkaUvj5/qsrNyC4cvbrRoYx1R5/jh2ZopTERmCMLeP7WDX1jf3Yg3hRO8xklY4vUE1j2UOL3Ou1fhir4UvSB4Og==; 31:JI2aB8jWDrSfmbRCf6uFmh//Lnezg/NoFvuBWjMxb+Yo1Rh8jOzPhmsgeh49VPVb502/EY4xoKeYvLI4Kr6NBzVhVZ7LvCRa89jOp+BXrTAjJd2RB5/cJh0YGd08GOs6eA43SFdBqDXayejYY+2UYoNp9vO3rvl8AT9lZRKfH1iMBMEqL0C8DY2p4khUIzRkG44/9cE9nHS/gegMz3ofS7UUXq3dr5+nOM098nP6vJc= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:WEu4WDw+YHCwsI0R/Jb4zbT7lMsih6hehDnxgCYjX8wZmxmw6BD5A/9HcOdBZur892cXaHjiu/0erJ9TtDWMQsCfUGZi/0wzZzuGFgXyBiLGAw3CRSoyzp2oG7ufyECMoKESvbzDbdDDQUK3KX59fZvXxR+owhVcr37sVDxaa0mgUsxZeCwr0bauPjieRqdkRquqK8MclMVxN/9noHC4IZ+Opla9WQeKxB/2YLgmKmhlzXgZ3Wpt4KkTGJ8io9ixHKx9r2yCj0zXOuItFMQfFqvAmNlPuhvR6tNxq3oSaLnTT8TokyJRnxbfYeW+X322bKXFbthsfDFESAdGqPf6ukKukt2Ahq/rVPNfW7O5JocR1HienLtpzS0uGatBDaz23Rz91m4absp3yvBDGQebPb8syjGXALnBLGQdwogWMXB3+L+SCgrJcfZjiAEWT1eHH5AIBJMRdIYHn+w9XERZgssapL267heTClv9NcDoQ4V3Q1zRtkQ9MoR9QPoTTeMO; 4:L6SIMnuJqY0wazUIDE0okSwSVBp+0KhqGLzynZH9zfAtUoMQXx/W1SvD0HM3eYQ0aGk3hU6cVZqLvNT7jT3u+rjl11PqrnxaYNaAEcPn87I509KiCXOUIA6/yjE5NSUouUcQxTOehkjnZXlRm+0km+ADXQCR7R6x6HROnmKzAJSTOqi40CUAeqH64J6pfRAI2zT2XGm4IxNosgmPJRq52PEpB4q7EoL40R9DlPimQA1y7vjNxljJwS+Ee5XJlZygXtoCgZNGucnr5WDJDHY53ZqzSj1xNOU4ncssCX8KfxAmylybWyx9qxSpw6Qyis7G X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011); SRVR:CO1PR15MB1079; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB1079; H:castle.thefacebook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 23:EcMx1wdf9wrI1YSbMyOJmGkYIlz0KiIOPV8YCLEecAbKbJe6320yDcMu7Dw9oecwnzuq36zWruVXp/xrHZgk2yXvnjk7Ah/e02/yI+abh0OdU7yALtXBOC1UsOIjbeST4nrZgUwAKNUIoWXt+GDrH0VaQl42Vu7/RR+McvVQ6VOxI6nyH1dhZF0IEWimExJd1bysHj5raZfMaXNC90Cy9Ny3shDb2pbGN27pxJeZRiIj++k4iVYydj8txwwFihZBOgsjyobAxPviO1BXvl99U4besUD2suvtZ136vB7E2R3StNSdTPxwm5EOENjATL5OqTH5JKsPu9194gyU+lgnaIa0Xaa9HlCqvYZ/cDN0IL6WMBVcYFg1eBBzGvmOpHjWFVqNbFdL8YtWSwXZK/4czbBrGfwiEw72c7yhS5fYgUJLBjPJousJ3Cl5+mW0av/3z/HxWF2WATZ1xVYJ87pZyel+Gl0uztSru+wwMT3Oln6OiP5jgbLYeTyUnUs9bApVim3QL9KUVJ1JVEEQ2e2Kfu17MVJeOEJtFS8HBy6I4y9Ov+d4gQ2GiVXJ8OSrdalwA7t+qoUE463ao8Ph8WocnZWZOVJZZAh/zo0aCXEQai4w8KuvsfcyJM+vqiICMfNp+TZoo+RwYMBoq70cLMNauNz3X/XzF6wdbf6u5+hGZ10XKbGugM1cBKVkUxitKma/OOsV4hqS7a011OSkvjYjozg7K9j9oLusWYGyDNUHohga8EvlHwdEVKTbI4zKEKr+51dpkZttPA9ZBMRv2b+ETJp70YOvDON+cKSiehibKMCYOlVqFaGaixbHmPtZ2DpLLhc8SglDo+UUqxvowJg0IUNEnoIBlcYx0xGhLTF8M2fCuj3gkMoycz/OT0nAjwgyfqX9vAyOV3yAFkAGcgb4DdjZfSoUiX7s1ICUUQdKpgv3N4qmZwwY0pvBFlXQ4g4B7NmZhiQRs5EtVveL2bhxP19AH5xSSXB++K8dVPSuKnWCiM/Yn76hLMbxg5VJtpnEoCM2sv65Hja+JzsgxCc2tYpQys3hPzjDPqOJqIb7PgGBvNOe8ZT/K0jM2jO+b8/cdjHcoZ3GcK8VfW3kkEsWCbLhWI8jWDHInk91MrWva/JNtTPVHtOkYEsPZuCjWJ/OobOQgw6aFK+B3QiW6qxfjQV+wCHPmO85bcgBQ54uqo901W7+RS2Rdr5pp/3P61jZ X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 6:ZaD8H8eACjxcMXBdIsMS/gXyMhvPGS/dD6ykUFCnoi7tLY8LvHfJbpPLMcpGbJ5rd24nLbLeZ7ILfFmuYmOaFyvE7X7hU+SuNKypCjT3CUARBivFgkbKsf+h4qQDoqFeH0xKvfbWpSFZNeqvprFi3d/2WTPpYQKZ26HzmdN92eInqOc9Lk7W7Kmfni+o9TbufCNDKmSNs/18FuX64wiOZsGBD12hCX3NpEHVphwo8ObdHc5i37k2HIlUUoGHu2HqaJF7t+4pGwncXxTq/dlBLF5oDWriaHuRe3OxMyD2dk/SxW0xTIgfIFq1e9iiyFDwAYZKZYcEZ7Cum6uv6T1U+e/mNNySFv+qXkxSSCSR+xk=; 5:5q7kv1dSZjFubnB6tYkqxlFf0lDkqWZdy3uMnmochRye6Xb1EPZckB3ih43u6dGOZRHfz0+yWHrHOs8r6fk1hDk4d0KaRz3JRFBTuMfJNaeqVVUX1GWhOLjz9HvKMxe9TNRWfTMUQeToNB9187Yr8JKQBF8AX/nn7PqJN3KQsko=; 24:7quWZC6E+3IoC97V/qGNQb0555FEbzZv4TfAdvlnDIJSnS+UPZYeQn8pWaVwecF4BRvqhfwziQSU5kh0MWnGOzAdWi56pJviMunXGwg4DkE=; 7:AiNEbXWEIJPKK2LzIX77npfeVfXyTubY6CHhrIEauuyQlecJLsIZbdaw5dnzkCxPUZaJPIjwpIVU+rmFtmW6JLMqWPPep3yNh8dZZG2dEyNwR2/606Rcnwqv0jOuSYriDyv2aZ/RjKcvkt+hxjiBQsPJ/xDMnw26e78J+wQXGXMQ8xOmFO4kPNAFufJMqIsdl50oa387AdKN1mGItS6otinlmjNs4nXAhhx/1boJUMMSui1WzWYADqxY0HisUy7U SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:W7i8M/OnNf6r/CJ7KpXi5u02mt4P3fi/XWnoLvSgZ+/H//lo9KdD46Rjk2OriHzJoPvRxXkziXQ75YXhBwyPcLbTebWiRF4TLUSvADcSNiBrIg2dHPlpJaELZT1OcIHczRM7c4zaVCG2tG/9tkI94u/8DBZis42bgE5E8LuglSk= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:28.7158 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3edd907b-d98f-4b2b-ce60-08d537f857cd X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-30_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The bpf_prog_load() function will guess program type if it's not specified explicitly. This functionality will be used to implement loading of different programs without asking a user to specify the program type. In first order it will be used by bpftool. Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski --- tools/lib/bpf/libbpf.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 5aa45f89da93..9f2410beaa18 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -1721,6 +1721,41 @@ BPF_PROG_TYPE_FNS(tracepoint, BPF_PROG_TYPE_TRACEPOINT); BPF_PROG_TYPE_FNS(xdp, BPF_PROG_TYPE_XDP); BPF_PROG_TYPE_FNS(perf_event, BPF_PROG_TYPE_PERF_EVENT); +static enum bpf_prog_type bpf_program__guess_type(struct bpf_program *prog) +{ + if (!prog->section_name) + goto err; + + if (strncmp(prog->section_name, "socket", 6) == 0) + return BPF_PROG_TYPE_SOCKET_FILTER; + if (strncmp(prog->section_name, "kprobe/", 7) == 0) + return BPF_PROG_TYPE_KPROBE; + if (strncmp(prog->section_name, "kretprobe/", 10) == 0) + return BPF_PROG_TYPE_KPROBE; + if (strncmp(prog->section_name, "tracepoint/", 11) == 0) + return BPF_PROG_TYPE_TRACEPOINT; + if (strncmp(prog->section_name, "xdp", 3) == 0) + return BPF_PROG_TYPE_XDP; + if (strncmp(prog->section_name, "perf_event", 10) == 0) + return BPF_PROG_TYPE_PERF_EVENT; + if (strncmp(prog->section_name, "cgroup/skb", 10) == 0) + return BPF_PROG_TYPE_CGROUP_SKB; + if (strncmp(prog->section_name, "cgroup/sock", 11) == 0) + return BPF_PROG_TYPE_CGROUP_SOCK; + if (strncmp(prog->section_name, "cgroup/dev", 10) == 0) + return BPF_PROG_TYPE_CGROUP_DEVICE; + if (strncmp(prog->section_name, "sockops", 7) == 0) + return BPF_PROG_TYPE_SOCK_OPS; + if (strncmp(prog->section_name, "sk_skb", 6) == 0) + return BPF_PROG_TYPE_SK_SKB; + +err: + pr_warning("failed to guess program type based on section name %s\n", + prog->section_name); + + return BPF_PROG_TYPE_UNSPEC; +} + int bpf_map__fd(struct bpf_map *map) { return map ? map->fd : -EINVAL; @@ -1832,6 +1867,18 @@ int bpf_prog_load(const char *file, enum bpf_prog_type type, return -ENOENT; } + /* + * If type is not specified, try to guess it based on + * section name. + */ + if (type == BPF_PROG_TYPE_UNSPEC) { + type = bpf_program__guess_type(prog); + if (type == BPF_PROG_TYPE_UNSPEC) { + bpf_object__close(obj); + return -EINVAL; + } + } + bpf_program__set_type(prog, type); err = bpf_object__load(obj); if (err) { From patchwork Thu Nov 30 13:42:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Gushchin X-Patchwork-Id: 843006 X-Patchwork-Delegate: bpf@iogearbox.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 (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="RyMlcEME"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="OxRDOqiJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yndsv6MhXz9ryv for ; Fri, 1 Dec 2017 00:44:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753082AbdK3NoC (ORCPT ); Thu, 30 Nov 2017 08:44:02 -0500 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:50722 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752819AbdK3Nnz (ORCPT ); Thu, 30 Nov 2017 08:43:55 -0500 Received: from pps.filterd (m0109331.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAUDhJrq010203; Thu, 30 Nov 2017 05:43:37 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=AAks6qOQv/W84puUMlM5F0IkUJ/doW+ujoH9vPB3DGE=; b=RyMlcEMEipX3f9b3JFK9Onrm8QcrTF14iyZx2ZktEXgGUZyWX91qY3VMgr8Ve9P6TVwu cglhtK4Eha+flQtY6s37qnwumGMbScdsCYARbrNNKBu1N2LP2ts94AMcegtKdKsJQNl/ hoNPg2XMK6oAoQu085henfuVxfrDTavkFi0= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2ejd78h2tf-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Nov 2017 05:43:37 -0800 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.20) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 30 Nov 2017 05:43:35 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=AAks6qOQv/W84puUMlM5F0IkUJ/doW+ujoH9vPB3DGE=; b=OxRDOqiJjeDWioWmduS056Rvwkorih4QbeEq2mEeJqc1MMn0ezSTtMzW/zQe4oaojKTiIUElZ69aqLgLULOaxluRbSpF/RSY/IwJizckFSUueXe4Jo6eX6qC4uvyUO8QR8Jsu7VM7ZknT6BTzXTDNVrR9H45kA9uKQLmAJ/y4Cw= Received: from castle.thefacebook.com (2620:10d:c092:200::1:638c) by CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 13:43:31 +0000 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 2/5] libbpf: prefer global symbols as bpf program name source Date: Thu, 30 Nov 2017 13:42:59 +0000 Message-ID: <20171130134302.2840-3-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 295e0239-102d-424d-6e9c-08d537f85990 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 3:fzjwaMZDKW3NSM/Z0mRGr8Jh7j0Ouzxmv87Vr+QkkOnyPuDQVSHGvsh/3R8+w3Z+dkJAXymJR6QQQqUnwvhd676lulK7jrYC6UBDTTcWeaGNVykaa5vfnMacVMibX+2xGToTcCzaKGRTuiWlLFcayUB6aKjgkQg6+j0P1kBsSaa5eVtzYP+DJzOMtT/m7dnDkP/gmDjFySce1Z4TF/9skjZzKtT8owEOzN7rYuiCvmlu+YIn5oF6leqv7x7M3we3; 25:iF0XKfaMz3nRnIBjsxqzGJGYQotCL8/vRjk3zrpHn6zgcC/yhew0KwwTCe1xJmemsFKL35BtiCJOxAh1nP+vP6JR+YTa4hNeP8MJd2k7AbX4mRvvctSaDYJd7BwtD61Lo9XZ8T5qnes2LdRGL73NobQtaIPuiwjs0uwJlENMdvsSYp9xa6uoyNfyZ5Krdieev+oLuJ86QG2S/XP73Vd0Ycv6Dm9n2qnHKiBG6ssa8WVAeNpSWHp0ozTEIOd3h8vOzNcGHtMlrl8svAw5Ec1iZKFUZvDsEOlIaBJYM/blRZthiLgGL5DzIpGTLLHIPdEbEfJ4NC7aAuxMHHC4wC+gTA==; 31:ERF9Qhg2FiolwYFlEla0JJR3YIjnDAVRp6nE/h+5qFplRfa/CAZZZMJsZmbUt1vi9nGE8wpqWz/UKDSR5hDJ7hUGB8d6FiMv76fifz9L9dSLzn+CAPYc6vKXgojx8R16xqDJMJvvFY0itUihxN/j2sYPuw99yxAug46FGJFbsvkZ0D3zbWy7B0DkIvB084uoc/AwByJzPLqNyCwU5I1eC7JR5ELZBXXNNvlQLhmEoG0= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:bXrUuDW0ifLzXhPu8GTxh52zD9w868Q/MzVoZ4f9/z8aUEYdFwQutOR6RMuI2NvIr7F2ozJJxS9lP9SoG1FOerzCjs5rp45Vnkaenidjf/hX2YNh3ko1xKQQ70J60oZLMIs+l7yaHV098BERxgrgQK9lg4DAbRp5KpvPGXTt9BXeycGOKt9UGXjbMQfzL4AHG4A411Q8RaoIPcDJBpvSly2jJVb6cdgqsVMxatJkJfqjuKqybfo1B2ndkXeQQntvhcnY0seS1mIR0w+gTccDwX/IVEyk93A8HiC9XE2lyK493rgiT2XX1y81X1St8vHb01NCLyUaVZTCeDoaMbYdN8NidTMpcRp319qEWywx6narZqGCkyYMBZnviTkjasZ8cfQqFjjh7buaRw54pJKhN+iMnYqRY+A0pV7bhnYLbojwPD6sBoPXHZ2DVmHrDvQWHJ9i07DQ2fGLVremLgLDMMdWpsDZ/x5hTeh/cWBC8kEoR/87is6cBvPmvT0ajm/o; 4:M4Ef6CcdlmrOicdoTzJTYPuy1Re76kx+2avJfyk8Lac0CLUXxfQkfJSjDxFLMnfoP5OQDfO8PCm7wSkpPpuzUzXMLzUbbBI6R6IL5sisVrztSO1gZFVGrjzZ869ihcOFGsVmm0mM5N/0AmVI/7bndm/QJsHXoGqGXnZxpu4KiX0kAgYbVM+Q9oJBKFppGbF32ejkDb2HaJnw5/FZGPofatIRAV6aghIYsn5aKnm3ttJnoRdx2WIgKuvO/e0H5BVlaVKNye6kYG53DAOpSyzrT1F5RoN6onxBQLfkbRhTKsOE29ZUyCrklruuiZTAenqq X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011); SRVR:CO1PR15MB1079; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB1079; H:castle.thefacebook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 23:bE4Na7l6Ep+VfvBEelH1ciTGcDDmSvEH2l3Ep/UodnCvuYTG/lRcz1tQ5gX9z/rzsUu+ztFErMtFmtJY+VqYeOcRSRUiETZhB2dEWVdwUVQkNJ3qyo3bLXo2L+XzlHM86AzKvDZ6GIszDbFpUfZHKrw6KyT6btRL2dty8wf4RF12/F6wtUe7q1McrNuzSjuH4iTgHnYHpVZ9NFk7K9z/+adPg8AShgkKWzSo349dgnvw3PMw3Eqk7qtB43YoxxXzrTgoGJ+1fQBW8kJ3AdKaLuJolQyM3AQBhDsOxaypRxclEywYdVwkgy1ey3Gr2aUgMXboZmT1DlIiXRwVrWQxy+/1Tg/CLPXc6hiDrmrqzT49z32jZN9Zx7ZZ07+ARE27tnUrmJXyUVgEi4NhVp6wjS4LbXHQJb8kN0fmTmdY1vy44kL9E1/taore4d8qRQ0t+JmQ9M6bJ8KiUfhWnUWWXU8a2oIB0hfF1gTIFSoWoAsmJs+FJon6VYEUviE8CNX0qOUZJXGoZS93egqhbK1TQEv4CnOhnztcCj9cCP4zWI1ddevCvu2acd3Trhz5qn5OKZhR7LSWV9a/jv+Jf68hbPzt7PX8QyqoffnnhgwA9+wjDLWH1n3QU5EQmlDQa7tg6/GO8D1VYwbM8scZHB1yiFXdQLkXqKUvG4c3+ZOnk36iW+XxYo/sxuf4NjcIiP2kf+RUtT0wQjqCxKC//+Fg2orDesxZc88kKHHj9TsqXDngoaPhiP2G2jf7C02xrFZ/b6foHcR/j21jdsJpMx6NmNk8LkoGyug/nz1+i0uK3N4asyHDQ8odu8fthKNrNRouWIywoDAkHkj9gKle/vUEAUhWIXYRgGzbCObZZp5qooOG3skz7jTmlquFHDip+IStYXn5dRC9dZSl8yzhX0NhJEYI0dUVOGayHtppkvBzB4TsD/+1kUBaBpJ/Cjz57r3QWHwm8hnV7zyBa2hK9d5klYcJPewladVSmAJsx/MWbBzW6m+mBDtgfA2/cugRJEPYNf1Ovj3cKV+VFVcTSRdYYc9goO1BdwbX1u5kME24jdTZTGuwYkQKldicMc/lTARXg9kUQ7O7vDSo3JmUuO0P1hvElr3eGQs9nqbRrHL2pIAjmTAMa8DfQervj1jvAEet0LuzjzMMsak7pzGS+FWUCpSTAtSvzWyrevmZQ2S8NqP2sKPTCfPcZEMq1y5/DnYa X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 6:qPqK2gMOpB1rvtOeRKRslhYHFOMGR60QdMKNVNhM5VS8x+VxlTiNIiKruR+OZkv4j8tTCL/RSwuUg2ZHtAYWB51E6I6qrTtI/Yz/SpCAwv72HN282lrpzJTPVlIf4XV7OFefevzcBJVmrIZp6GMriJYKwSjVYpaC2pPAGzxgGGlVfpXP76aDdFFyGpoFMS1/TZOj4nKzyaWJqgsd/PKDDGvXo1jesKdb0vpTIO3sAzJ7NwqQ5HczkobvAxqemPgAES/eYxMDk+y/ilZouwReCHc1dG/bNk8k14b8724cH8gZAwn0ISDJMbNzpMweULWeofUfeB+3gTlH3tC4yJKkpawOuSj6VT1fAMmNIQ4IEu0=; 5:2J475yTebTSrg5WlblGF7d04L+3PAOY60LiD2qDov3D5YsaC1ut64Tf+Fy+QZUyXGxskXeNg8KfPf/qCWfXyjLYYIsaD3Qc3ooVbyRdIoQV3W2fXLZnjxGqgqdkFUnJawAfiy0glBu9FgENStbpjPhTj5Djp8WlgcCxsfO1JAIk=; 24:0mwGH1wVhDGeA26YVHt41H2+ipiVlHss/8pjS4DpSzLNsOZ5gzvBhS8rD6wTRCO1CqFbSH03Xp1vLNeZGH8p5x199VqTtUrMbzM3p3sdhYc=; 7:Jk/OASNSYY0WRSw4LxoTSUmyxL+5aaL0PErnIBzMIytjOqHkKMyV3YtBKq65C/1pK8kXhey1EDku0GHXTHvRqsH2jTH5+c5GhdGt5h/fQnqAqyMzfveNAFX4ahitAYKJ5YUAzAXlFclf8nL2ckr5cp3jtx1UP0u3LoUtI2ONRL2ykap33z1lRleheBYSfdYLsjMvQuIXvCYJZDNlgjeCf5yAiDdqhDYpIUv49xGif2qqDRor+2WgKgDa4xdAbiI/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:6mD4rOdNjU0Ijz73nHMotT/XBGIkpUyn2UzLTGGwzqI+fogbZsFsECZglYo+4MY6hF/hQSbgb9VZR50kpK2eEjcNpeC4woiwhYmpa9nVbRKPO6uEJA4p8AjlwnU8OsYpOByaPfYtEPjANX0YKurZHAeoGBF+dRNaoK0psvZpboA= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:31.6691 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 295e0239-102d-424d-6e9c-08d537f85990 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-30_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Libbpf picks the name of the first symbol in the corresponding elf section to use as a program name. But without taking symbol's scope into account it may end's up with some local label as a program name. E.g.: $ bpftool cglist /sys/fs/cgroup/system.slice/tmp.mount/ 16 device LBB0_10 Fix this by preferring global symbols as program name. For instance: $ bpftool cglist /sys/fs/cgroup/system.slice/tmp.mount/ 17 device bpf_prog1 Signed-off-by: Roman Gushchin Cc: Martin KaFai Lau Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski --- tools/lib/bpf/libbpf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index 9f2410beaa18..5191afd46556 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -387,6 +387,8 @@ bpf_object__init_prog_names(struct bpf_object *obj) continue; if (sym.st_shndx != prog->idx) continue; + if (GELF_ST_BIND(sym.st_info) != STB_GLOBAL) + continue; name = elf_strptr(obj->efile.elf, obj->efile.strtabidx, From patchwork Thu Nov 30 13:43:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Gushchin X-Patchwork-Id: 843007 X-Patchwork-Delegate: bpf@iogearbox.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 (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="mlw1PIoZ"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="cXZHjG9F"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yndtZ6NJ3z9ryv for ; Fri, 1 Dec 2017 00:44:38 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753189AbdK3NoZ (ORCPT ); Thu, 30 Nov 2017 08:44:25 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:37324 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752312AbdK3Nn5 (ORCPT ); Thu, 30 Nov 2017 08:43:57 -0500 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAUDYvAs002157; Thu, 30 Nov 2017 05:43:41 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=1EnrneiLnmnufl4T+4C6H3KVe5hP6484HlZMiOnNxV8=; b=mlw1PIoZxNDhPn7DQJ2Ldd9wKDdqFl2udmBcMvBHMJ2D8VHU4WiOSogeK62q3LeWXbmL tHIiW/kCv/5ptPttWPo+FPy3s30isBPlGMt6bH3gQJ4B58S47xbyrvUvt4mzTDN46f8O jiyX9Z07JGklzHkjvZvG1lbf4Q0GlONTdzk= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2ej806hm1k-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Nov 2017 05:43:41 -0800 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (192.168.54.28) by o365-in.thefacebook.com (192.168.16.17) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 30 Nov 2017 05:43:39 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1EnrneiLnmnufl4T+4C6H3KVe5hP6484HlZMiOnNxV8=; b=cXZHjG9FdEH17DUTPJShGP6wuf67rNovN8qRI3E70kR41jF8OjkQXn70MEUc5f8Jq+SiLym2JTUNQPvu2ZUfPobmKPYv20ZUkCf22fhw3wGCeOTNL8dsdE4XvopYo1d4DyK9rFPRUMJg15YxV8earfmY4GOAXUWR5ZRhvzNTtqU= Received: from castle.thefacebook.com (2620:10d:c092:200::1:638c) by CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 13:43:34 +0000 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 3/5] bpftool: implement cgattach command Date: Thu, 30 Nov 2017 13:43:00 +0000 Message-ID: <20171130134302.2840-4-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b0ce6e9a-a09d-4cb7-738c-08d537f85b17 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 3:vBkHT+wNIxl+jWE3RGpSaOZgTUMJiH9Zm6YXj96gFcSpXV3PjKIB+tuj+eeIjQCGfUyO2NwPKCB0OYlJbjihDnLj0iTlM22b3RxukgZ0s7qMcqozsvZEVT9JKoLpJ61mm0NGBCydqy2BeDL+03y+QuBV9vgQkbH1MQ0u7k27w6DwTBx/xulqriPPlZ6jhsOeZ5avCnEIRd5Z0famP7cPhRJzH1usPSfY8hMzAwRMJH1iatMpxEZKUX3MD1Oqt/XS; 25:PD9/Y+gde+3s5VHErUTAITBMaNsPusyqj/qSQoDdLqNvmK4uH7APYWBsesZ5OTAvfL07+T6wW0/s6tO0LKTY09p93S7vTUuNTh14LGAUZVxRVsNqxSPp9iG5E0fQ0gNSKAdPy7zjidFeCbY252+ajDcelAhx/txpTNz1II5oesAsP+FIAVFpJqcF7T6+hQj++iGt12OpABa+mEkNQeoljIuF8l6kImWWs2+FJVU1VZ6L8GXsesOnHofLER5Zngl+Tiq5ygEbUjsuOl5Cn4aXixsj4jAjCPkhQbX9ouK1pgUb1xy0zRMVIuHwNgX4incWK0DJZd6NwQ+7rFtSypc6WA==; 31:U4yifw51VRUIFF4ZmWGtrwC4suNsC5l0yGyOYUyeheT9qBDyLr4aUGc+a1BnZlVh/KFkEtdJshc9CnplWgFr9iLHtoeQBEz8gN8EEXXD1AWlkDCZdvUmgrzV5U/NNiXpYn7K0YiUSPYHTTxKz7C2CvQXb5gj2dLHwf/SoqcTyAwV2DG9mcLj/IMSBVwLO4XLv8+yGhjnoaWqT4PWelzT8uMdAii7unkbkKEztyE752U= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:Lc1QuvI4G9sXs/nlgUq+f9ixM+CUegpIZfCa+YmHQ2QPDDEHAexLkrUT8osr3uksUVI2nTeLdPLW4u9BtH4z/P/+0rnThCcsZk7F0/upd6LJqVt2a8cWGt87oTeti6lXavv5YKmxkNpZV5V1twixzPr7e3YXPPTeCjODkyU+bd5D07PIFXFHfkRgQEiqkq5Kl5spsTzKAyBlzC+tB70130NKkQMIMXgYYdDLanGNfIiVjFNie0j/+AlVZa0HaTugOBrrYbeNcWgN4cns7g7LIb4g9HIzdAZuJU2glf/sVAVkm4lwMDKcn47YP+4pkaCRXMFEm6rdlwjpYznG55Pt3LS3JS4C4G7qS/9GKU2m4cZyQhnd5LgABRPYcNDMdEj9GGNKKTRnZaN/2L9qDAVrpfOjgWxA+smxkDaaS67/oJpiTORcp6ntweOTd/SePN5wctxXvm9Y2qgOEG54F/InVcDtTqfJh6ESM4bNsEqrpUrTtHELKnLfomr0RXHKutTJ; 4:fSBEQTcOR559WHTbJooV7oOOApwYz906QmjSAQTCzfgxOuy47MYbSlVJPzDPHoH7WWihBQByreOANmpzVjOdlcbRSGgPzg4E3Ej8Kq6CsFeDV1ZMVPXpmkbKkzkRcutrubVFLaFYBJK9fSruVL9jgIMJLu2jJjAp8qF+fZu5kCcvV7k1KPuUuXoFjbn5LOqVtPF+3WZWs6dm9d7wjtnp0CJVwjiIikXtwrSSBFFq1Yb3CzPzUrWv+/5b/vmDRLFXcf7Sess81jE89Fi6hGF8ZLz18A75uumz1CFWBdFUqMVRJ+r1DCJOHImc95EqUg65 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011); SRVR:CO1PR15MB1079; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(5890100001)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB1079; H:castle.thefacebook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 23:IZJzx5IksQJCq5LGtq0VBshco2bnKq623cm48kh7UPh82TaSv9usl2w7CZ8EyHa7y/Zy7yf5fDiQ800uMw0XCcWxjkWWvTlbuO2QXieLTDxwLhHimtnVWJp2s9PAenh1fW33VEFafDL9vJdgYu62dUeR7cg0r1wQ4QWBWhpQIp2Ezx1wICLP9XELwbUnqaEZfODFXSMTYnGA/xzdMg5fir5cPsBW7pCv3bLtrvUQYIwMoSTZSzTb4lJyIs7Zz0ZbOMr/c+5YIaxtdR3HNMtYFb4RhnFXDf6O6p/qImS5JTLLLmcEKzs9RfLItSdZAH9g+p6e/nSgre9l35EIkM0ZkoJaC0rVcVzJ87tAPqvxX3wHRe98ma1vxXas5Q6U5vGlgGRipDfOdbbvzaHzXb1/srwINou/QesZl/kFC0xXnCUuE7NlR8IytghZnax5Y/ymU84rX6SZwRee9PLdJUvwtOicVHsZPHdPZ3x3IBhcbh5i/ie3nJqtIFotIkJUdsN0EJ04lx6Ah8911OmnPz4vFyXqbsHU2uRAr9XmCiDpamVz0mllu9wxYwSRu1bmPrtMDJjLbiAw/wHeIQAzrQsBB9ym5nsYVOctyYRI0XjypuHSi/RuQc2FrDZ+25OvJ5fe7JIL3ui0BAcyGEBvGhK+y0PpWqCGs1bhnvEZjoLe7Fn5dH5baYPoA0PMZh8kopUYYJRrgJKLExwDIQsyFwuu4wCUtk+lGmV9VNrofkd0Htulzr7S0NDWVr/iq7aR5phD7IC+FbwX69muzsJEYVuoyKMQPM5jzZsEFx3nvQHS+nozzs7dGj5vNby6hko6DGbgomQwz+FpuRZkhZsjIG8eq04XvB9GyaMgpayF5A0YPlqqqfN8myWJyGzrcsV7nNtl+6A50EG8puLYOnzyJAwyXAmeihpNJBvZ5wzZ4j+HShFY+cJ0gdokrNMvKebdsrMQIwcvPaENwEBVoIGiWQWXwyaYmvF+U4ktWNBAXuraxu282zlbd63bgoEORnsl8JsKWZ26baD2Q5h5mD96ny4+/E8Iws9nDqEqN9dJ5Jj06+rRIxuZbGy4mxTqAHwJ9NOVmZv5OThSS3eSuXPHeiUwFLfeo+nuwjHWMG92/N/tz2Yj6LMUdhYky8lQPzHZ5YJdYSnirqxZAh6f0ku4uW+/ma2CzI3yPdpvqF8BcuVJ7pCtRyaqCRFoz7ZYfzj/fMu1ORxdBqQJTO2ie4zWKZXINA== X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 6:SD/tZNdavk3QZTZ5CecSBxbMRYC+yeGfVdnBK6LHwzQROHE2aY8hkmEYt0pQiXWl/ykwJ8KjcAZXuERMmov2JK9XNAIOChxSw1d5Cdr7FFqwK6LWrcUIoD6E0natC7Ctwn1kG5YkBMCsgqRXw9RLi6mft0GkafmQjHJlU7vH4FYQViCvk9FJczj+CAXhhrc9HuLnN8i9J7orv9aFXZROHCKyfy1x0KHW+I3LD3wzK78aaVW8O0WS/BYLq6Tp65xfU6TtPMfxDWZNu1A9d15qfc6cFBmRBijXyIw4sUn3yymRcBhnKaIvCRXhwH8cBXdvUIql/Ru7DaV3RKFNKLboo+MjI7/s7dtYA1YnWs03Wxc=; 5:jkoH0V4QMYgkSA2A3azoOvNlXTKMB5jK7kbGkSHNRGT2M54fIBUHpCzXYBOyP2y165cTe9QC3ir3J3j43vRI7poPGWnSeu0009XKxOttfmX0l1Sni57Ce2alWqNjzAOL4MAl7D7EczgDoBfI/EEq0yRZlLchBLyEL7liUFhAsms=; 24:5oq4UmxECBvHcHHyFETvMNneclA+/0D+MCfANMn2243JkASCxj1C/HgZE1p24QRyZt8/R5aaWi+0yjlws7qzV5Kw8+BJrQpdHFwkJkcw9W8=; 7:u3wJ0IgB/HV6qmPSCmT9/q2B8gH+r00xdnqJ+hSBd9qonGQyTKRFf8AuVrdWzNTOyYhC1SiIrQTniyWNfwOj+kGs2n8JFz/NMeWe0Uv8H9XsnoSKBSLBmkjBFt6eVywxRFVW7iwvHg/dfKfjpzfDFX/n3a9+hU69d8Jk9xNSyoD8o+VChYKvdc/wJNBaVvpQ1WvAlA3LwtXPsmB3W5W2HhA/EfEAvioHnBOubY7ApC8LRlj3nFpBxRdHMXEQDfEp SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:tKwOdO1rKQEdHUzO5WNv3upz8Jnm8RgIOTTV4qhldndouSBAbzafnKDRglmzSsKtC6g3roqc0AO/acZ8ZdX75cBavTmAILl93UJ14F2KicOiMgMx0Fj9q+OKhQpLmyR7MaLZRD/YVpkBlcuu2QTFX4m0GvuMvdhLqkiYdAJmPFM= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:34.2160 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b0ce6e9a-a09d-4cb7-738c-08d537f85b17 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-30_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch add the cgattach command to bpftool. It allows to load a bpf program from a binary file and attach it to a given cgroup. Example: $ bpftool cgattach ./mybpfprog.o /sys/fs/cgroup/user.slice/ ingress Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski Cc: Martin KaFai Lau --- tools/bpf/bpftool/main.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index d6e4762170a4..8eb3b9bf5bb2 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -41,9 +41,14 @@ #include #include #include +#include #include +#include +#include +#include #include +#include #include "main.h" @@ -75,12 +80,13 @@ static int do_help(int argc, char **argv) fprintf(stderr, "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" " %s batch file FILE\n" + " %s cgattach FILE CGROUP TYPE\n" " %s version\n" "\n" " OBJECT := { prog | map }\n" " " HELP_SPEC_OPTIONS "\n" "", - bin_name, bin_name, bin_name); + bin_name, bin_name, bin_name, bin_name); return 0; } @@ -159,12 +165,14 @@ void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep) } static int do_batch(int argc, char **argv); +static int do_cgattach(int argc, char **argv); static const struct cmd cmds[] = { { "help", do_help }, { "batch", do_batch }, { "prog", do_prog }, { "map", do_map }, + { "cgattach", do_cgattach }, { "version", do_version }, { 0 } }; @@ -259,6 +267,77 @@ static int do_batch(int argc, char **argv) return err; } +static const char * const attach_type_strings[] = { + [BPF_CGROUP_INET_INGRESS] = "ingress", + [BPF_CGROUP_INET_EGRESS] = "egress", + [BPF_CGROUP_INET_SOCK_CREATE] = "sock_create", + [BPF_CGROUP_SOCK_OPS] = "sock_ops", + [BPF_CGROUP_DEVICE] = "device", + [__MAX_BPF_ATTACH_TYPE] = NULL, +}; + +enum bpf_attach_type parse_attach_type(const char *str) +{ + enum bpf_attach_type type; + + for (type = 0; type < __MAX_BPF_ATTACH_TYPE; type++) { + if (attach_type_strings[type] && + strcmp(str, attach_type_strings[type]) == 0) + return type; + } + + return __MAX_BPF_ATTACH_TYPE; +} + +static int do_cgattach(int argc, char **argv) +{ + struct bpf_object *obj; + int prog_fd, cgroup_fd; + enum bpf_attach_type attach_type; + + if (argc < 3) { + p_err("too few parameters for cgattach\n"); + return -1; + } else if (argc > 3) { + p_err("too many parameters for cgattach\n"); + return -1; + } + + if (bpf_prog_load(argv[0], BPF_PROG_TYPE_UNSPEC, &obj, &prog_fd)) + return -1; + + cgroup_fd = open(argv[1], O_RDONLY); + if (cgroup_fd < 0) { + bpf_object__close(obj); + close(prog_fd); + p_err("can't open cgroup %s\n", argv[1]); + return -1; + } + + attach_type = parse_attach_type(argv[2]); + if (attach_type == __MAX_BPF_ATTACH_TYPE) { + bpf_object__close(obj); + close(prog_fd); + close(cgroup_fd); + p_err("Invalid attach type\n"); + return -1; + } + + if (bpf_prog_attach(prog_fd, cgroup_fd, attach_type, 0)) { + bpf_object__close(obj); + close(prog_fd); + close(cgroup_fd); + p_err("Failed to attach program"); + return -1; + } + + bpf_object__close(obj); + close(prog_fd); + close(cgroup_fd); + + return 0; +} + int main(int argc, char **argv) { static const struct option options[] = { From patchwork Thu Nov 30 13:43:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Gushchin X-Patchwork-Id: 843008 X-Patchwork-Delegate: bpf@iogearbox.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 (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="i2kbEm/b"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="I+josRld"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yndtv5Mxjz9ryv for ; Fri, 1 Dec 2017 00:44:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753161AbdK3NoX (ORCPT ); Thu, 30 Nov 2017 08:44:23 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:37332 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752734AbdK3Nn7 (ORCPT ); Thu, 30 Nov 2017 08:43:59 -0500 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAUDYqj7002124; Thu, 30 Nov 2017 05:43:43 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=JyIbtIboMHr+FeqnJhznQ2z7prZ27ihFnaf4gf3hrtE=; b=i2kbEm/bDz3r2Tbtv3yWOgqZxYK5VQka6tBod29dxu0k/Y2T/mcuNQk6+67Fsl9n/dtS XSP6a1HryJNIskndH0Y7OfLmoW5Qhd6YB+EUp8WqhNKDsyTGfDtxlEuZFZgcXrAc4+xW NC1baQG3TaEQoD0LFD9lfh7EIr8NtV7apgk= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2ej806hm1n-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Nov 2017 05:43:43 -0800 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.31) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 30 Nov 2017 08:43:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=JyIbtIboMHr+FeqnJhznQ2z7prZ27ihFnaf4gf3hrtE=; b=I+josRld/Zw8VuT9RzHOw7h7JVzmSeYczemkS6aBjc96y5SvqAFSSXABr2iO9klryV3+r5pH+CwekXHto9P9SZSiBCIS+/EIJN6/MdTLQHc1GqdEcZTOkuF3x+MLcAkzygZTS7uvUMofwQUhKzqurPeFHpQA0vNp60yYJ5rd/Gw= Received: from castle.thefacebook.com (2620:10d:c092:200::1:638c) by CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 13:43:36 +0000 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 4/5] bpftool: implement cgdetach command Date: Thu, 30 Nov 2017 13:43:01 +0000 Message-ID: <20171130134302.2840-5-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5159bca3-3293-4460-8ca2-08d537f85c92 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 3:E1EoOqxPwHpR1eyAp3gg/1Q+uIN4SxMOTsCphSP9+DvzNdHFbEuByPrMsUGw+6Scx2S2Dzd73Jd03/45789J/GfFEaHdZSbFzm38rTk7tvny3cj3y+hBwnXxllx32Q8w66igZQRExWXe/g8kWLE8xKLhtqsfZJxp6QYokU3SeuPBX6YvAbH7I5o9L/TI8YZNDtjL+cAZ2Q6fSYuXzQ0LT3w4/Sqb2aj0WuOUgMwfkDFbY5k4g2x7Z7Z2fIK+7o7F; 25:fapeOG5EOygsn+Fr4QVnY1t4oxEyME8ga5uiLNFo0vJjyg/eaDke+yC1wtVr9/pi6IuHpo6mhU9nV6wgqOy28D6sQX4eXE3ydDTXxIxe493DqfPhsxV7ZPeEHZ2mOInOWXdyXlZNazoqO0fqyskBNg3fPFRToCtNzinTFmSLwyFuCOUGPNFgdx5yNh/TioCfJZSFOTFisDEy6/rd2AVjWDgRJ1PaV09aOdSpbQ+gJCQSFki6zH/zCj7Yrb6kVXPD3WNxrQZrfEPWrqf6ol8lYBGMfk4asmzv1kcF0BHSlfGhvb0L6Bh/MC9uM36HEgvjF5vZNCE8HBCkH7T7gJPUgQ==; 31:N2gBOkLYkIak7hfmQH/T8QdRgYadirQNFz62WGD7uGL7OKp1Nw0cHkOee1wm7/sk5utfbp+FdwNBspFVJiS5tr3yBkyjjOM10+bWu1lCezlSVuQ5nimuhPlPLge11XyQvgadGxYpTe/g7UeEYyvnpNMnuALd9Xx6qmnxzBGWHLAeglEc/iG9WUReg8+ldCmsH2bTzrfPK9kcXDHRheCcOB5Foh1CABwT+jXIgy6r1eU= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:SEemWkSqsdDTBlLxpLqJgFXyS9k0ZvRLdfqR/VYNqG6mbAY8um2SGCgwFlfYWhZTorlBF1TNhGJitVA2c9cG4yH6lVXz018PusLJ7JCevNl9ZsCl/169qZsh1qopKDgOaEwzNpRsd3XopEQz9a3audxpDMbQmKF99EG+GndyzBgeb04Xi65UziNFEz/fu5i+ZZCu8MkCON2lahGp7g3PB5mfvkbK3XZyHxssYhk/1GddFLdlcQssJrfcePPv5YZx/ZyW5lpXrk5RbpW4AaEDCW4X+hcKrge5xBAomDKagxqFOzPuruOtQoAADUfEOG/N7H3SkcxvIAR18KlFR/mTE5IsrwugdG3H0UgpoD0yZ+eQS+ki50145kKXXptR0AXKm3yMlh+atx68iQakOkbE/odm35Gx6Gzpzbu0M1jXjJPYEYMg05whJh2NOKxK/2UMjFDm2KeIh4NufoHEFcXD0/3Zl/gX8dXA0Xc6ijo4ZYV79EpwDLq6OwwiOWMHWjJS; 4:DdsWgCEVVDp7ajQfiTmI34r7mgh0qNrU4EHHJscsRlBs/FuoqmpQG3sGfdejgZm7bJnQMasndVOcqVtB3E7WPlHFCS862uwij/IfDhfGm5FMjRrqcRHN9YPsdvdJhZH4PgiINqvEDbkfbB1/cP4A36HyOTdV6Y+jmyKpTvRhUeaFn5BnZzRaIDy7IBHiShzCapaOwx5DrwN3qhv9X5V9ldCeux/To1qYLUSrhYzl3gwpTgwJiXbTYifsSK+a6MZeACeh7WBHH8iUNkIgECd2ZcOcAg20lGlujgg37OqTRMZ8XCYDcD1CPnIMhEvb8zOF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011); SRVR:CO1PR15MB1079; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(979002)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(575784001)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(5890100001)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB1079; H:castle.thefacebook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 23:SLg/8UpxkGLqIS7TZf8h5V4dr1DF59EPI9Qvct9GLgAOaoQiGSqbaDbFDDnb5cd1+afBgbmsPR7A40/eJOiP3GIigCL7N+1HrBwyJIf8aV3hBklQQNtVOj+gGzqlC7Kt5SipWh5+v+6hLV8oA0gzK+9JdxXvydywnQYQKYmTQm8cwujDNVDj5jwstXuV9fAuH/Z0aZdQ37qxwHol3GRcKX9qie34Ntgund5eapmG+ujgrOjO1/czcH1nTUM4gWE4Q/Sp9dFsvSmUZOx3LgXpoGDPEFHvSGTQEvzynZmRrCxWdnsfl3eAj5+0MyrSZji2DJWlf4i4Lipz1N5T6v5S76JfwrD8rTyuJQob3c+klgUrMkvl2D+NuM/dZfLc/vebzWiGOfqKtGjijaK9SCTm1OuZelj4PtosiioaBRoNnkrrQyx/2L9pNm2PuPjB4ELIhXjY/osas73gGy0XBXnXfB4ZFZStYyArOR8W82vOAVb+GlfJZwZ/fqfV4qZd3mrSTzpjIXYf+KXtmPijQBaHgBAyBMGUWMPBGfoUw4PO4m/ZFcMOhUnqiUwFUTHY7M7c+azWQFpadpU1GNomDrY7U+gkkw63b7WFFDY1UmPVcDBBIJFuFsUBJWqzRXh1dXRcoh717/lbErfxTnc5shGUMDkIn6t0SoIGdcBPuy6Z4S8ZK5hJak2FMTyNs+owk4BDZZEWOnnvy5eut55rxy7STjeHaPqX1p48h7Itrm3Vy/C4jGIfNrWxIarfpA8p4i18t8T+8xuSErPK53JPIvdR+X+4jfMnuYpu0xKJ+SFBhbyID7mjbHY0HLdwWgJp6ElTUEytPPn2jzY6RL2pBucQoGodY9IiG68F3uWBClbNHSvk/e1UPhF4emBsuIMXw1GsTBBzpZyqcfMJyDyrvo1ENwZvPIULy8aH0dqupJ2JHR2hw6nr+bhxWiWWJeOxhOQhkfxzpjUjLnyRVYDYlTza2o/pK/gU4QhODkyQNvjgocNCS4ItgWsMv5jQj+XsSNlT1cSrHlDq/NIgWZrPJeAKioZu6/Ap9whfgOvx+8Bn++vUREkWkhCwr8RWFzXhSPLEfwU7W2kkOVCdArndQuZYsdlPd604wgrb4lt34KVQcQBgGE/f29z+MZ9t5c7yoqCKyd2HSTNDAeCsdJVfco763O9n71jckBJ1M59SjmlT9TPE9U+Dv5OZGXsW37cBwLhiGk6224NgYio9sw6chcP6gr2rIbWXyufmv5hV71f9wa6jXNbxHK7Cp3ggVyQLHmlBTuk49Gi1vEwssl9fRG3OAWsohvdqU1J2xL5CUdhh+UWk0F1K5YkroG6K+FI2c2jP9zxJvFm4RJMh3TVBksOsyg== X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 6:4nDMYHZIyqSmkY+TzwCFufhKReKUTIEqL+KThn2akyhVl6uzK61cWCB6bE0QOoDJgOpTseJSip67Hd1MuCML7f5j8ULui9kK0JmtkJzex5UmHoOwG7Co1jzqzgBjRD96TdUhD+78V4OCEbwGnkdMVrj6xRNIJwhXMY9Z0MctU4EdHOkXqX33vuO0daUOKZ//+LExq8n0OORXKu2MdcYEDROMH2CRaicboE4oq7n2aArYrfbRSDrliytfr/S/EQVUFpr2hQ2qp5rkqOPyxSfvbIIJjwiW1CU3aCFDRqAhfbI4A72RR9N3D8noNL4tJDxnsMh/vA3vEx/uMsgI7c77Nlsi6juwWQGlv4x3tnL4Stk=; 5:x321q47XXo5ccNEe7HH0QB0DsZ30p6jiptG49j+h0UUPHcsymL2Tvxx3hZhHc4h0GepuLM+doyFV32R1q2e61JMNRjNxnJnvHVEUUYFWQtcikWf8FZvoE2QiZNx1TtvgrLZaro/UHo9LhXfgqx0vaUA5nrnCMNWXoRBvLbrZgpM=; 24:kU+X62ZF3yb4EpZ2LUlYDU47ZQGPSi0+gM1bCvb77w/OXZgXbKMdgDgSfkEPeNvKCtvjQBF9lTTtUUgi8PWNt157gYWQjPDF3kje1/upbCo=; 7:pANZcHZl/QbdKeMebwGzfVGXalR9/LMinTpbOFXiycOegts+yWtO+mDCo0nALraXVIvBQr5KPjGMqyhbP4/spmOTTdUFR/7dRqg2NTLnrdRPpfdMdxQErjzZVZjuApzJ3J2GfrH8hGf116aj/D6rhL1JYSSxOSSjaGr2wNgwDlgQOm0qAaHEC/4XqoFm2n96MhcrUUnSqJFCMWAfhxdt1nlCMQkEF3o1yeY32NxCO4I2qhcA63DeccBUDQd1P7UD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:s8vjM7w6u9HhWmLmaSxCvTVK9RDy5iYofryjjg1hagyzDqdwC6vwWNgOZfGXospF/KBxPGVHPy3sj7nktAMrdBAIUYtW+tJIucH5d2HXwfmZCKyVIdQbpHom/T4GNqKYqhSVOzbINg4gd7lE2/H5qg3ryYejbTw9wxWEuWfM1Ok= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:36.7161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5159bca3-3293-4460-8ca2-08d537f85c92 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-30_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Implement cgdetach command, which allows to detach the bpf program from a cgroup. It takes program id and attach type as arguments. Example: $ ./bpftool cgdetach /sys/fs/cgroup/user.slice/ device 1 Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski Cc: Martin KaFai Lau --- tools/bpf/bpftool/main.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index 8eb3b9bf5bb2..77fcc1a0bd5d 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -81,12 +81,13 @@ static int do_help(int argc, char **argv) "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" " %s batch file FILE\n" " %s cgattach FILE CGROUP TYPE\n" + " %s cgdetach CGROUP TYPE ID\n" " %s version\n" "\n" " OBJECT := { prog | map }\n" " " HELP_SPEC_OPTIONS "\n" "", - bin_name, bin_name, bin_name, bin_name); + bin_name, bin_name, bin_name, bin_name, bin_name); return 0; } @@ -166,6 +167,7 @@ void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep) static int do_batch(int argc, char **argv); static int do_cgattach(int argc, char **argv); +static int do_cgdetach(int argc, char **argv); static const struct cmd cmds[] = { { "help", do_help }, @@ -173,6 +175,7 @@ static const struct cmd cmds[] = { { "prog", do_prog }, { "map", do_map }, { "cgattach", do_cgattach }, + { "cgdetach", do_cgdetach }, { "version", do_version }, { 0 } }; @@ -338,6 +341,51 @@ static int do_cgattach(int argc, char **argv) return 0; } +static int do_cgdetach(int argc, char **argv) +{ + int prog_fd, cgroup_fd; + enum bpf_attach_type attach_type; + + if (argc < 3) { + p_err("too few parameters for cgdetach\n"); + return -1; + } else if (argc > 3) { + p_err("too many parameters for cgdetach\n"); + return -1; + } + + cgroup_fd = open(argv[0], O_RDONLY); + if (cgroup_fd < 0) { + p_err("can't open cgroup %s\n", argv[1]); + return -1; + } + + attach_type = parse_attach_type(argv[1]); + if (attach_type == __MAX_BPF_ATTACH_TYPE) { + close(cgroup_fd); + p_err("Invalid attach type"); + return -1; + } + + prog_fd = bpf_prog_get_fd_by_id(atoi(argv[2])); + if (prog_fd < 0) { + p_err("invalid program id\n"); + return -1; + } + + if (bpf_prog_detach2(prog_fd, cgroup_fd, attach_type)) { + close(prog_fd); + close(cgroup_fd); + p_err("Failed to attach program"); + return -1; + } + + close(prog_fd); + close(cgroup_fd); + + return 0; +} + int main(int argc, char **argv) { static const struct option options[] = { From patchwork Thu Nov 30 13:43:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roman Gushchin X-Patchwork-Id: 843010 X-Patchwork-Delegate: bpf@iogearbox.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 (1024-bit key; unprotected) header.d=fb.com header.i=@fb.com header.b="J+gdQyXY"; dkim=pass (1024-bit key; unprotected) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="F6v7RrHa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yndvq0Zdpz9t3Z for ; Fri, 1 Dec 2017 00:45:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752867AbdK3NoV (ORCPT ); Thu, 30 Nov 2017 08:44:21 -0500 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:37348 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752577AbdK3NoA (ORCPT ); Thu, 30 Nov 2017 08:44:00 -0500 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAUDYq11002130; Thu, 30 Nov 2017 05:43:45 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=facebook; bh=ctB4SJl6VzecW88mZbkfZJjRoJEpFonKqftBpvpP9Cw=; b=J+gdQyXYIDYaTXLdeB6nbWCwIOBIbne6iL7yvQn3MR+istu/hE/Ohu8MLX/7u7d0Th5t 01HjQsMPprf49x2DjpsYwiZ3knBxaS6tBzcw+pDlu6HBLO9G40DL3A6nC95Q4u/vYeHN TGuUIgiFS9kw8WrJ3a8/jX9TWekNVNzpTdU= Received: from maileast.thefacebook.com ([199.201.65.23]) by mx0a-00082601.pphosted.com with ESMTP id 2ej806hm1p-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 30 Nov 2017 05:43:44 -0800 Received: from NAM03-DM3-obe.outbound.protection.outlook.com (192.168.183.28) by o365-in.thefacebook.com (192.168.177.21) with Microsoft SMTP Server (TLS) id 14.3.361.1; Thu, 30 Nov 2017 08:43:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ctB4SJl6VzecW88mZbkfZJjRoJEpFonKqftBpvpP9Cw=; b=F6v7RrHaOJp3eMsLv9Sj/gMl48LUpKksItH1PWeV8aNgt+aC9bKgs4oRhcWsPxEzM7eAYWfJ1IwNHJH/wfSF8a+PQfvTdr3K000gd+71+f/+9txKKZj1QeRMTR9sDDu6Lx2nD6JHqaSwyXQGrBAhtPndTejaooEeBOOzsP8OhT4= Received: from castle.thefacebook.com (2620:10d:c092:200::1:638c) by CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 30 Nov 2017 13:43:39 +0000 From: Roman Gushchin To: CC: , , , , , , Subject: [PATCH net-next 5/5] bpftool: implement cglist command Date: Thu, 30 Nov 2017 13:43:02 +0000 Message-ID: <20171130134302.2840-6-guro@fb.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20171130134302.2840-1-guro@fb.com> References: <20171130134302.2840-1-guro@fb.com> MIME-Version: 1.0 X-Originating-IP: [2620:10d:c092:200::1:638c] X-ClientProxiedBy: VI1PR0602CA0010.eurprd06.prod.outlook.com (2603:10a6:800:bc::20) To CO1PR15MB1079.namprd15.prod.outlook.com (2a01:111:e400:7b66::9) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1b2c9cd-48b8-4522-0815-08d537f85e10 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286); SRVR:CO1PR15MB1079; X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 3:BD9O9aLqdzLwZf0B7Vrn3r4nHbHJPmFkvvLdECEe2N4i1EESZXpwM6+ebGzFp4WV0e/63B3X1J7+/Wr/EmMN9n2UWYEuJZ0rWGx9s8iZaXYNixSGNav+IPCPV+7Tqmh9FvsrUmeEs2fqgM4K+/tasTSQwjB6rM0pbpYraFyzDXEGEGj+GYXe0HSCa8Kq4XuHcs44vshFBfcO2zcG5ffaDSmdsPlEU0HgbpdyAS9lUJ4NzTB92JIV42zmDYlozT12; 25:CoRyAmsvHjaozxGQNb6IJda6SCNASfBKg9rD4e7x4X6AY3PAYgRmm9qHjJzciuiHTlk3VTiC/p4GyISCKnDFZi3R5xr5XEOj3AT9g5WcK1R9QH2BH3p9sfx3zJD1KP7GHC0GAEkZuoNfwmCPbKo9IGnURwwU7IsqDzIDLHelKqqZSuSVSIn/ZUvNgZHx6jhpK1hgQNEj6QhCt44or+maf0OLWW7wl2CSXq4cBe+RcBR6Sb9R2oNawdDY7Nlcbm0u769mJFnHGyhN2H1IrH/FcNPoI+8SBAFF+awvScm8OjwuTrsKTrE2An4G3M49BYoH94yF0ZZCZ2QiEVtWuQ3BCg==; 31:BRfpd6PvjwnGUf+8DIOr/tvpKlbkClcfgNE31Q6cBa69IjEJ4VPlBZYJoWQDOaSNUqBLh39UTcZL9GTZ3YSOuJQBkQp0oCYTYDgolROZRiuNEqdEZwsBXooZjxPVXHcAJz3iRhpLtgvqUeFTHIR74HUi5UOnhoSwALZv4g9Na006VuMVJQjxj8KE7SjnOyzkKsXhIi/xGIeGYQ63/11zL3TboKHp5rjsGbjXzCmEj4A= X-MS-TrafficTypeDiagnostic: CO1PR15MB1079: X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:UPemEeveOqKNZbYZ6d6i5rOAmsorgxzDISap7nznloR5hUUSYeth9WLQaPuNbSVCaMMACTTjAHMr4+aealWew7BcPyhvuqyLXCV3A04HF44CMEPSsLR9+b9pU1adHrwFUhrgmC/g9N2ux/98XcAFaPSpK5sFISnrXrhIS32ZSbfH8e3uXOOGddVCJWLRRCRczewirG8lQqTIqq+l4lKyM+kfBBvsWJukQKwoacS6xUsQLzCzMICXHVNVAveBFHjJaQR9Ps/IyhPrcxUqy76q4UcbC2hw8XicU+UcdF7A87rj3t1yeIjNlSyFcvgbbT+IvPJHcbKsBIMoxQvB99NSwv4QDRs1V4bpTnFht8cLQupXVwkEgBLbyw2spdqkQU9CM+DMboh5/vaqxAXETC9v4bWApISQtpqd6ZbFqpsy45Dzn3D5Ln/Eymu5ERI+JJcJH9Z2PY6qcVWckfR7/HnE/THMzuVEOumhtRGhNG2iuCwbwgl0YXXJHeGMAvbSS1Ab; 4:Xvf5stbzRw+IhLaLBwPiYt/zurX+g6eETuCjEWmZAYgis8+cShCkEsnvTJUbhoDTs83mLLo0KRt5hZrqTjMjPtjmcWkjjoIX9xiEiLlEl5dD96nihdonKwLOxeKYkMMw116ACPBlVveKb9vFdRjdxGDQ8R+Pn+Ka801HcGvyH+xrXwwvFLpHuCpzQoxRozxoZN0OaNwZLtfvfgC3Qc4pZuiyQmypI3unoqoapl37LCCNeAXsXLOXScEth/8oogeZXHoEkvxaHrldZLg43/CFLXGh6kiuPeXYsVeWNFTSmpN27EchbIH/dlXQ4IbXBt5D X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(11241501159)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(201708071742011); SRVR:CO1PR15MB1079; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO1PR15MB1079; X-Forefront-PRVS: 05079D8470 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(376002)(346002)(366004)(199003)(189002)(68736007)(48376002)(575784001)(53416004)(86362001)(478600001)(189998001)(50466002)(52396003)(52116002)(39060400002)(53936002)(2906002)(50986010)(6116002)(81156014)(81166006)(51416003)(1076002)(8676002)(8936002)(76176010)(5890100001)(50226002)(97736004)(105586002)(2361001)(2351001)(5660300001)(6512007)(101416001)(7736002)(305945005)(6486002)(4326008)(6506006)(25786009)(106356001)(69596002)(6666003)(33646002)(2950100002)(6916009)(36756003)(47776003)(316002)(16586007)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:CO1PR15MB1079; H:castle.thefacebook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: fb.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 23:1Gp7jHuFm137xygsDrj0wvqBbj5DoEMgNmQc5vtUrR21ks/8pnBV/2hUSgjGfPU4vqZlxq4Px9LtUHDq9Sa5qCIlDa4uy8p0UzWBumwAVqhads5mTcqaYgcGmbCWkXzde8nw20u5jgrfnWjv9eKx9CF8JITG0iDgDXISdmWDlIf09VGQX1YYsCXh6pkTHGUUau5AhJO2Rd7Frn6vkgDpRYCE4Fv013LvyAHU5oOD0y4RgwS41nYfNcGn9DrhqmSuc+DeYmH/qirxB8lIDnRqoiiB1zU05QMmF/xHzuyEV1afL2///i33murmAgQb2J8ra/N1W0XgqKverSEzrXEYEOiU7Nac01AhXt+jGJ04eFDJS3XI7VPWMvo0psUCowg+rXOh/4fFKsMt48tmZoeCvL4KP4mFTjCYVRKDVoB0pVzLYUdD1c1yHKRZ+0uEWjhzCgSbCaneWZwWOy9i/Ykpkh0IOZz/7IAdOxqC8jb9f6CaBEQ3nyvXwc1KpWhuEGXDgG4V9uRMeeGcC+Cvlt+WPbYbKZFJNEls/EZJKxCyLde0Sh551O8CP/nVjM4l3gIwUEIo2Ff1Zz9Sy3yS6iGdOX27lEBgwBC3HN5miXgB5G+0ZXihmMazwTcQC88ZYAKDKKRe8VKAPjjQNe2vrQ7iK8fJK5faHWxHphvSRgmuj1oD4RUqLaWHpyYYHMd56nNhUIvyYxC648MC+fPeK7KwaMU/O81loDHoUnHsTK01TSng+mP+nphjkNyMbhE6O2rpdzoO8Eh3FdHNSzG03zbcCwYZadO4jwLqolh6nEU2xNDUlkTCltrYPn2nIrt1wRb/6UQ3PhpvpYr74A+krdwdlJxtSrVS/cHomKX8gpDV9Ywq1k0MOB6WhjI0nAtRv94PxP6CrUitETph7ucM2r5JMnE+b/sePpNxfVhh+vMPaNIZQucdISQLjLt0nDmK0qlKtO13Xdaf3eEa1YtW2sIZlbNe2brlra5hUZ/bGkvfPd+1lWIlgezaLSaQ3C3lgSE+NZlBQl4xcP8G/d2eFA1mCU8hJmH5MdTV+SYMgASwpxW++7rNRA29MVi2ThOyrvXZHIO8dhAhrIgRlKPCtvaVgpQx5N+Ve0aXP8325p3cd6NM6TJPSOJ3bxSz9cFTChvwOd5JYkYFskGDDwSUEBpPcihctZx6PNj3LpKVJQ4sJkyu0rc+eGUkZhThyCiht/bAyNPPM9Aol0zmxXsy2vysF/o1/I1TRIoFhv1kzesncFA= X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 6:VQmZgS492B8YdvTPmOwdskD8GSBNy5ZuH2oP0x+1ChA6QX5iO0Y8Smoc9phijdw8fGou99BQ+PPJsfu8AWDF8gAMhfAVCWPvXDyl4TQjcxRJKUBxrKDFRG+Xnh1giyeZ+/LSitnkatVNsd4ENg23gQxZE5OZ8uWfuiKpIMGYzIzVWK/Aif1oSam/B2Od6DGD7027Fa8MuRdInLA/49YvSe78PWKj/Pk992Y7LdLjXL7QHXJ9dDuIiRc6IVW5kfyGDIURUME80qRVyuBpMrNwD+TjiugnHo98hSjje/h+wHPYn1WRxmuQu1y2ifYqy02eTJEzo/iSsMlXbxjp3ZKI4X613O4JpRyk2+h6H9UEF0Y=; 5:NxYDZBsTbArXPShT5cLKUH8KrNsFXYoc15yqVyi7RgGSjS3n6hrTdA5SifRki3vAqCK/GjaM1a6c32aVmgVniyd4KdzNqf9eJrxMqnZ8i7Xx0Z/WexffaEXSJbp2rFcT9qIs9nB6OdjkbIObxWit9y8obDI7ChNO8drrxnvy0is=; 24:laPCmf0TBGKCl4yACMJuToYrzpJ1CcyhgwXqbfzBZXHly1pOJWb1dR2hUDp/EsBKrrwX9+pAZfGvRMrzLKuk8GbpguwZcB2WrF4enxpfu9o=; 7:XUo6nrpQMqIUyyDUQWm8JxYppB2LAZz7gvTrRw7Lg5etj9PYJwYJ61hRTcE93dRVfWnBvU1lbqbOM/OqUHLtUAlxfqqmlqbcYltNk0eUoNVr7QWEVLllW0IOxYCAisZhlAnT4KaTbCOolkguYclW97nYjDL8sSFGmMjyQ3umAOQih/X+5CK+xSTg8W1VEjF5oPJaeZqTm9es5CIvWOP4SsiWw9ZEW1EdNim6efCFoLku24ws7LxoswdMN2JmuMwR SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR15MB1079; 20:dWXznGTXQ+K6Wi/QLlJVZ2vljA2u1jPEHNMDLiEhzK9k2wyWbKhS56zCsPyTb1Q3sMJcxbBzAix7d+OgBSvqBDOmhpcb/csQN4fb6tl1eN5J/XlmIat48kj5AQx+WoXKafQLmlQOd4wIr7KQ2lXBJUnrb9XSb6XELKIHpGuGXfE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Nov 2017 13:43:39.2162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1b2c9cd-48b8-4522-0815-08d537f85e10 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR15MB1079 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-30_04:, , signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Implement cgattach command to list bpf progrrams attached to the given cgroup: Example: $ ./bpftool cgattach dev_cgroup.o /sys/fs/cgroup/user.slice/ device $ ./bpftool cglist /sys/fs/cgroup/user.slice/ ID AttachType Name 1 device bpf_prog1 Signed-off-by: Roman Gushchin Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Jakub Kicinski Cc: Martin KaFai Lau --- tools/bpf/bpftool/main.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index 77fcc1a0bd5d..8a48f6a32adc 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -82,12 +82,13 @@ static int do_help(int argc, char **argv) " %s batch file FILE\n" " %s cgattach FILE CGROUP TYPE\n" " %s cgdetach CGROUP TYPE ID\n" + " %s cglist CGROUP TYPE\n" " %s version\n" "\n" " OBJECT := { prog | map }\n" " " HELP_SPEC_OPTIONS "\n" "", - bin_name, bin_name, bin_name, bin_name, bin_name); + bin_name, bin_name, bin_name, bin_name, bin_name, bin_name); return 0; } @@ -168,6 +169,7 @@ void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep) static int do_batch(int argc, char **argv); static int do_cgattach(int argc, char **argv); static int do_cgdetach(int argc, char **argv); +static int do_cglist(int argc, char **argv); static const struct cmd cmds[] = { { "help", do_help }, @@ -176,6 +178,7 @@ static const struct cmd cmds[] = { { "map", do_map }, { "cgattach", do_cgattach }, { "cgdetach", do_cgdetach }, + { "cglist", do_cglist }, { "version", do_version }, { 0 } }; @@ -386,6 +389,83 @@ static int do_cgdetach(int argc, char **argv) return 0; } +static int do_cglist(int argc, char **argv) +{ + enum bpf_attach_type type; + int prog_fd, cgroup_fd; + __u32 attach_flags; + __u32 prog_ids[1024] = {0}; + __u32 prog_cnt, iter; + int ret = -1; + struct bpf_prog_info info = {}; + __u32 info_len = sizeof(info); + + if (argc < 1) { + p_err("too few parameters for cglist\n"); + return -1; + } else if (argc > 1) { + p_err("too many parameters for cglist\n"); + return -1; + } + + cgroup_fd = open(argv[0], O_RDONLY); + if (cgroup_fd < 0) { + p_err("can't open cgroup %s\n", argv[1]); + return -1; + } + + if (json_output) + jsonw_start_array(json_wtr); + + for (type = 0; type < __MAX_BPF_ATTACH_TYPE; type++) { + prog_cnt = ARRAY_SIZE(prog_ids); + if (bpf_prog_query(cgroup_fd, type, 0, &attach_flags, prog_ids, + &prog_cnt)) + continue; + + ret = 0; + + if (prog_cnt == 0) + continue; + + if (!json_output) + printf("%-8s %-15s %-15s\n", "ID", "AttachType", + "Name"); + + for (iter = 0; iter < prog_cnt; iter++) { + prog_fd = bpf_prog_get_fd_by_id(prog_ids[iter]); + if (prog_fd < 0) + continue; + + if (bpf_obj_get_info_by_fd(prog_fd, &info, &info_len)) { + close(prog_fd); + continue; + } + + if (json_output) { + jsonw_start_object(json_wtr); + jsonw_uint_field(json_wtr, "id", info.id); + jsonw_string_field(json_wtr, "attach_type", + attach_type_strings[type]); + jsonw_string_field(json_wtr, "name", info.name); + jsonw_end_object(json_wtr); + } else { + printf("%-8u %-15s %-15s\n", info.id, + attach_type_strings[type], info.name); + } + + close(prog_fd); + } + } + + if (json_output) + jsonw_end_array(json_wtr); + + close(cgroup_fd); + + return ret; +} + int main(int argc, char **argv) { static const struct option options[] = {