]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
rtsock: fix socket closure.
authorAlexander V. Chernikov <melifaro@FreeBSD.org>
Sun, 15 Jan 2023 13:40:28 +0000 (13:40 +0000)
committerAlexander V. Chernikov <melifaro@FreeBSD.org>
Mon, 16 Jan 2023 10:49:45 +0000 (10:49 +0000)
commit42904794b80489678e8a519ba453993232b11171
treef2efe929197c220f22e23cc3a221bc32c8c5b2fc
parentddcdb534b7669f186184baf164e7647d544f7bd6
rtsock: fix socket closure.

Currently `close(2)` erroneously return `EOPNOTSUPP` for `PF_ROUTE` sockets.
It happened after making rtsock socket implementation self-contained (
36b10ac2cd18 ). Rtsock code marks socket as connected in `rts_attach()`.
`soclose()` tries to disconnect such socket using `.pr_disconnect` callback.
Rtsock does not implement this callback, resulting in the default method being
substituted. This default method returns `ENOTSUPP`, failing `soclose()` logic.

This diff restores the previous behaviour by adding custom `pr_disconnect()`
returning `ENOTCONN`.

Reviewed by: glebius
Differential Revision: https://reviews.freebsd.org/D38059
sys/net/rtsock.c
tests/sys/net/routing/Makefile
tests/sys/net/routing/test_rtsock_ops.c [new file with mode: 0644]