Zbigniew Jędrzejewski-Szmek f1004d
From ee3a5027f7c56df2ef47a774970433d7045c9e9f Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek f1004d
From: Patrik Flykt <patrik.flykt@linux.intel.com>
Zbigniew Jędrzejewski-Szmek f1004d
Date: Wed, 8 Oct 2014 11:00:07 +0300
Zbigniew Jędrzejewski-Szmek f1004d
Subject: [PATCH] sd-dhcp6-lease: Name the structure containing IAADDR data
Zbigniew Jędrzejewski-Szmek f1004d
Zbigniew Jędrzejewski-Szmek f1004d
With this change the DHCP6_OPTION_IAADDR_LEN define can be removed in
Zbigniew Jędrzejewski-Szmek f1004d
favor of using sizeof(). Using the name of the struct and sizeof()
Zbigniew Jędrzejewski-Szmek f1004d
makes it clearer how much and what data is being copied from the
Zbigniew Jędrzejewski-Szmek f1004d
DHCPv6 message.
Zbigniew Jędrzejewski-Szmek f1004d
---
Zbigniew Jędrzejewski-Szmek f1004d
 src/libsystemd-network/dhcp6-internal.h |  2 +-
Zbigniew Jędrzejewski-Szmek f1004d
 src/libsystemd-network/dhcp6-option.c   | 21 ++++++++++-----------
Zbigniew Jędrzejewski-Szmek f1004d
 src/libsystemd-network/sd-dhcp6-lease.c | 10 ++++++----
Zbigniew Jędrzejewski-Szmek f1004d
 3 files changed, 17 insertions(+), 16 deletions(-)
Zbigniew Jędrzejewski-Szmek f1004d
Zbigniew Jędrzejewski-Szmek f1004d
diff --git a/src/libsystemd-network/dhcp6-internal.h b/src/libsystemd-network/dhcp6-internal.h
Zbigniew Jędrzejewski-Szmek f1004d
index 94e3a5d408..6cc0aa8a8d 100644
Zbigniew Jędrzejewski-Szmek f1004d
--- a/src/libsystemd-network/dhcp6-internal.h
Zbigniew Jędrzejewski-Szmek f1004d
+++ b/src/libsystemd-network/dhcp6-internal.h
Zbigniew Jędrzejewski-Szmek f1004d
@@ -38,7 +38,7 @@ struct DHCP6Address {
Zbigniew Jędrzejewski-Szmek f1004d
                 struct in6_addr address;
Zbigniew Jędrzejewski-Szmek f1004d
                 be32_t lifetime_preferred;
Zbigniew Jędrzejewski-Szmek f1004d
                 be32_t lifetime_valid;
Zbigniew Jędrzejewski-Szmek f1004d
-        } _packed_;
Zbigniew Jędrzejewski-Szmek f1004d
+        } iaaddr _packed_;
Zbigniew Jędrzejewski-Szmek f1004d
 };
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
 struct DHCP6IA {
Zbigniew Jędrzejewski-Szmek f1004d
diff --git a/src/libsystemd-network/dhcp6-option.c b/src/libsystemd-network/dhcp6-option.c
Zbigniew Jędrzejewski-Szmek f1004d
index e9b382c170..e6a31778f4 100644
Zbigniew Jędrzejewski-Szmek f1004d
--- a/src/libsystemd-network/dhcp6-option.c
Zbigniew Jędrzejewski-Szmek f1004d
+++ b/src/libsystemd-network/dhcp6-option.c
Zbigniew Jędrzejewski-Szmek f1004d
@@ -32,7 +32,6 @@
Zbigniew Jędrzejewski-Szmek f1004d
 #define DHCP6_OPTION_HDR_LEN                    4
Zbigniew Jędrzejewski-Szmek f1004d
 #define DHCP6_OPTION_IA_NA_LEN                  12
Zbigniew Jędrzejewski-Szmek f1004d
 #define DHCP6_OPTION_IA_TA_LEN                  4
Zbigniew Jędrzejewski-Szmek f1004d
-#define DHCP6_OPTION_IAADDR_LEN                 24
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
 static int option_append_hdr(uint8_t **buf, size_t *buflen, uint16_t optcode,
Zbigniew Jędrzejewski-Szmek f1004d
                              size_t optlen) {
Zbigniew Jędrzejewski-Szmek f1004d
@@ -111,16 +110,16 @@ int dhcp6_option_append_ia(uint8_t **buf, size_t *buflen, DHCP6IA *ia) {
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
         LIST_FOREACH(addresses, addr, ia->addresses) {
Zbigniew Jędrzejewski-Szmek f1004d
                 r = option_append_hdr(buf, buflen, DHCP6_OPTION_IAADDR,
Zbigniew Jędrzejewski-Szmek f1004d
-                                      DHCP6_OPTION_IAADDR_LEN);
Zbigniew Jędrzejewski-Szmek f1004d
+                                      sizeof(addr->iaaddr));
Zbigniew Jędrzejewski-Szmek f1004d
                 if (r < 0)
Zbigniew Jędrzejewski-Szmek f1004d
                         return r;
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-                memcpy(*buf, &addr->address, DHCP6_OPTION_IAADDR_LEN);
Zbigniew Jędrzejewski-Szmek f1004d
+                memcpy(*buf, &addr->iaaddr, sizeof(addr->iaaddr));
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-                *buf += DHCP6_OPTION_IAADDR_LEN;
Zbigniew Jędrzejewski-Szmek f1004d
-                *buflen -= DHCP6_OPTION_IAADDR_LEN;
Zbigniew Jędrzejewski-Szmek f1004d
+                *buf += sizeof(addr->iaaddr);
Zbigniew Jędrzejewski-Szmek f1004d
+                *buflen -= sizeof(addr->iaaddr);
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-                ia_addrlen += DHCP6_OPTION_HDR_LEN + DHCP6_OPTION_IAADDR_LEN;
Zbigniew Jędrzejewski-Szmek f1004d
+                ia_addrlen += DHCP6_OPTION_HDR_LEN + sizeof(addr->iaaddr);
Zbigniew Jędrzejewski-Szmek f1004d
         }
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
         r = option_append_hdr(&ia_hdr, &ia_buflen, ia->type, len + ia_addrlen);
Zbigniew Jędrzejewski-Szmek f1004d
@@ -192,7 +191,7 @@ int dhcp6_option_parse_ia(uint8_t **buf, size_t *buflen, uint16_t iatype,
Zbigniew Jędrzejewski-Szmek f1004d
         case DHCP6_OPTION_IA_NA:
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
                 if (*buflen < DHCP6_OPTION_IA_NA_LEN + DHCP6_OPTION_HDR_LEN +
Zbigniew Jędrzejewski-Szmek f1004d
-                    DHCP6_OPTION_IAADDR_LEN) {
Zbigniew Jędrzejewski-Szmek f1004d
+                    sizeof(addr->iaaddr)) {
Zbigniew Jędrzejewski-Szmek f1004d
                         r = -ENOBUFS;
Zbigniew Jędrzejewski-Szmek f1004d
                         goto error;
Zbigniew Jędrzejewski-Szmek f1004d
                 }
Zbigniew Jędrzejewski-Szmek f1004d
@@ -214,7 +213,7 @@ int dhcp6_option_parse_ia(uint8_t **buf, size_t *buflen, uint16_t iatype,
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
         case DHCP6_OPTION_IA_TA:
Zbigniew Jędrzejewski-Szmek f1004d
                 if (*buflen < DHCP6_OPTION_IA_TA_LEN + DHCP6_OPTION_HDR_LEN +
Zbigniew Jędrzejewski-Szmek f1004d
-                    DHCP6_OPTION_IAADDR_LEN) {
Zbigniew Jędrzejewski-Szmek f1004d
+                    sizeof(addr->iaaddr)) {
Zbigniew Jędrzejewski-Szmek f1004d
                         r = -ENOBUFS;
Zbigniew Jędrzejewski-Szmek f1004d
                         goto error;
Zbigniew Jędrzejewski-Szmek f1004d
                 }
Zbigniew Jędrzejewski-Szmek f1004d
@@ -250,10 +249,10 @@ int dhcp6_option_parse_ia(uint8_t **buf, size_t *buflen, uint16_t iatype,
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
                         LIST_INIT(addresses, addr);
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-                        memcpy(&addr->address, *buf, DHCP6_OPTION_IAADDR_LEN);
Zbigniew Jędrzejewski-Szmek f1004d
+                        memcpy(&addr->iaaddr, *buf, sizeof(addr->iaaddr));
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-                        lt_valid = be32toh(addr->lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
-                        lt_pref = be32toh(addr->lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
+                        lt_valid = be32toh(addr->iaaddr.lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
+                        lt_pref = be32toh(addr->iaaddr.lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
                         if (!lt_valid || lt_pref > lt_valid) {
Zbigniew Jędrzejewski-Szmek f1004d
                                 log_dhcp6_client(client, "IA preferred %ds > valid %ds",
Zbigniew Jędrzejewski-Szmek f1004d
diff --git a/src/libsystemd-network/sd-dhcp6-lease.c b/src/libsystemd-network/sd-dhcp6-lease.c
Zbigniew Jędrzejewski-Szmek f1004d
index b9d0503642..e2715ea659 100644
Zbigniew Jędrzejewski-Szmek f1004d
--- a/src/libsystemd-network/sd-dhcp6-lease.c
Zbigniew Jędrzejewski-Szmek f1004d
+++ b/src/libsystemd-network/sd-dhcp6-lease.c
Zbigniew Jędrzejewski-Szmek f1004d
@@ -41,7 +41,7 @@ int dhcp6_lease_ia_rebind_expire(const DHCP6IA *ia, uint32_t *expire) {
Zbigniew Jędrzejewski-Szmek f1004d
         assert_return(expire, -EINVAL);
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
         LIST_FOREACH(addresses, addr, ia->addresses) {
Zbigniew Jędrzejewski-Szmek f1004d
-                t = be32toh(addr->lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
+                t = be32toh(addr->iaaddr.lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
                 if (valid < t)
Zbigniew Jędrzejewski-Szmek f1004d
                         valid = t;
Zbigniew Jędrzejewski-Szmek f1004d
         }
Zbigniew Jędrzejewski-Szmek f1004d
@@ -156,9 +156,11 @@ int sd_dhcp6_lease_get_next_address(sd_dhcp6_lease *lease,
Zbigniew Jędrzejewski-Szmek f1004d
         if (!lease->addr_iter)
Zbigniew Jędrzejewski-Szmek f1004d
                 return -ENOMSG;
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
-        memcpy(addr, &lease->addr_iter->address, sizeof(struct in6_addr));
Zbigniew Jędrzejewski-Szmek f1004d
-        *lifetime_preferred = be32toh(lease->addr_iter->lifetime_preferred);
Zbigniew Jędrzejewski-Szmek f1004d
-        *lifetime_valid = be32toh(lease->addr_iter->lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
+        memcpy(addr, &lease->addr_iter->iaaddr.address,
Zbigniew Jędrzejewski-Szmek f1004d
+                sizeof(struct in6_addr));
Zbigniew Jędrzejewski-Szmek f1004d
+        *lifetime_preferred =
Zbigniew Jędrzejewski-Szmek f1004d
+                be32toh(lease->addr_iter->iaaddr.lifetime_preferred);
Zbigniew Jędrzejewski-Szmek f1004d
+        *lifetime_valid = be32toh(lease->addr_iter->iaaddr.lifetime_valid);
Zbigniew Jędrzejewski-Szmek f1004d
 
Zbigniew Jędrzejewski-Szmek f1004d
         lease->addr_iter = lease->addr_iter->addresses_next;
Zbigniew Jędrzejewski-Szmek f1004d