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-6.4.3 with the follow...



details:   https://anonhg.NetBSD.org/src/rev/e49028b8aa78
branches:  trunk
changeset: 797837:e49028b8aa78
user:      roy <roy%NetBSD.org@localhost>
date:      Wed Jul 30 15:44:09 2014 +0000

description:
Import dhcpcd-6.4.3 with the following changes:

  *  Correct DHCPv6 Prefix Delegation option decoding
  *  Poll interfaces on BSD for IFF_RUNNING if link state cannot be obtained
  *  Check for an IA to use in DHCPv6 lease validation
  *  Warn about exceeding IDGEN_RETRIES when a stable private address cannot
     be obtained
  *  Fix DHCP option overload handling, thanks to Tobias Stoeckmann

diffstat:

 external/bsd/dhcpcd/dist/arp.c                   |   3 ++-
 external/bsd/dhcpcd/dist/crypt/hmac_md5.c        |   8 +++++---
 external/bsd/dhcpcd/dist/defs.h                  |   4 ++--
 external/bsd/dhcpcd/dist/dhcp6.c                 |  24 ++++++++++--------------
 external/bsd/dhcpcd/dist/dhcpcd-definitions.conf |   3 ++-
 external/bsd/dhcpcd/dist/dhcpcd-embedded.c       |   3 ++-
 external/bsd/dhcpcd/dist/if.c                    |  11 ++++++-----
 external/bsd/dhcpcd/dist/if.h                    |   4 ++--
 8 files changed, 31 insertions(+), 29 deletions(-)

diffs (235 lines):

diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/arp.c
--- a/external/bsd/dhcpcd/dist/arp.c    Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/arp.c    Wed Jul 30 15:44:09 2014 +0000
@@ -1,5 +1,5 @@
 #include <sys/cdefs.h>
- __RCSID("$NetBSD: arp.c,v 1.1.1.12 2014/06/14 20:51:04 roy Exp $");
+ __RCSID("$NetBSD: arp.c,v 1.1.1.13 2014/07/30 15:44:09 roy Exp $");
 
 /*
  * dhcpcd - DHCP client daemon
@@ -29,6 +29,7 @@
  */
 
 #include <sys/socket.h>
+#include <sys/types.h>
 
 #include <net/if.h>
 #include <netinet/in.h>
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/crypt/hmac_md5.c
--- a/external/bsd/dhcpcd/dist/crypt/hmac_md5.c Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/crypt/hmac_md5.c Wed Jul 30 15:44:09 2014 +0000
@@ -1,5 +1,5 @@
 #include <sys/cdefs.h>
- __RCSID("$NetBSD: hmac_md5.c,v 1.1.1.3 2014/07/14 14:02:02 roy Exp $");
+ __RCSID("$NetBSD: hmac_md5.c,v 1.1.1.4 2014/07/30 15:44:11 roy Exp $");
 
 /*
  * dhcpcd - DHCP client daemon
@@ -35,9 +35,11 @@
 
 #include "../config.h"
 #ifdef HAVE_MD5_H
-#include <md5.h>
+#  ifndef DEPGEN
+#    include <md5.h>
+#  endif
 #else
-#include "md5.h"
+#  include "md5.h"
 #endif
 
 #define HMAC_PAD_LEN   64
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/defs.h
--- a/external/bsd/dhcpcd/dist/defs.h   Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/defs.h   Wed Jul 30 15:44:09 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.1.1.40 2014/07/14 14:02:02 roy Exp $ */
+/* $NetBSD: defs.h,v 1.1.1.41 2014/07/30 15:44:11 roy Exp $ */
 
 /*
  * dhcpcd - DHCP client daemon
@@ -30,7 +30,7 @@
 #define CONFIG_H
 
 #define PACKAGE                        "dhcpcd"
-#define VERSION                        "6.4.2"
+#define VERSION                        "6.4.3"
 
 #ifndef CONFIG
 # define CONFIG                        SYSCONFDIR "/" PACKAGE ".conf"
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/dhcp6.c
--- a/external/bsd/dhcpcd/dist/dhcp6.c  Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/dhcp6.c  Wed Jul 30 15:44:09 2014 +0000
@@ -1,5 +1,5 @@
 #include <sys/cdefs.h>
- __RCSID("$NetBSD: dhcp6.c,v 1.1.1.12 2014/07/14 14:02:01 roy Exp $");
+ __RCSID("$NetBSD: dhcp6.c,v 1.1.1.13 2014/07/30 15:44:10 roy Exp $");
 
 /*
  * dhcpcd - DHCP client daemon
@@ -48,8 +48,7 @@
 #include <syslog.h>
 #include <unistd.h>
 
-#define ELOOP_QUEUE 3
-
+#define ELOOP_QUEUE 4
 #include "config.h"
 #include "common.h"
 #include "dhcp.h"
@@ -1605,8 +1604,6 @@
 {
        struct dhcp6_state *state;
        const struct dhcp6_option *o;
-       const uint8_t *p;
-       struct in6_addr in6;
        struct ipv6_addr *a;
        char iabuf[INET6_ADDRSTRLEN];
        const char *ia;
@@ -1630,9 +1627,7 @@
                            ifp->name);
                        continue;
                }
-               p = D6_COPTION_DATA(o);
                iap = (const struct dhcp6_ia_addr *)D6_COPTION_DATA(o);
-               p += sizeof(in6);
                a = dhcp6_findaddr(ifp, &iap->addr);
                if (a == NULL) {
                        a = calloc(1, sizeof(*a));
@@ -1959,6 +1954,7 @@
     const char *sfrom)
 {
        struct dhcp6_state *state;
+       int nia;
 
        if (len <= sizeof(*m)) {
                syslog(LOG_ERR, "%s: DHCPv6 lease truncated", ifp->name);
@@ -1971,7 +1967,13 @@
 
        state->renew = state->rebind = state->expire = 0;
        state->lowpl = ND6_INFINITE_LIFETIME;
-       return dhcp6_findia(ifp, m, len, sfrom);
+       nia = dhcp6_findia(ifp, m, len, sfrom);
+       if (nia == 0) {
+               syslog(LOG_ERR, "%s: no useable IA found in lease",
+                   ifp->name);
+               return -1;
+       }
+       return nia;
 }
 
 static ssize_t
@@ -2041,11 +2043,6 @@
        fd = dhcp6_validatelease(ifp, state->new, state->new_len, NULL);
        if (fd == -1)
                goto ex;
-       if (fd == 0) {
-               syslog(LOG_INFO, "%s: no useable IA found in lease",
-                   ifp->name);
-               goto ex;
-       }
 
        if (state->expire != ND6_INFINITE_LIFETIME) {
                gettimeofday(&now, NULL);
@@ -2150,7 +2147,6 @@
        int pfxlen;
 
        /* RFC6603 Section 4.2 */
-       pfxlen = 0; /* appease gcc */
        if (strcmp(ifp->name, ifs->name) == 0) {
                if (prefix->prefix_exclude_len == 0) {
                        /* Don't spam the log automatically */
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/dhcpcd-definitions.conf
--- a/external/bsd/dhcpcd/dist/dhcpcd-definitions.conf  Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/dhcpcd-definitions.conf  Wed Jul 30 15:44:09 2014 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: dhcpcd-definitions.conf,v 1.1.1.4 2014/07/14 11:45:04 roy Exp $
+# $NetBSD: dhcpcd-definitions.conf,v 1.1.1.5 2014/07/30 15:44:11 roy Exp $
 
 # Copyright (c) 2006-2014 Roy Marples
 # All rights reserved
@@ -360,6 +360,7 @@
 define6 26     index embed             prefix
 embed          uint32                  pltime
 embed          uint32                  vltime
+embed          byte                    length
 embed          ip6address              prefix
 encap 13       option
 encap 67       option
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/dhcpcd-embedded.c
--- a/external/bsd/dhcpcd/dist/dhcpcd-embedded.c        Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/dhcpcd-embedded.c        Wed Jul 30 15:44:09 2014 +0000
@@ -1,5 +1,5 @@
 #include <sys/cdefs.h>
- __RCSID("$NetBSD: dhcpcd-embedded.c,v 1.1.1.6 2014/07/14 11:45:03 roy Exp $");
+ __RCSID("$NetBSD: dhcpcd-embedded.c,v 1.1.1.7 2014/07/30 15:44:09 roy Exp $");
 
 /*
  * DO NOT EDIT
@@ -252,6 +252,7 @@
 "define6 26 index embed prefix",
 "embed uint32 pltime",
 "embed uint32 vltime",
+"embed byte length",
 "embed ip6address prefix",
 "encap 13 option",
 "encap 67 option",
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/if.c
--- a/external/bsd/dhcpcd/dist/if.c     Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/if.c     Wed Jul 30 15:44:09 2014 +0000
@@ -1,5 +1,5 @@
 #include <sys/cdefs.h>
- __RCSID("$NetBSD: if.c,v 1.1.1.2 2014/07/14 11:45:03 roy Exp $");
+ __RCSID("$NetBSD: if.c,v 1.1.1.3 2014/07/30 15:44:09 roy Exp $");
 
 /*
  * dhcpcd - DHCP client daemon
@@ -121,16 +121,17 @@
        }
        iface->flags = (unsigned int)ifr.ifr_flags;
 
-       r = LINK_UNKNOWN;
 #ifdef SIOCGIFMEDIA
        memset(&ifmr, 0, sizeof(ifmr));
        strlcpy(ifmr.ifm_name, iface->name, sizeof(ifmr.ifm_name));
        if (ioctl(s, SIOCGIFMEDIA, &ifmr) != -1 &&
            ifmr.ifm_status & IFM_AVALID)
                r = (ifmr.ifm_status & IFM_ACTIVE) ? LINK_UP : LINK_DOWN;
+       else
+               r = ifr.ifr_flags & IFF_RUNNING ? LINK_UP : LINK_UNKNOWN;
+#else
+       r = ifr.ifr_flags & IFF_RUNNING ? LINK_UP : LINK_DOWN;
 #endif
-       if (r == LINK_UNKNOWN)
-               r = (ifr.ifr_flags & IFF_RUNNING) ? LINK_UP : LINK_DOWN;
        close(s);
        return r;
 }
@@ -155,7 +156,7 @@
 #endif
        r = -1;
        if (ioctl(s, SIOCGIFFLAGS, &ifr) == 0) {
-               if (flag == 0 || ifr.ifr_flags & flag)
+               if (flag == 0 || (ifr.ifr_flags & flag) == flag)
                        r = 0;
                else {
                        ifr.ifr_flags |= flag;
diff -r e4980cbae2c1 -r e49028b8aa78 external/bsd/dhcpcd/dist/if.h
--- a/external/bsd/dhcpcd/dist/if.h     Wed Jul 30 13:50:33 2014 +0000
+++ b/external/bsd/dhcpcd/dist/if.h     Wed Jul 30 15:44:09 2014 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if.h,v 1.1.1.2 2014/07/14 11:45:06 roy Exp $ */
+/* $NetBSD: if.h,v 1.1.1.3 2014/07/30 15:44:11 roy Exp $ */
 
 /*
  * dhcpcd - DHCP client daemon
@@ -93,7 +93,7 @@
 #define RAW_PARTIALCSUM                2 << 0
 
 int if_setflag(struct interface *ifp, short flag);
-#define if_up(ifp) if_setflag((ifp), IFF_UP)
+#define if_up(ifp) if_setflag((ifp), (IFF_UP | IFF_RUNNING))
 struct if_head *if_discover(struct dhcpcd_ctx *, int, char * const *);
 struct interface *if_find(struct dhcpcd_ctx *, const char *);
 void if_free(struct interface *);



Home | Main Index | Thread Index | Old Index