61.long bpf_sock_ops_cb_flags_set(struct bpf_sock_ops *bpf_sock, int argval)
描述:尝试设置bpf_sock_ops相关联的完整TCP套接字的bpf_sock_ops_cb_flags字段的值为argval。
bpf_sock_ops_cb_flags字段的主要应用,是确定是否应在 TCP 代码的不同地方调用类型为BPF_PROG_TYPE_SOCK_OPS 的 eBPF 程序。相同类型的程序可以根据需要在建立连接时更改它的值。此字段可直接访问以供读取,但此帮助程序必须用于更新,以便在 eBPF 程序尝试设置当前内核不支持的回调时返回错误。
argval是一个flag数组,可以由下面的flag组合而成。
• BPF_SOCK_OPS_RTO_CB_FLAG(重发超时) • BPF_SOCK_OPS_RETRANS_CB_FLAG(重发) • BPF_SOCK_OPS_STATE_CB_FLAG(TCP状态改变) • BPF_SOCK_OPS_RTT_CB_FLAG(每个RTT)
因此,这个函数可以用来通过设置对应的bit位为0来清除回调flag。例如禁用RTO回调:bpf_sock_ops_cb_flags_set(bpf_sock, bpf_sock->bpf_sock_ops_cb_flags & ~BPF_SOCK_OPS_RTO_CB_FLAG)
<