diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/admin.scm | 1 | ||||
-rw-r--r-- | gnu/packages/patches/isc-dhcp-gcc-compat.patch | 72 |
3 files changed, 74 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index cd76ba88cf..7dd3d9ed38 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1253,6 +1253,7 @@ dist_patch_DATA = \ %D%/packages/patches/iputils-libcap-compat.patch \ %D%/packages/patches/ipxe-reproducible-geniso.patch \ %D%/packages/patches/irrlicht-use-system-libs.patch \ + %D%/packages/patches/isc-dhcp-gcc-compat.patch \ %D%/packages/patches/isl-0.11.1-aarch64-support.patch \ %D%/packages/patches/json-c-CVE-2020-12762.patch \ %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 52851c9d80..f97be3c735 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1152,6 +1152,7 @@ connection alive.") (method url-fetch) (uri (string-append "https://ftp.isc.org/isc/dhcp/" version "/dhcp-" version ".tar.gz")) + (patches (search-patches "isc-dhcp-gcc-compat.patch")) (sha256 (base32 "06jsr0cg5rsmyibshrpcb9za0qgwvqccashdma7mlm1rflrh8pmh")))) diff --git a/gnu/packages/patches/isc-dhcp-gcc-compat.patch b/gnu/packages/patches/isc-dhcp-gcc-compat.patch new file mode 100644 index 0000000000..82cb572d17 --- /dev/null +++ b/gnu/packages/patches/isc-dhcp-gcc-compat.patch @@ -0,0 +1,72 @@ +Add minor fixes for compiling with GCC 10. + +Taken from upstream: +https://gitlab.isc.org/isc-projects/dhcp/-/commit/6c7e61578b1b449272dbb40dd8b98d03dad8a57a + +diff --git a/client/dhclient.c b/client/dhclient.c +--- a/client/dhclient.c ++++ b/client/dhclient.c +@@ -83,8 +83,9 @@ static const char message [] = "Internet Systems Consortium DHCP Client"; + static const char url [] = "For info, please visit https://www.isc.org/software/dhcp/"; + #endif /* UNIT_TEST */ + +-u_int16_t local_port = 0; +-u_int16_t remote_port = 0; ++extern u_int16_t local_port; ++extern u_int16_t remote_port; ++ + #if defined(DHCPv6) && defined(DHCP4o6) + int dhcp4o6_state = -1; /* -1 = stopped, 0 = polling, 1 = started */ + #endif +diff --git a/common/discover.c b/common/discover.c +--- a/common/discover.c ++++ b/common/discover.c +@@ -45,8 +45,8 @@ struct interface_info *fallback_interface = 0; + + int interfaces_invalidated; + int quiet_interface_discovery; +-u_int16_t local_port; +-u_int16_t remote_port; ++u_int16_t local_port = 0; ++u_int16_t remote_port = 0; + u_int16_t relay_port = 0; + int dhcpv4_over_dhcpv6 = 0; + int (*dhcp_interface_setup_hook) (struct interface_info *, struct iaddr *); +diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c +--- a/relay/dhcrelay.c ++++ b/relay/dhcrelay.c +@@ -95,8 +95,8 @@ enum { forward_and_append, /* Forward and append our own relay option. */ + forward_untouched, /* Forward without changes. */ + discard } agent_relay_mode = forward_and_replace; + +-u_int16_t local_port; +-u_int16_t remote_port; ++extern u_int16_t local_port; ++extern u_int16_t remote_port; + + /* Relay agent server list. */ + struct server_list { +diff --git a/server/mdb.c b/server/mdb.c +--- a/server/mdb.c ++++ b/server/mdb.c +@@ -67,7 +67,7 @@ static host_id_info_t *host_id_info = NULL; + + int numclasseswritten; + +-omapi_object_type_t *dhcp_type_host; ++extern omapi_object_type_t *dhcp_type_host; + + isc_result_t enter_class(cd, dynamicp, commit) + struct class *cd; +diff --git a/server/mdb6.c b/server/mdb6.c +--- a/server/mdb6.c ++++ b/server/mdb6.c +@@ -1945,7 +1945,7 @@ create_prefix6(struct ipv6_pool *pool, struct iasubopt **pref, + } + new_ds.data = new_ds.buffer->data; + memcpy(new_ds.buffer->data, ds.data, ds.len); +- memcpy(new_ds.buffer->data + ds.len, &tmp, sizeof(tmp)); ++ memcpy(&new_ds.buffer->data[0] + ds.len, &tmp, sizeof(tmp)); + data_string_forget(&ds, MDL); + data_string_copy(&ds, &new_ds, MDL); + data_string_forget(&new_ds, MDL); |