2.5 Android ebpf帮助函数解读(四)

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)

<

猜你喜欢

转载自blog.csdn.net/huangyabin001/article/details/131498840
2.5