Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dhcp for openSUSE:Factory checked in at 2026-07-06 12:27:39 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dhcp (Old) and /work/SRC/openSUSE:Factory/.dhcp.new.1982 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dhcp" Mon Jul 6 12:27:39 2026 rev:145 rq:1363500 version:4.4.3.P1 Changes: -------- --- /work/SRC/openSUSE:Factory/dhcp/dhcp.changes 2025-04-25 22:18:24.205252168 +0200 +++ /work/SRC/openSUSE:Factory/.dhcp.new.1982/dhcp.changes 2026-07-06 12:28:07.674636940 +0200 @@ -1,0 +2,27 @@ +Thu Jul 2 12:31:44 UTC 2026 - Jorik Cronenberg <[email protected]> + +- Update dhcrelay script and service. + Due to some leftover calls to sysvinit tools the script no longer + worked. Now the script is a lot leaner and only implements the + sysconfig arg parsing and makes it more of a native systemd + service. + [bsc#1269228] + +------------------------------------------------------------------- +Sun Jun 28 19:33:58 UTC 2026 - Dirk Müller <[email protected]> + +- Update to version 4.4.3-P1: + * Corrected reference count leak in leasequery packets (CVE-2022-2928). + * Corrected memory leak in FQDN option unpacking (CVE-2022-2929). + * Added OMAPI timed function calls. + * Updated BIND libraries to version 9.11.36. + * Added support for DHCPv4 option v6-only-preferred (RFC 8925). +- Drop obsolete patches already included in version 4.4.3-P1: + * dhcp-CVE-2022-2928.patch + * dhcp-CVE-2022-2929.patch +- Refresh patches: + * 0009-dhcp-4.2.6-close-on-exec.patch + * 0015-Expose-next-server-DHCPv4-option-to-dhclient-script.patch + * 0016-infiniband-support.patch + +------------------------------------------------------------------- Old: ---- dhcp-4.4.2-P1.tar.gz dhcp-4.4.2-P1.tar.gz.asc dhcp-CVE-2022-2928.patch dhcp-CVE-2022-2929.patch New: ---- dhcp-4.4.3-P1.tar.gz dhcp-4.4.3-P1.tar.gz.asc ----------(Old B)---------- Old:- Drop obsolete patches already included in version 4.4.3-P1: * dhcp-CVE-2022-2928.patch * dhcp-CVE-2022-2929.patch Old: * dhcp-CVE-2022-2928.patch * dhcp-CVE-2022-2929.patch - Refresh patches: ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dhcp.spec ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.234691047 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.238691186 +0200 @@ -16,7 +16,7 @@ # -%define isc_version 4.4.2-P1 +%define isc_version 4.4.3-P1 #Compat macro for new _fillupdir macro introduced in Nov 2017 %if ! %{defined _fillupdir} %define _fillupdir %{_localstatedir}/adm/fillup-templates @@ -32,7 +32,7 @@ %bcond_with sysusers %endif Name: dhcp -Version: 4.4.2.P1 +Version: 4.4.3.P1 Release: 0 Summary: Common Files Used by ISC DHCP Software License: MPL-2.0 @@ -96,8 +96,6 @@ # PATCH-FIX-SLE dhcp-4.2.4-P1-interval bsc#947780 Patch20: 0020-dhcp-4.x.x-fixed-improper-lease-duration-checking.patch Patch21: 0021-dhcp-ip-family-symlinks.patch -Patch22: dhcp-CVE-2022-2928.patch -Patch23: dhcp-CVE-2022-2929.patch BuildRequires: automake BuildRequires: dos2unix BuildRequires: libtool @@ -219,8 +217,6 @@ %patch -P 18 -p1 %patch -P 20 %patch -P 21 -%patch -P 22 -%patch -P 23 ## find . -type f -name \*.cat\* -exec rm -f {} \; dos2unix contrib/ms2isc/* ++++++ 0009-dhcp-4.2.6-close-on-exec.patch ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.314693822 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.318693961 +0200 @@ -34,7 +34,7 @@ =================================================================== --- client/dhclient.c.orig +++ client/dhclient.c -@@ -683,7 +683,7 @@ main(int argc, char **argv) { +@@ -684,7 +684,7 @@ main(int argc, char **argv) { long temp; int e; @@ -43,7 +43,7 @@ e = fscanf(pidfd, "%ld\n", &temp); oldpid = (pid_t)temp; -@@ -3642,7 +3642,7 @@ void rewrite_client_leases () +@@ -3783,7 +3783,7 @@ void rewrite_client_leases () if (leaseFile != NULL) fclose (leaseFile); @@ -52,7 +52,7 @@ if (leaseFile == NULL) { log_error ("can't create %s: %m", path_dhclient_db); return; -@@ -3837,7 +3837,7 @@ write_duid(struct data_string *duid) +@@ -3978,7 +3978,7 @@ write_duid(struct data_string *duid) return DHCP_R_INVALIDARG; if (leaseFile == NULL) { /* XXX? */ @@ -61,7 +61,7 @@ if (leaseFile == NULL) { log_error("can't create %s: %m", path_dhclient_db); return ISC_R_IOERROR; -@@ -3882,7 +3882,7 @@ write_client6_lease(struct client_state +@@ -4023,7 +4023,7 @@ write_client6_lease(struct client_state return DHCP_R_INVALIDARG; if (leaseFile == NULL) { /* XXX? */ @@ -70,7 +70,7 @@ if (leaseFile == NULL) { log_error("can't create %s: %m", path_dhclient_db); return ISC_R_IOERROR; -@@ -4041,7 +4041,7 @@ int write_client_lease (client, lease, r +@@ -4182,7 +4182,7 @@ int write_client_lease (client, lease, r return 1; if (leaseFile == NULL) { /* XXX */ @@ -99,7 +99,7 @@ @@ -817,7 +817,7 @@ dlpiopen(const char *ifname) { } *dp = '\0'; - + - return open (devname, O_RDWR, 0); + return open (devname, O_RDWR | O_CLOEXEC, 0); } @@ -174,7 +174,7 @@ =================================================================== --- relay/dhcrelay.c.orig +++ relay/dhcrelay.c -@@ -783,13 +783,14 @@ main(int argc, char **argv) { +@@ -800,13 +800,14 @@ main(int argc, char **argv) { /* Create the pid file. */ if (no_pid_file == ISC_FALSE) { pfdesc = open(path_dhcrelay_pid, ++++++ 0015-Expose-next-server-DHCPv4-option-to-dhclient-script.patch ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.346694931 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.358695348 +0200 @@ -9,11 +9,11 @@ Signed-off-by: Tomas Hozza <[email protected]> References: bsc#928390 -diff --git a/client/dhclient.c b/client/dhclient.c -index 4d7394d..0c77ae2 100644 ---- a/client/dhclient.c -+++ b/client/dhclient.c -@@ -1104,7 +1104,7 @@ void state_selecting (cpp) +Index: dhcp-4.4.3-P1/client/dhclient.c +=================================================================== +--- dhcp-4.4.3-P1.orig/client/dhclient.c ++++ dhcp-4.4.3-P1/client/dhclient.c +@@ -1487,7 +1487,7 @@ void state_selecting (cpp) client -> state = S_REQUESTING; /* Bind to the address we received. */ @@ -22,7 +22,7 @@ return; } -@@ -1294,11 +1294,12 @@ void dhcpack (packet) +@@ -1690,11 +1690,12 @@ void dhcpack (packet) if (client -> new -> rebind < cur_time) client -> new -> rebind = TIME_MAX; @@ -37,7 +37,7 @@ { struct timeval tv; -@@ -1318,6 +1319,13 @@ void bind_lease (client) +@@ -1714,6 +1715,13 @@ void bind_lease (client) if (client->alias) script_write_params(client, "alias_", client->alias); @@ -49,22 +49,19 @@ + } + /* If the BOUND/RENEW code detects another machine using the - offered address, it exits nonzero. We need to send a - DHCPDECLINE and toss the lease. */ -diff --git a/includes/dhcpd.h b/includes/dhcpd.h -index 86d0afe..f0f4b20 100644 ---- a/includes/dhcpd.h -+++ b/includes/dhcpd.h -@@ -2891,7 +2891,7 @@ void state_bound (void *); - void state_stop (void *); - void state_panic (void *); + offered address, then per our man page it should exit with + a non-zero status, to which we send a DHCPDECLINE and toss +Index: dhcp-4.4.3-P1/includes/dhcpd.h +=================================================================== +--- dhcp-4.4.3-P1.orig/includes/dhcpd.h ++++ dhcp-4.4.3-P1/includes/dhcpd.h +@@ -3012,7 +3012,7 @@ uint32_t check_v6only (struct packet *, + void start_v6only (struct client_state *, uint32_t); + void finish_v6only (void *); -void bind_lease (struct client_state *); +void bind_lease (struct client_state *, struct in_addr *); void make_client_options (struct client_state *, struct client_lease *, u_int8_t *, --- -2.1.4 - ++++++ 0016-infiniband-support.patch ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.374695903 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.382696180 +0200 @@ -92,9 +92,9 @@ +} + #ifndef UNIT_TEST - static const char copyright[] = "Copyright 2004-2021 Internet Systems Consortium."; + static const char copyright[] = "Copyright 2004-2022 Internet Systems Consortium."; static const char arr [] = "All rights reserved."; -@@ -885,6 +919,26 @@ main(int argc, char **argv) { +@@ -886,6 +920,26 @@ main(int argc, char **argv) { } } @@ -121,42 +121,44 @@ /* At this point, all the interfaces that the script thinks are relevant should be running, so now we once again call discover_interfaces(), and this time ask it to actually set -@@ -899,19 +953,42 @@ main(int argc, char **argv) { - Not much entropy, but we're booting, so we're not likely to - find anything better. */ - seed = 0; -+ int seed_flag = 0; - for (ip = interfaces; ip; ip = ip->next) { - int junk; -+ if (ip->hw_address.hlen <= sizeof seed) -+ continue; - memcpy(&junk, - &ip->hw_address.hbuf[ip->hw_address.hlen - - sizeof seed], sizeof seed); - seed += junk; -+ seed_flag = 1; - } -- srandom(seed + cur_time + (unsigned)getpid()); -+ if ( seed_flag == 0 ) { -+ if ( backup_seed != 0 ) { -+ seed = backup_seed; -+ log_info ("xid: rand init seed (0x%x) built using all" -+ " available interfaces",seed); +@@ -913,21 +967,43 @@ main(int argc, char **argv) { + interface's hardware address interpreted as an integer. + Not much entropy, but we're booting, so we're not likely to + find anything better. */ +- ++ int seed_flag = 0; + for (ip = interfaces; ip; ip = ip->next) { + int junk; ++ if (ip->hw_address.hlen <= sizeof seed) ++ continue; + memcpy(&junk, + &ip->hw_address.hbuf[ip->hw_address.hlen - + sizeof seed], sizeof seed); + seed += junk; ++ seed_flag = 1; ++ } ++ if ( seed_flag == 0 ) { ++ if ( backup_seed != 0 ) { ++ seed = backup_seed; ++ log_info ("xid: rand init seed (0x%x) built using all" ++ " available interfaces",seed); ++ } ++ else { ++ seed = cur_time^((unsigned) gethostid()) ; ++ log_info ("xid: warning: no netdev with useable HWADDR found" ++ " for seed's uniqueness enforcement"); ++ log_info ("xid: rand init seed (0x%x) built using gethostid", ++ seed); ++ } ++ /* we only use seed and no current time as a broadcast reply */ ++ /* will certainly be used by the hwaddrless interface */ + } + else { -+ seed = cur_time^((unsigned) gethostid()) ; -+ log_info ("xid: warning: no netdev with useable HWADDR found" -+ " for seed's uniqueness enforcement"); -+ log_info ("xid: rand init seed (0x%x) built using gethostid", -+ seed); -+ } -+ /* we only use seed and no current time as a broadcast reply */ -+ /* will certainly be used by the hwaddrless interface */ -+ srandom(seed); -+ } -+ else -+ srandom(seed + cur_time + (unsigned)getpid()); - ++ seed += cur_time + (unsigned)getpid(); + } +- seed += cur_time + (unsigned)getpid(); + } + srandom(seed); /* * Establish a default DUID. We always do so for v6 and @@ -166,7 +168,7 @@ */ if ((local_family == AF_INET6) || ((local_family == AF_INET) && (duid_v4 == 1))) { -@@ -922,6 +999,20 @@ main(int argc, char **argv) { +@@ -938,6 +1014,20 @@ main(int argc, char **argv) { form_duid(&default_duid, MDL); write_duid(&default_duid); } @@ -187,7 +189,7 @@ } #if defined(DHCPv6) && defined(DHCP4o6) -@@ -1411,15 +1502,22 @@ void dhcpack (packet) +@@ -1527,15 +1617,22 @@ void dhcpack (packet) if (client -> xid == packet -> raw -> xid) break; } @@ -215,7 +217,7 @@ } if (client -> state != S_REBOOTING && -@@ -1432,9 +1530,10 @@ void dhcpack (packet) +@@ -1548,9 +1645,10 @@ void dhcpack (packet) return; } @@ -226,9 +228,9 @@ + piaddr (packet->client_addr), + client -> xid); - lease = packet_to_lease (packet, client); - if (!lease) { -@@ -2101,15 +2200,21 @@ void dhcpoffer (packet) + /* Check v6only first. */ + v6only_wait = check_v6only(packet, client); +@@ -2232,15 +2330,21 @@ void dhcpoffer (packet) /* If we're not receptive to an offer right now, or if the offer has an unrecognizable transaction id, then just drop it. */ if (!client || @@ -255,7 +257,7 @@ } sprintf (obuf, "%s of %s from %s", name, -@@ -2350,11 +2455,11 @@ void dhcpnak (packet) +@@ -2491,11 +2595,11 @@ void dhcpnak (packet) /* If we're not receptive to an offer right now, or if the offer has an unrecognizable transaction id, then just drop it. */ @@ -272,7 +274,7 @@ #if defined (DEBUG) log_debug ("DHCPNAK in wrong transaction."); #endif -@@ -2369,9 +2474,15 @@ void dhcpnak (packet) +@@ -2510,9 +2614,15 @@ void dhcpnak (packet) log_debug ("DHCPNAK in wrong state."); #endif return; @@ -289,7 +291,7 @@ if (!client -> active) { #if defined (DEBUG) -@@ -2504,11 +2615,11 @@ void send_discover (cpp) +@@ -2645,11 +2755,11 @@ void send_discover (cpp) (long)(client -> interval)); } else #endif @@ -306,7 +308,7 @@ /* Send out a packet. */ #if defined(DHCPv6) && defined(DHCP4o6) if (dhcpv4_over_dhcpv6) { -@@ -2901,10 +3012,12 @@ void send_request (cpp) +@@ -3042,10 +3152,12 @@ void send_request (cpp) } strncpy(rip_buf, rip_str, sizeof(rip_buf)-1); @@ -321,7 +323,7 @@ #if defined(DHCPv6) && defined(DHCP4o6) if (dhcpv4_over_dhcpv6) { -@@ -2961,11 +3074,11 @@ void send_decline (cpp) +@@ -3102,11 +3214,11 @@ void send_decline (cpp) log_info ("DHCPDECLINE"); } else #endif @@ -335,7 +337,7 @@ /* Send out a packet. */ #if defined(DHCPv6) && defined(DHCP4o6) -@@ -3024,11 +3137,11 @@ void send_release (cpp) +@@ -3165,11 +3277,11 @@ void send_release (cpp) log_info ("DHCPRELEASE"); } else #endif @@ -349,7 +351,7 @@ #if defined(DHCPv6) && defined(DHCP4o6) if (dhcpv4_over_dhcpv6) { -@@ -3305,10 +3418,17 @@ make_client_options(struct client_state +@@ -3446,10 +3558,17 @@ make_client_options(struct client_state * This can be overridden by including a client id in the configuration * file. */ @@ -368,7 +370,7 @@ memset(&client_identifier, 0, sizeof(client_identifier)); client_identifier.len = 1 + 4 + default_duid.len; if (!buffer_allocate(&client_identifier.buffer, -@@ -3399,12 +3519,13 @@ void make_discover (client, lease) +@@ -3540,12 +3659,13 @@ void make_discover (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; /* Assumes hw_address is known, otherwise a random value may result */ @@ -384,7 +386,7 @@ client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -3416,7 +3537,7 @@ void make_discover (client, lease) +@@ -3557,7 +3677,7 @@ void make_discover (client, lease) memset (&(client -> packet.siaddr), 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -393,7 +395,7 @@ memcpy (client -> packet.chaddr, &client -> interface -> hw_address.hbuf [1], (unsigned)(client -> interface -> hw_address.hlen - 1)); -@@ -3473,7 +3594,8 @@ void make_request (client, lease) +@@ -3614,7 +3734,8 @@ void make_request (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; /* Assumes hw_address is known, otherwise a random value may result */ @@ -403,7 +405,7 @@ client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ -@@ -3505,7 +3627,7 @@ void make_request (client, lease) +@@ -3646,7 +3767,7 @@ void make_request (client, lease) else memset (&client -> packet.giaddr, 0, sizeof client -> packet.giaddr); @@ -412,7 +414,7 @@ memcpy (client -> packet.chaddr, &client -> interface -> hw_address.hbuf [1], (unsigned)(client -> interface -> hw_address.hlen - 1)); -@@ -3548,7 +3670,8 @@ void make_decline (client, lease) +@@ -3689,7 +3810,8 @@ void make_decline (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; /* Assumes hw_address is known, otherwise a random value may result */ @@ -422,7 +424,7 @@ client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ -@@ -3565,9 +3688,10 @@ void make_decline (client, lease) +@@ -3706,9 +3828,10 @@ void make_decline (client, lease) memset (&client -> packet.siaddr, 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -436,7 +438,7 @@ #ifdef DEBUG_PACKET dump_raw ((unsigned char *)&client -> packet, client -> packet_length); -@@ -3610,7 +3734,8 @@ void make_release (client, lease) +@@ -3751,7 +3874,8 @@ void make_release (client, lease) client -> packet.op = BOOTREQUEST; client -> packet.htype = client -> interface -> hw_address.hbuf [0]; /* Assumes hw_address is known, otherwise a random value may result */ @@ -446,7 +448,7 @@ client -> packet.hops = 0; client -> packet.xid = random (); client -> packet.secs = 0; -@@ -3622,9 +3747,10 @@ void make_release (client, lease) +@@ -3763,9 +3887,10 @@ void make_release (client, lease) memset (&client -> packet.siaddr, 0, sizeof client -> packet.siaddr); client -> packet.giaddr = giaddr; @@ -460,7 +462,7 @@ #ifdef DEBUG_PACKET dump_raw ((unsigned char *)&client -> packet, client -> packet_length); -@@ -3777,17 +3903,13 @@ write_options(struct client_state *clien +@@ -3918,17 +4043,13 @@ write_options(struct client_state *clien * is not how it is intended. Upcoming rearchitecting the client should * address this "one daemon model." */ @@ -481,7 +483,7 @@ log_fatal("Impossible condition at %s:%d.", MDL); if ((ip->hw_address.hlen == 0) || -@@ -3837,6 +3959,13 @@ form_duid(struct data_string *duid, cons +@@ -3978,6 +4099,13 @@ form_duid(struct data_string *duid, cons } } @@ -495,7 +497,7 @@ /* Write the default DUID to the lease store. */ static isc_result_t write_duid(struct data_string *duid) -@@ -5276,7 +5405,8 @@ client_dns_update(struct client_state *c +@@ -5425,7 +5553,8 @@ client_dns_update(struct client_state *c NULL, client, client->sent_options, NULL, &global_scope, oc, MDL)) { @@ -600,11 +602,13 @@ =================================================================== --- common/dlpi.c.orig +++ common/dlpi.c -@@ -1343,7 +1343,9 @@ void maybe_setup_fallback () +@@ -1342,8 +1342,10 @@ void maybe_setup_fallback () + } #endif /* USE_DLPI_SEND */ - void +-void -get_hw_addr(const char *name, struct hardware *hw) { ++void +get_hw_addr(struct interface_info *info) { + const char *name = info->name; + struct hardware *hw = &info->hw_address; @@ -884,7 +888,7 @@ - memset(&tmp, 0, sizeof(tmp)); - strcpy(tmp.ifr_name, name); - if (ioctl(sock, SIOCGIFHWADDR, &tmp) < 0) { -- log_fatal("Error getting hardware address for \"%s\": %m", +- log_fatal("Error getting hardware address for \"%s\": %m", - name); + if (sll == NULL || sll->sll_halen >= sizeof(hw->hbuf)) { + freeifaddrs(ifaddrs); @@ -1017,7 +1021,7 @@ =================================================================== --- includes/dhcpd.h.orig +++ includes/dhcpd.h -@@ -1372,6 +1372,7 @@ struct interface_info { +@@ -1377,6 +1377,7 @@ struct interface_info { struct shared_network *shared_network; /* Networks connected to this interface. */ struct hardware hw_address; /* Its physical address. */ @@ -1025,7 +1029,7 @@ struct in_addr *addresses; /* Addresses associated with this * interface. */ -@@ -2641,7 +2642,7 @@ void print_dns_status (int, struct dhcp_ +@@ -2646,7 +2647,7 @@ void print_dns_status (int, struct dhcp_ #endif const char *print_time(TIME); ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.446698400 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.450698539 +0200 @@ -1,6 +1,6 @@ -mtime: 1745503861 -commit: c3bdae89bcef58482fdafcfe9235d3f47ca9d8161660ecb1851188c2948b6744 -url: https://src.opensuse.org/dhcp/dhcp.git -revision: c3bdae89bcef58482fdafcfe9235d3f47ca9d8161660ecb1851188c2948b6744 +mtime: 1782997184 +commit: 368351e22598fa3c66e040ca1358aebd315c53823e6a2a8f18324cf0454b4c96 +url: https://src.opensuse.org/dhcp/dhcp +revision: 368351e22598fa3c66e040ca1358aebd315c53823e6a2a8f18324cf0454b4c96 projectscmsync: https://src.opensuse.org/dhcp/_ObsPrj.git ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-07-02 14:59:44.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ dhcp-4.4.2-P1.tar.gz -> dhcp-4.4.3-P1.tar.gz ++++++ /work/SRC/openSUSE:Factory/dhcp/dhcp-4.4.2-P1.tar.gz /work/SRC/openSUSE:Factory/.dhcp.new.1982/dhcp-4.4.3-P1.tar.gz differ: char 5, line 1 ++++++ dhcrelay.script ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.834711857 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.842712135 +0200 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/sh # Copyright (c) 1996, 1997, 1998 S.u.S.E. GmbH # Copyright (c) 1998, 1999, 2000, 2001 SuSE GmbH # Copyright (c) 2002 SuSE Linux AG @@ -12,203 +12,43 @@ # ### -DHCPv_OPT=$1 ; shift +DHCPv_OPT=$1 case $DHCPv_OPT in --4) - DAEMON="ISC DHCPv4 relay agent" - DAEMON_BIN=/usr/sbin/dhcrelay - DAEMON_CONF=/etc/sysconfig/dhcrelay - DAEMON_PIDFILE=/run/dhcrelay.pid - STARTPROC_LOGFILE=/var/log/rc.dhcrelay.log - SUPPORTS_HUP="no" -;; --6) - DAEMON="ISC DHCPv6 relay agent" - DAEMON_BIN=/usr/sbin/dhcrelay6 - DAEMON_CONF=/etc/sysconfig/dhcrelay - DAEMON_PIDFILE=/run/dhcrelay6.pid - STARTPROC_LOGFILE=/var/log/rc.dhcrelay6.log -;; -*) - echo >&2 "Usage: $0 <-4|-6> <action>" - exit 2 -;; + -4) + DAEMON_BIN=/usr/sbin/dhcrelay + ;; + -6) + DAEMON_BIN=/usr/sbin/dhcrelay6 + ;; + *) + echo >&2 "Usage: $0 <-4|-6>" + exit 2 + ;; esac -test -s "$DAEMON_CONF" && . "$DAEMON_CONF" -if ! [ -x "$DAEMON_BIN" ]; then - case $1 in - stop) ;; - *) echo -n >&2 "$0: \"$DAEMON_BIN\" is not an executable file. Exiting." - case $1 in - status) exit 4 ;; - *) exit 5 ;; - esac - ;; - esac - exit 0 -fi - -# Return values acc. to LSB for all commands but status: -# 0 - success -# 1 - generic or unspecified error -# 2 - invalid or excess argument(s) -# 3 - unimplemented feature (e.g. "reload") -# 4 - insufficient privilege -# 5 - program is not installed -# 6 - program is not configured -# 7 - program is not running -# -# Note that starting an already running service, stopping -# or restarting a not-running service as well as the restart -# with force-reload (in case signalling is not supported) are -# considered a success. - -case "$1" in - start) - # FIXME: this check is pointless since systemd already do it. - echo -n "Starting $DAEMON" - checkproc -p $DAEMON_PIDFILE $DAEMON_BIN && { - echo -n "... already running"; exit 0; - } - - case $DHCPv_OPT in - -4) - ## If interfaces or servers are not set, skip starting of dhcrelay - ## and return with "program not configured" - if [ -z "$DHCRELAY_INTERFACES" -o -z "$DHCRELAY_SERVERS" ]; then - # service is not configured - exit 6; - fi - - DHCRELAY_INTERFACES_ARGS='' - for i in $DHCRELAY_INTERFACES ; do - DHCRELAY_INTERFACES_ARGS="$DHCRELAY_INTERFACES_ARGS -i $i" - done - - DHCRELAY_ARGS="$DHCRELAY_OPTIONS $DHCRELAY_INTERFACES_ARGS $DHCRELAY_SERVERS" - ;; - -6) - DHCRELAY6_LOWER_INTERFACES_ARGS='' - for l in $DHCRELAY6_LOWER_INTERFACES ; do - test "x$l" = x -o "x$l" = "x-l" && continue - DHCRELAY6_LOWER_INTERFACES_ARGS="$DHCRELAY6_LOWER_INTERFACES_ARGS -l $l" - done - DHCRELAY6_UPPER_INTERFACES_ARGS='' - for u in $DHCRELAY6_UPPER_INTERFACES ; do - test "x$u" = x -o "x$u" = "x-u" && continue - DHCRELAY6_UPPER_INTERFACES_ARGS="$DHCRELAY6_UPPER_INTERFACES_ARGS -u $u" - done - if [ "x$DHCRELAY6_LOWER_INTERFACES_ARGS" = x -o \ - "x$DHCRELAY6_UPPER_INTERFACES_ARGS" = x ]; then - # service is not configured - exit 6; - fi - DHCRELAY_ARGS="$DHCRELAY6_OPTIONS $DHCRELAY6_LOWER_INTERFACES_ARGS $DHCRELAY6_UPPER_INTERFACES_ARGS" - ;; - esac - ## Start daemon with startproc(8). If this fails - ## the echo return value is set appropriate. - - # startproc should return 0, even if service is - # already running to match LSB spec. - if [ "$2" = "-v" ]; then - echo - echo -n "executing '$DAEMON_BIN $DHCPv_OPT $DHCRELAY_ARGS'" - fi - startproc -q -l $STARTPROC_LOGFILE -p $DAEMON_PIDFILE $DAEMON_BIN $DHCPv_OPT $DHCRELAY_ARGS >/dev/null 2>&1 - rc=$? - if ! [ $rc -eq 0 ]; then - ## be verbose - echo "" - echo -n " please see $STARTPROC_LOGFILE for details " - ## set status to failed - exit 1 - fi - ;; - stop) - echo -n "Shutting down $DAEMON" - ## Stop daemon with killproc(8) and if this fails - ## set echo the echo return value. - - killproc -p $DAEMON_PIDFILE $DAEMON_BIN - ;; - try-restart) - ## Do a restart only if the service was active before. - ## Note: try-restart is now part of LSB (as of 1.9). - ## RH has a similar command named condrestart. - $0 status - if test $? = 0; then - $0 restart - fi - ;; - restart) - ## Stop the service and regardless of whether it was - ## running or not, start it again. - $0 stop - sleep 1 - $0 start - ;; - force-reload) - ## Signal the daemon to reload its config. Most daemons - ## do this on signal 1 (SIGHUP). - ## If it does not support it, restart. - - $0 stop && sleep 1 && $0 start || exit +test -s /etc/sysconfig/dhcrelay && . /etc/sysconfig/dhcrelay - echo -n "Reload service $DAEMON" - - if [ "$SUPPORTS_HUP" = "yes" ] ; then - killproc -p $DAEMON_PIDFILE -HUP $DAEMON_BIN - #touch $DAEMON_PIDFILE - else - $0 stop && $0 start - fi - ;; - reload) - ## Like force-reload, but if daemon does not support - ## signalling, do nothing (!) - - if [ "$SUPPORTS_HUP" = "yes" ] ; then - # If it supports signalling: - echo -n "Reload service $DAEMON" - killproc -p $DAEMON_PIDFILE -HUP $DAEMON_BIN - #touch $DAEMON_PIDFILE - else - ## Otherwise if it does not support reload: - exit 3 - fi - ;; - status) - echo -n "Checking for dhcp relay agent: " - ## Check status with checkproc(8), if process is running - ## checkproc will return with exit status 0. - - # Status has a slightly different for the status command: - # 0 - service running - # 1 - service dead, but /run/ pid file exists - # 2 - service dead, but /var/lock/ lock file exists - # 3 - service not running - - # NOTE: checkproc returns LSB compliant status values. - checkproc -p $DAEMON_PIDFILE $DAEMON_BIN - ;; - probe) - ## Optional: Probe for the necessity of a reload, - ## give out the argument which is required for a reload. - - if [ "$DAEMON_CONF" -nt "$DAEMON_PIDFILE" ]; then - if [ "$SUPPORTS_HUP" = "yes" ]; then - echo reload - else - echo restart - fi - fi - ;; - *) - SCRIPT="${SCRIPT:-${0##*/} $DHCPv_OPT}" - echo "Usage: $SCRIPT {start|stop|status|try-restart|restart|force-reload|reload|probe} [-v]" - exit 1 - ;; +case $DHCPv_OPT in + -4) + [ -n "$DHCRELAY_INTERFACES" ] && [ -n "$DHCRELAY_SERVERS" ] || exit 6 + args="" + for i in $DHCRELAY_INTERFACES; do + args="$args -i $i" + done + exec "$DAEMON_BIN" -4 -d $DHCRELAY_OPTIONS $args $DHCRELAY_SERVERS + ;; + -6) + lower="" upper="" + for l in $DHCRELAY6_LOWER_INTERFACES; do + test "x$l" = x -o "x$l" = "x-l" && continue + lower="$lower -l $l" + done + for u in $DHCRELAY6_UPPER_INTERFACES; do + test "x$u" = x -o "x$u" = "x-u" && continue + upper="$upper -u $u" + done + [ -n "$lower" ] && [ -n "$upper" ] || exit 6 + exec "$DAEMON_BIN" -6 -d $DHCRELAY6_OPTIONS $lower $upper + ;; esac ++++++ dhcrelay.service ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.862712829 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.870713106 +0200 @@ -13,15 +13,12 @@ ProtectKernelLogs=true ProtectControlGroups=true RestrictRealtime=true -# end of automatic additions -Type=forking -Restart=on-abort -ExecStart=@LIBEXECDIR@/dhcp/dhcrelay -4 start -ExecStop=@LIBEXECDIR@/dhcp/dhcrelay -4 stop -PIDFile=/run/dhcrelay.pid +# end of automatic additions +Type=exec +Restart=on-failure +ExecStart=@LIBEXECDIR@/dhcp/dhcrelay -4 [Install] WantedBy=multi-user.target Alias=dhcp-relay.service - ++++++ dhcrelay6.service ++++++ --- /var/tmp/diff_new_pack.Okgqtu/_old 2026-07-06 12:28:09.902714216 +0200 +++ /var/tmp/diff_new_pack.Okgqtu/_new 2026-07-06 12:28:09.906714355 +0200 @@ -13,14 +13,12 @@ ProtectKernelLogs=true ProtectControlGroups=true RestrictRealtime=true -# end of automatic additions -Type=forking -Restart=on-abort -ExecStart=@LIBEXECDIR@/dhcp/dhcrelay -6 start -ExecStop=@LIBEXECDIR@/dhcp/dhcrelay -6 stop +# end of automatic additions +Type=exec +Restart=on-failure +ExecStart=@LIBEXECDIR@/dhcp/dhcrelay -6 [Install] WantedBy=multi-user.target Alias=dhcp6-relay.service -
