On Thu, Jan 17, 2019 at 5:02 PM Eric Dumazet <eric.duma...@gmail.com> wrote: > > > > On 01/17/2019 04:41 PM, Stanislav Fomichev wrote: > > Currently, we have BPF_CGROUP_INET_SOCK_CREATE hook that triggers on > > socket creation and there is no way to know when the socket is being > > closed. Add new set of hooks BPF_CGROUP_INET{4,6}_SOCK_RELEASE > > that trigger when the socket is closed. > > > > Are these hooks enough to capture a disconnect() operation ? > > A socket can be reused (different flows) without inet_release() being ever > called. I didn't know about reuse, let me spend some time looking into this.
I mostly thought about the following usecase, where user manually calls close(): sys_close() -> sock_close() -> __sock_release -> inet[6]_release (I also expected stack to call the release whenever process exits) > > > > Initial intended usecase is to cleanup statistics after POST{4,6}_BIND. > > Hooks have read-only access to all fields of struct bpf_sock. > > > > First patch adds hooks, the rest of the patches add uapi and tests to make > > sure these hooks work. > >