auto
     YˆÓÒƒ¯Í¿Ð ô    Y/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2019 Facebook */
#ifndef _BPF_SK_STORAGE_H
#define _BPF_SK_STORAGE_H

#include <linux/rculist.h>
#include <linux/list.h>
#include <linux/hash.h>
#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/bpf.h>
#include <net/sock.h>
#include <uapi/linux/sock_diag.h>
#include <uapi/linux/btf.h>
#include <linux/bpf_local_storage.h>

struct sock;

void bpf_sk_storage_free(struct sock *sk);

extern const struct bpf_func_proto bpf_sk_storage_get_proto;
extern const struct bpf_func_proto bpf_sk_storage_delete_proto;
extern const struct bpf_func_proto bpf_sk_storage_get_tracing_proto;
extern const struct bpf_func_proto bpf_sk_storage_delete_tracing_proto;

struct bpf_local_storage_elem;
struct bpf_sk_storage_diag;
struct sk_buff;
struct nlattr;

#ifdef CONFIG_BPF_SYSCALL
int bpf_sk_storage_clone(const struct sock *sk, struct sock *newsk);
struct bpf_sk_storage_diag *
bpf_sk_storage_diag_alloc(const struct nlattr *nla_stgs);
void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag);
int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag,
			    struct sock *sk, struct sk_buff *skb,
			    int stg_array_type,
			    unsigned int *res_diag_size);
#else
static inline int bpf_sk_storage_clone(const struct sock *sk,
				       struct sock *newsk)
{
	return 0;
}
static inline struct bpf_sk_storage_diag *
bpf_sk_storage_diag_alloc(const struct nlattr *nla)
{
	return NULL;
}
static inline void bpf_sk_storage_diag_free(struct bpf_sk_storage_diag *diag)
{
}
static inline int bpf_sk_storage_diag_put(struct bpf_sk_storage_diag *diag,
					  struct sock *sk, struct sk_buff *skb,
					  int stg_array_type,
					  unsigned int *res_diag_size)
{
	return 0;
}
#endif

#endif /* _BPF_SK_STORAGE_H */
  #   [ˆl–ßi~”êh¥8 Eq–®	•1hßÓ928ÂÀÑ      [ý7zXZ  i"Þ6 !   t/å£àZd] ˆæhó�s©™v'í™/�\Ñ�”œ®ÝT)§8„ÒdH´ìã½y[®FUŽc¾ç6­µiü ljÊ–¤Ëc"ìÕ©&Šòýìg=Ü\Ž"=’¿-bˆ&©lúncL³&Ÿj“:mü[^‡¢”ÈÖ¸—€2çµ!“o�j†€Óç;íÇ�'¡'÷b¯�°¼èI¿yDšL}}%¶ÉÙ[è«áµŽÐÆzžóChïÏ�±)`D]�ZyÑ—
ñ‚/{FðrÀ«¨?|}ÑŽÄ{ÿP‹Ä&·2;8yÇ°˜µ�‘×Ã2õëjIl»‹OHâqC-?Ïª*±LIð×aE‡�DCÆñ—ð	‹ñã¡ ®WRl±f’/V‹ Ñäï]ÓôX>£3¶¶ÅìveÅ·|eZ\NKèÁuoûpÄÞZx:‰†¼ÈØA7€s$*ƒÃÌÕT…{üþæwî’5¹IvA�X²1,¿ I�Hzƒ5Â|†Ç¦</¨0³ç—Ù´+ÿ‚¦2²Zº¦ª„f#éæ‰³ÿ‘_o¶��Ž�c‘Àõê…¾Ž%ß>PO8šn—„'ø[hÓ²>²,ï�MA,ä1Þ	gÒf"s˜!Ü&Ì´éåf
ûíN‹xR•&;•8ªè‰öÃ1†J‚)kWÈfšæšFÔù›ÃÉÜ‹}4^3D9¿â“ŽS¸~º¯VÆãÐq©jÿº#û%œ¯"Äç‡å´§dš¤‰:n>ÅƒqóHÏh˜cc°jÃíH´Y#Qå¯ß˜_ïÎ“
9¶{C6~òÍ³UÞ¾ëÅë£sò�Öèïg¤9ð2ï2#ªxò"•M<Š¨LxEcµH˜ú3Òåòøa¶ŒQ•hw1ôœë‚P�j•Ô�Ã¸73ò$îäø
ÝoŸ„…L¶âÞÖ Áf¾†ùKðcj|](ŸIÍàç|YºI*¹R¯ë7ÿ¼¦]½s>ä^0’�ÒX$HèÒÁ�š¹¸—íÃü¹=uÜw9ªÉUóñ9¿*t‚(ÿ¨º×_ÿ¦aC?m÷!¤Í¯TÒÆ¿ —d`Ÿf+€þ9±Š&ÏTóuØ¦Ð=a#´á[Uù@¥óg|>^ùª,>�Z|fC(ÁÎÆ DSœ·„1SŠ‹`1m«2Óä´ç#ëFú þ'ti©Ä˜ ¥Çß’ üÛ  �ëŽÕ>0‹    YZ      ]ˆl–Ðz¾”ŠC]Šq@ã-\d
bÑ¿Ô0ÁÒ  :   _ˆl–ßi~”JClÊqA
à¸ )‹FÿÕ„Ì�¯a–Ým_J*j"Tâ�ÆZ¸TÅ£Ô ?÷     _ELF          >    °2      @       g          @ 8  @         @       @       @       Ø      Ø                                                                                        È      È                                           Ù      Ù                    @       @       @      �      �                   �\      �l      �l      p      Ð                   ¨\      ¨l      ¨l                                 8      8      8      0       0                    h      h      h      D       D              Såtd   8      8      8      0       0              Påtd   „O      „O      „O      4       4              Qåtd                                                  Råtd   �\      �l      �l      p      p             /lib64/ld-linux-x86-64.so.2               GNU   À          € À                   GNU {°ÈA
¬ï ¶ª¥2|¬         GNU                      (              (   )   ³¢÷3Ä÷                        §                     Z                                          U                      ³                                                                  �    