Lines Matching refs:ctx

30 int _getsockopt(struct bpf_sockopt *ctx)
32 __u8 *optval_end = ctx->optval_end;
33 __u8 *optval = ctx->optval;
38 sk = ctx->sk;
47 if (bpf_get_netns_cookie(ctx) == 0)
50 if (ctx->level == SOL_IP && ctx->optname == IP_TOS) {
58 if (ctx->level == SOL_SOCKET && ctx->optname == SO_SNDBUF) {
66 if (ctx->level == SOL_TCP && ctx->optname == TCP_CONGESTION) {
74 if (ctx->level == SOL_TCP && ctx->optname == TCP_ZEROCOPY_RECEIVE) {
90 if (ctx->level == SOL_IP && ctx->optname == IP_FREEBIND) {
94 ctx->retval = 0; /* Reset system call return value to zero */
98 ctx->optlen = 1;
110 if (ctx->level != SOL_CUSTOM)
116 storage = bpf_sk_storage_get(&socket_storage_map, ctx->sk, 0,
121 if (!ctx->retval)
125 ctx->retval = 0; /* Reset system call return value to zero */
128 ctx->optlen = 1;
134 if (ctx->optlen > page_size)
135 ctx->optlen = 0;
140 int _setsockopt(struct bpf_sockopt *ctx)
142 __u8 *optval_end = ctx->optval_end;
143 __u8 *optval = ctx->optval;
148 sk = ctx->sk;
157 if (bpf_get_netns_cookie(ctx) == 0)
160 if (ctx->level == SOL_IP && ctx->optname == IP_TOS) {
165 ctx->optlen = 0; /* bypass optval>PAGE_SIZE */
169 if (ctx->level == SOL_SOCKET && ctx->optname == SO_SNDBUF) {
176 ctx->optlen = 4;
181 if (ctx->level == SOL_TCP && ctx->optname == TCP_CONGESTION) {
188 ctx->optlen = 5;
193 if (ctx->level == SOL_IP && ctx->optname == IP_FREEBIND) {
195 if (ctx->optlen != page_size * 2)
203 ctx->optlen = 1;
215 if (ctx->level != SOL_CUSTOM)
221 storage = bpf_sk_storage_get(&socket_storage_map, ctx->sk, 0,
227 ctx->optlen = -1; /* BPF has consumed this option, don't call kernel
235 if (ctx->optlen > page_size)
236 ctx->optlen = 0;