]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Revert "DHCP DUID and IAID configurability" 2882/head
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 21 Mar 2016 22:24:24 +0000 (18:24 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 21 Mar 2016 22:24:24 +0000 (18:24 -0400)
24 files changed:
Makefile-man.am
Makefile.am
man/networkd.conf.xml [deleted file]
man/systemd.network.xml
src/libsystemd-network/dhcp-identifier.c
src/libsystemd-network/dhcp-identifier.h
src/libsystemd-network/dhcp6-protocol.h
src/libsystemd-network/network-internal.c
src/libsystemd-network/network-internal.h
src/libsystemd-network/sd-dhcp-client.c
src/libsystemd-network/sd-dhcp6-client.c
src/network/networkd-conf.c [deleted file]
src/network/networkd-conf.h [deleted file]
src/network/networkd-dhcp4.c
src/network/networkd-dhcp6.c
src/network/networkd-gperf.gperf [deleted file]
src/network/networkd-link.c
src/network/networkd-manager.c
src/network/networkd-network-gperf.gperf
src/network/networkd-network.h
src/network/networkd.c
src/network/networkd.h
src/systemd/sd-dhcp-client.h
src/systemd/sd-dhcp6-client.h

index a7e348b1f1374068e0f9f0a737a53189806bd50f..3f03afc2efef39a1a9499a338930a7127242091d 100644 (file)
@@ -1960,21 +1960,15 @@ endif
 if ENABLE_NETWORKD
 MANPAGES += \
        man/networkctl.1 \
-       man/networkd.conf.5 \
        man/systemd-networkd-wait-online.service.8 \
        man/systemd-networkd.service.8 \
        man/systemd.netdev.5 \
        man/systemd.network.5
 MANPAGES_ALIAS += \
-       man/networkd.conf.d.5 \
        man/systemd-networkd-wait-online.8 \
        man/systemd-networkd.8
-man/networkd.conf.d.5: man/networkd.conf.5
 man/systemd-networkd-wait-online.8: man/systemd-networkd-wait-online.service.8
 man/systemd-networkd.8: man/systemd-networkd.service.8
-man/networkd.conf.d.html: man/networkd.conf.html
-       $(html-alias)
-
 man/systemd-networkd-wait-online.html: man/systemd-networkd-wait-online.service.html
        $(html-alias)
 
@@ -2485,7 +2479,6 @@ EXTRA_DIST += \
        man/machinectl.xml \
        man/modules-load.d.xml \
        man/networkctl.xml \
-       man/networkd.conf.xml \
        man/nss-myhostname.xml \
        man/nss-mymachines.xml \
        man/nss-resolve.xml \
index c2a82a5a35e7a14f02951c35e2e0c8f23b41366b..9a7ae2c286546ec2750cc8e770b460402cdf2d7e 100644 (file)
@@ -5398,8 +5398,6 @@ libnetworkd_core_la_CFLAGS = \
 libnetworkd_core_la_SOURCES = \
        src/libsystemd-network/network-internal.h \
        src/network/networkd.h \
-       src/network/networkd-conf.h \
-       src/network/networkd-conf.c \
        src/network/networkd-link.h \
        src/network/networkd-link.c \
        src/network/networkd-netdev.h \
@@ -5448,7 +5446,6 @@ libnetworkd_core_la_SOURCES = \
        src/network/networkd-lldp-tx.c
 
 nodist_libnetworkd_core_la_SOURCES = \
-       src/network/networkd-gperf.c \
        src/network/networkd-network-gperf.c \
        src/network/networkd-netdev-gperf.c
 
@@ -5545,7 +5542,6 @@ BUSNAMES_TARGET_WANTS += \
 endif
 
 gperf_gperf_sources += \
-       src/network/networkd-gperf.gperf \
        src/network/networkd-network-gperf.gperf \
        src/network/networkd-netdev-gperf.gperf
 
diff --git a/man/networkd.conf.xml b/man/networkd.conf.xml
deleted file mode 100644 (file)
index 5e2927b..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
-  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-
-<!--
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
--->
-
-<refentry id="networkd.conf" conditional='ENABLE_NETWORKD'
-    xmlns:xi="http://www.w3.org/2001/XInclude">
-  <refentryinfo>
-    <title>networkd.conf</title>
-    <productname>systemd</productname>
-
-    <authorgroup>
-      <author>
-        <contrib>Developer</contrib>
-        <firstname>Vinay</firstname>
-        <surname>Kulkarni</surname>
-        <email>kulkarniv@vmware.com</email>
-      </author>
-    </authorgroup>
-  </refentryinfo>
-
-  <refmeta>
-    <refentrytitle>networkd.conf</refentrytitle>
-    <manvolnum>5</manvolnum>
-  </refmeta>
-
-  <refnamediv>
-    <refname>networkd.conf</refname>
-    <refname>networkd.conf.d</refname>
-    <refpurpose>Global Network configuration files</refpurpose>
-  </refnamediv>
-
-  <refsynopsisdiv>
-    <para><filename>/etc/systemd/networkd.conf</filename></para>
-    <para><filename>/etc/systemd/networkd.conf.d/*.conf</filename></para>
-    <para><filename>/usr/lib/systemd/networkd.conf.d/*.conf</filename></para>
-  </refsynopsisdiv>
-
-  <refsect1>
-    <title>Description</title>
-
-    <para>These configuration files control global network parameters.
-    For e.g. DHCP Unique Identifier (DUID).</para>
-
-  </refsect1>
-
-  <xi:include href="standard-conf.xml" xpointer="main-conf" />
-
-  <refsect1>
-    <title>[DUID] Section Options</title>
-
-    <para>This section configures the DUID value used by the DHCP protocol. The DUID value
-    specified here overrides the DUID that systemd-networkd generates using the machine-id
-    from the <filename>/etc/machine-id</filename> file.</para>
-
-    <para>The configured DHCP DUID should conform to the specification in 
-    <ulink url="http://tools.ietf.org/html/rfc3315#section-9">RFC 3315</ulink>,
-    <ulink url="http://tools.ietf.org/html/rfc6355">RFC 6355</ulink>. To configure IAID, see
-    <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum>
-    </citerefentry>.</para>
-
-    <para>The following options are available in <literal>[DUID]</literal> section:</para>
-
-    <variablelist class='network-directives'>
-
-      <varlistentry>
-        <term><varname>Type=</varname></term>
-        <listitem><para>The type of DUID specified in this section. The following values are
-        supported:</para>
-        <para>raw : If <literal>Type=raw</literal>, then <literal>RawData=</literal> specifies
-        the entire DUID. For e.g: <literal>RawData=00:02:00:00:ab:11:f9:2a:c2:77:29:f9:5c:00</literal>
-        specifies a 14 byte long DUID-EN ("00:02"), with enterprise number 43793 ("00:00:ab:11"),
-        and identifier value "f9:2a:c2:77:29:f9:5c:00".</para></listitem>
-      </varlistentry>
-
-      <varlistentry>
-        <term><varname>RawData=</varname></term>
-        <listitem><para>Specifies the DUID bytes as a single newline-terminated, hexadecimal
-        string, with each byte separated by a ':'.</para></listitem>
-      </varlistentry>
-
-    </variablelist>
-  </refsect1>
-
-  <refsect1>
-      <title>See Also</title>
-      <para>
-      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>systemd.network</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
-      <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-      </para>
-  </refsect1>
-
-</refentry>
index 73b9c0054364b95fcad96c5c7ddbd4f02ef62b4f..f2e715cf6f3b18af079275cabebec34dff3f7f45 100644 (file)
           understood to the base of 1024.</para>
         </listitem>
       </varlistentry>
-      <varlistentry>
-        <term><varname>IAIDValue=</varname></term>
-        <listitem>
-          <para>Identity Association Identifier for the interface. This is a 32-bit value specified in host byte order.</para>
-        </listitem>
-      </varlistentry>
     </variablelist>
   </refsect1>
 
index 1bef36885276f5abcbccee38de5a1c51df66e071..1d9ec7be827086ddb23641b7eae7c3f39b7fb022 100644 (file)
@@ -43,7 +43,7 @@ int dhcp_identifier_set_duid_en(struct duid *duid, size_t *len) {
         if (r < 0)
                 return r;
 
-        unaligned_write_be16(&duid->type, DHCP_DUID_TYPE_EN);
+        unaligned_write_be16(&duid->type, DHCP6_DUID_EN);
         unaligned_write_be32(&duid->en.pen, SYSTEMD_PEN);
 
         *len = sizeof(duid->type) + sizeof(duid->en);
index cb953cb4163bc2ffb7047ec52dd8c48a553a68dc..93f06f5938bed5d4732d067d586596345e1645f9 100644 (file)
 #include "sparse-endian.h"
 #include "unaligned.h"
 
-typedef enum DHCPDUIDType {
-        DHCP_DUID_TYPE_RAW       = 0,
-        DHCP_DUID_TYPE_LLT       = 1,
-        DHCP_DUID_TYPE_EN        = 2,
-        DHCP_DUID_TYPE_LL        = 3,
-        DHCP_DUID_TYPE_UUID      = 4,
-        _DHCP_DUID_TYPE_MAX,
-        _DHCP_DUID_TYPE_INVALID  = -1,
-} DHCPDUIDType;
-
 /* RFC 3315 section 9.1:
  *      A DUID can be no more than 128 octets long (not including the type code).
  */
 #define MAX_DUID_LEN 128
 
 struct duid {
-        be16_t type;
+        uint16_t type;
         union {
                 struct {
                         /* DHCP6_DUID_LLT */
@@ -71,32 +61,3 @@ struct duid {
 
 int dhcp_identifier_set_duid_en(struct duid *duid, size_t *len);
 int dhcp_identifier_set_iaid(int ifindex, uint8_t *mac, size_t mac_len, void *_id);
-
-static inline int dhcp_validate_duid_len(be16_t duid_type, size_t duid_len) {
-        struct duid d;
-
-        assert_return(duid_len > 0 && duid_len <= MAX_DUID_LEN, -EINVAL);
-
-        switch (be16toh(duid_type)) {
-        case DHCP_DUID_TYPE_LLT:
-                if (duid_len <= sizeof(d.llt))
-                        return -EINVAL;
-                break;
-        case DHCP_DUID_TYPE_EN:
-                if (duid_len != sizeof(d.en))
-                        return -EINVAL;
-                break;
-        case DHCP_DUID_TYPE_LL:
-                if (duid_len <= sizeof(d.ll))
-                        return -EINVAL;
-                break;
-        case DHCP_DUID_TYPE_UUID:
-                if (duid_len != sizeof(d.uuid))
-                        return -EINVAL;
-                break;
-        default:
-                /* accept unknown type in order to be forward compatible */
-                break;
-        }
-        return 0;
-}
index 2487c470ab7123b62a4ed25e77a196ff224f8620..ee4bdfb07ff4e1fdcbc8d4302dbf743d57af5350 100644 (file)
@@ -62,6 +62,13 @@ enum {
 #define DHCP6_REB_TIMEOUT                       10 * USEC_PER_SEC
 #define DHCP6_REB_MAX_RT                        600 * USEC_PER_SEC
 
+enum {
+        DHCP6_DUID_LLT                          = 1,
+        DHCP6_DUID_EN                           = 2,
+        DHCP6_DUID_LL                           = 3,
+        DHCP6_DUID_UUID                         = 4,
+};
+
 enum DHCP6State {
         DHCP6_STATE_STOPPED                     = 0,
         DHCP6_STATE_INFORMATION_REQUEST         = 1,
index 7c21f425912ba473e82ca8874cf00ffea1d47ff3..cb7252bbeb90657252151151cf168c2992cf8937 100644 (file)
@@ -335,34 +335,6 @@ int config_parse_hwaddr(const char *unit,
         return 0;
 }
 
-int config_parse_iaid_value(const char *unit,
-                            const char *filename,
-                            unsigned line,
-                            const char *section,
-                            unsigned section_line,
-                            const char *lvalue,
-                            int ltype,
-                            const char *rvalue,
-                            void *data,
-                            void *userdata) {
-        uint32_t iaid_value;
-        int r;
-
-        assert(filename);
-        assert(lvalue);
-        assert(rvalue);
-        assert(data);
-
-        if ((r = safe_atou32(rvalue, &iaid_value)) < 0) {
-                log_syntax(unit, LOG_ERR, filename, line, 0, "Unable to read IAID: %s", rvalue);
-                return r;
-        }
-
-        *((be32_t *)data) = htobe32(iaid_value);
-
-        return 0;
-}
-
 void serialize_in_addrs(FILE *f, const struct in_addr *addresses, size_t size) {
         unsigned i;
 
index d8b551e8ce5f60865234bf433a1651c812fea6f3..c8a531ab0f7ff7a331d1c938ffbccfda3af169d2 100644 (file)
@@ -62,10 +62,6 @@ int config_parse_ifalias(const char *unit, const char *filename, unsigned line,
                          const char *section, unsigned section_line, const char *lvalue,
                          int ltype, const char *rvalue, void *data, void *userdata);
 
-int config_parse_iaid_value(const char *unit, const char *filename, unsigned line,
-                            const char *section, unsigned section_line, const char *lvalue,
-                            int ltype, const char *rvalue, void *data, void *userdata);
-
 int net_get_unique_predictable_data(struct udev_device *device, uint64_t *result);
 const char *net_get_name(struct udev_device *device);
 
index b108e35386643cb8b47ef3774f4b884c82b9176e..1188b31500ae15d460c89b118e50383584d29153 100644 (file)
@@ -82,7 +82,7 @@ struct sd_dhcp_client {
                         } _packed_ ll;
                         struct {
                                 /* 255: Node-specific (RFC 4361) */
-                                be32_t iaid;
+                                uint32_t iaid;
                                 struct duid duid;
                         } _packed_ ns;
                         struct {
@@ -298,51 +298,6 @@ int sd_dhcp_client_set_client_id(sd_dhcp_client *client, uint8_t type,
         return 0;
 }
 
-int sd_dhcp_client_set_iaid_duid(sd_dhcp_client *client, be32_t iaid,
-                                 size_t duid_len, struct duid *duid) {
-        DHCP_CLIENT_DONT_DESTROY(client);
-        int r;
-        assert_return(client, -EINVAL);
-        zero(client->client_id);
-
-        client->client_id.type = 255;
-
-        /* If IAID is not configured, generate it. */
-        if (iaid == 0) {
-                r = dhcp_identifier_set_iaid(client->index, client->mac_addr,
-                                             client->mac_addr_len,
-                                             &client->client_id.ns.iaid);
-                if (r < 0)
-                        return r;
-        } else
-                client->client_id.ns.iaid = iaid;
-
-        /* If DUID is not configured, generate DUID-EN. */
-        if (duid_len == 0) {
-                r = dhcp_identifier_set_duid_en(&client->client_id.ns.duid,
-                                                &duid_len);
-                if (r < 0)
-                        return r;
-        } else {
-                r = dhcp_validate_duid_len(client->client_id.type,
-                                           duid_len - sizeof(client->client_id.type));
-                if (r < 0)
-                        return r;
-                memcpy(&client->client_id.ns.duid, duid, duid_len);
-        }
-
-        client->client_id_len = sizeof(client->client_id.type) + duid_len +
-                                sizeof(client->client_id.ns.iaid);
-
-        if (!IN_SET(client->state, DHCP_STATE_INIT, DHCP_STATE_STOPPED)) {
-                log_dhcp_client(client, "Configured IAID+DUID, restarting.");
-                client_stop(client, SD_DHCP_CLIENT_EVENT_STOP);
-                sd_dhcp_client_start(client);
-        }
-
-        return 0;
-}
-
 int sd_dhcp_client_set_hostname(sd_dhcp_client *client,
                                 const char *hostname) {
         char *new_hostname = NULL;
@@ -514,6 +469,7 @@ static int client_message_init(sd_dhcp_client *client, DHCPPacket **ret,
         if (client->arp_type == ARPHRD_ETHER)
                 memcpy(&packet->dhcp.chaddr, &client->mac_addr, ETH_ALEN);
 
+        /* If no client identifier exists, construct an RFC 4361-compliant one */
         if (client->client_id_len == 0) {
                 size_t duid_len;
 
index 7cecba120c1219fdb254a50cc797b6849fd7cce9..af4709d788a6e1114d047530a5bc7d504eacbe31 100644 (file)
@@ -180,30 +180,41 @@ static int client_ensure_duid(sd_dhcp6_client *client) {
         return dhcp_identifier_set_duid_en(&client->duid, &client->duid_len);
 }
 
-int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, size_t duid_len,
-                             struct duid *duid) {
-        int r;
+int sd_dhcp6_client_set_duid(
+                sd_dhcp6_client *client,
+                uint16_t type,
+                uint8_t *duid, size_t duid_len) {
         assert_return(client, -EINVAL);
-        assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
+        assert_return(duid, -EINVAL);
+        assert_return(duid_len > 0 && duid_len <= MAX_DUID_LEN, -EINVAL);
 
-        if (duid_len > 0) {
-                r = dhcp_validate_duid_len(duid->type,
-                                           duid_len - sizeof(duid->type));
-                if (r < 0)
-                        return r;
+        assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
 
-                memcpy(&client->duid, duid, duid_len);
-                client->duid_len = duid_len;
+        switch (type) {
+        case DHCP6_DUID_LLT:
+                if (duid_len <= sizeof(client->duid.llt))
+                        return -EINVAL;
+                break;
+        case DHCP6_DUID_EN:
+                if (duid_len != sizeof(client->duid.en))
+                        return -EINVAL;
+                break;
+        case DHCP6_DUID_LL:
+                if (duid_len <= sizeof(client->duid.ll))
+                        return -EINVAL;
+                break;
+        case DHCP6_DUID_UUID:
+                if (duid_len != sizeof(client->duid.uuid))
+                        return -EINVAL;
+                break;
+        default:
+                /* accept unknown type in order to be forward compatible */
+                break;
         }
 
-        return 0;
-}
-
-int sd_dhcp6_client_set_iaid(sd_dhcp6_client *client, be32_t iaid) {
-        assert_return(client, -EINVAL);
-        assert_return(IN_SET(client->state, DHCP6_STATE_STOPPED), -EBUSY);
-
-        client->ia_na.id = iaid;
+        client->duid.type = htobe16(type);
+        memcpy(&client->duid.raw.data, duid, duid_len);
+        client->duid_len = duid_len + sizeof(client->duid.type);
 
         return 0;
 }
diff --git a/src/network/networkd-conf.c b/src/network/networkd-conf.c
deleted file mode 100644 (file)
index 4bc92b8..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
-/***
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen <teg@jklm.no>
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
-
-#include <ctype.h>
-
-#include "conf-parser.h"
-#include "def.h"
-#include "dhcp-identifier.h"
-#include "networkd-conf.h"
-#include "string-table.h"
-
-int manager_parse_config_file(Manager *m) {
-        assert(m);
-
-        return config_parse_many(PKGSYSCONFDIR "/networkd.conf",
-                                 CONF_PATHS_NULSTR("systemd/networkd.conf.d"),
-                                 "DUID\0",
-                                 config_item_perf_lookup, networkd_gperf_lookup,
-                                 false, m);
-}
-
-static const char* const dhcp_duid_type_table[_DHCP_DUID_TYPE_MAX] = {
-        [DHCP_DUID_TYPE_RAW]  = "raw",
-        [DHCP_DUID_TYPE_LLT]  = "link-layer-time",
-        [DHCP_DUID_TYPE_EN]   = "vendor",
-        [DHCP_DUID_TYPE_LL]   = "link-layer",
-        [DHCP_DUID_TYPE_UUID] = "uuid"
-};
-DEFINE_PRIVATE_STRING_TABLE_LOOKUP_FROM_STRING(dhcp_duid_type, DHCPDUIDType);
-DEFINE_CONFIG_PARSE_ENUM(config_parse_dhcp_duid_type, dhcp_duid_type, DHCPDUIDType, "Failed to parse DHCP DUID type");
-
-int config_parse_dhcp_duid_raw(
-                const char *unit,
-                const char *filename,
-                unsigned line,
-                const char *section,
-                unsigned section_line,
-                const char *lvalue,
-                int ltype,
-                const char *rvalue,
-                void *data,
-                void *userdata) {
-        int r;
-        long byte;
-        char *cbyte, *pnext;
-        const char *pduid = (const char *)rvalue;
-        size_t count = 0, duid_len = 0;
-        Manager *m = userdata;
-
-        assert(filename);
-        assert(lvalue);
-        assert(rvalue);
-        assert(m);
-        assert(m->dhcp_duid_type != _DHCP_DUID_TYPE_INVALID);
-
-        switch (m->dhcp_duid_type) {
-        case DHCP_DUID_TYPE_LLT:
-                /* RawData contains DUID-LLT link-layer address (offset 6) */
-                duid_len = 6;
-                break;
-        case DHCP_DUID_TYPE_EN:
-                /* RawData contains DUID-EN identifier (offset 4) */
-                duid_len = 4;
-                break;
-        case DHCP_DUID_TYPE_LL:
-                /* RawData contains DUID-LL link-layer address (offset 2) */
-                duid_len = 2;
-                break;
-        case DHCP_DUID_TYPE_UUID:
-                /* RawData specifies UUID (offset 0) - fall thru */
-        case DHCP_DUID_TYPE_RAW:
-                /* First two bytes of RawData is DUID Type - fall thru */
-        default:
-                break;
-        }
-
-        if (m->dhcp_duid_type != DHCP_DUID_TYPE_RAW)
-                m->dhcp_duid.type = htobe16(m->dhcp_duid_type);
-
-        /* RawData contains DUID in format " NN:NN:NN... " */
-        while (true) {
-                r = extract_first_word(&pduid, &cbyte, ":", 0);
-                if (r < 0) {
-                        log_error("Failed to read DUID.");
-                        return -EINVAL;
-                }
-                if (r == 0)
-                        break;
-                if (duid_len >= MAX_DUID_LEN) {
-                        log_error("DUID length exceeds maximum length.");
-                        return -EINVAL;
-                }
-
-                errno = 0;
-                byte = strtol(cbyte, &pnext, 16);
-                if ((errno == ERANGE && (byte == LONG_MAX || byte == LONG_MIN))
-                    || (errno != 0 && byte == 0) || (cbyte == pnext)) {
-                        log_error("Invalid DUID byte: %s.", cbyte);
-                        return -EINVAL; 
-                }
-
-                /* If DHCP_DUID_TYPE_RAW, first two bytes holds DUID Type */
-                if ((m->dhcp_duid_type == DHCP_DUID_TYPE_RAW) && (count < 2)) {
-                        m->dhcp_duid.type |= (byte << (8 * count));
-                        count++;
-                        continue;
-                }
-
-                m->dhcp_duid.raw.data[duid_len++] = byte;
-        }
-
-        m->dhcp_duid_len = sizeof(m->dhcp_duid.type) + duid_len;
-
-        return 0;
-}
diff --git a/src/network/networkd-conf.h b/src/network/networkd-conf.h
deleted file mode 100644 (file)
index 6d9ce01..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
-#pragma once
-
-/***
-  This file is part of systemd.
-
-  Copyright 2014 Tom Gundersen <teg@jklm.no>
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include "networkd.h"
-
-
-int manager_parse_config_file(Manager *m);
-
-const struct ConfigPerfItem* networkd_gperf_lookup(const char *key, unsigned length);
-
-int config_parse_dhcp_duid_type(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
-int config_parse_dhcp_duid_raw(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
index 3bbb21295c19073481ee3f95f3420afb0205443d..68998eabf2dd65767411f472e83eb8be67e13785 100644 (file)
@@ -625,13 +625,7 @@ int dhcp4_configure(Link *link) {
 
         switch (link->network->dhcp_client_identifier) {
         case DHCP_CLIENT_ID_DUID:
-                /* If configured, apply user specified DUID and/or IAID */
-                r = sd_dhcp_client_set_iaid_duid(link->dhcp_client,
-                                                 link->network->iaid_value,
-                                                 link->manager->dhcp_duid_len,
-                                                 &link->manager->dhcp_duid);
-                if (r < 0)
-                        return r;
+                /* Library defaults to this. */
                 break;
         case DHCP_CLIENT_ID_MAC:
                 r = sd_dhcp_client_set_client_id(link->dhcp_client,
index 9f59cb3f8a2b0fbb1276bab30b9ec3292e7256a1..5f7a005c36a34b18d1b850012fb79d7c123b3211 100644 (file)
@@ -230,16 +230,6 @@ int dhcp6_configure(Link *link) {
         if (r < 0)
                 goto error;
 
-        r = sd_dhcp6_client_set_iaid(client, link->network->iaid_value);
-        if (r < 0)
-                goto error;
-
-        r = sd_dhcp6_client_set_duid(client,
-                                     link->manager->dhcp_duid_len,
-                                     &link->manager->dhcp_duid);
-        if (r < 0)
-                goto error;
-
         r = sd_dhcp6_client_set_index(client, link->ifindex);
         if (r < 0)
                 goto error;
diff --git a/src/network/networkd-gperf.gperf b/src/network/networkd-gperf.gperf
deleted file mode 100644 (file)
index 3ef4155..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-%{
-#include <stddef.h>
-#include "conf-parser.h"
-#include "networkd-conf.h"
-%}
-struct ConfigPerfItem;
-%null_strings
-%language=ANSI-C
-%define slot-name section_and_lvalue
-%define hash-function-name networkd_gperf_hash
-%define lookup-function-name networkd_gperf_lookup
-%readonly-tables
-%omit-struct-type
-%struct-type
-%includes
-%%
-DUID.Type,           config_parse_dhcp_duid_type,            0,            offsetof(Manager, dhcp_duid_type)
-DUID.RawData,        config_parse_dhcp_duid_raw,             0,            offsetof(Manager, dhcp_duid)
index 67b04560cd4a08b0197ca8bddd6b802578bc1f8c..ff4bd76554f56c8d00065d581443d9896cf94880 100644 (file)
@@ -2781,13 +2781,6 @@ int link_update(Link *link, sd_netlink_message *m) {
                                                            ARPHRD_ETHER);
                                 if (r < 0)
                                         return log_link_warning_errno(link, r, "Could not update MAC address in DHCP client: %m");
-
-                                r = sd_dhcp_client_set_iaid_duid(link->dhcp_client,
-                                                                 link->network->iaid_value,
-                                                                 link->manager->dhcp_duid_len,
-                                                                 &link->manager->dhcp_duid);
-                                if (r < 0)
-                                        return log_link_warning_errno(link, r, "Could not update DUID/IAID in DHCP client: %m");
                         }
 
                         if (link->dhcp6_client) {
@@ -2797,17 +2790,6 @@ int link_update(Link *link, sd_netlink_message *m) {
                                                             ARPHRD_ETHER);
                                 if (r < 0)
                                         return log_link_warning_errno(link, r, "Could not update MAC address in DHCPv6 client: %m");
-
-                                r = sd_dhcp6_client_set_iaid(link->dhcp6_client,
-                                                             link->network->iaid_value);
-                                if (r < 0)
-                                        return log_link_warning_errno(link, r, "Could not update DHCPv6 IAID: %m");
-
-                                r = sd_dhcp6_client_set_duid(link->dhcp6_client,
-                                                             link->manager->dhcp_duid_len,
-                                                             &link->manager->dhcp_duid);
-                                if (r < 0)
-                                        return log_link_warning_errno(link, r, "Could not update DHCPv6 DUID: %m");
                         }
                 }
         }
index 8d443f7b0f5427331c8edd5f4141d9a7b8619ae4..b8cb7f875dfe1bc0ce13e95573444fb8ebda89f3 100644 (file)
@@ -1037,8 +1037,6 @@ int manager_new(Manager **ret) {
         if (r < 0)
                 return r;
 
-        m->dhcp_duid_type = _DHCP_DUID_TYPE_INVALID;
-
         *ret = m;
         m = NULL;
 
index 7a9a136d5b33da5ef3f55019cccbd1d5fc4c62c0..a5d1714293536e67f31c96ab861602181834dfaa 100644 (file)
@@ -26,7 +26,6 @@ Match.KernelCommandLine,                config_parse_net_condition,
 Match.Architecture,                     config_parse_net_condition,                     CONDITION_ARCHITECTURE,        offsetof(Network, match_arch)
 Link.MACAddress,                        config_parse_hwaddr,                            0,                             offsetof(Network, mac)
 Link.MTUBytes,                          config_parse_iec_size,                          0,                             offsetof(Network, mtu)
-Link.IAIDValue,                         config_parse_iaid_value,                        0,                             offsetof(Network, iaid_value)
 Network.Description,                    config_parse_string,                            0,                             offsetof(Network, description)
 Network.Bridge,                         config_parse_netdev,                            0,                             offsetof(Network, bridge)
 Network.Bond,                           config_parse_netdev,                            0,                             offsetof(Network, bond)
index c5530cdfba083a3a2e486deb864b94eb439cb82d..4a13e2b574e6e2caedd172e1718f7e6b72acd015 100644 (file)
@@ -30,7 +30,6 @@ typedef struct Network Network;
 #include "networkd-route.h"
 #include "networkd-util.h"
 #include "networkd.h"
-#include "sparse-endian.h"
 
 #define DHCP_ROUTE_METRIC 1024
 #define IPV4LL_ROUTE_METRIC 2048
@@ -145,7 +144,6 @@ struct Network {
 
         struct ether_addr *mac;
         unsigned mtu;
-        be32_t iaid_value;
 
         LLDPMode lldp_mode; /* LLDP reception */
         bool lldp_emit;     /* LLDP transmission */
index c8f81a2ca60c2686fe37282ecd9886b55a6567af..3a2615e6fde7370329bff05047480ab0933947ec 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "capability-util.h"
 #include "networkd.h"
-#include "networkd-conf.h"
 #include "signal-util.h"
 #include "user-util.h"
 
@@ -90,10 +89,6 @@ int main(int argc, char *argv[]) {
                 goto out;
         }
 
-        r = manager_parse_config_file(m);
-        if (r < 0)
-                log_warning_errno(r, "Failed to parse configuration file: %m");
-
         r = manager_load_config(m);
         if (r < 0) {
                 log_error_errno(r, "Could not load configuration files: %m");
index d815f30610460755043143e7aa210743a589fc42..6bdd8302a0236f124d416372ce9393a62b7590d1 100644 (file)
@@ -35,7 +35,6 @@ typedef struct Manager Manager;
 #include "networkd-link.h"
 #include "networkd-network.h"
 #include "networkd-util.h"
-#include "dhcp-identifier.h"
 
 struct Manager {
         sd_netlink *rtnl;
@@ -62,10 +61,6 @@ struct Manager {
         LIST_HEAD(AddressPool, address_pools);
 
         usec_t network_dirs_ts_usec;
-
-        DHCPDUIDType dhcp_duid_type;
-        size_t dhcp_duid_len;
-        struct duid dhcp_duid;
 };
 
 extern const char* const network_dirs[];
index 7873cb1e0486cf81768d61e6fe21a4dab5aeb253..ef45370505dad6422cdaa762a9efc8de03989128 100644 (file)
@@ -27,7 +27,6 @@
 
 #include "sd-dhcp-lease.h"
 #include "sd-event.h"
-#include "sparse-endian.h"
 
 #include "_sd-common.h"
 
@@ -83,7 +82,6 @@ enum {
         SD_DHCP_OPTION_END                         = 255,
 };
 
-struct duid;
 typedef struct sd_dhcp_client sd_dhcp_client;
 
 typedef void (*sd_dhcp_client_callback_t)(sd_dhcp_client *client, int event,
@@ -100,8 +98,6 @@ int sd_dhcp_client_set_mac(sd_dhcp_client *client, const uint8_t *addr,
                            size_t addr_len, uint16_t arp_type);
 int sd_dhcp_client_set_client_id(sd_dhcp_client *client, uint8_t type,
                                  const uint8_t *data, size_t data_len);
-int sd_dhcp_client_set_iaid_duid(sd_dhcp_client *client, be32_t iaid,
-                                 size_t duid_len, struct duid *duid);
 int sd_dhcp_client_get_client_id(sd_dhcp_client *client, uint8_t *type,
                                  const uint8_t **data, size_t *data_len);
 int sd_dhcp_client_set_mtu(sd_dhcp_client *client, uint32_t mtu);
index ebdd0176284ae7cdf356d0f66798272b4f793ad2..1bedc941aa8670de337c741b6e71faf3e0a73468 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "sd-dhcp6-lease.h"
 #include "sd-event.h"
-#include "sparse-endian.h"
 
 #include "_sd-common.h"
 
@@ -75,7 +74,6 @@ enum {
         /* option codes 144-65535 are unassigned */
 };
 
-struct duid;
 typedef struct sd_dhcp6_client sd_dhcp6_client;
 
 typedef void (*sd_dhcp6_client_callback_t)(sd_dhcp6_client *client, int event,
@@ -87,9 +85,8 @@ int sd_dhcp6_client_set_index(sd_dhcp6_client *client, int interface_index);
 int sd_dhcp6_client_set_local_address(sd_dhcp6_client *client, const struct in6_addr *local_address);
 int sd_dhcp6_client_set_mac(sd_dhcp6_client *client, const uint8_t *addr,
                             size_t addr_len, uint16_t arp_type);
-int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, size_t duid_len,
-                             struct duid *duid);
-int sd_dhcp6_client_set_iaid(sd_dhcp6_client *client, be32_t iaid);
+int sd_dhcp6_client_set_duid(sd_dhcp6_client *client, uint16_t type, uint8_t *duid,
+                             size_t duid_len);
 int sd_dhcp6_client_set_information_request(sd_dhcp6_client *client, int enabled);
 int sd_dhcp6_client_get_information_request(sd_dhcp6_client *client, int *enabled);
 int sd_dhcp6_client_set_request_option(sd_dhcp6_client *client,