From nobody Sun Jan 15 13:50:48 2023 X-Original-To: freebsd-current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NvxQ002Rpz2syC5 for ; Sun, 15 Jan 2023 13:51:04 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Received: from forward501c.mail.yandex.net (forward501c.mail.yandex.net [178.154.239.209]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4NvxPz4PtKz4Xj4; Sun, 15 Jan 2023 13:51:03 +0000 (UTC) (envelope-from melifaro@ipfw.ru) Authentication-Results: mx1.freebsd.org; none Received: from sas2-cc22fd2335f8.qloud-c.yandex.net (sas2-cc22fd2335f8.qloud-c.yandex.net [IPv6:2a02:6b8:c08:6c82:0:640:cc22:fd23]) by forward501c.mail.yandex.net (Yandex) with ESMTP id CE9335EA97; Sun, 15 Jan 2023 16:51:00 +0300 (MSK) Received: by sas2-cc22fd2335f8.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id woidijMaDOs1-w7cpSG3v; Sun, 15 Jan 2023 16:51:00 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ipfw.ru; s=mail; t=1673790660; bh=LAu/abr1aNgZb4dcrmsoZH9mNr6iQGFzIFqATpsole0=; h=Message-Id:To:Date:References:Cc:In-Reply-To:From:Subject; b=Hlgln9VtNC4rYuNTnInmr954C1+xe+OpB9Knpb1yHLU/m0rJMp+3CwDNaC6PVfzdj H1qktHqzICfOSrAXaJtEgsPBXMuhP8KnoA9kA4rfUWBtOdV8zdUgwu5EvTpmJT0Aq5 CZ+MFyCutT+HD9mIvxTkJf4JXi7w+o4wwl4hwnGQ= Content-Type: text/plain; charset=utf-8 List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.200.110.1.12\)) Subject: Re: close(2) on a PF_ROUTE socket returns -1 and sets errno to EOPNOTSUPP From: "Alexander V. Chernikov" In-Reply-To: Date: Sun, 15 Jan 2023 13:50:48 +0000 Cc: freebsd-current , Gleb Smirnoff Content-Transfer-Encoding: quoted-printable Message-Id: References: To: Guy Yur X-Mailer: Apple Mail (2.3731.200.110.1.12) X-Rspamd-Queue-Id: 4NvxPz4PtKz4Xj4 X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:200350, ipnet:178.154.224.0/19, country:RU] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-ThisMailContainsUnwantedMimeParts: N > On 14 Jan 2023, at 20:46, Guy Yur wrote: >=20 > Hi, >=20 > close(2) on a PF_ROUTE socket returns -1 and sets errno to EOPNOTSUPP. > I am testing 14.0-CURRENT (main branch) built today. > On 13.1-RELEASE-p5 close returns 0. >=20 > The problem looks to be related to = 36b10ac2cd18a535cac20ccf51e3fc6c408671e8. >=20 > The commit removed rts_disconnect and initialization for = .pru_disconnect. > After the change, .pr_disconnect is not initialized in rtsock.c > so now it is set to pr_disconnect_notsupp. > This causes flow of: > soclose() > sodisconnect() > so->so_proto->pr_disconnect() > pr_disconnect_notsupp() > return EOPNOTSUPP > On 13.1 it called the raw socket disconnect which returned ENOTCONN. >=20 > Noticed in dhcpcd error: if_route (ADD): Operation not supported > dhcpcd with privsep called write() which failed with EEXIST (expected = since > route already existed) and then close() which overwrote the errno to > EOPNOTSUPP and the parent process received back EOPNOTSUPP instead of = EEXIST. Thank you for the report! I=E2=80=99ve created https://reviews.freebsd.org/D38059 to address the = issue. >=20 >=20 >=20 > Simple test program (prints error on head, no error on 13.1): >=20 > #include > #include > #include > #include > #include > #include > #include >=20 > int main(int argc, char *argv[]) > { > int s =3D socket(PF_ROUTE, SOCK_RAW, 0); > if (s =3D=3D -1) > err(1, "socket()"); > if (close(s) =3D=3D -1) > err(1, "close()"); > return 0; > } >=20 >=20 > Regards, > Guy Yur