[00/30] Move nss_dns into libc

Message ID cover.1625251244.git.fweimer@redhat.com
Headers
Series Move nss_dns into libc |

Message

Florian Weimer July 2, 2021, 6:47 p.m. UTC
  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.h>
  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