Source-Changes-HG archive

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

[src/trunk]: src/external/bsd/dhcpcd/dist Import dhcpcd-7.2.0 with the follow...



details:   https://anonhg.NetBSD.org/src/rev/7b988662e1d9
branches:  trunk
changeset: 455916:7b988662e1d9
user:      roy <roy%NetBSD.org@localhost>
date:      Wed Apr 17 23:33:08 2019 +0000

description:
Import dhcpcd-7.2.0 with the following changes:
  *  BSD: PF_LINK sockets now closed when no longer needed
  *  BSD: Fix detecting interface for scoped routes
  *  script: Allow "" to mean /dev/null
  *  script: Add static routers and routes to env
  *  DHCP: outbound interface is no longer dictated with IP_PKTINFO
  *  DHCP: BPF sockets now closed when no longer needed
  *  DHCPv6: Allow nooption dhcp6_unicast to work
  *  DHCPv6: Don't spam syslog if we always get the same error
  *  route: Log pid which deleted routes of interest

This release fixes PR bin/53705.

diffstat:

 external/bsd/dhcpcd/dist/BUILDING.md     |    3 -
 external/bsd/dhcpcd/dist/Makefile        |   12 +-
 external/bsd/dhcpcd/dist/configure       |    2 +-
 external/bsd/dhcpcd/dist/iconfig.mk      |    3 +-
 external/bsd/dhcpcd/dist/src/Makefile    |    6 +-
 external/bsd/dhcpcd/dist/src/arp.c       |   15 +-
 external/bsd/dhcpcd/dist/src/arp.h       |    1 -
 external/bsd/dhcpcd/dist/src/common.c    |   48 ---
 external/bsd/dhcpcd/dist/src/common.h    |    2 -
 external/bsd/dhcpcd/dist/src/defs.h      |    2 +-
 external/bsd/dhcpcd/dist/src/dhcp.h      |    1 +
 external/bsd/dhcpcd/dist/src/dhcp6.h     |    2 +-
 external/bsd/dhcpcd/dist/src/dhcpcd.8.in |    2 +-
 external/bsd/dhcpcd/dist/src/dhcpcd.h    |   13 -
 external/bsd/dhcpcd/dist/src/duid.c      |    1 +
 external/bsd/dhcpcd/dist/src/if-linux.c  |   80 ++--
 external/bsd/dhcpcd/dist/src/if-sun.c    |  490 ++++++++++++++++++++----------
 external/bsd/dhcpcd/dist/src/if.c        |  125 ++++++-
 external/bsd/dhcpcd/dist/src/if.h        |    9 +
 external/bsd/dhcpcd/dist/src/ipv4.c      |   10 +-
 external/bsd/dhcpcd/dist/src/ipv4ll.c    |    2 +
 external/bsd/dhcpcd/dist/src/ipv6.c      |   47 +-
 external/bsd/dhcpcd/dist/src/route.c     |    9 +-
 external/bsd/dhcpcd/dist/src/route.h     |    2 +-
 external/bsd/dhcpcd/dist/src/script.c    |   10 +-
 external/bsd/dhcpcd/dist/tests/Makefile  |    6 +-
 26 files changed, 547 insertions(+), 356 deletions(-)

diffs (truncated from 1636 to 300 lines):

diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/BUILDING.md
--- a/external/bsd/dhcpcd/dist/BUILDING.md      Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/BUILDING.md      Wed Apr 17 23:33:08 2019 +0000
@@ -3,9 +3,6 @@
 This attempts to document various ways of building dhcpcd for your
 platform.
 
-Building for distribution (ie making a dhcpcd source tarball) now requires
-gmake-4 or any BSD make.
-
 ## 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
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/Makefile
--- a/external/bsd/dhcpcd/dist/Makefile Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/Makefile Wed Apr 17 23:33:08 2019 +0000
@@ -22,10 +22,10 @@
 .SUFFIXES:     .in
 
 all: config.h
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 depend: config.h
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 tests:
        cd $@; ${MAKE} $@
@@ -36,17 +36,17 @@
        cd $@; ${MAKE}
 
 eginstall:
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 install:
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 proginstall:
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       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} $@; cd ..; done
+       for x in ${SUBDIRS} tests; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 distclean: clean
        rm -f config.h config.mk config.log \
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/configure
--- a/external/bsd/dhcpcd/dist/configure        Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/configure        Wed Apr 17 23:33:08 2019 +0000
@@ -454,7 +454,7 @@
        echo "CPPFLAGS+=        -D_XPG4_2 -D__EXTENSIONS__ -DBSD_COMP" \
            >>$CONFIG_MK
        echo "DHCPCD_SRCS+=     if-sun.c" >>$CONFIG_MK
-       echo "LDADD+=           -ldlpi" >>$CONFIG_MK
+       echo "LDADD+=           -ldlpi -lkstat" >>$CONFIG_MK
        ;;
 *)
        echo "DHCPCD_SRCS+=     if-bsd.c" >>$CONFIG_MK
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/iconfig.mk
--- a/external/bsd/dhcpcd/dist/iconfig.mk       Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/iconfig.mk       Wed Apr 17 23:33:08 2019 +0000
@@ -1,7 +1,8 @@
 # Nasty hack so that make clean works without configure being run
-# Requires gmake4
 TOP?=          .
 _CONFIG_MK!=   test -e ${TOP}/config.mk && \
                    echo config.mk || echo config-null.mk
+_CONFIG_MK?=   $(shell test -e ${TOP}/config.mk && \
+                   echo config.mk || echo config-null.mk)
 CONFIG_MK?=    ${_CONFIG_MK}
 include                ${TOP}/${CONFIG_MK}
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/Makefile
--- a/external/bsd/dhcpcd/dist/src/Makefile     Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/Makefile     Wed Apr 17 23:33:08 2019 +0000
@@ -45,7 +45,7 @@
                $< > $@
 
 all: ${TOP}/config.h ${PROG} ${SCRIPTS} ${MAN5} ${MAN8}
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 dev:
        cd dev && ${MAKE}
@@ -84,7 +84,7 @@
        ${INSTALL} -d ${DESTDIR}${DBDIR}
 
 proginstall: _proginstall ${EMBEDDEDINSTALL}
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 _maninstall: ${MAN5} ${MAN8}
        ${INSTALL} -d ${DESTDIR}${MANDIR}/man5
@@ -130,7 +130,7 @@
 
 clean:
        rm -f ${OBJS} ${PROG} ${PROG}.core ${CLEANFILES}
-       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@; cd ..; done
+       for x in ${SUBDIRS}; do cd $$x; ${MAKE} $@ || exit $$?; cd ..; done
 
 distclean: clean
        rm -f .depend
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/arp.c
--- a/external/bsd/dhcpcd/dist/src/arp.c        Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/arp.c        Wed Apr 17 23:33:08 2019 +0000
@@ -175,17 +175,18 @@
        }
 }
 
-void
+static void
 arp_close(struct interface *ifp)
 {
        struct iarp_state *state;
 
-       if ((state = ARP_STATE(ifp)) != NULL && state->bpf_fd != -1) {
-               eloop_event_delete(ifp->ctx->eloop, state->bpf_fd);
-               bpf_close(ifp, state->bpf_fd);
-               state->bpf_fd = -1;
-               state->bpf_flags |= BPF_EOF;
-       }
+       if ((state = ARP_STATE(ifp)) == NULL || state->bpf_fd == -1)
+               return;
+
+       eloop_event_delete(ifp->ctx->eloop, state->bpf_fd);
+       bpf_close(ifp, state->bpf_fd);
+       state->bpf_fd = -1;
+       state->bpf_flags |= BPF_EOF;
 }
 
 static void
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/arp.h
--- a/external/bsd/dhcpcd/dist/src/arp.h        Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/arp.h        Wed Apr 17 23:33:08 2019 +0000
@@ -90,7 +90,6 @@
 int arp_open(struct interface *);
 ssize_t arp_request(const struct interface *, in_addr_t, in_addr_t);
 void arp_probe(struct arp_state *);
-void arp_close(struct interface *);
 void arp_report_conflicted(const struct arp_state *, const struct arp_msg *);
 struct arp_state *arp_new(struct interface *, const struct in_addr *);
 struct arp_state *arp_find(struct interface *, const struct in_addr *);
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/common.c
--- a/external/bsd/dhcpcd/dist/src/common.c     Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/common.c     Wed Apr 17 23:33:08 2019 +0000
@@ -200,51 +200,3 @@
        fclose(fp);
        return len;
 }
-
-ssize_t
-recvmsg_realloc(int fd, struct msghdr *msg, int flags)
-{
-       struct iovec *iov;
-       ssize_t slen;
-       size_t len;
-       void *n;
-
-       assert(msg != NULL);
-       assert(msg->msg_iov != NULL && msg->msg_iovlen > 0);
-       assert((flags & (MSG_PEEK | MSG_TRUNC)) == 0);
-
-       /* Assume we are reallocing the last iovec. */
-       iov = &msg->msg_iov[msg->msg_iovlen - 1];
-
-       for (;;) {
-               /* Passing MSG_TRUNC should return the actual size needed. */
-               slen = recvmsg(fd, msg, flags | MSG_PEEK | MSG_TRUNC);
-               if (slen == -1)
-                       return -1;
-               if (!(msg->msg_flags & MSG_TRUNC))
-                       break;
-
-               len = (size_t)slen;
-
-               /* Some kernels return the size of the receive buffer
-                * on truncation, not the actual size needed.
-                * So grow the buffer and try again. */
-               if (iov->iov_len == len)
-                       len++;
-               else if (iov->iov_len > len)
-                       break;
-               len = roundup(len, IOVEC_BUFSIZ);
-               if ((n = realloc(iov->iov_base, len)) == NULL)
-                       return -1;
-               iov->iov_base = n;
-               iov->iov_len = len;
-       }
-
-       slen = recvmsg(fd, msg, flags);
-       if (slen != -1 && msg->msg_flags & MSG_TRUNC) {
-               /* This should not be possible ... */
-               errno = ENOBUFS;
-               return -1;
-       }
-       return slen;
-}
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/common.h
--- a/external/bsd/dhcpcd/dist/src/common.h     Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/common.h     Wed Apr 17 23:33:08 2019 +0000
@@ -181,6 +181,4 @@
 const char *hwaddr_ntoa(const void *, size_t, char *, size_t);
 size_t hwaddr_aton(uint8_t *, const char *);
 size_t read_hwaddr_aton(uint8_t **, const char *);
-
-ssize_t recvmsg_realloc(int, struct msghdr *, int);
 #endif
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/defs.h
--- a/external/bsd/dhcpcd/dist/src/defs.h       Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/defs.h       Wed Apr 17 23:33:08 2019 +0000
@@ -28,7 +28,7 @@
 #define CONFIG_H
 
 #define PACKAGE                        "dhcpcd"
-#define VERSION                        "7.1.1"
+#define VERSION                        "7.2.0"
 
 #ifndef CONFIG
 # define CONFIG                        SYSCONFDIR "/" PACKAGE ".conf"
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/dhcp.h
--- a/external/bsd/dhcpcd/dist/src/dhcp.h       Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/dhcp.h       Wed Apr 17 23:33:08 2019 +0000
@@ -216,6 +216,7 @@
 
        int bpf_fd;
        unsigned int bpf_flags;
+       int udp_fd;
        struct ipv4_addr *addr;
        uint8_t added;
 
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/dhcp6.h
--- a/external/bsd/dhcpcd/dist/src/dhcp6.h      Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/dhcp6.h      Wed Apr 17 23:33:08 2019 +0000
@@ -206,7 +206,7 @@
        /* The +3 is for the possible .pd extension for prefix delegation */
        char leasefile[sizeof(LEASEFILE6) + IF_NAMESIZE + (IF_SSIDLEN * 4) +3];
        const char *reason;
-
+       uint16_t lerror; /* Last error received from DHCPv6 reply. */
        struct authstate auth;
 };
 
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/dhcpcd.8.in
--- a/external/bsd/dhcpcd/dist/src/dhcpcd.8.in  Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/dhcpcd.8.in  Wed Apr 17 23:33:08 2019 +0000
@@ -584,7 +584,7 @@
 .Nm
 will try to do as much as it can by default.
 However, there are sometimes situations where you don't want the things to be
-configured exactly how the the DHCP server wants.
+configured exactly how the DHCP server wants.
 Here are some options that deal with turning these bits off.
 .Pp
 Note that when
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/dhcpcd.h
--- a/external/bsd/dhcpcd/dist/src/dhcpcd.h     Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/dhcpcd.h     Wed Apr 17 23:33:08 2019 +0000
@@ -142,14 +142,10 @@
        struct rt_head froutes; /* free routes for re-use */
 
        int pf_inet_fd;
-#ifdef IFLR_ACTIVE
-       int pf_link_fd;
-#endif
        void *priv;
        int link_fd;
        int seq;        /* route message sequence no */
        int sseq;       /* successful seq no sent */
-       struct iovec iov[1];    /* generic iovec buffer */
 
 #ifdef USE_SIGNALS
        sigset_t sigset;
@@ -184,15 +180,6 @@
        uint8_t *secret;
        size_t secret_len;
 
-       unsigned char ctlbuf[IP6BUFLEN];
-       struct sockaddr_in6 from;
-       struct msghdr sndhdr;
-       struct iovec sndiov[1];
-       unsigned char sndbuf[CMSG_SPACE(sizeof(struct in6_pktinfo))];
-       struct msghdr rcvhdr;
-       char ntopbuf[INET6_ADDRSTRLEN];
-       const char *sfrom;
-
        int nd_fd;
        struct ra_head *ra_routers;
 
diff -r 32cc1e2aeefc -r 7b988662e1d9 external/bsd/dhcpcd/dist/src/duid.c
--- a/external/bsd/dhcpcd/dist/src/duid.c       Wed Apr 17 22:38:14 2019 +0000
+++ b/external/bsd/dhcpcd/dist/src/duid.c       Wed Apr 17 23:33:08 2019 +0000
@@ -90,6 +90,7 @@
        fclose(fp);
        r = len == 1 ? -1 : 0;
 #else
+       UNUSED(uuid);



Home | Main Index | Thread Index | Old Index