From mboxrd@z Thu Jan 1 00:00:00 1970 From: kbuild test robot Subject: Re: [PATCH bpf-next 07/11] bpf: Add helper to retrieve socket in BPF Date: Fri, 14 Sep 2018 15:11:46 +0800 Message-ID: <201809141555.Xlm3UWFG%fengguang.wu@intel.com> References: <20180912003640.28316-8-joe@wand.net.nz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="TB36FDmn/VVEgNH/" Cc: kbuild-all@01.org, daniel@iogearbox.net, netdev@vger.kernel.org, ast@kernel.org, john.fastabend@gmail.com, tgraf@suug.ch, kafai@fb.com, nitin.hande@gmail.com, mauricio.vasquez@polito.it To: Joe Stringer Return-path: Received: from mga06.intel.com ([134.134.136.31]:51153 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726527AbeINMZs (ORCPT ); Fri, 14 Sep 2018 08:25:48 -0400 Content-Disposition: inline In-Reply-To: <20180912003640.28316-8-joe@wand.net.nz> Sender: netdev-owner@vger.kernel.org List-ID: --TB36FDmn/VVEgNH/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Joe, Thank you for the patch! Yet something to improve: [auto build test ERROR on bpf-next/master] url: https://github.com/0day-ci/linux/commits/Joe-Stringer/Add-socket-lookup-support/20180914-134632 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: x86_64-randconfig-s0-09141346 (attached as .config) compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All error/warnings (new ones prefixed by >>): net/core/filter.c: In function 'sk_lookup': >> net/core/filter.c:4870:1: error: invalid storage class for function 'bpf_sk_lookup' bpf_sk_lookup(struct sk_buff *skb, struct bpf_sock_tuple *tuple, u32 len, ^~~~~~~~~~~~~ >> net/core/filter.c:4869:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static unsigned long ^~~~~~ In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net/core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____bpf_sk_lookup_tcp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ >> net/core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ >> net/core/filter.c:4896:12: error: static declaration of 'bpf_sk_lookup_tcp' follows non-static declaration BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ >> net/core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c:4896:12: note: previous declaration of 'bpf_sk_lookup_tcp' was here BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ >> net/core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c: In function 'bpf_sk_lookup_tcp': >> include/linux/filter.h:436:10: error: implicit declaration of function '____bpf_sk_lookup_tcp' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ >> net/core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_lookup_tcp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ >> net/core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ >> net/core/filter.c:4903:11: error: initializer element is not constant .func = bpf_sk_lookup_tcp, ^~~~~~~~~~~~~~~~~ net/core/filter.c:4903:11: note: (near initialization for 'bpf_sk_lookup_tcp_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net/core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____bpf_sk_lookup_udp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ >> net/core/filter.c:4913:12: error: static declaration of 'bpf_sk_lookup_udp' follows non-static declaration BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net/core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c:4913:12: note: previous declaration of 'bpf_sk_lookup_udp' was here BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net/core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c: In function 'bpf_sk_lookup_udp': >> include/linux/filter.h:436:10: error: implicit declaration of function '____bpf_sk_lookup_udp' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_lookup_udp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net/core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net/core/filter.c:4920:11: error: initializer element is not constant .func = bpf_sk_lookup_udp, ^~~~~~~~~~~~~~~~~ net/core/filter.c:4920:11: note: (near initialization for 'bpf_sk_lookup_udp_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net/core/filter.c:29: -- net//core/filter.c: In function 'sk_lookup': net//core/filter.c:4870:1: error: invalid storage class for function 'bpf_sk_lookup' bpf_sk_lookup(struct sk_buff *skb, struct bpf_sock_tuple *tuple, u32 len, ^~~~~~~~~~~~~ net//core/filter.c:4869:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static unsigned long ^~~~~~ In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____bpf_sk_lookup_tcp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4896:12: error: static declaration of 'bpf_sk_lookup_tcp' follows non-static declaration BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4896:12: note: previous declaration of 'bpf_sk_lookup_tcp' was here BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c: In function 'bpf_sk_lookup_tcp': >> include/linux/filter.h:436:10: error: implicit declaration of function '____bpf_sk_lookup_tcp' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_lookup_tcp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4896:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4903:11: error: initializer element is not constant .func = bpf_sk_lookup_tcp, ^~~~~~~~~~~~~~~~~ net//core/filter.c:4903:11: note: (near initialization for 'bpf_sk_lookup_tcp_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____bpf_sk_lookup_udp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4913:12: error: static declaration of 'bpf_sk_lookup_udp' follows non-static declaration BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4913:12: note: previous declaration of 'bpf_sk_lookup_udp' was here BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c: In function 'bpf_sk_lookup_udp': >> include/linux/filter.h:436:10: error: implicit declaration of function '____bpf_sk_lookup_udp' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_lookup_udp' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4913:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, ^~~~~~~~~~ net//core/filter.c:4920:11: error: initializer element is not constant .func = bpf_sk_lookup_udp, ^~~~~~~~~~~~~~~~~ net//core/filter.c:4920:11: note: (near initialization for 'bpf_sk_lookup_udp_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____bpf_sk_release' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ include/linux/filter.h:443:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_2(name, ...) BPF_CALL_x(2, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net//core/filter.c:4930:12: error: static declaration of 'bpf_sk_release' follows non-static declaration BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net//core/filter.c:4930:12: note: previous declaration of 'bpf_sk_release' was here BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net//core/filter.c: In function 'bpf_sk_release': >> include/linux/filter.h:436:10: error: implicit declaration of function '____bpf_sk_release' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ include/linux/filter.h:443:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_2(name, ...) BPF_CALL_x(2, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____bpf_sk_release' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ include/linux/filter.h:443:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_2(name, ...) BPF_CALL_x(2, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:4930:1: note: in expansion of macro 'BPF_CALL_2' BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) ^~~~~~~~~~ net//core/filter.c:4941:11: error: initializer element is not constant .func = bpf_sk_release, ^~~~~~~~~~~~~~ net//core/filter.c:4941:11: note: (near initialization for 'bpf_sk_release_proto.func') net//core/filter.c:4980:1: error: invalid storage class for function 'bpf_base_func_proto' bpf_base_func_proto(enum bpf_func_id func_id) ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5009:1: error: invalid storage class for function 'sock_filter_func_proto' sock_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5025:1: error: invalid storage class for function 'sock_addr_func_proto' sock_addr_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5051:1: error: invalid storage class for function 'sk_filter_func_proto' sk_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5068:1: error: invalid storage class for function 'cg_skb_func_proto' cg_skb_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net//core/filter.c:5079:1: error: invalid storage class for function 'tc_cls_act_func_proto' tc_cls_act_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5166:1: error: invalid storage class for function 'xdp_func_proto' xdp_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~ net//core/filter.c:5193:1: error: invalid storage class for function 'sock_ops_func_proto' sock_ops_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5216:1: error: invalid storage class for function 'sk_msg_func_proto' sk_msg_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net//core/filter.c:5237:1: error: invalid storage class for function 'sk_skb_func_proto' sk_skb_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net//core/filter.c:5272:1: error: invalid storage class for function 'lwt_out_func_proto' lwt_out_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~ net//core/filter.c:5299:1: error: invalid storage class for function 'lwt_in_func_proto' lwt_in_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~ net//core/filter.c:5310:1: error: invalid storage class for function 'lwt_xmit_func_proto' lwt_xmit_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5345:1: error: invalid storage class for function 'lwt_seg6local_func_proto' lwt_seg6local_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) ^~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5361:13: error: invalid storage class for function 'bpf_skb_is_valid_access' static bool bpf_skb_is_valid_access(int off, int size, enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5404:13: error: invalid storage class for function 'sk_filter_is_valid_access' static bool sk_filter_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5430:13: error: invalid storage class for function 'lwt_is_valid_access' static bool lwt_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5466:13: error: invalid storage class for function '__sock_filter_check_attach_type' static bool __sock_filter_check_attach_type(int off, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5509:13: error: invalid storage class for function '__sock_filter_check_size' static bool __sock_filter_check_size(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5536:13: error: invalid storage class for function 'sock_filter_is_valid_access' static bool sock_filter_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5547:12: error: invalid storage class for function 'bpf_unclone_prologue' static int bpf_unclone_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5586:12: error: invalid storage class for function 'bpf_gen_ld_abs' static int bpf_gen_ld_abs(const struct bpf_insn *orig, ^~~~~~~~~~~~~~ net//core/filter.c:5621:12: error: invalid storage class for function 'tc_cls_act_prologue' static int tc_cls_act_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5627:13: error: invalid storage class for function 'tc_cls_act_is_valid_access' static bool tc_cls_act_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5662:13: error: invalid storage class for function '__is_valid_xdp_access' static bool __is_valid_xdp_access(int off, int size) ^~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5674:13: error: invalid storage class for function 'xdp_is_valid_access' static bool xdp_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:5714:13: error: invalid storage class for function 'sock_addr_is_valid_access' static bool sock_addr_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5714:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static bool sock_addr_is_valid_access(int off, int size, ^~~~~~ net//core/filter.c:5801:13: error: invalid storage class for function 'sock_ops_is_valid_access' static bool sock_ops_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5842:12: error: invalid storage class for function 'sk_skb_prologue' static int sk_skb_prologue(struct bpf_insn *insn_buf, bool direct_write, ^~~~~~~~~~~~~~~ net//core/filter.c:5848:13: error: invalid storage class for function 'sk_skb_is_valid_access' static bool sk_skb_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5883:13: error: invalid storage class for function 'sk_msg_is_valid_access' static bool sk_msg_is_valid_access(int off, int size, ^~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:5915:12: error: invalid storage class for function 'bpf_convert_ctx_access' static u32 bpf_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6318:12: error: invalid storage class for function 'tc_cls_act_convert_ctx_access' static u32 tc_cls_act_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6342:12: error: invalid storage class for function 'xdp_convert_ctx_access' static u32 xdp_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6462:12: error: invalid storage class for function 'sock_addr_convert_ctx_access' static u32 sock_addr_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6551:12: error: invalid storage class for function 'sock_ops_convert_ctx_access' static u32 sock_ops_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6890:12: error: invalid storage class for function 'sk_skb_convert_ctx_access' static u32 sk_skb_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:6915:12: error: invalid storage class for function 'sk_msg_convert_ctx_access' static u32 sk_msg_convert_ctx_access(enum bpf_access_type type, ^~~~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:7192:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] int sk_get_filter(struct sock *sk, struct sock_filter __user *ubuf, ^~~ net//core/filter.c:7247:13: error: invalid storage class for function 'bpf_init_reuseport_kern' static void bpf_init_reuseport_kern(struct sk_reuseport_kern *reuse_kern, ^~~~~~~~~~~~~~~~~~~~~~~ In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____sk_select_reuseport' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net//core/filter.c:7277:12: error: static declaration of 'sk_select_reuseport' follows non-static declaration BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net//core/filter.c:7277:12: note: previous declaration of 'sk_select_reuseport' was here BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net//core/filter.c: In function 'sk_select_reuseport': >> include/linux/filter.h:436:10: error: implicit declaration of function '____sk_select_reuseport' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____sk_select_reuseport' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7277:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_select_reuseport, struct sk_reuseport_kern *, reuse_kern, ^~~~~~~~~~ net//core/filter.c:7323:20: error: initializer element is not constant .func = sk_select_reuseport, ^~~~~~~~~~~~~~~~~~~ net//core/filter.c:7323:20: note: (near initialization for 'sk_select_reuseport_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____sk_reuseport_load_bytes' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net//core/filter.c:7332:12: error: static declaration of 'sk_reuseport_load_bytes' follows non-static declaration BPF_CALL_4(sk_reuseport_load_bytes, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net//core/filter.c:7332:12: note: previous declaration of 'sk_reuseport_load_bytes' was here BPF_CALL_4(sk_reuseport_load_bytes, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net//core/filter.c: In function 'sk_reuseport_load_bytes': >> include/linux/filter.h:436:10: error: implicit declaration of function '____sk_reuseport_load_bytes' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____sk_reuseport_load_bytes' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ include/linux/filter.h:445:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_4(name, ...) BPF_CALL_x(4, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7332:1: note: in expansion of macro 'BPF_CALL_4' BPF_CALL_4(sk_reuseport_load_bytes, ^~~~~~~~~~ net//core/filter.c:7340:11: error: initializer element is not constant .func = sk_reuseport_load_bytes, ^~~~~~~~~~~~~~~~~~~~~~~ net//core/filter.c:7340:11: note: (near initialization for 'sk_reuseport_load_bytes_proto.func') In file included from include/net/sock.h:64:0, from include/linux/sock_diag.h:8, from net//core/filter.c:29: >> include/linux/filter.h:432:6: error: invalid storage class for function '____sk_reuseport_load_bytes_relative' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)); \ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7349:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(sk_reuseport_load_bytes_relative, ^~~~~~~~~~ net//core/filter.c:7349:12: error: static declaration of 'sk_reuseport_load_bytes_relative' follows non-static declaration BPF_CALL_5(sk_reuseport_load_bytes_relative, ^ include/linux/filter.h:434:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)) \ ^~~~ net//core/filter.c:7349:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(sk_reuseport_load_bytes_relative, ^~~~~~~~~~ net//core/filter.c:7349:12: note: previous declaration of 'sk_reuseport_load_bytes_relative' was here BPF_CALL_5(sk_reuseport_load_bytes_relative, ^ include/linux/filter.h:433:6: note: in definition of macro 'BPF_CALL_x' u64 name(__BPF_REG(x, __BPF_DECL_REGS, __BPF_N, __VA_ARGS__)); \ ^~~~ net//core/filter.c:7349:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(sk_reuseport_load_bytes_relative, ^~~~~~~~~~ net//core/filter.c: In function 'sk_reuseport_load_bytes_relative': >> include/linux/filter.h:436:10: error: implicit declaration of function '____sk_reuseport_load_bytes_relative' [-Werror=implicit-function-declaration] return ____##name(__BPF_MAP(x,__BPF_CAST,__BPF_N,__VA_ARGS__));\ ^ >> include/linux/filter.h:446:31: note: in expansion of macro 'BPF_CALL_x' #define BPF_CALL_5(name, ...) BPF_CALL_x(5, name, __VA_ARGS__) ^~~~~~~~~~ net//core/filter.c:7349:1: note: in expansion of macro 'BPF_CALL_5' BPF_CALL_5(sk_reuseport_load_bytes_relative, ^~~~~~~~~~ net//core/filter.c: In function 'sk_lookup': include/linux/filter.h:439:6: error: invalid storage class for function '____sk_reuseport_load_bytes_relative' u64 ____##name(__BPF_MAP(x, __BPF_DECL_ARGS, __BPF_V, __VA_ARGS__)) ^ vim +/bpf_sk_lookup +4870 net/core/filter.c 4863 4864 /* bpf_sk_lookup performs the core lookup for different types of sockets, 4865 * taking a reference on the socket if it doesn't have the flag SOCK_RCU_FREE. 4866 * Returns the socket as an 'unsigned long' to simplify the casting in the 4867 * callers to satisfy BPF_CALL declarations. 4868 */ > 4869 static unsigned long > 4870 bpf_sk_lookup(struct sk_buff *skb, struct bpf_sock_tuple *tuple, u32 len, 4871 u8 proto, u32 netns_id, u64 flags) 4872 { 4873 struct net *caller_net = dev_net(skb->dev); 4874 struct sock *sk = NULL; 4875 struct net *net; 4876 4877 if (unlikely(len != sizeof(struct bpf_sock_tuple) || flags || 4878 (tuple->family != AF_INET && tuple->family != AF_INET6))) 4879 goto out; 4880 4881 if (netns_id) 4882 net = get_net_ns_by_id(caller_net, netns_id); 4883 else 4884 net = caller_net; 4885 if (unlikely(!net)) 4886 goto out; 4887 sk = sk_lookup(net, tuple, skb, proto); 4888 put_net(net); 4889 4890 if (sk) 4891 sk = sk_to_full_sk(sk); 4892 out: 4893 return (unsigned long) sk; 4894 } 4895 > 4896 BPF_CALL_5(bpf_sk_lookup_tcp, struct sk_buff *, skb, 4897 struct bpf_sock_tuple *, tuple, u32, len, u32, netns_id, u64, flags) 4898 { 4899 return bpf_sk_lookup(skb, tuple, len, IPPROTO_TCP, netns_id, flags); 4900 } 4901 4902 static const struct bpf_func_proto bpf_sk_lookup_tcp_proto = { > 4903 .func = bpf_sk_lookup_tcp, 4904 .gpl_only = false, 4905 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 4906 .arg1_type = ARG_PTR_TO_CTX, 4907 .arg2_type = ARG_PTR_TO_MEM, 4908 .arg3_type = ARG_CONST_SIZE, 4909 .arg4_type = ARG_ANYTHING, 4910 .arg5_type = ARG_ANYTHING, 4911 }; 4912 > 4913 BPF_CALL_5(bpf_sk_lookup_udp, struct sk_buff *, skb, 4914 struct bpf_sock_tuple *, tuple, u32, len, u32, netns_id, u64, flags) 4915 { 4916 return bpf_sk_lookup(skb, tuple, len, IPPROTO_UDP, netns_id, flags); 4917 } 4918 4919 static const struct bpf_func_proto bpf_sk_lookup_udp_proto = { 4920 .func = bpf_sk_lookup_udp, 4921 .gpl_only = false, 4922 .ret_type = RET_PTR_TO_SOCKET_OR_NULL, 4923 .arg1_type = ARG_PTR_TO_CTX, 4924 .arg2_type = ARG_PTR_TO_MEM, 4925 .arg3_type = ARG_CONST_SIZE, 4926 .arg4_type = ARG_ANYTHING, 4927 .arg5_type = ARG_ANYTHING, 4928 }; 4929 > 4930 BPF_CALL_2(bpf_sk_release, struct sock *, sk, u64, flags) 4931 { 4932 if (!sock_flag(sk, SOCK_RCU_FREE)) 4933 sock_gen_put(sk); 4934 4935 if (unlikely(flags)) 4936 return -EINVAL; 4937 return 0; 4938 } 4939 4940 static const struct bpf_func_proto bpf_sk_release_proto = { > 4941 .func = bpf_sk_release, 4942 .gpl_only = false, 4943 .ret_type = RET_INTEGER, 4944 .arg1_type = ARG_PTR_TO_SOCKET, 4945 .arg2_type = ARG_ANYTHING, 4946 }; 4947 4948 bool bpf_helper_changes_pkt_data(void *func) 4949 { 4950 if (func == bpf_skb_vlan_push || 4951 func == bpf_skb_vlan_pop || 4952 func == bpf_skb_store_bytes || 4953 func == bpf_skb_change_proto || 4954 func == bpf_skb_change_head || 4955 func == sk_skb_change_head || 4956 func == bpf_skb_change_tail || 4957 func == sk_skb_change_tail || 4958 func == bpf_skb_adjust_room || 4959 func == bpf_skb_pull_data || 4960 func == sk_skb_pull_data || 4961 func == bpf_clone_redirect || 4962 func == bpf_l3_csum_replace || 4963 func == bpf_l4_csum_replace || 4964 func == bpf_xdp_adjust_head || 4965 func == bpf_xdp_adjust_meta || 4966 func == bpf_msg_pull_data || 4967 func == bpf_xdp_adjust_tail || 4968 #if IS_ENABLED(CONFIG_IPV6_SEG6_BPF) 4969 func == bpf_lwt_seg6_store_bytes || 4970 func == bpf_lwt_seg6_adjust_srh || 4971 func == bpf_lwt_seg6_action || 4972 #endif 4973 func == bpf_lwt_push_encap) 4974 return true; 4975 4976 return false; 4977 } 4978 4979 static const struct bpf_func_proto * > 4980 bpf_base_func_proto(enum bpf_func_id func_id) 4981 { 4982 switch (func_id) { 4983 case BPF_FUNC_map_lookup_elem: 4984 return &bpf_map_lookup_elem_proto; 4985 case BPF_FUNC_map_update_elem: 4986 return &bpf_map_update_elem_proto; 4987 case BPF_FUNC_map_delete_elem: 4988 return &bpf_map_delete_elem_proto; 4989 case BPF_FUNC_get_prandom_u32: 4990 return &bpf_get_prandom_u32_proto; 4991 case BPF_FUNC_get_smp_processor_id: 4992 return &bpf_get_raw_smp_processor_id_proto; 4993 case BPF_FUNC_get_numa_node_id: 4994 return &bpf_get_numa_node_id_proto; 4995 case BPF_FUNC_tail_call: 4996 return &bpf_tail_call_proto; 4997 case BPF_FUNC_ktime_get_ns: 4998 return &bpf_ktime_get_ns_proto; 4999 case BPF_FUNC_trace_printk: 5000 if (capable(CAP_SYS_ADMIN)) 5001 return bpf_get_trace_printk_proto(); 5002 /* else: fall through */ 5003 default: 5004 return NULL; 5005 } 5006 } 5007 5008 static const struct bpf_func_proto * > 5009 sock_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) 5010 { 5011 switch (func_id) { 5012 /* inet and inet6 sockets are created in a process 5013 * context so there is always a valid uid/gid 5014 */ 5015 case BPF_FUNC_get_current_uid_gid: 5016 return &bpf_get_current_uid_gid_proto; 5017 case BPF_FUNC_get_local_storage: 5018 return &bpf_get_local_storage_proto; 5019 default: 5020 return bpf_base_func_proto(func_id); 5021 } 5022 } 5023 5024 static const struct bpf_func_proto * > 5025 sock_addr_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) 5026 { 5027 switch (func_id) { 5028 /* inet and inet6 sockets are created in a process 5029 * context so there is always a valid uid/gid 5030 */ 5031 case BPF_FUNC_get_current_uid_gid: 5032 return &bpf_get_current_uid_gid_proto; 5033 case BPF_FUNC_bind: 5034 switch (prog->expected_attach_type) { 5035 case BPF_CGROUP_INET4_CONNECT: 5036 case BPF_CGROUP_INET6_CONNECT: 5037 return &bpf_bind_proto; 5038 default: 5039 return NULL; 5040 } 5041 case BPF_FUNC_get_socket_cookie: 5042 return &bpf_get_socket_cookie_sock_addr_proto; 5043 case BPF_FUNC_get_local_storage: 5044 return &bpf_get_local_storage_proto; 5045 default: 5046 return bpf_base_func_proto(func_id); 5047 } 5048 } 5049 5050 static const struct bpf_func_proto * > 5051 sk_filter_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) 5052 { 5053 switch (func_id) { 5054 case BPF_FUNC_skb_load_bytes: 5055 return &bpf_skb_load_bytes_proto; 5056 case BPF_FUNC_skb_load_bytes_relative: 5057 return &bpf_skb_load_bytes_relative_proto; 5058 case BPF_FUNC_get_socket_cookie: 5059 return &bpf_get_socket_cookie_proto; 5060 case BPF_FUNC_get_socket_uid: 5061 return &bpf_get_socket_uid_proto; 5062 default: 5063 return bpf_base_func_proto(func_id); 5064 } 5065 } 5066 5067 static const struct bpf_func_proto * > 5068 cg_skb_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) 5069 { 5070 switch (func_id) { 5071 case BPF_FUNC_get_local_storage: 5072 return &bpf_get_local_storage_proto; 5073 default: 5074 return sk_filter_func_proto(func_id, prog); 5075 } 5076 } 5077 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --TB36FDmn/VVEgNH/ Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 AA== --TB36FDmn/VVEgNH/--