From patchwork Fri Jul 2 18:47:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 44098 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8C0B73983C28 for ; Fri, 2 Jul 2021 18:48:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8C0B73983C28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1625251704; bh=ByD2qQHhNZcX9/rRGe+DZTTvubP7Emaex1woHNYjw/I=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=H8xejMqHXwcgIgShUwObbSTXbSZuF0zZK1HFma7r2Uhz+r3s+5LCrwhJxOVc/tH0L uKPeQsbfjBG/vho95vn48mFwXtPVJWXLtCuxZT8vy4c7JHDPAqqb6vkrExwGeH9MVG Tq5ZNnBW14gHsMX4jfoupno8OjobITWFOmSvCHZM= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id E9B503983838 for ; Fri, 2 Jul 2021 18:47:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E9B503983838 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-340-AEhQp99ROl2fwQ1dEcrlww-1; Fri, 02 Jul 2021 14:47:39 -0400 X-MC-Unique: AEhQp99ROl2fwQ1dEcrlww-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C39D0EC1A1 for ; Fri, 2 Jul 2021 18:47:38 +0000 (UTC) Received: from oldenburg.str.redhat.com (ovpn-115-5.ams2.redhat.com [10.36.115.5]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E9A065D9D5 for ; Fri, 2 Jul 2021 18:47:37 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 00/30] Move nss_dns into libc X-From-Line: 4b11748e1595be974f99e97a964e67f8c30b522d Mon Sep 17 00:00:00 2001 Message-Id: Date: Fri, 02 Jul 2021 20:47:36 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Together with the nss_files move, this will allow us to increase the resilience of statically linked applications and eventually allow us to provide an equivalent to --enable-static-nss builds (broken since glibc 2.33). Not all of libresolv is moved yet, only parts that are critical to the stub resolver (plus some extras). A lot of functionality needs to be deprecated and removed from the API because it is outdated or just broken. I do not think it makes sense to add new symbol versions for those, so I'd like to deprecate them now, keep them in libresolv, and move them to libc as compat symbols maybe in glibc 2.36. The last patch conflicts with the nss_files move, and it would make sense to abstract things a little bit further once both are merged. Thanks, Florian Florian Weimer (30): socket: Add hidden prototype for setsockopt resolv: Deprecate legacy interfaces in resolv: Sort Makefile routines and Versions lexicographically nss_dns: Do not use deprecated packet parsing functions resolv: Move ns_name_ntop to its own file and into libc resolv: Move ns_name_unpack to its own file and into libc resolv: Move ns_name_skip to its own file and into libc resolv: Move ns_name_uncompress into its own file and into libc resolv: Move ns_name_pton into its own file and into libc resolv: Move ns_name_pack into its own file and into libc resolv: Move ns_name_compress into its own file and into libc resolv: Move dn_expand to its own file and into libc resolv: Move _getlong, _getshort, __putlong, __putshort to res-putget resolv: Move dn_comp to its own file and into libc resolv: Move dn_skipname to its own file and into libc resolv: Rename res_comp.c to res-name-checking.c and move into libc resolv: Remove unnecessary res_isourserver_p call from send_dg resolv: Move __res_get_nsaddr to its own file and into libc resolv: Move res_isourserver to its own file and reformat to GNU style resolv: Move ns_makecanon into its own file, and into libc resolv: Move ns_samename into its own file, and into libc resolv: Move res_nameinquery to its own file and into libc resolv: Move res_queriesmatch to its own file and into libc resolv: Move __res_context_hostalias into its own file and into libc resolv: Move res_hostalias into its own file, along with hostalias resolv: Move res_send, res_nsend into libc resolv: Move res_mkquery, res_nmkquery into libc resolv: Move res_query functions into libc resolv: Move nss_dns into libc nss: Directly load nss_dns, without going through dlsym/dlopen NEWS | 4 + include/arpa/nameser.h | 28 +- include/nss_dns.h | 39 ++ include/resolv.h | 22 +- include/sys/socket.h | 3 +- nss/nss_module.c | 31 +- nss/nss_module.h | 10 +- resolv/Makefile | 85 ++- resolv/Versions | 256 ++++++-- resolv/arpa/nameser.h | 33 +- resolv/compat-gethnamaddr.c | 13 +- resolv/dn_comp.c | 103 +++ resolv/dn_expand.c | 112 ++++ resolv/dn_skipname.c | 103 +++ resolv/ns_makecanon.c | 50 ++ resolv/ns_name.c | 614 ------------------ resolv/ns_name_compress.c | 50 ++ resolv/ns_name_ntop.c | 145 +++++ resolv/ns_name_pack.c | 202 ++++++ resolv/ns_name_pton.c | 157 +++++ resolv/ns_name_skip.c | 62 ++ resolv/ns_name_uncompress.c | 45 ++ resolv/ns_name_unpack.c | 115 ++++ resolv/ns_parse.c | 4 +- resolv/ns_print.c | 8 +- resolv/ns_samedomain.c | 62 +- resolv/ns_samename.c | 38 ++ resolv/nss_dns/dns-canon.c | 25 +- resolv/nss_dns/dns-host.c | 78 +-- resolv/nss_dns/dns-network.c | 15 +- resolv/nss_dns_functions.c | 46 ++ resolv/{res_comp.c => res-name-checking.c} | 116 +--- resolv/res-putget.c | 112 ++++ resolv/res_context_hostalias.c | 132 ++++ resolv/res_debug.c | 4 +- resolv/res_enable_icmp.c | 4 +- resolv/res_get_nsaddr.c | 39 ++ resolv/res_hostalias.c | 51 ++ resolv/res_isourserver.c | 134 ++++ resolv/res_mkquery.c | 48 +- resolv/res_nameinquery.c | 115 ++++ resolv/res_queriesmatch.c | 129 ++++ resolv/res_query.c | 158 ++--- resolv/res_send.c | 238 ++----- resolv/resolv-deprecated.c | 56 ++ resolv/resolv-internal.h | 21 +- resolv/resolv.h | 101 +-- sysdeps/mach/hurd/i386/libc.abilist | 48 ++ sysdeps/mach/hurd/i386/libresolv.abilist | 24 - sysdeps/mach/hurd/setsockopt.c | 2 +- sysdeps/unix/sysv/linux/aarch64/libc.abilist | 48 ++ .../unix/sysv/linux/aarch64/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/alpha/libc.abilist | 53 ++ .../unix/sysv/linux/alpha/libresolv.abilist | 29 - sysdeps/unix/sysv/linux/arc/libc.abilist | 48 ++ sysdeps/unix/sysv/linux/arc/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/arm/be/libc.abilist | 48 ++ .../unix/sysv/linux/arm/be/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/arm/le/libc.abilist | 48 ++ .../unix/sysv/linux/arm/le/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/csky/libc.abilist | 48 ++ .../unix/sysv/linux/csky/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/hppa/libc.abilist | 53 ++ .../unix/sysv/linux/hppa/libresolv.abilist | 29 - sysdeps/unix/sysv/linux/i386/libc.abilist | 53 ++ .../unix/sysv/linux/i386/libresolv.abilist | 29 - sysdeps/unix/sysv/linux/ia64/libc.abilist | 53 ++ .../unix/sysv/linux/ia64/libresolv.abilist | 29 - .../sysv/linux/m68k/coldfire/libc.abilist | 48 ++ .../linux/m68k/coldfire/libresolv.abilist | 24 - .../unix/sysv/linux/m68k/m680x0/libc.abilist | 53 ++ .../sysv/linux/m68k/m680x0/libresolv.abilist | 29 - .../sysv/linux/microblaze/be/libc.abilist | 48 ++ .../linux/microblaze/be/libresolv.abilist | 24 - .../sysv/linux/microblaze/le/libc.abilist | 48 ++ .../linux/microblaze/le/libresolv.abilist | 24 - .../sysv/linux/mips/mips32/fpu/libc.abilist | 53 ++ .../sysv/linux/mips/mips32/libresolv.abilist | 29 - .../sysv/linux/mips/mips32/nofpu/libc.abilist | 53 ++ .../sysv/linux/mips/mips64/n32/libc.abilist | 53 ++ .../linux/mips/mips64/n32/libresolv.abilist | 29 - .../sysv/linux/mips/mips64/n64/libc.abilist | 53 ++ .../linux/mips/mips64/n64/libresolv.abilist | 29 - sysdeps/unix/sysv/linux/nios2/libc.abilist | 48 ++ .../unix/sysv/linux/nios2/libresolv.abilist | 24 - .../linux/powerpc/powerpc32/fpu/libc.abilist | 53 ++ .../linux/powerpc/powerpc32/libresolv.abilist | 29 - .../powerpc/powerpc32/nofpu/libc.abilist | 53 ++ .../linux/powerpc/powerpc64/be/libc.abilist | 48 ++ .../powerpc/powerpc64/be/libresolv.abilist | 24 - .../linux/powerpc/powerpc64/le/libc.abilist | 48 ++ .../powerpc/powerpc64/le/libresolv.abilist | 24 - .../unix/sysv/linux/riscv/rv32/libc.abilist | 48 ++ .../sysv/linux/riscv/rv32/libresolv.abilist | 24 - .../unix/sysv/linux/riscv/rv64/libc.abilist | 48 ++ .../sysv/linux/riscv/rv64/libresolv.abilist | 24 - .../unix/sysv/linux/s390/s390-32/libc.abilist | 53 ++ .../sysv/linux/s390/s390-32/libresolv.abilist | 29 - .../unix/sysv/linux/s390/s390-64/libc.abilist | 48 ++ .../sysv/linux/s390/s390-64/libresolv.abilist | 24 - sysdeps/unix/sysv/linux/setsockopt.c | 5 +- sysdeps/unix/sysv/linux/sh/be/libc.abilist | 53 ++ .../unix/sysv/linux/sh/be/libresolv.abilist | 29 - sysdeps/unix/sysv/linux/sh/le/libc.abilist | 53 ++ .../unix/sysv/linux/sh/le/libresolv.abilist | 29 - .../sysv/linux/sparc/sparc32/libc.abilist | 53 ++ .../linux/sparc/sparc32/libresolv.abilist | 29 - .../sysv/linux/sparc/sparc64/libc.abilist | 53 ++ .../linux/sparc/sparc64/libresolv.abilist | 29 - .../unix/sysv/linux/x86_64/64/libc.abilist | 48 ++ .../sysv/linux/x86_64/64/libresolv.abilist | 24 - .../unix/sysv/linux/x86_64/x32/libc.abilist | 48 ++ .../sysv/linux/x86_64/x32/libresolv.abilist | 24 - 113 files changed, 4359 insertions(+), 2142 deletions(-) create mode 100644 include/nss_dns.h create mode 100644 resolv/dn_comp.c create mode 100644 resolv/dn_expand.c create mode 100644 resolv/dn_skipname.c create mode 100644 resolv/ns_makecanon.c create mode 100644 resolv/ns_name_compress.c create mode 100644 resolv/ns_name_ntop.c create mode 100644 resolv/ns_name_pack.c create mode 100644 resolv/ns_name_pton.c create mode 100644 resolv/ns_name_skip.c create mode 100644 resolv/ns_name_uncompress.c create mode 100644 resolv/ns_name_unpack.c create mode 100644 resolv/ns_samename.c create mode 100644 resolv/nss_dns_functions.c rename resolv/{res_comp.c => res-name-checking.c} (73%) create mode 100644 resolv/res-putget.c create mode 100644 resolv/res_context_hostalias.c create mode 100644 resolv/res_get_nsaddr.c create mode 100644 resolv/res_hostalias.c create mode 100644 resolv/res_isourserver.c create mode 100644 resolv/res_nameinquery.c create mode 100644 resolv/res_queriesmatch.c create mode 100644 resolv/resolv-deprecated.c