Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/roy]: src/external/bsd/dhcpcd Import dhcpcd-7.2.3 with the following cha...



details:   https://anonhg.NetBSD.org/src/rev/989b968c9f5c
branches:  roy
changeset: 452285:989b968c9f5c
user:      roy <roy%NetBSD.org@localhost>
date:      Wed Jun 26 09:59:12 2019 +0000

description:
Import dhcpcd-7.2.3 with the following changes:
  *  BSD: Check RTM lengths incase of kernel issues
  *  DHCP6: Don't stop even when last router goes away
  *  DHCP6: Fix inform from RA
  *  hostname: Fix short hostname check

diffstat:

 external/bsd/dhcpcd/.gitignore                        |    31 +
 external/bsd/dhcpcd/BUILDING.md                       |   168 +
 external/bsd/dhcpcd/LICENSE                           |    23 +
 external/bsd/dhcpcd/Makefile                          |    94 +
 external/bsd/dhcpcd/Makefile.inc                      |    33 +
 external/bsd/dhcpcd/README.md                         |   101 +
 external/bsd/dhcpcd/compat/_strtoi.h                  |    93 +
 external/bsd/dhcpcd/compat/arc4random.c               |   158 +
 external/bsd/dhcpcd/compat/arc4random.h               |    16 +
 external/bsd/dhcpcd/compat/arc4random_uniform.c       |    56 +
 external/bsd/dhcpcd/compat/arc4random_uniform.h       |    23 +
 external/bsd/dhcpcd/compat/bitops.h                   |   188 +
 external/bsd/dhcpcd/compat/consttime_memequal.h       |    28 +
 external/bsd/dhcpcd/compat/crypt/hmac.c               |   191 +
 external/bsd/dhcpcd/compat/crypt/hmac.h               |    40 +
 external/bsd/dhcpcd/compat/crypt/md5.c                |   242 +
 external/bsd/dhcpcd/compat/crypt/md5.h                |    33 +
 external/bsd/dhcpcd/compat/crypt/sha256.c             |   303 +
 external/bsd/dhcpcd/compat/crypt/sha256.h             |    46 +
 external/bsd/dhcpcd/compat/dprintf.c                  |    64 +
 external/bsd/dhcpcd/compat/dprintf.h                  |    43 +
 external/bsd/dhcpcd/compat/endian.h                   |    71 +
 external/bsd/dhcpcd/compat/pidfile.c                  |   269 +
 external/bsd/dhcpcd/compat/pidfile.h                  |    39 +
 external/bsd/dhcpcd/compat/queue.h                    |   175 +
 external/bsd/dhcpcd/compat/reallocarray.c             |    60 +
 external/bsd/dhcpcd/compat/reallocarray.h             |    37 +
 external/bsd/dhcpcd/compat/strlcpy.c                  |    51 +
 external/bsd/dhcpcd/compat/strlcpy.h                  |    24 +
 external/bsd/dhcpcd/compat/strtoi.c                   |    68 +
 external/bsd/dhcpcd/compat/strtoi.h                   |    45 +
 external/bsd/dhcpcd/compat/strtou.c                   |    68 +
 external/bsd/dhcpcd/config-null.mk                    |     3 +
 external/bsd/dhcpcd/configure                         |  1539 ++++++
 external/bsd/dhcpcd/hooks/01-test                     |     9 +
 external/bsd/dhcpcd/hooks/02-dump                     |     8 +
 external/bsd/dhcpcd/hooks/10-wpa_supplicant           |   111 +
 external/bsd/dhcpcd/hooks/15-timezone                 |    47 +
 external/bsd/dhcpcd/hooks/20-resolv.conf              |   202 +
 external/bsd/dhcpcd/hooks/29-lookup-hostname          |    39 +
 external/bsd/dhcpcd/hooks/30-hostname                 |   161 +
 external/bsd/dhcpcd/hooks/50-dhcpcd-compat            |    41 +
 external/bsd/dhcpcd/hooks/50-ntp.conf                 |   141 +
 external/bsd/dhcpcd/hooks/50-yp.conf                  |    57 +
 external/bsd/dhcpcd/hooks/50-ypbind.in                |    83 +
 external/bsd/dhcpcd/hooks/Makefile                    |    64 +
 external/bsd/dhcpcd/hooks/dhcpcd-run-hooks.8.in       |   232 +
 external/bsd/dhcpcd/hooks/dhcpcd-run-hooks.in         |   352 +
 external/bsd/dhcpcd/iconfig.mk                        |     8 +
 external/bsd/dhcpcd/src/GNUmakefile                   |    12 +
 external/bsd/dhcpcd/src/Makefile                      |   138 +
 external/bsd/dhcpcd/src/arp.c                         |   592 ++
 external/bsd/dhcpcd/src/arp.h                         |   106 +
 external/bsd/dhcpcd/src/auth.c                        |   712 ++
 external/bsd/dhcpcd/src/auth.h                        |    95 +
 external/bsd/dhcpcd/src/bpf.c                         |   688 ++
 external/bsd/dhcpcd/src/bpf.h                         |    46 +
 external/bsd/dhcpcd/src/common.c                      |   202 +
 external/bsd/dhcpcd/src/common.h                      |   184 +
 external/bsd/dhcpcd/src/control.c                     |   423 +
 external/bsd/dhcpcd/src/control.h                     |    64 +
 external/bsd/dhcpcd/src/defs.h                        |    76 +
 external/bsd/dhcpcd/src/dev.c                         |   190 +
 external/bsd/dhcpcd/src/dev.h                         |    60 +
 external/bsd/dhcpcd/src/dev/Makefile                  |    45 +
 external/bsd/dhcpcd/src/dev/udev.c                    |   178 +
 external/bsd/dhcpcd/src/dhcp-common.c                 |  1098 ++++
 external/bsd/dhcpcd/src/dhcp-common.h                 |   123 +
 external/bsd/dhcpcd/src/dhcp.c                        |  4062 ++++++++++++++++
 external/bsd/dhcpcd/src/dhcp.h                        |   272 +
 external/bsd/dhcpcd/src/dhcp6.c                       |  4148 +++++++++++++++++
 external/bsd/dhcpcd/src/dhcp6.h                       |   241 +
 external/bsd/dhcpcd/src/dhcpcd-definitions-small.conf |   126 +
 external/bsd/dhcpcd/src/dhcpcd-definitions.conf       |   626 ++
 external/bsd/dhcpcd/src/dhcpcd-embedded.c.in          |    36 +
 external/bsd/dhcpcd/src/dhcpcd-embedded.h.in          |    32 +
 external/bsd/dhcpcd/src/dhcpcd.8.in                   |   834 +++
 external/bsd/dhcpcd/src/dhcpcd.c                      |  2118 ++++++++
 external/bsd/dhcpcd/src/dhcpcd.conf                   |    41 +
 external/bsd/dhcpcd/src/dhcpcd.conf.5.in              |   945 +++
 external/bsd/dhcpcd/src/dhcpcd.h                      |   230 +
 external/bsd/dhcpcd/src/duid.c                        |   231 +
 external/bsd/dhcpcd/src/duid.h                        |    35 +
 external/bsd/dhcpcd/src/eloop.c                       |  1007 ++++
 external/bsd/dhcpcd/src/eloop.h                       |   111 +
 external/bsd/dhcpcd/src/genembedc                     |    18 +
 external/bsd/dhcpcd/src/genembedh                     |    17 +
 external/bsd/dhcpcd/src/if-bsd.c                      |  1624 ++++++
 external/bsd/dhcpcd/src/if-linux-wext.c               |    89 +
 external/bsd/dhcpcd/src/if-linux.c                    |  1780 +++++++
 external/bsd/dhcpcd/src/if-options.c                  |  2668 ++++++++++
 external/bsd/dhcpcd/src/if-options.h                  |   235 +
 external/bsd/dhcpcd/src/if-sun.c                      |  1693 ++++++
 external/bsd/dhcpcd/src/if.c                          |   909 +++
 external/bsd/dhcpcd/src/if.h                          |   222 +
 external/bsd/dhcpcd/src/ipv4.c                        |   927 +++
 external/bsd/dhcpcd/src/ipv4.h                        |   143 +
 external/bsd/dhcpcd/src/ipv4ll.c                      |   548 ++
 external/bsd/dhcpcd/src/ipv4ll.h                      |    76 +
 external/bsd/dhcpcd/src/ipv6.c                        |  2342 +++++++++
 external/bsd/dhcpcd/src/ipv6.h                        |   295 +
 external/bsd/dhcpcd/src/ipv6nd.c                      |  1852 +++++++
 external/bsd/dhcpcd/src/ipv6nd.h                      |   115 +
 external/bsd/dhcpcd/src/logerr.c                      |   368 +
 external/bsd/dhcpcd/src/logerr.h                      |    77 +
 external/bsd/dhcpcd/src/route.c                       |   566 ++
 external/bsd/dhcpcd/src/route.h                       |    98 +
 external/bsd/dhcpcd/src/sa.c                          |   458 +
 external/bsd/dhcpcd/src/sa.h                          |    68 +
 external/bsd/dhcpcd/src/script.c                      |   816 +++
 external/bsd/dhcpcd/src/script.h                      |    37 +
 external/bsd/dhcpcd/tests/Makefile                    |    16 +
 external/bsd/dhcpcd/tests/crypt/.gitignore            |     1 +
 external/bsd/dhcpcd/tests/crypt/GNUmakefile           |     7 +
 external/bsd/dhcpcd/tests/crypt/Makefile              |    35 +
 external/bsd/dhcpcd/tests/crypt/README.md             |     8 +
 external/bsd/dhcpcd/tests/crypt/run-test.c            |    38 +
 external/bsd/dhcpcd/tests/crypt/test.h                |    32 +
 external/bsd/dhcpcd/tests/crypt/test_hmac_md5.c       |   209 +
 external/bsd/dhcpcd/tests/eloop-bench/.gitignore      |     1 +
 external/bsd/dhcpcd/tests/eloop-bench/Makefile        |    44 +
 external/bsd/dhcpcd/tests/eloop-bench/README.md       |    53 +
 external/bsd/dhcpcd/tests/eloop-bench/eloop-bench.c   |   184 +
 123 files changed, 44774 insertions(+), 0 deletions(-)

diffs (truncated from 45266 to 300 lines):

diff -r 8392e1c2f711 -r 989b968c9f5c external/bsd/dhcpcd/.gitignore
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/dhcpcd/.gitignore    Wed Jun 26 09:59:12 2019 +0000
@@ -0,0 +1,31 @@
+# Ignore configure generated files
+config.h
+config.mk
+config.log
+
+# Ignore object files
+.depend
+*.o
+*.So
+*.so
+dhcpcd
+
+# Ignore generated embedded files
+dhcpcd-embedded.c
+dhcpcd-embedded.h
+
+# Ignore generated man pages and scripts
+dhcpcd.8
+dhcpcd-run-hooks
+dhcpcd-run-hooks.8
+dhcpcd.conf.5
+hooks/50-ypbind
+
+# Ignore distribution
+dhcpcd*.xz*
+
+# Ignore swap files
+*.swp
+
+# Ignore Coverity
+cov-int
diff -r 8392e1c2f711 -r 989b968c9f5c external/bsd/dhcpcd/BUILDING.md
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/dhcpcd/BUILDING.md   Wed Jun 26 09:59:12 2019 +0000
@@ -0,0 +1,168 @@
+# Building dhcpcd
+
+This attempts to document various ways of building dhcpcd for your
+platform.
+
+## Size is an issue
+To compile small dhcpcd, maybe to be used for installation media where
+size is a concern, you can use the `--small` configure option to enable
+a reduced feature set within dhcpcd.
+Currently this just removes non important options out of
+`dhcpcd-definitions.conf`, the logfile option and
+support for DHCPv6 Prefix Delegation.
+Other features maybe dropped as and when required.
+dhcpcd can also be made smaller by removing the IPv4 or IPv6 stack:
+  *  `--disable-inet`
+  *  `--disable-inet6`
+
+Or by removing the following features:
+  *  `--disable-auth`
+  *  `--disable-arp`
+  *  `--disable-arping`
+  *  `--disable-ipv4ll`
+  *  `--disable-dhcp6`
+
+You can also move the embedded extended configuration from the dhcpcd binary
+to an external file (LIBEXECDIR/dhcpcd-definitions.conf)
+  *  `--disable-embedded`
+If dhcpcd cannot load this file at runtime, dhcpcd will work but will not be
+able to decode any DHCP/DHCPv6 options that are not defined by the user
+in /etc/dhcpcd.conf. This does not really change the total on disk size.
+
+## Cross compiling
+If you're cross compiling you may need set the platform if OS is different
+from the host.  
+`--target=sparc-sun-netbsd5.0`
+
+If you're building for an MMU-less system where fork() does not work, you
+should `./configure --disable-fork`.
+This also puts the `--no-background` flag on and stops the `--background` flag
+from working.
+
+## Default directories
+You can change the default dirs with these knobs.
+For example, to satisfy FHS compliance you would do this:
+`./configure --libexecdir=/lib/dhcpcd dbdir=/var/lib/dhcpcd`
+
+## Compile Issues
+We now default to using `-std=c99`. For 64-bit linux, this always works, but
+for 32-bit linux it requires either gnu99 or a patch to `asm/types.h`.
+Most distros patch linux headers so this should work fine.
+linux-2.6.24 finally ships with a working 32-bit header.
+If your linux headers are older, or your distro hasn't patched them you can
+set `CSTD=gnu99` to work around this.
+
+ArchLinux presently sanitises all kernel headers to the latest version
+regardless of the version for your CPU. As such, Arch presently ships a
+3.12 kernel with 3.17 headers which claim that it supports temporary address
+management and no automatic prefix route generation, both of which are
+obviously false. You will have to patch support either in the kernel or
+out of the headers (or dhcpcd itself) to have correct operation.
+
+## OS specific issues
+Some BSD systems do not allow the manipulation of automatically added subnet
+routes. You can find discussion here:
+    http://mail-index.netbsd.org/tech-net/2008/12/03/msg000896.html
+BSD systems where this has been fixed or is known to work are:
+    NetBSD-5.0
+    FreeBSD-10.0
+
+Some BSD systems protect against IPv6 NS/NA messages by ensuring that the
+source address matches a prefix on the recieved by a RA message.
+This is an error as the correct check is for on-link prefixes as the
+kernel may not be handling RA itself.
+BSD systems where this has been fixed or is known to work are:
+    NetBSD-7.0
+    OpenBSD-5.0
+    patch submitted against FreeBSD-10.0
+
+Some BSD systems do not announce IPv6 address flag changes, such as
+`IN6_IFF_TENTATIVE`, `IN6_IFF_DUPLICATED`, etc. On these systems,
+dhcpcd will poll a freshly added address until either `IN6_IFF_TENTATIVE` is
+cleared or `IN6_IFF_DUPLICATED` is set and take action accordingly.
+BSD systems where this has been fixed or is known to work are:
+    NetBSD-7.0
+
+OpenBSD will always add it's own link-local address if no link-local address
+exists, because it doesn't check if the address we are adding is a link-local
+address or not.
+
+Some BSD systems do not announce cached neighbour route changes based
+on reachability to userland. For such systems, IPv6 routers will always
+be assumed to be reachable until they either stop being a router or expire.
+BSD systems where this has been fixed or is known to work are:
+    NetBSD-7.99.3
+
+Linux prior to 3.17 won't allow userland to manage IPv6 temporary addresses.
+Either upgrade or don't allow dhcpcd to manage the RA,
+so don't set either `ipv6ra_own` or `slaac private` in `dhcpcd.conf` if you
+want to have working IPv6 temporary addresses.
+SLAAC private addresses are just as private, just stable.
+
+## Init systems
+We try and detect how dhcpcd should interact with system services at runtime.
+If we cannot auto-detect how do to this, or it is wrong then
+you can change this by passing shell commands to `--serviceexists`,
+`--servicecmd` and optionally `--servicestatus` to `./configure` or overriding
+the service variables in a hook.
+
+
+## /dev management
+Some systems have `/dev` management systems and some of these like to rename
+interfaces. As this system would listen in the same way as dhcpcd to new
+interface arrivals, dhcpcd needs to listen to the `/dev` management sytem
+instead of the kernel. However, if the `/dev` management system breaks, stops
+working, or changes to a new one, dhcpcd should still try and continue to work.
+To facilitate this, dhcpcd allows a plugin to load to instruct dhcpcd when it
+can use an interface. As of the time of writing only udev support is included.
+You can disable this with `--without-dev`, or `without-udev`.
+NOTE: in Gentoo at least, `sys-fs/udev` as provided by systemd leaks memory
+`sys-fs/eudev`, the fork of udev does not and as such is recommended.
+
+## select
+dhcpcd uses eloop.c, which is a portable main event loop with timeouts and
+signal handling. Unlike libevent and similar, it can be transplanted directly
+within the application - the only caveat outside of POSIX calls is that
+you provide queue.h based on a recent BSD (glibc sys/queue.h is not enough).
+eloop supports the following polling mechanisms, listed in order of preference:
+       kqueue, epoll, pollts, ppoll and pselect.
+If signal handling is disabled (ie in RTEMS or other single process
+OS's) then eloop can use poll.
+You can decide which polling mechanism dhcpcd will select in eloop like so
+`./configure --with-poll=[kqueue|epoll|pselect|pollts|ppoll]`
+
+
+## Importing into another source control system
+To prepare dhcpcd for import into a platform source tree (like NetBSD)
+you can use the make import target to create /tmp/dhcpcd-$version and
+populate it with all the source files and hooks needed.
+In this instance, you may wish to disable some configured tests when
+the binary has to run on older versions which lack support, such as getline.
+`./configure --without-getline`
+
+
+## Hooks
+Not all the hooks in dhcpcd-hooks are installed by default.
+By default we install `01-test`, `02-dump`, `10-mtu`, `20-resolv.conf`
+and `30-hostname`.
+The other hooks, `10-wpa_supplicant`, `15-timezone` and `29-lookup-hostname`
+are installed to `$(datadir)/dhcpcd/hooks` by default and need to be
+copied to `$(libexecdir)/dhcpcd-hooks` for use.
+The configure program attempts to find hooks for systems you have installed.
+To add more simply
+`./configure -with-hook=ntp.conf`
+
+Some system services expose the name of the service we are in,
+by default dhcpcd will pick `RC_SVCNAME` from the environment.
+You can override this in `CPPFLAGS+= -DRC_SVCNAME="YOUR_SVCNAME"`.
+This is important because dhcpcd will scrub the environment aside from `$PATH`
+before running hooks.
+This variable could be used to facilitate service re-entry so this chain could
+happen in a custom OS hook:
+  dhcpcd service marked inactive && dhcpcd service starts
+  dependant services are not started because dhcpcd is inactive (not stopped)
+  dhcpcd hook tests if `$if_up = true` and `$af_waiting` is empty or unset.
+  if true, mark the dhcpcd service as started and then start dependencies
+  if false and the dhcpcd service was previously started, mark as inactive and
+     stop any dependant services.
+
diff -r 8392e1c2f711 -r 989b968c9f5c external/bsd/dhcpcd/LICENSE
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/dhcpcd/LICENSE       Wed Jun 26 09:59:12 2019 +0000
@@ -0,0 +1,23 @@
+Copyright (c) 2006-2019 Roy Marples <roy%marples.name@localhost>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff -r 8392e1c2f711 -r 989b968c9f5c external/bsd/dhcpcd/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/external/bsd/dhcpcd/Makefile      Wed Jun 26 09:59:12 2019 +0000
@@ -0,0 +1,94 @@
+SUBDIRS=       src hooks
+
+VERSION!=      sed -n 's/\#define VERSION[[:space:]]*"\(.*\)".*/\1/p' src/defs.h
+
+DIST!=         if test -f .fslckout; then echo "dist-fossil"; \
+               elif test -d .git; then echo "dist-git"; \
+               else echo "dist-inst"; fi
+FOSSILID?=     current
+GITREF?=       HEAD
+
+DISTSUFFIX=
+DISTPREFIX?=   dhcpcd-${VERSION}${DISTSUFFIX}
+DISTFILEGZ?=   ${DISTPREFIX}.tar.gz
+DISTFILE?=     ${DISTPREFIX}.tar.xz
+DISTINFO=      ${DISTFILE}.distinfo
+DISTINFOSIGN=  ${DISTINFO}.asc
+
+CLEANFILES+=   *.tar.xz
+
+.PHONY:                hooks import import-bsd tests
+
+.SUFFIXES:     .in
+
+all: config.h
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+depend: config.h
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+tests:
+       cd $@; ${MAKE} $@
+
+test: tests
+
+hooks:
+       cd $@; ${MAKE}
+
+eginstall:
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+install:
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+proginstall:
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+clean:
+       rm -rf cov-int dhcpcd.xz
+       for x in ${SUBDIRS} tests; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
+
+distclean: clean
+       rm -f config.h config.mk config.log \
+               ${DISTFILE} ${DISTFILEGZ} ${DISTINFO} ${DISTINFOSIGN}
+
+
+dist-fossil:
+       fossil tarball --name ${DISTPREFIX} ${FOSSILID} ${DISTFILEGZ}
+       gunzip -c ${DISTFILEGZ} | xz >${DISTFILE}
+       rm ${DISTFILEGZ}
+
+dist-git:
+       git archive --prefix=${DISTPREFIX}/ ${GITREF} | xz >${DISTFILE}



Home | Main Index | Thread Index | Old Index