Lines Matching refs:ctx

36 int do_bind(struct bpf_sock_addr *ctx)
44 if (bpf_bind(ctx, (struct sockaddr *)&sa, sizeof(sa)) != 0)
50 static __inline int verify_cc(struct bpf_sock_addr *ctx,
56 if (bpf_getsockopt(ctx, SOL_TCP, TCP_CONGESTION, &buf, sizeof(buf)))
69 static __inline int set_cc(struct bpf_sock_addr *ctx)
74 if (bpf_setsockopt(ctx, SOL_TCP, TCP_CONGESTION, &reno, sizeof(reno)))
76 if (verify_cc(ctx, reno))
79 if (bpf_setsockopt(ctx, SOL_TCP, TCP_CONGESTION, &cubic, sizeof(cubic)))
81 if (verify_cc(ctx, cubic))
87 static __inline int bind_to_device(struct bpf_sock_addr *ctx)
94 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_BINDTODEVICE,
97 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_BINDTODEVICE,
100 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_BINDTODEVICE,
103 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_BINDTODEVICE,
110 static __inline int set_keepalive(struct bpf_sock_addr *ctx)
114 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_KEEPALIVE, &one, sizeof(one)))
116 if (ctx->type == SOCK_STREAM) {
117 if (bpf_setsockopt(ctx, SOL_TCP, TCP_KEEPIDLE, &one, sizeof(one)))
119 if (bpf_setsockopt(ctx, SOL_TCP, TCP_KEEPINTVL, &one, sizeof(one)))
121 if (bpf_setsockopt(ctx, SOL_TCP, TCP_KEEPCNT, &one, sizeof(one)))
123 if (bpf_setsockopt(ctx, SOL_TCP, TCP_SYNCNT, &one, sizeof(one)))
125 if (bpf_setsockopt(ctx, SOL_TCP, TCP_USER_TIMEOUT, &one, sizeof(one)))
128 if (bpf_setsockopt(ctx, SOL_SOCKET, SO_KEEPALIVE, &zero, sizeof(zero)))
134 static __inline int set_notsent_lowat(struct bpf_sock_addr *ctx)
138 if (ctx->type == SOCK_STREAM) {
139 if (bpf_setsockopt(ctx, SOL_TCP, TCP_NOTSENT_LOWAT, &lowat, sizeof(lowat)))
147 int connect_v4_prog(struct bpf_sock_addr *ctx)
160 if (bind_to_device(ctx))
163 if (set_keepalive(ctx))
166 if (set_notsent_lowat(ctx))
169 if (ctx->type != SOCK_STREAM && ctx->type != SOCK_DGRAM)
171 else if (ctx->type == SOCK_STREAM)
172 sk = bpf_sk_lookup_tcp(ctx, &tuple, sizeof(tuple.ipv4),
175 sk = bpf_sk_lookup_udp(ctx, &tuple, sizeof(tuple.ipv4),
190 if (ctx->type == SOCK_STREAM && set_cc(ctx))
194 ctx->user_ip4 = bpf_htonl(DST_REWRITE_IP4);
195 ctx->user_port = bpf_htons(DST_REWRITE_PORT4);
197 return do_bind(ctx) ? 1 : 0;