Compare commits
74 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
296b65af2c | ||
|
|
d900da1822 | ||
|
|
2d6dab7b83 | ||
|
|
7716face33 | ||
|
|
42af780724 | ||
|
|
696d558837 | ||
|
|
b90c696929 | ||
|
|
c19a20e0d2 | ||
|
|
5f057ac436 | ||
|
|
2b135856ff | ||
|
|
5b60d71c11 | ||
|
|
baddcc1dad | ||
|
|
214610d603 | ||
|
|
e226f99ab0 | ||
|
|
abc5de5e2f | ||
|
|
62019bf483 | ||
|
|
5a0c1922de | ||
|
|
dd209c46b7 | ||
|
|
098933dca6 | ||
|
|
51194ddffd | ||
|
|
16c600305d | ||
|
|
2d94f9ef33 | ||
|
|
a8f6fd046f | ||
|
|
fa1179c358 | ||
|
|
fea3ac58b8 | ||
|
|
b5f71e36b3 | ||
|
|
7feba5cd94 | ||
|
|
fba7be377e | ||
|
|
da1223a729 | ||
|
|
2d23651b7b | ||
|
|
bd690b3286 | ||
|
|
6b289fd561 | ||
|
|
607f51280f | ||
|
|
a06a2d7955 | ||
|
|
8aeac5698d | ||
|
|
b7f08e9d5c | ||
|
|
dd065a0383 | ||
|
|
a70726e79d | ||
|
|
8c5f5bc2cd | ||
|
|
3f2a7ed9d0 | ||
|
|
2ddbb6f595 | ||
|
|
cff4bf28aa | ||
|
|
e29bd9e41d | ||
|
|
335ae6175d | ||
|
|
def209d1bf | ||
|
|
5fe96d93a8 | ||
|
|
80b3b1b833 | ||
|
|
b58c84c8bc | ||
|
|
c12398419a | ||
|
|
b5d7414e60 | ||
|
|
9c49c9e94d | ||
|
|
6f96789cfe | ||
|
|
5e20bf9fe8 | ||
|
|
b25b19a69e | ||
|
|
ae914ba174 | ||
|
|
46009ca7f8 | ||
|
|
526575adf5 | ||
|
|
b90ab3805f | ||
|
|
3d764025de |
||
|
|
7e91f4486a | ||
|
|
3a1ddbf1a8 | ||
|
|
0e7c243078 | ||
|
|
16ffa6d5b2 | ||
|
|
5f0e7106e0 | ||
|
|
e1b36493ac | ||
|
|
b7088d6e78 | ||
|
|
7c09728712 | ||
|
|
21108f4b78 | ||
|
|
44ee4486c5 | ||
|
|
546da8152c | ||
|
|
3ccf3c8d81 | ||
|
|
b9f5d7a98b | ||
|
|
ba9bdacde1 | ||
|
|
dee6f0c9de |
63 changed files with 4521 additions and 4572 deletions
1
.fmf/version
Normal file
1
.fmf/version
Normal file
|
|
@ -0,0 +1 @@
|
|||
1
|
||||
8
.gitignore
vendored
8
.gitignore
vendored
|
|
@ -2,3 +2,11 @@
|
|||
/dhcp-4.3.5.tar.gz
|
||||
/dhcp-4.3.6b1.tar.gz
|
||||
/dhcp-4.3.6.tar.gz
|
||||
/dhcp-4.4.1.tar.gz
|
||||
/dhcp-4.4.2b1.tar.gz
|
||||
/dhcp-4.4.2-P1.tar.gz
|
||||
/dhcp-4.4.2-P1.tar.gz.asc
|
||||
/dhcp-4.4.3.tar.gz
|
||||
/dhcp-4.4.3.tar.gz.asc
|
||||
/dhcp-4.4.3-P1.tar.gz
|
||||
/dhcp-4.4.3-P1.tar.gz.asc
|
||||
|
|
|
|||
|
|
@ -1,7 +1,17 @@
|
|||
diff -up dhcp-4.3.5/omapip/errwarn.c.errwarn dhcp-4.3.5/omapip/errwarn.c
|
||||
--- dhcp-4.3.5/omapip/errwarn.c.errwarn 2016-09-27 21:16:50.000000000 +0200
|
||||
+++ dhcp-4.3.5/omapip/errwarn.c 2016-11-29 19:44:03.515031147 +0100
|
||||
@@ -49,6 +49,41 @@ void (*log_cleanup) (void);
|
||||
From 5e9162c5ad7aa98f7f673ac7a7f46905ba2deea4 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:09:57 +0100
|
||||
Subject: [PATCH 01/28] change bug url
|
||||
|
||||
---
|
||||
omapip/errwarn.c | 47 ++++++++++++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 42 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/omapip/errwarn.c b/omapip/errwarn.c
|
||||
index 38dd9c5..d88e392 100644
|
||||
--- a/omapip/errwarn.c
|
||||
+++ b/omapip/errwarn.c
|
||||
@@ -48,6 +48,41 @@ void (*log_cleanup) (void);
|
||||
static char mbuf [CVT_BUF_MAX + 1];
|
||||
static char fbuf [CVT_BUF_MAX + 1];
|
||||
|
||||
|
|
@ -43,7 +53,7 @@ diff -up dhcp-4.3.5/omapip/errwarn.c.errwarn dhcp-4.3.5/omapip/errwarn.c
|
|||
/* Log an error message, then exit... */
|
||||
|
||||
void log_fatal (const char * fmt, ... )
|
||||
@@ -75,11 +110,13 @@ void log_fatal (const char * fmt, ... )
|
||||
@@ -74,11 +109,13 @@ void log_fatal (const char * fmt, ... )
|
||||
}
|
||||
|
||||
log_error ("%s", "");
|
||||
|
|
@ -62,3 +72,6 @@ diff -up dhcp-4.3.5/omapip/errwarn.c.errwarn dhcp-4.3.5/omapip/errwarn.c
|
|||
log_error ("%s", "");
|
||||
log_error ("exiting.");
|
||||
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,8 +1,22 @@
|
|||
From af18c830fe55f6be0b89997a36b611d981e3c25d Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:19:47 +0100
|
||||
Subject: [PATCH 02/28] additional dhclient options
|
||||
|
||||
---
|
||||
client/clparse.c | 10 +-
|
||||
client/dhclient.8 | 27 +++++
|
||||
client/dhclient.c | 271 +++++++++++++++++++++++++++++++++++++++++++-
|
||||
common/conflex.c | 2 +
|
||||
includes/dhcpd.h | 3 +
|
||||
includes/dhctoken.h | 3 +-
|
||||
6 files changed, 309 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/client/clparse.c b/client/clparse.c
|
||||
index 03190c3..2033427 100644
|
||||
index 74ca499..bb63825 100644
|
||||
--- a/client/clparse.c
|
||||
+++ b/client/clparse.c
|
||||
@@ -189,6 +189,7 @@ isc_result_t read_client_conf ()
|
||||
@@ -192,6 +192,7 @@ isc_result_t read_client_conf ()
|
||||
/* Requested lease time, used by DHCPv6 (DHCPv4 uses the option cache)
|
||||
*/
|
||||
top_level_config.requested_lease = 7200;
|
||||
|
|
@ -10,7 +24,7 @@ index 03190c3..2033427 100644
|
|||
|
||||
group_allocate (&top_level_config.on_receipt, MDL);
|
||||
if (!top_level_config.on_receipt)
|
||||
@@ -394,7 +395,8 @@ void read_client_leases ()
|
||||
@@ -397,7 +398,8 @@ void read_client_leases ()
|
||||
interface-declaration |
|
||||
LEASE client-lease-statement |
|
||||
ALIAS client-lease-statement |
|
||||
|
|
@ -20,7 +34,7 @@ index 03190c3..2033427 100644
|
|||
|
||||
void parse_client_statement (cfile, ip, config)
|
||||
struct parse *cfile;
|
||||
@@ -817,6 +819,12 @@ void parse_client_statement (cfile, ip, config)
|
||||
@@ -820,6 +822,12 @@ void parse_client_statement (cfile, ip, config)
|
||||
parse_lease_id_format(cfile);
|
||||
break;
|
||||
|
||||
|
|
@ -34,10 +48,10 @@ index 03190c3..2033427 100644
|
|||
default:
|
||||
lose = 0;
|
||||
diff --git a/client/dhclient.8 b/client/dhclient.8
|
||||
index 24f8f12..aa2238d 100644
|
||||
index 861ff56..5029dac 100644
|
||||
--- a/client/dhclient.8
|
||||
+++ b/client/dhclient.8
|
||||
@@ -134,6 +134,33 @@ dhclient - Dynamic Host Configuration Protocol Client
|
||||
@@ -135,6 +135,33 @@ dhclient - Dynamic Host Configuration Protocol Client
|
||||
.B -w
|
||||
]
|
||||
[
|
||||
|
|
@ -72,12 +86,12 @@ index 24f8f12..aa2238d 100644
|
|||
.I seconds
|
||||
]
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index dcf3f1a..270a960 100644
|
||||
index 46dc3a7..6c1c09a 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -40,6 +40,12 @@
|
||||
#include <isc/file.h>
|
||||
#include <dns/result.h>
|
||||
@@ -41,6 +41,12 @@
|
||||
#include <sys/wait.h>
|
||||
#include <limits.h>
|
||||
|
||||
+/*
|
||||
+ * Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define
|
||||
|
|
@ -88,7 +102,7 @@ index dcf3f1a..270a960 100644
|
|||
TIME default_lease_time = 43200; /* 12 hours... */
|
||||
TIME max_lease_time = 86400; /* 24 hours... */
|
||||
|
||||
@@ -101,6 +107,10 @@ char *mockup_relay = NULL;
|
||||
@@ -113,6 +119,10 @@ char *mockup_relay = NULL;
|
||||
|
||||
char *progname = NULL;
|
||||
|
||||
|
|
@ -99,25 +113,27 @@ index dcf3f1a..270a960 100644
|
|||
void run_stateless(int exit_mode, u_int16_t port);
|
||||
|
||||
static isc_result_t write_duid(struct data_string *duid);
|
||||
@@ -179,7 +189,11 @@ usage(const char *sfmt, const char *sarg)
|
||||
" [-s server-addr] [-cf config-file]\n"
|
||||
" [-df duid-file] [-lf lease-file]\n"
|
||||
" [-pf pid-file] [--no-pid] [-e VAR=val]\n"
|
||||
- " [-sf script-file] [interface]*",
|
||||
+ " [-sf script-file] [interface]*\n"
|
||||
+ " [-C <dhcp-client-identifier>] [-B]\n"
|
||||
+ " [-H <host-name> | -F <fqdn.fqdn>] [--timeout <timeout>]\n"
|
||||
+ " [-V <vendor-class-identifier>]\n"
|
||||
+ " [--request-options <request option list>]",
|
||||
isc_file_basename(progname));
|
||||
}
|
||||
@@ -189,8 +199,12 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s";
|
||||
" [-s server-addr] [-cf config-file]\n" \
|
||||
" [-df duid-file] [-lf lease-file]\n" \
|
||||
" [-pf pid-file] [--no-pid] [-e VAR=val]\n" \
|
||||
-" [-sf script-file] [interface]*"
|
||||
-
|
||||
+" [-sf script-file] [interface]*\n" \
|
||||
+" [-C <dhcp-client-identifier>] [-B]\n" \
|
||||
+" [-H <host-name> | -F <fqdn.fqdn>] [--timeout <timeout>]\n" \
|
||||
+" [-V <vendor-class-identifier>]\n" \
|
||||
+" [--request-options <request option list>]"
|
||||
+
|
||||
#define DHCLIENT_USAGEH "{--version|--help|-h}"
|
||||
|
||||
@@ -216,6 +230,16 @@ main(int argc, char **argv) {
|
||||
static void
|
||||
@@ -249,6 +263,16 @@ main(int argc, char **argv) {
|
||||
#else
|
||||
progname = argv[0];
|
||||
#endif
|
||||
|
||||
+ char *dhcp_client_identifier_arg = NULL;
|
||||
+ char *dhcp_host_name_arg = NULL;
|
||||
+ char *dhcp_client_identifier_arg = NULL;
|
||||
+ char *dhcp_host_name_arg = NULL;
|
||||
+ char *dhcp_fqdn_arg = NULL;
|
||||
+ char *dhcp_vendor_class_identifier_arg = NULL;
|
||||
+ char *dhclient_request_options = NULL;
|
||||
|
|
@ -129,10 +145,10 @@ index dcf3f1a..270a960 100644
|
|||
/* Initialize client globals. */
|
||||
memset(&default_duid, 0, sizeof(default_duid));
|
||||
|
||||
@@ -442,6 +466,88 @@ main(int argc, char **argv) {
|
||||
strlen(PACKAGE_VERSION)));
|
||||
IGNORE_RET(write(STDERR_FILENO, "\n", 1));
|
||||
exit(0);
|
||||
@@ -564,6 +588,89 @@ main(int argc, char **argv) {
|
||||
std_dhcid = 1;
|
||||
} else if (!strcmp(argv[i], "-v")) {
|
||||
quiet = 0;
|
||||
+ } else if (!strcmp(argv[i], "-C")) {
|
||||
+ if ((++i == argc) || (argv[i] == NULL) || (*(argv[i])=='\0')) {
|
||||
+ usage(use_noarg, argv[i-1]);
|
||||
|
|
@ -215,10 +231,11 @@ index dcf3f1a..270a960 100644
|
|||
+ }
|
||||
+
|
||||
+ dhclient_request_options = argv[i];
|
||||
+
|
||||
} else if (argv[i][0] == '-') {
|
||||
usage("Unknown command: %s", argv[i]);
|
||||
} else if (interfaces_requested < 0) {
|
||||
@@ -641,6 +747,156 @@ main(int argc, char **argv) {
|
||||
@@ -760,6 +867,156 @@ main(int argc, char **argv) {
|
||||
/* Parse the dhclient.conf file. */
|
||||
read_client_conf();
|
||||
|
||||
|
|
@ -375,7 +392,7 @@ index dcf3f1a..270a960 100644
|
|||
/* Parse the lease database. */
|
||||
read_client_leases();
|
||||
|
||||
@@ -3092,7 +3348,8 @@ void make_discover (client, lease)
|
||||
@@ -3472,7 +3729,8 @@ void make_discover (client, lease)
|
||||
client -> packet.xid = random ();
|
||||
client -> packet.secs = 0; /* filled in by send_discover. */
|
||||
|
||||
|
|
@ -385,7 +402,7 @@ index dcf3f1a..270a960 100644
|
|||
client -> packet.flags = 0;
|
||||
else
|
||||
client -> packet.flags = htons (BOOTP_BROADCAST);
|
||||
@@ -3177,7 +3434,9 @@ void make_request (client, lease)
|
||||
@@ -3557,7 +3815,9 @@ void make_request (client, lease)
|
||||
} else {
|
||||
memset (&client -> packet.ciaddr, 0,
|
||||
sizeof client -> packet.ciaddr);
|
||||
|
|
@ -396,7 +413,7 @@ index dcf3f1a..270a960 100644
|
|||
client -> packet.flags = 0;
|
||||
else
|
||||
client -> packet.flags = htons (BOOTP_BROADCAST);
|
||||
@@ -3240,7 +3499,8 @@ void make_decline (client, lease)
|
||||
@@ -3620,7 +3880,8 @@ void make_decline (client, lease)
|
||||
client -> packet.hops = 0;
|
||||
client -> packet.xid = client -> xid;
|
||||
client -> packet.secs = 0; /* Filled in by send_request. */
|
||||
|
|
@ -407,7 +424,7 @@ index dcf3f1a..270a960 100644
|
|||
else
|
||||
client -> packet.flags = htons (BOOTP_BROADCAST);
|
||||
diff --git a/common/conflex.c b/common/conflex.c
|
||||
index fe994ac..bdb4a52 100644
|
||||
index 8b01dfb..1fa2be3 100644
|
||||
--- a/common/conflex.c
|
||||
+++ b/common/conflex.c
|
||||
@@ -832,6 +832,8 @@ intern(char *atom, enum dhcp_token dfv) {
|
||||
|
|
@ -420,10 +437,10 @@ index fe994ac..bdb4a52 100644
|
|||
case 'c':
|
||||
if (!strcasecmp(atom + 1, "ase"))
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index eab09a6..cfdac23 100644
|
||||
index f68b228..3b2e2ca 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -1251,6 +1251,9 @@ struct client_config {
|
||||
@@ -1284,6 +1284,9 @@ struct client_config {
|
||||
|
||||
int lease_id_format; /* format for IDs in lease file,
|
||||
TOKEN_OCTAL or TOKEN_HEX */
|
||||
|
|
@ -434,16 +451,19 @@ index eab09a6..cfdac23 100644
|
|||
|
||||
/* Per-interface state used in the dhcp client... */
|
||||
diff --git a/includes/dhctoken.h b/includes/dhctoken.h
|
||||
index 15bbd1c..b312e7a 100644
|
||||
index e6d125f..6daa422 100644
|
||||
--- a/includes/dhctoken.h
|
||||
+++ b/includes/dhctoken.h
|
||||
@@ -373,7 +373,8 @@ enum dhcp_token {
|
||||
TOKEN_BIG_ENDIAN = 675,
|
||||
LEASE_ID_FORMAT = 676,
|
||||
@@ -377,7 +377,8 @@ enum dhcp_token {
|
||||
TOKEN_HEX = 677,
|
||||
- TOKEN_OCTAL = 678
|
||||
+ TOKEN_OCTAL = 678,
|
||||
+ BOOTP_BROADCAST_ALWAYS = 679
|
||||
TOKEN_OCTAL = 678,
|
||||
KEY_ALGORITHM = 679,
|
||||
- DISCONNECT = 680
|
||||
+ BOOTP_BROADCAST_ALWAYS = 680,
|
||||
+ DISCONNECT = 681
|
||||
};
|
||||
|
||||
#define is_identifier(x) ((x) >= FIRST_TOKEN && \
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,17 @@
|
|||
diff -up dhcp-4.3.0a1/client/dhclient.c.ifup dhcp-4.3.0a1/client/dhclient.c
|
||||
--- dhcp-4.3.0a1/client/dhclient.c.ifup 2013-12-19 14:53:08.817760677 +0100
|
||||
+++ dhcp-4.3.0a1/client/dhclient.c 2013-12-19 15:05:16.290518574 +0100
|
||||
@@ -521,9 +521,81 @@ main(int argc, char **argv) {
|
||||
From be8f73c399c0f89192e57453db153aaa48fcbb2e Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:21:14 +0100
|
||||
Subject: [PATCH 03/28] Handle releasing interfaces requested by /sbin/ifup
|
||||
|
||||
---
|
||||
client/dhclient.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 72 insertions(+)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 6c1c09a..07679a7 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -793,9 +793,81 @@ main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
fclose(pidfd);
|
||||
|
|
@ -83,3 +93,6 @@ diff -up dhcp-4.3.0a1/client/dhclient.c.ifup dhcp-4.3.0a1/client/dhclient.c
|
|||
if (!quiet) {
|
||||
log_info("%s %s", message, PACKAGE_VERSION);
|
||||
log_info(copyright);
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,6 +1,18 @@
|
|||
diff -up dhcp-4.3.4/server/bootp.c.unicast dhcp-4.3.4/server/bootp.c
|
||||
--- dhcp-4.3.4/server/bootp.c.unicast 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/server/bootp.c 2016-05-02 15:09:40.023243008 +0200
|
||||
From 0a640394cb6f4a97fb87e53f049fba23523035c8 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:22:41 +0100
|
||||
Subject: [PATCH 04/28] Support unicast BOOTP for IBM pSeries systems (and
|
||||
maybe others)
|
||||
|
||||
---
|
||||
server/bootp.c | 12 +++++++++++-
|
||||
server/dhcp.c | 33 ++++++++++++++++++++++++++-------
|
||||
2 files changed, 37 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/server/bootp.c b/server/bootp.c
|
||||
index 919d483..338aac0 100644
|
||||
--- a/server/bootp.c
|
||||
+++ b/server/bootp.c
|
||||
@@ -52,6 +52,7 @@ void bootp (packet)
|
||||
char msgbuf [1024];
|
||||
int ignorep;
|
||||
|
|
@ -34,10 +46,11 @@ diff -up dhcp-4.3.4/server/bootp.c.unicast dhcp-4.3.4/server/bootp.c
|
|||
|
||||
/* If it comes from a client that already knows its address
|
||||
and is not requesting a broadcast response, and we can
|
||||
diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
|
||||
--- dhcp-4.3.4/server/dhcp.c.unicast 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/server/dhcp.c 2016-05-02 15:10:13.255267511 +0200
|
||||
@@ -5132,6 +5132,7 @@ int locate_network (packet)
|
||||
diff --git a/server/dhcp.c b/server/dhcp.c
|
||||
index 0b261c2..ae805a6 100644
|
||||
--- a/server/dhcp.c
|
||||
+++ b/server/dhcp.c
|
||||
@@ -5332,6 +5332,7 @@ int locate_network (packet)
|
||||
struct data_string data;
|
||||
struct subnet *subnet = (struct subnet *)0;
|
||||
struct option_cache *oc;
|
||||
|
|
@ -45,7 +58,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
|
|||
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
if (dhcpv4_over_dhcpv6 && (packet->dhcp4o6_response != NULL)) {
|
||||
@@ -5153,12 +5154,24 @@ int locate_network (packet)
|
||||
@@ -5353,12 +5354,24 @@ int locate_network (packet)
|
||||
from the interface, if there is one. If not, fail. */
|
||||
if (!oc && !packet -> raw -> giaddr.s_addr) {
|
||||
if (packet -> interface -> shared_network) {
|
||||
|
|
@ -75,7 +88,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
|
|||
}
|
||||
|
||||
/* If there's an option indicating link connection, and it's valid,
|
||||
@@ -5185,7 +5198,10 @@ int locate_network (packet)
|
||||
@@ -5384,7 +5397,10 @@ int locate_network (packet)
|
||||
data_string_forget (&data, MDL);
|
||||
} else {
|
||||
ia.len = 4;
|
||||
|
|
@ -87,7 +100,7 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
|
|||
}
|
||||
|
||||
/* If we know the subnet on which the IP address lives, use it. */
|
||||
@@ -5193,7 +5209,10 @@ int locate_network (packet)
|
||||
@@ -5392,7 +5408,10 @@ int locate_network (packet)
|
||||
shared_network_reference (&packet -> shared_network,
|
||||
subnet -> shared_network, MDL);
|
||||
subnet_dereference (&subnet, MDL);
|
||||
|
|
@ -99,3 +112,6 @@ diff -up dhcp-4.3.4/server/dhcp.c.unicast dhcp-4.3.4/server/dhcp.c
|
|||
}
|
||||
|
||||
/* Otherwise, fail. */
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,6 +1,18 @@
|
|||
diff -up dhcp-4.3.4/client/clparse.c.requested dhcp-4.3.4/client/clparse.c
|
||||
--- dhcp-4.3.4/client/clparse.c.requested 2016-04-29 12:18:50.157151352 +0200
|
||||
+++ dhcp-4.3.4/client/clparse.c 2016-04-29 12:19:22.235137243 +0200
|
||||
From f994c4d208a8fe88cbf78d4374c8d44793f0598e Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:24:24 +0100
|
||||
Subject: [PATCH 05/28] Change default requested options
|
||||
|
||||
Add NIS domain, NIS servers, NTP servers, interface-mtu and domain-search
|
||||
to the list of default requested DHCP options
|
||||
---
|
||||
client/clparse.c | 27 ++++++++++++++++++++++++++-
|
||||
1 file changed, 26 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/client/clparse.c b/client/clparse.c
|
||||
index bb63825..e63ea08 100644
|
||||
--- a/client/clparse.c
|
||||
+++ b/client/clparse.c
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
struct client_config top_level_config;
|
||||
|
|
@ -10,7 +22,7 @@ diff -up dhcp-4.3.4/client/clparse.c.requested dhcp-4.3.4/client/clparse.c
|
|||
/* There can be 2 extra requested options for DHCPv4-over-DHCPv6. */
|
||||
struct option *default_requested_options[NUM_DEFAULT_REQUESTED_OPTS + 2 + 1];
|
||||
|
||||
@@ -116,6 +116,31 @@ isc_result_t read_client_conf ()
|
||||
@@ -119,6 +119,31 @@ isc_result_t read_client_conf ()
|
||||
option_code_hash_lookup(&default_requested_options[8],
|
||||
dhcpv6_universe.code_hash, &code, 0, MDL);
|
||||
|
||||
|
|
@ -42,3 +54,6 @@ diff -up dhcp-4.3.4/client/clparse.c.requested dhcp-4.3.4/client/clparse.c
|
|||
for (code = 0 ; code < NUM_DEFAULT_REQUESTED_OPTS ; code++) {
|
||||
if (default_requested_options[code] == NULL)
|
||||
log_fatal("Unable to find option definition for "
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,38 +1,20 @@
|
|||
diff -up dhcp-4.3.5b1/client/dhclient.conf.5.man dhcp-4.3.5b1/client/dhclient.conf.5
|
||||
--- dhcp-4.3.5b1/client/dhclient.conf.5.man 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/client/dhclient.conf.5 2016-09-12 17:09:23.243313514 +0200
|
||||
@@ -228,7 +228,8 @@ responding to the client send the client
|
||||
options. Only the option names should be specified in the request
|
||||
statement - not option parameters. By default, the DHCPv4 client
|
||||
requests the subnet-mask, broadcast-address, time-offset, routers,
|
||||
-domain-name, domain-name-servers and host-name options while the DHCPv6
|
||||
+domain-search, domain-name, domain-name-servers, host-name, nis-domain,
|
||||
+nis-servers, ntp-servers and interface-mtu options while the DHCPv6
|
||||
client requests the dhcp6 name-servers and domain-search options. Note
|
||||
that if you enter a \'request\' statement, you over-ride these defaults
|
||||
and these options will not be requested.
|
||||
@@ -736,6 +737,17 @@ know the DHCP service(s) anycast MAC add
|
||||
client. The \fIlink-type\fR and \fImac-address\fR parameters are configured
|
||||
in a similar manner to the \fBhardware\fR statement.
|
||||
.PP
|
||||
+ \fBbootp-broadcast-always;\fR
|
||||
+.PP
|
||||
+The
|
||||
+.B bootp-broadcast-always
|
||||
+statement instructs dhclient to always set the bootp broadcast flag in
|
||||
+request packets, so that servers will always broadcast replies.
|
||||
+This is equivalent to supplying the dhclient -B argument, and has
|
||||
+the same effect as specifying 'always-broadcast' in the server's dhcpd.conf.
|
||||
+This option is provided as an extension to enable dhclient to work
|
||||
+on IBM s390 Linux guests.
|
||||
+.PP
|
||||
.SH SAMPLE
|
||||
The following configuration file was used on a laptop running NetBSD
|
||||
1.3, though the domains have been modified.
|
||||
diff -up dhcp-4.3.5b1/client/dhclient-script.8.man dhcp-4.3.5b1/client/dhclient-script.8
|
||||
--- dhcp-4.3.5b1/client/dhclient-script.8.man 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/client/dhclient-script.8 2016-09-12 17:08:09.516254385 +0200
|
||||
@@ -45,7 +45,7 @@ customizations are needed, they should b
|
||||
From d359a7dc30e0423f9b90129291538cad1ee6a6d9 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:25:53 +0100
|
||||
Subject: [PATCH 06/28] Various man-page-only fixes
|
||||
|
||||
---
|
||||
client/dhclient-script.8 | 22 +++++++++++++++++++++-
|
||||
client/dhclient.conf.5 | 14 +++++++++++++-
|
||||
common/dhcp-options.5 | 15 +++++++++++++++
|
||||
server/dhcpd.conf.5 | 14 +++++++++-----
|
||||
4 files changed, 58 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient-script.8 b/client/dhclient-script.8
|
||||
index 5e5bd3d..37ecdc5 100644
|
||||
--- a/client/dhclient-script.8
|
||||
+++ b/client/dhclient-script.8
|
||||
@@ -43,7 +43,7 @@ customizations are needed, they should be possible using the enter and
|
||||
exit hooks provided (see HOOKS for details). These hooks will allow the
|
||||
user to override the default behaviour of the client in creating a
|
||||
.B /etc/resolv.conf
|
||||
|
|
@ -41,7 +23,7 @@ diff -up dhcp-4.3.5b1/client/dhclient-script.8.man dhcp-4.3.5b1/client/dhclient-
|
|||
.PP
|
||||
No standard client script exists for some operating systems, even though
|
||||
the actual client may work, so a pioneering user may well need to create
|
||||
@@ -89,6 +89,26 @@ present. The
|
||||
@@ -87,6 +87,26 @@ present. The
|
||||
.B ETCDIR/dhclient-exit-hooks
|
||||
script can modify the valid of exit_status to change the exit status
|
||||
of dhclient-script.
|
||||
|
|
@ -68,10 +50,43 @@ diff -up dhcp-4.3.5b1/client/dhclient-script.8.man dhcp-4.3.5b1/client/dhclient-
|
|||
.SH OPERATION
|
||||
When dhclient needs to invoke the client configuration script, it
|
||||
defines a set of variables in the environment, and then invokes
|
||||
diff -up dhcp-4.3.5b1/common/dhcp-options.5.man dhcp-4.3.5b1/common/dhcp-options.5
|
||||
--- dhcp-4.3.5b1/common/dhcp-options.5.man 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/common/dhcp-options.5 2016-09-12 17:08:09.517254386 +0200
|
||||
@@ -1013,6 +1013,21 @@ classless IP routing - it does not inclu
|
||||
diff --git a/client/dhclient.conf.5 b/client/dhclient.conf.5
|
||||
index dbe6f7e..8bac980 100644
|
||||
--- a/client/dhclient.conf.5
|
||||
+++ b/client/dhclient.conf.5
|
||||
@@ -228,7 +228,8 @@ responding to the client send the client its values for the specified
|
||||
options. Only the option names should be specified in the request
|
||||
statement - not option parameters. By default, the DHCPv4 client
|
||||
requests the subnet-mask, broadcast-address, time-offset, routers,
|
||||
-domain-name, domain-name-servers and host-name options while the DHCPv6
|
||||
+domain-search, domain-name, domain-name-servers, host-name, nis-domain,
|
||||
+nis-servers, ntp-servers and interface-mtu options while the DHCPv6
|
||||
client requests the dhcp6 name-servers and domain-search options. Note
|
||||
that if you enter a \'request\' statement, you over-ride these defaults
|
||||
and these options will not be requested.
|
||||
@@ -735,6 +736,17 @@ broadcast packets transmitted by DHCP clients, but is only useful if you
|
||||
know the DHCP service(s) anycast MAC address prior to configuring your
|
||||
client. The \fIlink-type\fR and \fImac-address\fR parameters are configured
|
||||
in a similar manner to the \fBhardware\fR statement.
|
||||
+.PP
|
||||
+ \fBbootp-broadcast-always;\fR
|
||||
+.PP
|
||||
+The
|
||||
+.B bootp-broadcast-always
|
||||
+statement instructs dhclient to always set the bootp broadcast flag in
|
||||
+request packets, so that servers will always broadcast replies.
|
||||
+This is equivalent to supplying the dhclient -B argument, and has
|
||||
+the same effect as specifying 'always-broadcast' in the server's dhcpd.conf.
|
||||
+This option is provided as an extension to enable dhclient to work
|
||||
+on IBM s390 Linux guests.
|
||||
.PP
|
||||
.SH SAMPLE
|
||||
The following configuration file was used on a laptop running NetBSD
|
||||
diff --git a/common/dhcp-options.5 b/common/dhcp-options.5
|
||||
index 51f80f7..a784b32 100644
|
||||
--- a/common/dhcp-options.5
|
||||
+++ b/common/dhcp-options.5
|
||||
@@ -1075,6 +1075,21 @@ classless IP routing - it does not include a subnet mask. Since
|
||||
classless IP routing is now the most widely deployed routing standard,
|
||||
this option is virtually useless, and is not implemented by any of the
|
||||
popular DHCP clients, for example the Microsoft DHCP client.
|
||||
|
|
@ -93,10 +108,11 @@ diff -up dhcp-4.3.5b1/common/dhcp-options.5.man dhcp-4.3.5b1/common/dhcp-options
|
|||
.RE
|
||||
.PP
|
||||
.nf
|
||||
diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
||||
--- dhcp-4.3.5b1/server/dhcpd.conf.5.man 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/server/dhcpd.conf.5 2016-09-12 17:10:11.205351980 +0200
|
||||
@@ -528,6 +528,9 @@ pool {
|
||||
diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5
|
||||
index 691e5dd..b7e79ea 100644
|
||||
--- a/server/dhcpd.conf.5
|
||||
+++ b/server/dhcpd.conf.5
|
||||
@@ -527,6 +527,9 @@ pool {
|
||||
};
|
||||
.fi
|
||||
.PP
|
||||
|
|
@ -106,7 +122,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
|||
The server currently does very little sanity checking, so if you
|
||||
configure it wrong, it will just fail in odd ways. I would recommend
|
||||
therefore that you either do failover or don't do failover, but don't
|
||||
@@ -542,9 +545,9 @@ primary server might look like this:
|
||||
@@ -541,9 +544,9 @@ primary server might look like this:
|
||||
failover peer "foo" {
|
||||
primary;
|
||||
address anthrax.rc.example.com;
|
||||
|
|
@ -118,7 +134,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
|||
max-response-delay 60;
|
||||
max-unacked-updates 10;
|
||||
mclt 3600;
|
||||
@@ -1246,7 +1249,7 @@ the zone containing PTR records - for IS
|
||||
@@ -1323,7 +1326,7 @@ the zone containing PTR records - for ISC BIND, something like this:
|
||||
.PP
|
||||
.nf
|
||||
key DHCP_UPDATER {
|
||||
|
|
@ -127,7 +143,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
|||
secret pRP5FapFoJ95JEL06sv4PQ==;
|
||||
};
|
||||
|
||||
@@ -1269,7 +1272,7 @@ dhcpd.conf file:
|
||||
@@ -1346,7 +1349,7 @@ dhcpd.conf file:
|
||||
.PP
|
||||
.nf
|
||||
key DHCP_UPDATER {
|
||||
|
|
@ -136,7 +152,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
|||
secret pRP5FapFoJ95JEL06sv4PQ==;
|
||||
};
|
||||
|
||||
@@ -2742,7 +2745,8 @@ statement
|
||||
@@ -2918,7 +2921,8 @@ statement
|
||||
The \fInext-server\fR statement is used to specify the host address of
|
||||
the server from which the initial boot file (specified in the
|
||||
\fIfilename\fR statement) is to be loaded. \fIServer-name\fR should
|
||||
|
|
@ -146,3 +162,6 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.man dhcp-4.3.5b1/server/dhcpd.conf.5
|
|||
.RE
|
||||
.PP
|
||||
The
|
||||
--
|
||||
2.35.1
|
||||
|
||||
53
0007-Change-paths-to-conform-to-our-standards.patch
Normal file
53
0007-Change-paths-to-conform-to-our-standards.patch
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
From d8da92991d93a3d1c9fc474696aee25b99623c42 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:26:34 +0100
|
||||
Subject: [PATCH 07/28] Change paths to conform to our standards
|
||||
|
||||
---
|
||||
doc/examples/dhcpd-dhcpv6.conf | 2 +-
|
||||
includes/dhcpd.h | 6 +++---
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/doc/examples/dhcpd-dhcpv6.conf b/doc/examples/dhcpd-dhcpv6.conf
|
||||
index 448a6a6..2357824 100644
|
||||
--- a/doc/examples/dhcpd-dhcpv6.conf
|
||||
+++ b/doc/examples/dhcpd-dhcpv6.conf
|
||||
@@ -43,7 +43,7 @@ option dhcp6.domain-search "test.example.com","example.com";
|
||||
option dhcp6.info-refresh-time 21600;
|
||||
|
||||
# The path of the lease file
|
||||
-dhcpv6-lease-file-name "/usr/local/var/db/dhcpd6.leases";
|
||||
+dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases";
|
||||
|
||||
# Static definition (must be global)
|
||||
host myclient {
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index 3b2e2ca..4a57002 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -1561,7 +1561,7 @@ typedef unsigned char option_mask [16];
|
||||
#else /* !DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCPD_CONF
|
||||
-#define _PATH_DHCPD_CONF "/etc/dhcpd.conf"
|
||||
+#define _PATH_DHCPD_CONF "/etc/dhcp/dhcpd.conf"
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCPD_DB
|
||||
@@ -1583,11 +1583,11 @@ typedef unsigned char option_mask [16];
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCLIENT_CONF
|
||||
-#define _PATH_DHCLIENT_CONF "/etc/dhclient.conf"
|
||||
+#define _PATH_DHCLIENT_CONF "/etc/dhcp/dhclient.conf"
|
||||
#endif
|
||||
|
||||
#ifndef _PATH_DHCLIENT_SCRIPT
|
||||
-#define _PATH_DHCLIENT_SCRIPT "/sbin/dhclient-script"
|
||||
+#define _PATH_DHCLIENT_SCRIPT "/usr/sbin/dhclient-script"
|
||||
#endif
|
||||
|
||||
#ifndef _PATH_DHCLIENT_PID
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,31 @@
|
|||
diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c
|
||||
--- dhcp-4.3.3b1/client/clparse.c.cloexec 2015-08-10 10:46:20.264755543 +0200
|
||||
+++ dhcp-4.3.3b1/client/clparse.c 2015-08-10 10:46:20.274755510 +0200
|
||||
@@ -247,7 +247,7 @@ int read_client_conf_file (const char *n
|
||||
From 39ce1ca26128f4a5d018a567157320ba1f68f4ea Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:27:18 +0100
|
||||
Subject: [PATCH 08/28] Make sure all open file descriptors are closed-on-exec
|
||||
for SELinux
|
||||
|
||||
ISC-bug: #19148
|
||||
---
|
||||
client/clparse.c | 4 ++--
|
||||
client/dhclient.c | 28 ++++++++++++++--------------
|
||||
common/bpf.c | 2 +-
|
||||
common/dlpi.c | 2 +-
|
||||
common/nit.c | 2 +-
|
||||
common/resolv.c | 2 +-
|
||||
common/upf.c | 2 +-
|
||||
omapip/trace.c | 6 +++---
|
||||
relay/dhcrelay.c | 10 +++++-----
|
||||
server/confpars.c | 2 +-
|
||||
server/db.c | 4 ++--
|
||||
server/dhcpd.c | 14 +++++++-------
|
||||
server/ldap.c | 2 +-
|
||||
13 files changed, 40 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/client/clparse.c b/client/clparse.c
|
||||
index e63ea08..902b523 100644
|
||||
--- a/client/clparse.c
|
||||
+++ b/client/clparse.c
|
||||
@@ -291,7 +291,7 @@ int read_client_conf_file (const char *name, struct interface_info *ip,
|
||||
int token;
|
||||
isc_result_t status;
|
||||
|
||||
|
|
@ -10,7 +34,7 @@ diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c
|
|||
return uerr2isc (errno);
|
||||
|
||||
cfile = NULL;
|
||||
@@ -323,7 +323,7 @@ void read_client_leases ()
|
||||
@@ -367,7 +367,7 @@ void read_client_leases ()
|
||||
|
||||
/* Open the lease file. If we can't open it, just return -
|
||||
we can safely trust the server to remember our state. */
|
||||
|
|
@ -19,10 +43,11 @@ diff -up dhcp-4.3.3b1/client/clparse.c.cloexec dhcp-4.3.3b1/client/clparse.c
|
|||
return;
|
||||
|
||||
cfile = NULL;
|
||||
diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
||||
--- dhcp-4.3.3b1/client/dhclient.c.cloexec 2015-08-10 10:46:20.260755556 +0200
|
||||
+++ dhcp-4.3.3b1/client/dhclient.c 2015-08-10 10:46:20.275755506 +0200
|
||||
@@ -153,11 +153,11 @@ main(int argc, char **argv) {
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 07679a7..aefc119 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -279,11 +279,11 @@ main(int argc, char **argv) {
|
||||
/* Make sure that file descriptors 0 (stdin), 1, (stdout), and
|
||||
2 (stderr) are open. To do this, we assume that when we
|
||||
open a file the lowest available file descriptor is used. */
|
||||
|
|
@ -37,7 +62,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if (fd == 2)
|
||||
log_perror = 0; /* No sense logging to /dev/null. */
|
||||
else if (fd != -1)
|
||||
@@ -519,7 +519,7 @@ main(int argc, char **argv) {
|
||||
@@ -771,7 +771,7 @@ main(int argc, char **argv) {
|
||||
long temp;
|
||||
int e;
|
||||
|
||||
|
|
@ -46,7 +71,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
e = fscanf(pidfd, "%ld\n", &temp);
|
||||
oldpid = (pid_t)temp;
|
||||
|
||||
@@ -574,7 +574,7 @@ main(int argc, char **argv) {
|
||||
@@ -826,7 +826,7 @@ main(int argc, char **argv) {
|
||||
strncpy(new_path_dhclient_pid, path_dhclient_pid, pfx);
|
||||
sprintf(new_path_dhclient_pid + pfx, "-%s.pid", ip->name);
|
||||
|
||||
|
|
@ -55,7 +80,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
e = fscanf(pidfd, "%ld\n", &temp);
|
||||
oldpid = (pid_t)temp;
|
||||
|
||||
@@ -599,7 +599,7 @@ main(int argc, char **argv) {
|
||||
@@ -851,7 +851,7 @@ main(int argc, char **argv) {
|
||||
int dhc_running = 0;
|
||||
char procfn[256] = "";
|
||||
|
||||
|
|
@ -64,7 +89,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if ((fscanf(pidfp, "%ld", &temp)==1) && ((dhcpid=(pid_t)temp) > 0)) {
|
||||
snprintf(procfn,256,"/proc/%u",dhcpid);
|
||||
dhc_running = (access(procfn, F_OK) == 0);
|
||||
@@ -3120,7 +3120,7 @@ void rewrite_client_leases ()
|
||||
@@ -4054,7 +4054,7 @@ void rewrite_client_leases ()
|
||||
|
||||
if (leaseFile != NULL)
|
||||
fclose (leaseFile);
|
||||
|
|
@ -73,7 +98,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if (leaseFile == NULL) {
|
||||
log_error ("can't create %s: %m", path_dhclient_db);
|
||||
return;
|
||||
@@ -3313,7 +3313,7 @@ write_duid(struct data_string *duid)
|
||||
@@ -4249,7 +4249,7 @@ write_duid(struct data_string *duid)
|
||||
return DHCP_R_INVALIDARG;
|
||||
|
||||
if (leaseFile == NULL) { /* XXX? */
|
||||
|
|
@ -82,7 +107,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if (leaseFile == NULL) {
|
||||
log_error("can't create %s: %m", path_dhclient_db);
|
||||
return ISC_R_IOERROR;
|
||||
@@ -3493,7 +3493,7 @@ int write_client_lease (client, lease, r
|
||||
@@ -4453,7 +4453,7 @@ int write_client_lease (client, lease, rewrite, makesure)
|
||||
return 1;
|
||||
|
||||
if (leaseFile == NULL) { /* XXX */
|
||||
|
|
@ -91,7 +116,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if (leaseFile == NULL) {
|
||||
log_error ("can't create %s: %m", path_dhclient_db);
|
||||
return 0;
|
||||
@@ -4011,9 +4011,9 @@ void go_daemon ()
|
||||
@@ -5039,9 +5039,9 @@ void detach ()
|
||||
(void) close(2);
|
||||
|
||||
/* Reopen them on /dev/null. */
|
||||
|
|
@ -104,7 +129,7 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
|
||||
write_client_pid_file ();
|
||||
|
||||
@@ -4030,14 +4030,14 @@ void write_client_pid_file ()
|
||||
@@ -5059,14 +5059,14 @@ void write_client_pid_file ()
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -121,10 +146,11 @@ diff -up dhcp-4.3.3b1/client/dhclient.c.cloexec dhcp-4.3.3b1/client/dhclient.c
|
|||
if (!pf) {
|
||||
close(pfdesc);
|
||||
log_error ("Can't fdopen %s: %m", path_dhclient_pid);
|
||||
diff -up dhcp-4.3.3b1/common/bpf.c.cloexec dhcp-4.3.3b1/common/bpf.c
|
||||
--- dhcp-4.3.3b1/common/bpf.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/common/bpf.c 2015-08-10 10:46:20.275755506 +0200
|
||||
@@ -95,7 +95,7 @@ int if_register_bpf (info)
|
||||
diff --git a/common/bpf.c b/common/bpf.c
|
||||
index 0bffcbf..d2a0549 100644
|
||||
--- a/common/bpf.c
|
||||
+++ b/common/bpf.c
|
||||
@@ -94,7 +94,7 @@ int if_register_bpf (info)
|
||||
for (b = 0; 1; b++) {
|
||||
/* %Audit% 31 bytes max. %2004.06.17,Safe% */
|
||||
sprintf(filename, BPF_FORMAT, b);
|
||||
|
|
@ -133,21 +159,23 @@ diff -up dhcp-4.3.3b1/common/bpf.c.cloexec dhcp-4.3.3b1/common/bpf.c
|
|||
if (sock < 0) {
|
||||
if (errno == EBUSY) {
|
||||
continue;
|
||||
diff -up dhcp-4.3.3b1/common/dlpi.c.cloexec dhcp-4.3.3b1/common/dlpi.c
|
||||
--- dhcp-4.3.3b1/common/dlpi.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/common/dlpi.c 2015-08-10 10:46:20.275755506 +0200
|
||||
@@ -804,7 +804,7 @@ dlpiopen(const char *ifname) {
|
||||
diff --git a/common/dlpi.c b/common/dlpi.c
|
||||
index f2332c0..bf6e21f 100644
|
||||
--- a/common/dlpi.c
|
||||
+++ b/common/dlpi.c
|
||||
@@ -817,7 +817,7 @@ dlpiopen(const char *ifname) {
|
||||
}
|
||||
*dp = '\0';
|
||||
|
||||
|
||||
- return open (devname, O_RDWR, 0);
|
||||
+ return open (devname, O_RDWR | O_CLOEXEC, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
diff -up dhcp-4.3.3b1/common/nit.c.cloexec dhcp-4.3.3b1/common/nit.c
|
||||
--- dhcp-4.3.3b1/common/nit.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/common/nit.c 2015-08-10 10:46:20.275755506 +0200
|
||||
diff --git a/common/nit.c b/common/nit.c
|
||||
index ba62488..4ebfa4a 100644
|
||||
--- a/common/nit.c
|
||||
+++ b/common/nit.c
|
||||
@@ -75,7 +75,7 @@ int if_register_nit (info)
|
||||
struct strioctl sio;
|
||||
|
||||
|
|
@ -157,10 +185,11 @@ diff -up dhcp-4.3.3b1/common/nit.c.cloexec dhcp-4.3.3b1/common/nit.c
|
|||
if (sock < 0)
|
||||
log_fatal ("Can't open NIT device for %s: %m", info -> name);
|
||||
|
||||
diff -up dhcp-4.3.3b1/common/resolv.c.cloexec dhcp-4.3.3b1/common/resolv.c
|
||||
--- dhcp-4.3.3b1/common/resolv.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/common/resolv.c 2015-08-10 10:46:20.276755503 +0200
|
||||
@@ -44,7 +44,7 @@ void read_resolv_conf (parse_time)
|
||||
diff --git a/common/resolv.c b/common/resolv.c
|
||||
index 5fd683f..3535f3e 100644
|
||||
--- a/common/resolv.c
|
||||
+++ b/common/resolv.c
|
||||
@@ -43,7 +43,7 @@ void read_resolv_conf (parse_time)
|
||||
struct domain_search_list *dp, *dl, *nd;
|
||||
isc_result_t status;
|
||||
|
||||
|
|
@ -169,9 +198,10 @@ diff -up dhcp-4.3.3b1/common/resolv.c.cloexec dhcp-4.3.3b1/common/resolv.c
|
|||
log_error ("Can't open %s: %m", path_resolv_conf);
|
||||
return;
|
||||
}
|
||||
diff -up dhcp-4.3.3b1/common/upf.c.cloexec dhcp-4.3.3b1/common/upf.c
|
||||
--- dhcp-4.3.3b1/common/upf.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/common/upf.c 2015-08-10 10:46:20.276755503 +0200
|
||||
diff --git a/common/upf.c b/common/upf.c
|
||||
index 37e5cb2..b7c0649 100644
|
||||
--- a/common/upf.c
|
||||
+++ b/common/upf.c
|
||||
@@ -71,7 +71,7 @@ int if_register_upf (info)
|
||||
/* %Audit% Cannot exceed 36 bytes. %2004.06.17,Safe% */
|
||||
sprintf(filename, "/dev/pf/pfilt%d", b);
|
||||
|
|
@ -181,10 +211,11 @@ diff -up dhcp-4.3.3b1/common/upf.c.cloexec dhcp-4.3.3b1/common/upf.c
|
|||
if (sock < 0) {
|
||||
if (errno == EBUSY) {
|
||||
continue;
|
||||
diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c
|
||||
--- dhcp-4.3.3b1/omapip/trace.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/omapip/trace.c 2015-08-10 10:46:20.276755503 +0200
|
||||
@@ -138,10 +138,10 @@ isc_result_t trace_begin (const char *fi
|
||||
diff --git a/omapip/trace.c b/omapip/trace.c
|
||||
index dc9185f..a605d18 100644
|
||||
--- a/omapip/trace.c
|
||||
+++ b/omapip/trace.c
|
||||
@@ -136,10 +136,10 @@ isc_result_t trace_begin (const char *filename,
|
||||
return DHCP_R_INVALIDARG;
|
||||
}
|
||||
|
||||
|
|
@ -197,7 +228,7 @@ diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c
|
|||
0600);
|
||||
}
|
||||
|
||||
@@ -429,7 +429,7 @@ void trace_file_replay (const char *file
|
||||
@@ -427,7 +427,7 @@ void trace_file_replay (const char *filename)
|
||||
isc_result_t result;
|
||||
int len;
|
||||
|
||||
|
|
@ -206,10 +237,11 @@ diff -up dhcp-4.3.3b1/omapip/trace.c.cloexec dhcp-4.3.3b1/omapip/trace.c
|
|||
if (!traceinfile) {
|
||||
log_error("Can't open tracefile %s: %m", filename);
|
||||
return;
|
||||
diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c
|
||||
--- dhcp-4.3.3b1/relay/dhcrelay.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/relay/dhcrelay.c 2015-08-10 10:46:20.276755503 +0200
|
||||
@@ -187,11 +187,11 @@ main(int argc, char **argv) {
|
||||
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
|
||||
index 946ef1b..a7b1286 100644
|
||||
--- a/relay/dhcrelay.c
|
||||
+++ b/relay/dhcrelay.c
|
||||
@@ -305,11 +305,11 @@ main(int argc, char **argv) {
|
||||
/* Make sure that file descriptors 0(stdin), 1,(stdout), and
|
||||
2(stderr) are open. To do this, we assume that when we
|
||||
open a file the lowest available file descriptor is used. */
|
||||
|
|
@ -224,8 +256,8 @@ diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c
|
|||
if (fd == 2)
|
||||
log_perror = 0; /* No sense logging to /dev/null. */
|
||||
else if (fd != -1)
|
||||
@@ -558,13 +558,13 @@ main(int argc, char **argv) {
|
||||
|
||||
@@ -800,13 +800,13 @@ main(int argc, char **argv) {
|
||||
/* Create the pid file. */
|
||||
if (no_pid_file == ISC_FALSE) {
|
||||
pfdesc = open(path_dhcrelay_pid,
|
||||
- O_CREAT | O_TRUNC | O_WRONLY, 0644);
|
||||
|
|
@ -240,10 +272,11 @@ diff -up dhcp-4.3.3b1/relay/dhcrelay.c.cloexec dhcp-4.3.3b1/relay/dhcrelay.c
|
|||
if (!pf)
|
||||
log_error("Can't fdopen %s: %m",
|
||||
path_dhcrelay_pid);
|
||||
diff -up dhcp-4.3.3b1/server/confpars.c.cloexec dhcp-4.3.3b1/server/confpars.c
|
||||
--- dhcp-4.3.3b1/server/confpars.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/server/confpars.c 2015-08-10 10:46:20.277755500 +0200
|
||||
@@ -111,7 +111,7 @@ isc_result_t read_conf_file (const char
|
||||
diff --git a/server/confpars.c b/server/confpars.c
|
||||
index 103af1e..5a6396b 100644
|
||||
--- a/server/confpars.c
|
||||
+++ b/server/confpars.c
|
||||
@@ -118,7 +118,7 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -252,19 +285,11 @@ diff -up dhcp-4.3.3b1/server/confpars.c.cloexec dhcp-4.3.3b1/server/confpars.c
|
|||
if (leasep) {
|
||||
log_error ("Can't open lease database %s: %m --",
|
||||
path_dhcpd_db);
|
||||
diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c
|
||||
--- dhcp-4.3.3b1/server/db.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/server/db.c 2015-08-10 10:47:32.644518358 +0200
|
||||
@@ -1072,7 +1072,7 @@ void db_startup (testp)
|
||||
}
|
||||
#endif
|
||||
if (!testp) {
|
||||
- db_file = fopen (path_dhcpd_db, "a");
|
||||
+ db_file = fopen (path_dhcpd_db, "ae");
|
||||
if (!db_file)
|
||||
log_fatal ("Can't open %s for append.", path_dhcpd_db);
|
||||
expire_all_pools ();
|
||||
@@ -1120,7 +1120,7 @@ int new_lease_file ()
|
||||
diff --git a/server/db.c b/server/db.c
|
||||
index cecbf6b..4243a92 100644
|
||||
--- a/server/db.c
|
||||
+++ b/server/db.c
|
||||
@@ -1154,7 +1154,7 @@ int new_lease_file (int test_mode)
|
||||
path_dhcpd_db, (int)t) >= sizeof newfname)
|
||||
log_fatal("new_lease_file: lease file path too long");
|
||||
|
||||
|
|
@ -273,7 +298,7 @@ diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c
|
|||
if (db_fd < 0) {
|
||||
log_error ("Can't create new lease file: %m");
|
||||
return 0;
|
||||
@@ -1141,7 +1141,7 @@ int new_lease_file ()
|
||||
@@ -1175,7 +1175,7 @@ int new_lease_file (int test_mode)
|
||||
}
|
||||
#endif /* PARANOIA */
|
||||
|
||||
|
|
@ -282,10 +307,11 @@ diff -up dhcp-4.3.3b1/server/db.c.cloexec dhcp-4.3.3b1/server/db.c
|
|||
log_error("Can't fdopen new lease file: %m");
|
||||
close(db_fd);
|
||||
goto fdfail;
|
||||
diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c
|
||||
--- dhcp-4.3.3b1/server/dhcpd.c.cloexec 2015-07-30 15:17:16.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/server/dhcpd.c 2015-08-10 10:46:20.278755497 +0200
|
||||
@@ -194,11 +194,11 @@ main(int argc, char **argv) {
|
||||
diff --git a/server/dhcpd.c b/server/dhcpd.c
|
||||
index 3522889..845d0cc 100644
|
||||
--- a/server/dhcpd.c
|
||||
+++ b/server/dhcpd.c
|
||||
@@ -300,11 +300,11 @@ main(int argc, char **argv) {
|
||||
/* Make sure that file descriptors 0 (stdin), 1, (stdout), and
|
||||
2 (stderr) are open. To do this, we assume that when we
|
||||
open a file the lowest available file descriptor is used. */
|
||||
|
|
@ -300,7 +326,7 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c
|
|||
if (fd == 2)
|
||||
log_perror = 0; /* No sense logging to /dev/null. */
|
||||
else if (fd != -1)
|
||||
@@ -743,7 +743,7 @@ main(int argc, char **argv) {
|
||||
@@ -975,7 +975,7 @@ main(int argc, char **argv) {
|
||||
* appropriate.
|
||||
*/
|
||||
if (no_pid_file == ISC_FALSE) {
|
||||
|
|
@ -309,7 +335,7 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c
|
|||
if (i >= 0) {
|
||||
sprintf(pbuf, "%d\n", (int) getpid());
|
||||
IGNORE_RET(write(i, pbuf, strlen(pbuf)));
|
||||
@@ -787,9 +787,9 @@ main(int argc, char **argv) {
|
||||
@@ -1028,9 +1028,9 @@ main(int argc, char **argv) {
|
||||
(void) close(2);
|
||||
|
||||
/* Reopen them on /dev/null. */
|
||||
|
|
@ -322,10 +348,11 @@ diff -up dhcp-4.3.3b1/server/dhcpd.c.cloexec dhcp-4.3.3b1/server/dhcpd.c
|
|||
log_perror = 0; /* No sense logging to /dev/null. */
|
||||
|
||||
IGNORE_RET (chdir("/"));
|
||||
diff -up dhcp-4.3.3b1/server/ldap.c.cloexec dhcp-4.3.3b1/server/ldap.c
|
||||
--- dhcp-4.3.3b1/server/ldap.c.cloexec 2015-07-30 21:03:40.000000000 +0200
|
||||
+++ dhcp-4.3.3b1/server/ldap.c 2015-08-10 10:46:20.279755493 +0200
|
||||
@@ -1442,7 +1442,7 @@ ldap_start (void)
|
||||
diff --git a/server/ldap.c b/server/ldap.c
|
||||
index e3e48f4..1a68936 100644
|
||||
--- a/server/ldap.c
|
||||
+++ b/server/ldap.c
|
||||
@@ -1447,7 +1447,7 @@ ldap_start (void)
|
||||
|
||||
if (ldap_debug_file != NULL && ldap_debug_fd == -1)
|
||||
{
|
||||
|
|
@ -334,3 +361,6 @@ diff -up dhcp-4.3.3b1/server/ldap.c.cloexec dhcp-4.3.3b1/server/ldap.c
|
|||
S_IRUSR | S_IWUSR)) < 0)
|
||||
log_error ("Error opening debug LDAP log file %s: %s", ldap_debug_file,
|
||||
strerror (errno));
|
||||
--
|
||||
2.35.1
|
||||
|
||||
26
0009-Fix-garbage-in-format-string-error.patch
Normal file
26
0009-Fix-garbage-in-format-string-error.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From cfe6414644b68d5b6b5ba150bf57cff0a709a59e Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:28:13 +0100
|
||||
Subject: [PATCH 09/28] Fix 'garbage in format string' error
|
||||
|
||||
RHBZ: 450042
|
||||
---
|
||||
common/tables.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/common/tables.c b/common/tables.c
|
||||
index be37737..ce12fcd 100644
|
||||
--- a/common/tables.c
|
||||
+++ b/common/tables.c
|
||||
@@ -222,7 +222,7 @@ static struct option dhcp_options[] = {
|
||||
{ "name-service-search", "Sa", &dhcp_universe, 117, 1 },
|
||||
#endif
|
||||
{ "subnet-selection", "I", &dhcp_universe, 118, 1 },
|
||||
- { "domain-search", "Dc", &dhcp_universe, 119, 1 },
|
||||
+ { "domain-search", "D", &dhcp_universe, 119, 1 },
|
||||
{ "vivco", "Evendor-class.", &dhcp_universe, 124, 1 },
|
||||
{ "vivso", "Evendor.", &dhcp_universe, 125, 1 },
|
||||
#if 0
|
||||
--
|
||||
2.35.1
|
||||
|
||||
31
0010-Handle-null-timeout.patch
Normal file
31
0010-Handle-null-timeout.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
From 7653f3ea80230d4b38bff1c65164aa18c6e51519 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:29:08 +0100
|
||||
Subject: [PATCH 10/28] Handle null timeout
|
||||
|
||||
Handle cases in add_timeout() where the function is called with a NULL
|
||||
value for the 'when' parameter
|
||||
|
||||
ISC-Bugs: #19867 (rejected)
|
||||
---
|
||||
common/dispatch.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/common/dispatch.c b/common/dispatch.c
|
||||
index 7def34c..9741ff5 100644
|
||||
--- a/common/dispatch.c
|
||||
+++ b/common/dispatch.c
|
||||
@@ -209,6 +209,10 @@ void add_timeout (when, where, what, ref, unref)
|
||||
isc_interval_t interval;
|
||||
isc_time_t expires;
|
||||
|
||||
+ if (when == NULL) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
/* See if this timeout supersedes an existing timeout. */
|
||||
t = (struct timeout *)0;
|
||||
for (q = timeouts; q; q = q->next) {
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,21 +1,37 @@
|
|||
From 7ea2433d716172f160c9380ed0bb852fafe845a2 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:30:28 +0100
|
||||
Subject: [PATCH 11/28] Drop unnecessary capabilities
|
||||
|
||||
dhclient (#517649, #546765), dhcpd/dhcrelay (#699713)
|
||||
---
|
||||
client/Makefile.am | 3 ++-
|
||||
client/dhclient-script.8 | 10 ++++++++++
|
||||
client/dhclient.8 | 29 +++++++++++++++++++++++++++++
|
||||
client/dhclient.c | 24 ++++++++++++++++++++++++
|
||||
configure.ac | 35 +++++++++++++++++++++++++++++++++++
|
||||
relay/Makefile.am | 3 ++-
|
||||
relay/dhcrelay.c | 29 +++++++++++++++++++++++++++++
|
||||
7 files changed, 131 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/client/Makefile.am b/client/Makefile.am
|
||||
index b1ecf82..387c097 100644
|
||||
index d177159..0689185 100644
|
||||
--- a/client/Makefile.am
|
||||
+++ b/client/Makefile.am
|
||||
@@ -15,6 +15,7 @@ dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
|
||||
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
|
||||
scripts/netbsd scripts/nextstep scripts/openbsd \
|
||||
scripts/solaris scripts/openwrt
|
||||
-dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(BIND_LIBS)
|
||||
+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
+ $(CAPNG_LDADD) $(BIND_LIBS)
|
||||
@@ -17,6 +17,7 @@ dhclient_LDADD = ../common/libdhcp.@A@ ../omapip/libomapi.@A@ \
|
||||
@BINDLIBIRSDIR@/libirs.@A@ \
|
||||
@BINDLIBDNSDIR@/libdns.@A@ \
|
||||
@BINDLIBISCCFGDIR@/libisccfg.@A@ \
|
||||
- @BINDLIBISCDIR@/libisc.@A@
|
||||
+ @BINDLIBISCDIR@/libisc.@A@ \
|
||||
+ $(CAPNG_LDADD)
|
||||
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/client/dhclient-script.8 b/client/dhclient-script.8
|
||||
index 3a3aaf7..fec726c 100644
|
||||
index 37ecdc5..1a88e0e 100644
|
||||
--- a/client/dhclient-script.8
|
||||
+++ b/client/dhclient-script.8
|
||||
@@ -245,6 +245,16 @@ repeatedly initialized to the values provided by one server, and then
|
||||
@@ -249,6 +249,16 @@ repeatedly initialized to the values provided by one server, and then
|
||||
the other. Assuming the information provided by both servers is
|
||||
valid, this shouldn't cause any real problems, but it could be
|
||||
confusing.
|
||||
|
|
@ -33,10 +49,10 @@ index 3a3aaf7..fec726c 100644
|
|||
dhclient(8), dhcpd(8), dhcrelay(8), dhclient.conf(5) and
|
||||
dhclient.leases(5).
|
||||
diff --git a/client/dhclient.8 b/client/dhclient.8
|
||||
index aa2238d..005cda5 100644
|
||||
index 5029dac..bacf3bc 100644
|
||||
--- a/client/dhclient.8
|
||||
+++ b/client/dhclient.8
|
||||
@@ -134,6 +134,9 @@ dhclient - Dynamic Host Configuration Protocol Client
|
||||
@@ -135,6 +135,9 @@ dhclient - Dynamic Host Configuration Protocol Client
|
||||
.B -w
|
||||
]
|
||||
[
|
||||
|
|
@ -46,7 +62,7 @@ index aa2238d..005cda5 100644
|
|||
.B -B
|
||||
]
|
||||
[
|
||||
@@ -320,6 +323,32 @@ not to exit when it doesn't find any such interfaces. The
|
||||
@@ -329,6 +332,32 @@ not to exit when it doesn't find any such interfaces. The
|
||||
program can then be used to notify the client when a network interface
|
||||
has been added or removed, so that the client can attempt to configure an IP
|
||||
address on that interface.
|
||||
|
|
@ -80,12 +96,12 @@ index aa2238d..005cda5 100644
|
|||
.BI \-n
|
||||
Do not configure any interfaces. This is most likely to be useful in
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 09ae09b..2d564ff 100644
|
||||
index aefc119..b49fcb3 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -40,6 +40,10 @@
|
||||
#include <isc/file.h>
|
||||
#include <dns/result.h>
|
||||
@@ -41,6 +41,10 @@
|
||||
#include <sys/wait.h>
|
||||
#include <limits.h>
|
||||
|
||||
+#ifdef HAVE_LIBCAP_NG
|
||||
+#include <cap-ng.h>
|
||||
|
|
@ -94,7 +110,7 @@ index 09ae09b..2d564ff 100644
|
|||
/*
|
||||
* Defined in stdio.h when _GNU_SOURCE is set, but we don't want to define
|
||||
* that when building ISC code.
|
||||
@@ -239,6 +243,9 @@ main(int argc, char **argv) {
|
||||
@@ -272,6 +276,9 @@ main(int argc, char **argv) {
|
||||
int timeout_arg = 0;
|
||||
char *arg_conf = NULL;
|
||||
int arg_conf_len = 0;
|
||||
|
|
@ -104,18 +120,18 @@ index 09ae09b..2d564ff 100644
|
|||
|
||||
/* Initialize client globals. */
|
||||
memset(&default_duid, 0, sizeof(default_duid));
|
||||
@@ -548,6 +555,10 @@ main(int argc, char **argv) {
|
||||
}
|
||||
@@ -671,6 +678,10 @@ main(int argc, char **argv) {
|
||||
|
||||
dhclient_request_options = argv[i];
|
||||
|
||||
+ } else if (!strcmp(argv[i], "-nc")) {
|
||||
+#ifdef HAVE_LIBCAP_NG
|
||||
+ keep_capabilities = 1;
|
||||
+ keep_capabilities = 1;
|
||||
+#endif
|
||||
} else if (argv[i][0] == '-') {
|
||||
usage("Unknown command: %s", argv[i]);
|
||||
} else if (interfaces_requested < 0) {
|
||||
@@ -608,6 +619,19 @@ main(int argc, char **argv) {
|
||||
@@ -731,6 +742,19 @@ main(int argc, char **argv) {
|
||||
path_dhclient_script = s;
|
||||
}
|
||||
|
||||
|
|
@ -136,10 +152,10 @@ index 09ae09b..2d564ff 100644
|
|||
initialize_common_option_spaces();
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index adc98a8..8bbe5ca 100644
|
||||
index b2c306b..300117f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -592,6 +592,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn));
|
||||
@@ -603,6 +603,41 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void foo() __attribute__((noreturn));
|
||||
# Look for optional headers.
|
||||
AC_CHECK_HEADERS(sys/socket.h net/if_dl.h net/if6.h regex.h)
|
||||
|
||||
|
|
@ -182,20 +198,20 @@ index adc98a8..8bbe5ca 100644
|
|||
AC_SEARCH_LIBS(socket, [socket])
|
||||
AC_SEARCH_LIBS(inet_ntoa, [nsl])
|
||||
diff --git a/relay/Makefile.am b/relay/Makefile.am
|
||||
index 316a524..999e543 100644
|
||||
index 5562b69..4c5cfa6 100644
|
||||
--- a/relay/Makefile.am
|
||||
+++ b/relay/Makefile.am
|
||||
@@ -5,7 +5,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
|
||||
sbin_PROGRAMS = dhcrelay
|
||||
dhcrelay_SOURCES = dhcrelay.c
|
||||
dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
- $(BIND_LIBS)
|
||||
+ $(CAPNG_LDADD) $(BIND_LIBS)
|
||||
@@ -8,6 +8,7 @@ dhcrelay_LDADD = ../common/libdhcp.@A@ ../omapip/libomapi.@A@ \
|
||||
@BINDLIBIRSDIR@/libirs.@A@ \
|
||||
@BINDLIBDNSDIR@/libdns.@A@ \
|
||||
@BINDLIBISCCFGDIR@/libisccfg.@A@ \
|
||||
- @BINDLIBISCDIR@/libisc.@A@
|
||||
+ @BINDLIBISCDIR@/libisc.@A@ \
|
||||
+ $(CAPNG_LDADD)
|
||||
man_MANS = dhcrelay.8
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
|
||||
index eac119c..d2ab448 100644
|
||||
index a7b1286..0dc17d6 100644
|
||||
--- a/relay/dhcrelay.c
|
||||
+++ b/relay/dhcrelay.c
|
||||
@@ -32,6 +32,11 @@
|
||||
|
|
@ -210,7 +226,7 @@ index eac119c..d2ab448 100644
|
|||
TIME default_lease_time = 43200; /* 12 hours... */
|
||||
TIME max_lease_time = 86400; /* 24 hours... */
|
||||
struct tree_cache *global_options[256];
|
||||
@@ -472,6 +477,10 @@ main(int argc, char **argv) {
|
||||
@@ -614,6 +619,10 @@ main(int argc, char **argv) {
|
||||
if (++i == argc)
|
||||
usage(use_noarg, argv[i-1]);
|
||||
dhcrelay_sub_id = argv[i];
|
||||
|
|
@ -221,7 +237,7 @@ index eac119c..d2ab448 100644
|
|||
#endif
|
||||
} else if (!strcmp(argv[i], "-pf")) {
|
||||
if (++i == argc)
|
||||
@@ -547,6 +556,17 @@ main(int argc, char **argv) {
|
||||
@@ -684,6 +693,17 @@ main(int argc, char **argv) {
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -239,7 +255,7 @@ index eac119c..d2ab448 100644
|
|||
if (!quiet) {
|
||||
log_info("%s %s", message, PACKAGE_VERSION);
|
||||
log_info(copyright);
|
||||
@@ -699,6 +719,15 @@ main(int argc, char **argv) {
|
||||
@@ -840,6 +860,15 @@ main(int argc, char **argv) {
|
||||
signal(SIGTERM, dhcp_signal_handler); /* kill */
|
||||
#endif
|
||||
|
||||
|
|
@ -255,3 +271,6 @@ index eac119c..d2ab448 100644
|
|||
/* Start dispatching packets and timeouts... */
|
||||
dispatch();
|
||||
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,6 +1,26 @@
|
|||
diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c
|
||||
--- dhcp-4.3.4/client/clparse.c.rfc3442 2016-04-29 12:23:34.192032714 +0200
|
||||
+++ dhcp-4.3.4/client/clparse.c 2016-04-29 12:24:37.531016317 +0200
|
||||
From 7e6299e72feaaf7e8bd499614999ba8a07dd1a8a Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:32:35 +0100
|
||||
Subject: [PATCH 12/28] RFC 3442 - Classless Static Route Option for DHCPv4
|
||||
(#516325)
|
||||
|
||||
(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24572])
|
||||
---
|
||||
client/clparse.c | 13 ++++++++--
|
||||
common/dhcp-options.5 | 43 +++++++++++++++++++++++++++++++++
|
||||
common/inet.c | 54 +++++++++++++++++++++++++++++++++++++++++
|
||||
common/options.c | 49 ++++++++++++++++++++++++++++++++++++-
|
||||
common/parse.c | 56 ++++++++++++++++++++++++++++++++++++++++++-
|
||||
common/tables.c | 2 ++
|
||||
includes/dhcp.h | 1 +
|
||||
includes/dhcpd.h | 2 ++
|
||||
includes/dhctoken.h | 3 ++-
|
||||
9 files changed, 218 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/client/clparse.c b/client/clparse.c
|
||||
index 902b523..57f6456 100644
|
||||
--- a/client/clparse.c
|
||||
+++ b/client/clparse.c
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
struct client_config top_level_config;
|
||||
|
|
@ -10,7 +30,7 @@ diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c
|
|||
/* There can be 2 extra requested options for DHCPv4-over-DHCPv6. */
|
||||
struct option *default_requested_options[NUM_DEFAULT_REQUESTED_OPTS + 2 + 1];
|
||||
|
||||
@@ -87,7 +87,11 @@ isc_result_t read_client_conf ()
|
||||
@@ -90,7 +90,11 @@ isc_result_t read_client_conf ()
|
||||
dhcp_universe.code_hash, &code, 0, MDL);
|
||||
|
||||
/* 4 */
|
||||
|
|
@ -23,7 +43,7 @@ diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c
|
|||
option_code_hash_lookup(&default_requested_options[3],
|
||||
dhcp_universe.code_hash, &code, 0, MDL);
|
||||
|
||||
@@ -141,6 +145,11 @@ isc_result_t read_client_conf ()
|
||||
@@ -144,6 +148,11 @@ isc_result_t read_client_conf ()
|
||||
option_code_hash_lookup(&default_requested_options[13],
|
||||
dhcp_universe.code_hash, &code, 0, MDL);
|
||||
|
||||
|
|
@ -35,10 +55,11 @@ diff -up dhcp-4.3.4/client/clparse.c.rfc3442 dhcp-4.3.4/client/clparse.c
|
|||
for (code = 0 ; code < NUM_DEFAULT_REQUESTED_OPTS ; code++) {
|
||||
if (default_requested_options[code] == NULL)
|
||||
log_fatal("Unable to find option definition for "
|
||||
diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options.5
|
||||
--- dhcp-4.3.4/common/dhcp-options.5.rfc3442 2016-04-29 12:23:34.183032716 +0200
|
||||
+++ dhcp-4.3.4/common/dhcp-options.5 2016-04-29 12:23:34.237032703 +0200
|
||||
@@ -111,6 +111,26 @@ hexadecimal, separated by colons. For e
|
||||
diff --git a/common/dhcp-options.5 b/common/dhcp-options.5
|
||||
index a784b32..86f04ed 100644
|
||||
--- a/common/dhcp-options.5
|
||||
+++ b/common/dhcp-options.5
|
||||
@@ -117,6 +117,26 @@ hexadecimal, separated by colons. For example:
|
||||
or
|
||||
option dhcp-client-identifier 43:4c:49:45:54:2d:46:4f:4f;
|
||||
.fi
|
||||
|
|
@ -65,7 +86,7 @@ diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options
|
|||
.SH SETTING OPTION VALUES USING EXPRESSIONS
|
||||
Sometimes it's helpful to be able to set the value of a DHCP option
|
||||
based on some value that the client has sent. To do this, you can
|
||||
@@ -1031,6 +1051,29 @@ dhclient-script will create routes:
|
||||
@@ -1093,6 +1113,29 @@ dhclient-script will create routes:
|
||||
.RE
|
||||
.PP
|
||||
.nf
|
||||
|
|
@ -95,10 +116,11 @@ diff -up dhcp-4.3.4/common/dhcp-options.5.rfc3442 dhcp-4.3.4/common/dhcp-options
|
|||
.B option \fBstreettalk-directory-assistance-server\fR \fIip-address\fR
|
||||
[\fB,\fR \fIip-address\fR...]\fB;\fR
|
||||
.fi
|
||||
diff -up dhcp-4.3.4/common/inet.c.rfc3442 dhcp-4.3.4/common/inet.c
|
||||
--- dhcp-4.3.4/common/inet.c.rfc3442 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/common/inet.c 2016-04-29 12:23:34.237032703 +0200
|
||||
@@ -519,6 +519,60 @@ free_iaddrcidrnetlist(struct iaddrcidrne
|
||||
diff --git a/common/inet.c b/common/inet.c
|
||||
index 0f7f168..7c446d4 100644
|
||||
--- a/common/inet.c
|
||||
+++ b/common/inet.c
|
||||
@@ -519,6 +519,60 @@ free_iaddrcidrnetlist(struct iaddrcidrnetlist **result) {
|
||||
return ISC_R_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -159,10 +181,11 @@ diff -up dhcp-4.3.4/common/inet.c.rfc3442 dhcp-4.3.4/common/inet.c
|
|||
/* piaddr() turns an iaddr structure into a printable address. */
|
||||
/* XXX: should use a const pointer rather than passing the structure */
|
||||
const char *
|
||||
diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
||||
--- dhcp-4.3.4/common/options.c.rfc3442 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/common/options.c 2016-04-29 12:23:34.237032703 +0200
|
||||
@@ -713,7 +713,11 @@ cons_options(struct packet *inpacket, st
|
||||
diff --git a/common/options.c b/common/options.c
|
||||
index 92c8fee..66433c4 100644
|
||||
--- a/common/options.c
|
||||
+++ b/common/options.c
|
||||
@@ -734,7 +734,11 @@ cons_options(struct packet *inpacket, struct dhcp_packet *outpacket,
|
||||
* packet.
|
||||
*/
|
||||
priority_list[priority_len++] = DHO_SUBNET_MASK;
|
||||
|
|
@ -175,7 +198,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
|||
priority_list[priority_len++] = DHO_DOMAIN_NAME_SERVERS;
|
||||
priority_list[priority_len++] = DHO_HOST_NAME;
|
||||
priority_list[priority_len++] = DHO_FQDN;
|
||||
@@ -1694,6 +1698,7 @@ const char *pretty_print_option (option,
|
||||
@@ -1812,6 +1816,7 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
unsigned long tval;
|
||||
isc_boolean_t a_array = ISC_FALSE;
|
||||
int len_used;
|
||||
|
|
@ -183,7 +206,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
|||
|
||||
if (emit_commas)
|
||||
comma = ',';
|
||||
@@ -1702,6 +1707,7 @@ const char *pretty_print_option (option,
|
||||
@@ -1820,6 +1825,7 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
|
||||
memset (enumbuf, 0, sizeof enumbuf);
|
||||
|
||||
|
|
@ -191,7 +214,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
|||
/* Figure out the size of the data. */
|
||||
for (l = i = 0; option -> format [i]; i++, l++) {
|
||||
if (l >= sizeof(fmtbuf) - 1)
|
||||
@@ -1894,6 +1900,33 @@ const char *pretty_print_option (option,
|
||||
@@ -2029,6 +2035,33 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
if (numhunk < 0)
|
||||
numhunk = 1;
|
||||
|
||||
|
|
@ -225,7 +248,7 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
|||
/* Cycle through the array (or hunk) printing the data. */
|
||||
for (i = 0; i < numhunk; i++) {
|
||||
if ((a_array == ISC_TRUE) && (i != 0) && (numelem > 0)) {
|
||||
@@ -2049,6 +2082,20 @@ const char *pretty_print_option (option,
|
||||
@@ -2197,6 +2230,20 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
strcpy(op, piaddr(iaddr));
|
||||
dp += 4;
|
||||
break;
|
||||
|
|
@ -246,13 +269,15 @@ diff -up dhcp-4.3.4/common/options.c.rfc3442 dhcp-4.3.4/common/options.c
|
|||
case '6':
|
||||
iaddr.len = 16;
|
||||
memcpy(iaddr.iabuf, dp, 16);
|
||||
diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
||||
--- dhcp-4.3.4/common/parse.c.rfc3442 2016-04-29 12:23:34.220032707 +0200
|
||||
+++ dhcp-4.3.4/common/parse.c 2016-04-29 12:23:34.238032702 +0200
|
||||
@@ -341,6 +341,39 @@ int parse_ip_addr (cfile, addr)
|
||||
}
|
||||
diff --git a/common/parse.c b/common/parse.c
|
||||
index b123a6c..7cf4f2a 100644
|
||||
--- a/common/parse.c
|
||||
+++ b/common/parse.c
|
||||
@@ -344,6 +344,39 @@ int parse_ip_addr (cfile, addr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
+/*
|
||||
+ * destination-descriptor :== NUMBER DOT NUMBER |
|
||||
+ * NUMBER DOT NUMBER DOT NUMBER |
|
||||
+ * NUMBER DOT NUMBER DOT NUMBER DOT NUMBER |
|
||||
|
|
@ -285,11 +310,10 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
|||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
/*
|
||||
* Return true if every character in the string is hexadecimal.
|
||||
*/
|
||||
static int
|
||||
@@ -720,8 +753,10 @@ unsigned char *parse_numeric_aggregate (
|
||||
@@ -724,8 +757,10 @@ unsigned char *parse_numeric_aggregate (cfile, buf,
|
||||
if (count) {
|
||||
token = peek_token (&val, (unsigned *)0, cfile);
|
||||
if (token != separator) {
|
||||
|
|
@ -301,7 +325,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
|||
if (token != RBRACE && token != LBRACE)
|
||||
token = next_token (&val,
|
||||
(unsigned *)0,
|
||||
@@ -1668,6 +1703,9 @@ int parse_option_code_definition (cfile,
|
||||
@@ -1672,6 +1707,9 @@ int parse_option_code_definition (cfile, option)
|
||||
case IP_ADDRESS:
|
||||
type = 'I';
|
||||
break;
|
||||
|
|
@ -311,7 +335,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
|||
case IP6_ADDRESS:
|
||||
type = '6';
|
||||
break;
|
||||
@@ -5097,6 +5135,15 @@ int parse_option_token (rv, cfile, fmt,
|
||||
@@ -5124,6 +5162,15 @@ int parse_option_token (rv, cfile, fmt, expr, uniform, lookups)
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -327,7 +351,7 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
|||
case '6': /* IPv6 address. */
|
||||
if (!parse_ip6_addr(cfile, &addr)) {
|
||||
return 0;
|
||||
@@ -5374,6 +5421,13 @@ int parse_option_decl (oc, cfile)
|
||||
@@ -5401,6 +5448,13 @@ int parse_option_decl (oc, cfile)
|
||||
goto exit;
|
||||
len = ip_addr.len;
|
||||
dp = ip_addr.iabuf;
|
||||
|
|
@ -341,10 +365,11 @@ diff -up dhcp-4.3.4/common/parse.c.rfc3442 dhcp-4.3.4/common/parse.c
|
|||
|
||||
alloc:
|
||||
if (hunkix + len > sizeof hunkbuf) {
|
||||
diff -up dhcp-4.3.4/common/tables.c.rfc3442 dhcp-4.3.4/common/tables.c
|
||||
--- dhcp-4.3.4/common/tables.c.rfc3442 2016-04-29 12:23:34.209032710 +0200
|
||||
+++ dhcp-4.3.4/common/tables.c 2016-04-29 12:23:34.238032702 +0200
|
||||
@@ -45,6 +45,7 @@ HASH_FUNCTIONS (option_code, const unsig
|
||||
diff --git a/common/tables.c b/common/tables.c
|
||||
index ce12fcd..96521a6 100644
|
||||
--- a/common/tables.c
|
||||
+++ b/common/tables.c
|
||||
@@ -45,6 +45,7 @@ HASH_FUNCTIONS (option_code, const unsigned *, struct option,
|
||||
Format codes:
|
||||
|
||||
I - IPv4 address
|
||||
|
|
@ -352,7 +377,7 @@ diff -up dhcp-4.3.4/common/tables.c.rfc3442 dhcp-4.3.4/common/tables.c
|
|||
6 - IPv6 address
|
||||
l - 32-bit signed integer
|
||||
L - 32-bit unsigned integer
|
||||
@@ -216,6 +217,7 @@ static struct option dhcp_options[] = {
|
||||
@@ -223,6 +224,7 @@ static struct option dhcp_options[] = {
|
||||
#endif
|
||||
{ "subnet-selection", "I", &dhcp_universe, 118, 1 },
|
||||
{ "domain-search", "D", &dhcp_universe, 119, 1 },
|
||||
|
|
@ -360,10 +385,23 @@ diff -up dhcp-4.3.4/common/tables.c.rfc3442 dhcp-4.3.4/common/tables.c
|
|||
{ "vivco", "Evendor-class.", &dhcp_universe, 124, 1 },
|
||||
{ "vivso", "Evendor.", &dhcp_universe, 125, 1 },
|
||||
#if 0
|
||||
diff -up dhcp-4.3.4/includes/dhcpd.h.rfc3442 dhcp-4.3.4/includes/dhcpd.h
|
||||
--- dhcp-4.3.4/includes/dhcpd.h.rfc3442 2016-04-29 12:23:34.186032716 +0200
|
||||
+++ dhcp-4.3.4/includes/dhcpd.h 2016-04-29 12:23:34.239032702 +0200
|
||||
@@ -2894,6 +2894,7 @@ isc_result_t range2cidr(struct iaddrcidr
|
||||
diff --git a/includes/dhcp.h b/includes/dhcp.h
|
||||
index cafe172..5a73129 100644
|
||||
--- a/includes/dhcp.h
|
||||
+++ b/includes/dhcp.h
|
||||
@@ -159,6 +159,7 @@ struct dhcp_packet {
|
||||
#define DHO_V6_ONLY_PREFERRED 108 /* RFC8925 */
|
||||
#define DHO_SUBNET_SELECTION 118 /* RFC3011! */
|
||||
#define DHO_DOMAIN_SEARCH 119 /* RFC3397 */
|
||||
+#define DHO_CLASSLESS_STATIC_ROUTES 121 /* RFC3442 */
|
||||
#define DHO_VIVCO_SUBOPTIONS 124
|
||||
#define DHO_VIVSO_SUBOPTIONS 125
|
||||
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index 4a57002..25e1c72 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -2967,6 +2967,7 @@ isc_result_t range2cidr(struct iaddrcidrnetlist **result,
|
||||
const struct iaddr *lo, const struct iaddr *hi);
|
||||
isc_result_t free_iaddrcidrnetlist(struct iaddrcidrnetlist **result);
|
||||
const char *piaddr (struct iaddr);
|
||||
|
|
@ -371,7 +409,7 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.rfc3442 dhcp-4.3.4/includes/dhcpd.h
|
|||
char *piaddrmask(struct iaddr *, struct iaddr *);
|
||||
char *piaddrcidr(const struct iaddr *, unsigned int);
|
||||
u_int16_t validate_port(char *);
|
||||
@@ -3108,6 +3109,7 @@ void parse_client_lease_declaration (str
|
||||
@@ -3189,6 +3190,7 @@ void parse_client_lease_declaration (struct parse *,
|
||||
int parse_option_decl (struct option_cache **, struct parse *);
|
||||
void parse_string_list (struct parse *, struct string_list **, int);
|
||||
int parse_ip_addr (struct parse *, struct iaddr *);
|
||||
|
|
@ -379,27 +417,20 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.rfc3442 dhcp-4.3.4/includes/dhcpd.h
|
|||
int parse_ip_addr_with_subnet(struct parse *, struct iaddrmatch *);
|
||||
void parse_reject_statement (struct parse *, struct client_config *);
|
||||
|
||||
diff -up dhcp-4.3.4/includes/dhcp.h.rfc3442 dhcp-4.3.4/includes/dhcp.h
|
||||
--- dhcp-4.3.4/includes/dhcp.h.rfc3442 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/includes/dhcp.h 2016-04-29 12:23:34.239032702 +0200
|
||||
@@ -159,6 +159,7 @@ struct dhcp_packet {
|
||||
#define DHO_ASSOCIATED_IP 92
|
||||
#define DHO_SUBNET_SELECTION 118 /* RFC3011! */
|
||||
#define DHO_DOMAIN_SEARCH 119 /* RFC3397 */
|
||||
+#define DHO_CLASSLESS_STATIC_ROUTES 121 /* RFC3442 */
|
||||
#define DHO_VIVCO_SUBOPTIONS 124
|
||||
#define DHO_VIVSO_SUBOPTIONS 125
|
||||
|
||||
diff -up dhcp-4.3.4/includes/dhctoken.h.rfc3442 dhcp-4.3.4/includes/dhctoken.h
|
||||
--- dhcp-4.3.4/includes/dhctoken.h.rfc3442 2016-04-29 12:23:34.239032702 +0200
|
||||
+++ dhcp-4.3.4/includes/dhctoken.h 2016-04-29 12:25:07.236008628 +0200
|
||||
@@ -374,7 +374,8 @@ enum dhcp_token {
|
||||
LEASE_ID_FORMAT = 676,
|
||||
TOKEN_HEX = 677,
|
||||
diff --git a/includes/dhctoken.h b/includes/dhctoken.h
|
||||
index 6daa422..3f5334e 100644
|
||||
--- a/includes/dhctoken.h
|
||||
+++ b/includes/dhctoken.h
|
||||
@@ -378,7 +378,8 @@ enum dhcp_token {
|
||||
TOKEN_OCTAL = 678,
|
||||
- BOOTP_BROADCAST_ALWAYS = 679
|
||||
+ BOOTP_BROADCAST_ALWAYS = 679,
|
||||
+ DESTINATION_DESCRIPTOR = 680
|
||||
KEY_ALGORITHM = 679,
|
||||
BOOTP_BROADCAST_ALWAYS = 680,
|
||||
- DISCONNECT = 681
|
||||
+ DESTINATION_DESCRIPTOR = 681,
|
||||
+ DISCONNECT = 682
|
||||
};
|
||||
|
||||
#define is_identifier(x) ((x) >= FIRST_TOKEN && \
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,23 @@
|
|||
diff -up dhcp-4.3.4/client/dhc6.c.PPP dhcp-4.3.4/client/dhc6.c
|
||||
--- dhcp-4.3.4/client/dhc6.c.PPP 2016-04-29 12:46:29.824988665 +0200
|
||||
+++ dhcp-4.3.4/client/dhc6.c 2016-04-29 12:46:29.828988666 +0200
|
||||
@@ -5641,7 +5641,8 @@ make_client6_options(struct client_state
|
||||
From fe89d58ea8627c66feffa81997daa024834eeb15 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:33:06 +0100
|
||||
Subject: [PATCH 13/28] DHCPv6 over PPP support (#626514)
|
||||
|
||||
---
|
||||
client/dhc6.c | 3 ++-
|
||||
client/dhclient.c | 17 ++++++++++++++---
|
||||
common/bpf.c | 16 ++++++++++++++++
|
||||
common/lpf.c | 16 ++++++++++++++++
|
||||
includes/dhcp.h | 2 ++
|
||||
includes/dhcpd.h | 2 +-
|
||||
server/dhcpv6.c | 3 +++
|
||||
7 files changed, 54 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/client/dhc6.c b/client/dhc6.c
|
||||
index 35cf3d0..88fd07d 100644
|
||||
--- a/client/dhc6.c
|
||||
+++ b/client/dhc6.c
|
||||
@@ -5737,7 +5737,8 @@ make_client6_options(struct client_state *client, struct option_state **op,
|
||||
*/
|
||||
if ((oc = lookup_option(&dhcpv6_universe, *op,
|
||||
D6O_CLIENTID)) == NULL) {
|
||||
|
|
@ -11,10 +27,11 @@ diff -up dhcp-4.3.4/client/dhc6.c.PPP dhcp-4.3.4/client/dhc6.c
|
|||
MDL))
|
||||
log_fatal("Failure assembling a DUID.");
|
||||
|
||||
diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.PPP 2016-04-29 12:46:29.815988664 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 12:46:29.830988666 +0200
|
||||
@@ -1077,8 +1077,8 @@ main(int argc, char **argv) {
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index b49fcb3..a99e21f 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -1223,8 +1223,8 @@ main(int argc, char **argv) {
|
||||
if (default_duid.buffer != NULL)
|
||||
data_string_forget(&default_duid, MDL);
|
||||
|
||||
|
|
@ -25,7 +42,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c
|
|||
}
|
||||
}
|
||||
|
||||
@@ -3808,7 +3808,7 @@ write_options(struct client_state *clien
|
||||
@@ -4202,7 +4202,7 @@ write_options(struct client_state *client, struct option_state *options,
|
||||
* is not how it is intended. Upcoming rearchitecting the client should
|
||||
* address this "one daemon model."
|
||||
*/
|
||||
|
|
@ -34,7 +51,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c
|
|||
form_duid(struct data_string *duid, const char *file, int line)
|
||||
{
|
||||
struct interface_info *ip;
|
||||
@@ -3821,6 +3821,15 @@ form_duid(struct data_string *duid, cons
|
||||
@@ -4215,6 +4215,15 @@ form_duid(struct data_string *duid, const char *file, int line)
|
||||
if (ip == NULL)
|
||||
log_fatal("Impossible condition at %s:%d.", MDL);
|
||||
|
||||
|
|
@ -50,7 +67,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c
|
|||
if ((ip->hw_address.hlen == 0) ||
|
||||
(ip->hw_address.hlen > sizeof(ip->hw_address.hbuf)))
|
||||
log_fatal("Impossible hardware address length at %s:%d.", MDL);
|
||||
@@ -3866,6 +3875,8 @@ form_duid(struct data_string *duid, cons
|
||||
@@ -4260,6 +4269,8 @@ form_duid(struct data_string *duid, const char *file, int line)
|
||||
log_info("Created duid %s.", str);
|
||||
dfree(str, MDL);
|
||||
}
|
||||
|
|
@ -59,10 +76,11 @@ diff -up dhcp-4.3.4/client/dhclient.c.PPP dhcp-4.3.4/client/dhclient.c
|
|||
}
|
||||
|
||||
/* Write the default DUID to the lease store. */
|
||||
diff -up dhcp-4.3.4/common/bpf.c.PPP dhcp-4.3.4/common/bpf.c
|
||||
--- dhcp-4.3.4/common/bpf.c.PPP 2016-04-29 12:46:29.794988660 +0200
|
||||
+++ dhcp-4.3.4/common/bpf.c 2016-04-29 12:46:29.830988666 +0200
|
||||
@@ -599,6 +599,22 @@ get_hw_addr(const char *name, struct har
|
||||
diff --git a/common/bpf.c b/common/bpf.c
|
||||
index d2a0549..aede242 100644
|
||||
--- a/common/bpf.c
|
||||
+++ b/common/bpf.c
|
||||
@@ -650,6 +650,22 @@ get_hw_addr(const char *name, struct hardware *hw) {
|
||||
memcpy(&hw->hbuf[1], LLADDR(sa), sa->sdl_alen);
|
||||
break;
|
||||
#endif /* IFT_FDDI */
|
||||
|
|
@ -85,10 +103,11 @@ diff -up dhcp-4.3.4/common/bpf.c.PPP dhcp-4.3.4/common/bpf.c
|
|||
default:
|
||||
log_fatal("Unsupported device type %d for \"%s\"",
|
||||
sa->sdl_type, name);
|
||||
diff -up dhcp-4.3.4/common/lpf.c.PPP dhcp-4.3.4/common/lpf.c
|
||||
--- dhcp-4.3.4/common/lpf.c.PPP 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/common/lpf.c 2016-04-29 12:46:29.830988666 +0200
|
||||
@@ -548,6 +548,22 @@ get_hw_addr(const char *name, struct har
|
||||
diff --git a/common/lpf.c b/common/lpf.c
|
||||
index bd20b3f..bb8822a 100644
|
||||
--- a/common/lpf.c
|
||||
+++ b/common/lpf.c
|
||||
@@ -563,6 +563,22 @@ get_hw_addr(const char *name, struct hardware *hw) {
|
||||
hw->hbuf[0] = HTYPE_FDDI;
|
||||
memcpy(&hw->hbuf[1], sa->sa_data, 6);
|
||||
break;
|
||||
|
|
@ -111,22 +130,11 @@ diff -up dhcp-4.3.4/common/lpf.c.PPP dhcp-4.3.4/common/lpf.c
|
|||
default:
|
||||
log_fatal("Unsupported device type %ld for \"%s\"",
|
||||
(long int)sa->sa_family, name);
|
||||
diff -up dhcp-4.3.4/includes/dhcpd.h.PPP dhcp-4.3.4/includes/dhcpd.h
|
||||
--- dhcp-4.3.4/includes/dhcpd.h.PPP 2016-04-29 12:46:29.831988667 +0200
|
||||
+++ dhcp-4.3.4/includes/dhcpd.h 2016-04-29 12:47:13.167995959 +0200
|
||||
@@ -2990,7 +2990,7 @@ void client_dns_remove(struct client_sta
|
||||
|
||||
void dhcpv4_client_assignments(void);
|
||||
void dhcpv6_client_assignments(void);
|
||||
-void form_duid(struct data_string *duid, const char *file, int line);
|
||||
+isc_result_t form_duid(struct data_string *duid, const char *file, int line);
|
||||
|
||||
void dhcp4o6_start(void);
|
||||
|
||||
diff -up dhcp-4.3.4/includes/dhcp.h.PPP dhcp-4.3.4/includes/dhcp.h
|
||||
--- dhcp-4.3.4/includes/dhcp.h.PPP 2016-04-29 12:46:29.822988665 +0200
|
||||
+++ dhcp-4.3.4/includes/dhcp.h 2016-04-29 12:46:29.832988667 +0200
|
||||
@@ -81,6 +81,8 @@ struct dhcp_packet {
|
||||
diff --git a/includes/dhcp.h b/includes/dhcp.h
|
||||
index 5a73129..7202f1d 100644
|
||||
--- a/includes/dhcp.h
|
||||
+++ b/includes/dhcp.h
|
||||
@@ -80,6 +80,8 @@ struct dhcp_packet {
|
||||
* is no standard for this so we
|
||||
* just steal a type */
|
||||
|
||||
|
|
@ -135,10 +143,24 @@ diff -up dhcp-4.3.4/includes/dhcp.h.PPP dhcp-4.3.4/includes/dhcp.h
|
|||
/* Magic cookie validating dhcp options field (and bootp vendor
|
||||
extensions field). */
|
||||
#define DHCP_OPTIONS_COOKIE "\143\202\123\143"
|
||||
diff -up dhcp-4.3.4/server/dhcpv6.c.PPP dhcp-4.3.4/server/dhcpv6.c
|
||||
--- dhcp-4.3.4/server/dhcpv6.c.PPP 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/server/dhcpv6.c 2016-04-29 12:46:29.833988667 +0200
|
||||
@@ -454,6 +454,9 @@ generate_new_server_duid(void) {
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index 25e1c72..4c5e877 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -3071,7 +3071,7 @@ void client_dns_remove(struct client_state *client, struct iaddr *addr);
|
||||
|
||||
void dhcpv4_client_assignments(void);
|
||||
void dhcpv6_client_assignments(void);
|
||||
-void form_duid(struct data_string *duid, const char *file, int line);
|
||||
+isc_result_t form_duid(struct data_string *duid, const char *file, int line);
|
||||
|
||||
void dhcp4o6_start(void);
|
||||
|
||||
diff --git a/server/dhcpv6.c b/server/dhcpv6.c
|
||||
index 0ea0532..7d61dc5 100644
|
||||
--- a/server/dhcpv6.c
|
||||
+++ b/server/dhcpv6.c
|
||||
@@ -482,6 +482,9 @@ generate_new_server_duid(void) {
|
||||
if (p->hw_address.hlen > 0) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -148,3 +170,6 @@ diff -up dhcp-4.3.4/server/dhcpv6.c.PPP dhcp-4.3.4/server/dhcpv6.c
|
|||
}
|
||||
if (p == NULL) {
|
||||
return ISC_R_UNEXPECTED;
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,18 +1,34 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.lpf-ib 2016-05-02 14:37:36.945128001 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-05-02 14:37:36.952128005 +0200
|
||||
@@ -163,6 +163,8 @@ static const char use_noarg[] = "No argu
|
||||
static const char use_v6command[] = "Command not used for DHCPv4: %s";
|
||||
#endif
|
||||
From 90d64318e17df066c27b8e99ba6ab7f51154917b Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:34:21 +0100
|
||||
Subject: [PATCH 14/28] IPoIB support (#660681)
|
||||
|
||||
(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #24249])
|
||||
---
|
||||
client/dhclient.c | 33 ++++++
|
||||
common/bpf.c | 32 ++++++
|
||||
common/discover.c | 4 +-
|
||||
common/lpf.c | 274 ++++++++++++++++++++++++++++++++++++++++++----
|
||||
common/socket.c | 8 +-
|
||||
includes/dhcpd.h | 6 +-
|
||||
6 files changed, 329 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index a99e21f..48edddf 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -211,6 +211,8 @@ static const char use_v6command[] = "Command not used for DHCPv4: %s";
|
||||
|
||||
#define DHCLIENT_USAGEH "{--version|--help|-h}"
|
||||
|
||||
+static void setup_ib_interface(struct interface_info *ip);
|
||||
+
|
||||
static void
|
||||
usage(const char *sfmt, const char *sarg)
|
||||
{
|
||||
@@ -1066,6 +1068,13 @@ main(int argc, char **argv) {
|
||||
@@ -1213,6 +1215,14 @@ main(int argc, char **argv) {
|
||||
}
|
||||
srandom(seed + cur_time + (unsigned)getpid());
|
||||
srandom(seed);
|
||||
|
||||
+ /* Setup specific Infiniband options */
|
||||
+ for (ip = interfaces; ip; ip = ip->next) {
|
||||
|
|
@ -21,10 +37,11 @@ diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c
|
|||
+ setup_ib_interface(ip);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
+
|
||||
/*
|
||||
* Establish a default DUID. We always do so for v6 and
|
||||
@@ -1361,6 +1370,29 @@ int find_subnet (struct subnet **sp,
|
||||
* do so if desired for v4 via the -D or -i options
|
||||
@@ -1507,6 +1517,29 @@ int find_subnet (struct subnet **sp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -54,12 +71,13 @@ diff -up dhcp-4.3.4/client/dhclient.c.lpf-ib dhcp-4.3.4/client/dhclient.c
|
|||
/* Individual States:
|
||||
*
|
||||
* Each routine is called from the dhclient_state_machine() in one of
|
||||
diff -up dhcp-4.3.4/common/bpf.c.lpf-ib dhcp-4.3.4/common/bpf.c
|
||||
--- dhcp-4.3.4/common/bpf.c.lpf-ib 2016-05-02 14:37:36.946128001 +0200
|
||||
+++ dhcp-4.3.4/common/bpf.c 2016-05-02 14:37:36.952128005 +0200
|
||||
@@ -198,11 +198,43 @@ struct bpf_insn dhcp_bpf_filter [] = {
|
||||
BPF_STMT(BPF_RET+BPF_K, 0),
|
||||
};
|
||||
diff --git a/common/bpf.c b/common/bpf.c
|
||||
index aede242..812cac3 100644
|
||||
--- a/common/bpf.c
|
||||
+++ b/common/bpf.c
|
||||
@@ -237,11 +237,43 @@ int dhcp_bpf_relay_filter_len =
|
||||
sizeof dhcp_bpf_relay_filter / sizeof (struct bpf_insn);
|
||||
#endif
|
||||
|
||||
+/* Packet filter program for DHCP over Infiniband.
|
||||
+ *
|
||||
|
|
@ -101,10 +119,11 @@ diff -up dhcp-4.3.4/common/bpf.c.lpf-ib dhcp-4.3.4/common/bpf.c
|
|||
#if defined (HAVE_TR_SUPPORT)
|
||||
struct bpf_insn dhcp_bpf_tr_filter [] = {
|
||||
/* accept all token ring packets due to variable length header */
|
||||
diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c
|
||||
--- dhcp-4.3.4/common/discover.c.lpf-ib 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/common/discover.c 2016-05-02 14:38:08.257147982 +0200
|
||||
@@ -1235,7 +1235,7 @@ discover_interfaces(int state) {
|
||||
diff --git a/common/discover.c b/common/discover.c
|
||||
index ed338b4..e562225 100644
|
||||
--- a/common/discover.c
|
||||
+++ b/common/discover.c
|
||||
@@ -899,7 +899,7 @@ discover_interfaces(int state) {
|
||||
if_register_send(tmp);
|
||||
} else {
|
||||
/* get_hw_addr() was called by register. */
|
||||
|
|
@ -113,7 +132,7 @@ diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c
|
|||
}
|
||||
break;
|
||||
#ifdef DHCPv6
|
||||
@@ -1248,7 +1248,7 @@ discover_interfaces(int state) {
|
||||
@@ -912,7 +912,7 @@ discover_interfaces(int state) {
|
||||
so now we have to call it explicitly
|
||||
to not leave the hardware address unknown
|
||||
(some code expects it cannot be. */
|
||||
|
|
@ -122,10 +141,11 @@ diff -up dhcp-4.3.4/common/discover.c.lpf-ib dhcp-4.3.4/common/discover.c
|
|||
} else {
|
||||
if_register_linklocal6(tmp);
|
||||
}
|
||||
diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
||||
--- dhcp-4.3.4/common/lpf.c.lpf-ib 2016-05-02 14:37:36.947128002 +0200
|
||||
+++ dhcp-4.3.4/common/lpf.c 2016-05-02 14:37:36.953128006 +0200
|
||||
@@ -47,6 +47,17 @@
|
||||
diff --git a/common/lpf.c b/common/lpf.c
|
||||
index bb8822a..fcaa13d 100644
|
||||
--- a/common/lpf.c
|
||||
+++ b/common/lpf.c
|
||||
@@ -45,6 +45,17 @@
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
|
|
@ -143,7 +163,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
#endif
|
||||
|
||||
#if defined (USE_LPF_SEND) || defined (USE_LPF_RECEIVE)
|
||||
@@ -80,10 +91,20 @@ int if_register_lpf (info)
|
||||
@@ -78,10 +89,20 @@ int if_register_lpf (info)
|
||||
struct sockaddr common;
|
||||
} sa;
|
||||
struct ifreq ifr;
|
||||
|
|
@ -166,7 +186,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT ||
|
||||
errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT ||
|
||||
errno == EAFNOSUPPORT || errno == EINVAL) {
|
||||
@@ -106,6 +127,7 @@ int if_register_lpf (info)
|
||||
@@ -104,6 +125,7 @@ int if_register_lpf (info)
|
||||
/* Bind to the interface name */
|
||||
memset (&sa, 0, sizeof sa);
|
||||
sa.ll.sll_family = AF_PACKET;
|
||||
|
|
@ -174,7 +194,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
sa.ll.sll_ifindex = ifr.ifr_ifindex;
|
||||
if (bind (sock, &sa.common, sizeof sa)) {
|
||||
if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT ||
|
||||
@@ -122,8 +144,6 @@ int if_register_lpf (info)
|
||||
@@ -120,8 +142,6 @@ int if_register_lpf (info)
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -183,16 +203,16 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
return sock;
|
||||
}
|
||||
#endif /* USE_LPF_SEND || USE_LPF_RECEIVE */
|
||||
@@ -178,6 +198,8 @@ void if_deregister_send (info)
|
||||
@@ -176,6 +196,8 @@ void if_deregister_send (info)
|
||||
in bpf includes... */
|
||||
extern struct sock_filter dhcp_bpf_filter [];
|
||||
extern int dhcp_bpf_filter_len;
|
||||
+extern struct sock_filter dhcp_ib_bpf_filter [];
|
||||
+extern int dhcp_ib_bpf_filter_len;
|
||||
|
||||
#if defined (HAVE_TR_SUPPORT)
|
||||
extern struct sock_filter dhcp_bpf_tr_filter [];
|
||||
@@ -196,11 +218,12 @@ void if_register_receive (info)
|
||||
#if defined(RELAY_PORT)
|
||||
extern struct sock_filter dhcp_bpf_relay_filter [];
|
||||
@@ -199,11 +221,12 @@ void if_register_receive (info)
|
||||
#ifdef PACKET_AUXDATA
|
||||
{
|
||||
int val = 1;
|
||||
|
|
@ -210,21 +230,11 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
}
|
||||
}
|
||||
}
|
||||
@@ -250,15 +273,28 @@ static void lpf_gen_filter_setup (info)
|
||||
@@ -253,6 +276,18 @@ static void lpf_gen_filter_setup (info)
|
||||
|
||||
memset(&p, 0, sizeof(p));
|
||||
|
||||
- /* Set up the bpf filter program structure. This is defined in
|
||||
- bpf.c */
|
||||
- p.len = dhcp_bpf_filter_len;
|
||||
- p.filter = dhcp_bpf_filter;
|
||||
-
|
||||
- /* Patch the server port into the LPF program...
|
||||
- XXX changes to filter program may require changes
|
||||
- to the insn number(s) used below! XXX */
|
||||
- dhcp_bpf_filter [8].k = ntohs ((short)local_port);
|
||||
+ if (info->hw_address.hbuf[0] == HTYPE_INFINIBAND) {
|
||||
+ /* Set up the bpf filter program structure. */
|
||||
+ p.len = dhcp_ib_bpf_filter_len;
|
||||
+ p.filter = dhcp_ib_bpf_filter;
|
||||
+
|
||||
|
|
@ -233,22 +243,22 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
+ changes to filter program may require changes
|
||||
+ to the insn number(s) used below!
|
||||
+ XXX */
|
||||
+ dhcp_ib_bpf_filter[6].k = ntohs ((short)local_port);
|
||||
+ dhcp_ib_bpf_filter[6].k = ntohs (local_port);
|
||||
+ } else {
|
||||
+ /* Set up the bpf filter program structure.
|
||||
+ This is defined in bpf.c */
|
||||
+ p.len = dhcp_bpf_filter_len;
|
||||
+ p.filter = dhcp_bpf_filter;
|
||||
+
|
||||
+ /* Patch the server port into the LPF program...
|
||||
+ XXX changes to filter program may require changes
|
||||
+ to the insn number(s) used below! XXX */
|
||||
+ dhcp_bpf_filter [8].k = ntohs ((short)local_port);
|
||||
+ }
|
||||
/* Set up the bpf filter program structure. This is defined in
|
||||
bpf.c */
|
||||
p.len = dhcp_bpf_filter_len;
|
||||
@@ -275,6 +310,8 @@ static void lpf_gen_filter_setup (info)
|
||||
#endif
|
||||
dhcp_bpf_filter [8].k = ntohs (local_port);
|
||||
|
||||
+ }
|
||||
+
|
||||
if (setsockopt (info -> rfdesc, SOL_SOCKET, SO_ATTACH_FILTER, &p,
|
||||
sizeof p) < 0) {
|
||||
@@ -315,6 +351,54 @@ static void lpf_tr_filter_setup (info)
|
||||
if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT ||
|
||||
@@ -330,6 +367,54 @@ static void lpf_tr_filter_setup (info)
|
||||
#endif /* USE_LPF_RECEIVE */
|
||||
|
||||
#ifdef USE_LPF_SEND
|
||||
|
|
@ -303,7 +313,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
ssize_t send_packet (interface, packet, raw, len, from, to, hto)
|
||||
struct interface_info *interface;
|
||||
struct packet *packet;
|
||||
@@ -335,6 +419,11 @@ ssize_t send_packet (interface, packet,
|
||||
@@ -350,6 +435,11 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
|
||||
return send_fallback (interface, packet, raw,
|
||||
len, from, to, hto);
|
||||
|
||||
|
|
@ -315,7 +325,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
if (hto == NULL && interface->anycast_mac_addr.hlen)
|
||||
hto = &interface->anycast_mac_addr;
|
||||
|
||||
@@ -355,6 +444,42 @@ ssize_t send_packet (interface, packet,
|
||||
@@ -370,6 +460,42 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
|
||||
#endif /* USE_LPF_SEND */
|
||||
|
||||
#ifdef USE_LPF_RECEIVE
|
||||
|
|
@ -358,7 +368,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
ssize_t receive_packet (interface, buf, len, from, hfrom)
|
||||
struct interface_info *interface;
|
||||
unsigned char *buf;
|
||||
@@ -393,6 +518,10 @@ ssize_t receive_packet (interface, buf,
|
||||
@@ -408,6 +534,10 @@ ssize_t receive_packet (interface, buf, len, from, hfrom)
|
||||
};
|
||||
#endif /* PACKET_AUXDATA */
|
||||
|
||||
|
|
@ -369,7 +379,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
length = recvmsg (interface->rfdesc, &msg, 0);
|
||||
if (length <= 0)
|
||||
return length;
|
||||
@@ -506,11 +635,33 @@ void maybe_setup_fallback ()
|
||||
@@ -521,11 +651,33 @@ void maybe_setup_fallback ()
|
||||
#endif
|
||||
|
||||
#if defined (USE_LPF_RECEIVE) || defined (USE_LPF_HWADDR)
|
||||
|
|
@ -406,12 +416,8 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
|
||||
if (strlen(name) >= sizeof(tmp.ifr_name)) {
|
||||
log_fatal("Device name too long: \"%s\"", name);
|
||||
@@ -524,16 +675,61 @@ get_hw_addr(const char *name, struct har
|
||||
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",
|
||||
@@ -542,13 +694,58 @@ get_hw_addr(const char *name, struct hardware *hw) {
|
||||
log_fatal("Error getting hardware address for \"%s\": %m",
|
||||
name);
|
||||
}
|
||||
+ close(sock);
|
||||
|
|
@ -471,7 +477,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
break;
|
||||
case ARPHRD_IEEE802:
|
||||
#ifdef ARPHRD_IEEE802_TR
|
||||
@@ -541,18 +737,50 @@ get_hw_addr(const char *name, struct har
|
||||
@@ -556,18 +753,50 @@ get_hw_addr(const char *name, struct hardware *hw) {
|
||||
#endif /* ARPHRD_IEEE802_TR */
|
||||
hw->hlen = 7;
|
||||
hw->hbuf[0] = HTYPE_IEEE802;
|
||||
|
|
@ -526,7 +532,7 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
hw->hlen = 0;
|
||||
hw->hbuf[0] = HTYPE_RESERVED;
|
||||
/* 0xdeadbeef should never occur on the wire,
|
||||
@@ -565,10 +793,13 @@ get_hw_addr(const char *name, struct har
|
||||
@@ -580,10 +809,13 @@ get_hw_addr(const char *name, struct hardware *hw) {
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
|
|
@ -543,10 +549,11 @@ diff -up dhcp-4.3.4/common/lpf.c.lpf-ib dhcp-4.3.4/common/lpf.c
|
|||
+ freeifaddrs(ifaddrs);
|
||||
}
|
||||
#endif
|
||||
diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c
|
||||
--- dhcp-4.3.4/common/socket.c.lpf-ib 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/common/socket.c 2016-05-02 14:37:36.953128006 +0200
|
||||
@@ -328,7 +328,7 @@ void if_register_send (info)
|
||||
diff --git a/common/socket.c b/common/socket.c
|
||||
index 3953eac..903d034 100644
|
||||
--- a/common/socket.c
|
||||
+++ b/common/socket.c
|
||||
@@ -358,7 +358,7 @@ void if_register_send (info)
|
||||
info->wfdesc = if_register_socket(info, AF_INET, 0, NULL);
|
||||
/* If this is a normal IPv4 address, get the hardware address. */
|
||||
if (strcmp(info->name, "fallback") != 0)
|
||||
|
|
@ -555,7 +562,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c
|
|||
#if defined (USE_SOCKET_FALLBACK)
|
||||
/* Fallback only registers for send, but may need to receive as
|
||||
well. */
|
||||
@@ -391,7 +391,7 @@ void if_register_receive (info)
|
||||
@@ -421,7 +421,7 @@ void if_register_receive (info)
|
||||
#endif /* IP_PKTINFO... */
|
||||
/* If this is a normal IPv4 address, get the hardware address. */
|
||||
if (strcmp(info->name, "fallback") != 0)
|
||||
|
|
@ -564,7 +571,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c
|
|||
|
||||
if (!quiet_interface_discovery)
|
||||
log_info ("Listening on Socket/%s%s%s",
|
||||
@@ -505,7 +505,7 @@ if_register6(struct interface_info *info
|
||||
@@ -577,7 +577,7 @@ if_register6(struct interface_info *info, int do_multicast) {
|
||||
if (req_multi)
|
||||
if_register_multicast(info);
|
||||
|
||||
|
|
@ -573,7 +580,7 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c
|
|||
|
||||
if (!quiet_interface_discovery) {
|
||||
if (info->shared_network != NULL) {
|
||||
@@ -561,7 +561,7 @@ if_register_linklocal6(struct interface_
|
||||
@@ -633,7 +633,7 @@ if_register_linklocal6(struct interface_info *info) {
|
||||
info->rfdesc = sock;
|
||||
info->wfdesc = sock;
|
||||
|
||||
|
|
@ -582,10 +589,11 @@ diff -up dhcp-4.3.4/common/socket.c.lpf-ib dhcp-4.3.4/common/socket.c
|
|||
|
||||
if (!quiet_interface_discovery) {
|
||||
if (info->shared_network != NULL) {
|
||||
diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h
|
||||
--- dhcp-4.3.4/includes/dhcpd.h.lpf-ib 2016-05-02 14:37:36.948128002 +0200
|
||||
+++ dhcp-4.3.4/includes/dhcpd.h 2016-05-02 14:37:36.954128006 +0200
|
||||
@@ -482,6 +482,9 @@ struct packet {
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index 4c5e877..e9e52e7 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -485,6 +485,9 @@ struct packet {
|
||||
|
||||
#define HARDWARE_ADDR_LEN 20
|
||||
|
||||
|
|
@ -595,7 +603,7 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h
|
|||
struct hardware {
|
||||
u_int8_t hlen;
|
||||
u_int8_t hbuf[HARDWARE_ADDR_LEN + 1];
|
||||
@@ -1343,6 +1346,7 @@ struct interface_info {
|
||||
@@ -1380,6 +1383,7 @@ struct interface_info {
|
||||
struct shared_network *shared_network;
|
||||
/* Networks connected to this interface. */
|
||||
struct hardware hw_address; /* Its physical address. */
|
||||
|
|
@ -603,7 +611,7 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h
|
|||
struct in_addr *addresses; /* Addresses associated with this
|
||||
* interface.
|
||||
*/
|
||||
@@ -2580,7 +2584,7 @@ void print_dns_status (int, struct dhcp_
|
||||
@@ -2649,7 +2653,7 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t);
|
||||
#endif
|
||||
const char *print_time(TIME);
|
||||
|
||||
|
|
@ -612,3 +620,6 @@ diff -up dhcp-4.3.4/includes/dhcpd.h.lpf-ib dhcp-4.3.4/includes/dhcpd.h
|
|||
char *buf_to_hex (const unsigned char *s, unsigned len,
|
||||
const char *file, int line);
|
||||
char *format_lease_id(const unsigned char *s, unsigned len, int format,
|
||||
--
|
||||
2.35.1
|
||||
|
||||
327
0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch
Normal file
327
0015-Add-GUID-DUID-to-dhcpd-logs-1064416.patch
Normal file
|
|
@ -0,0 +1,327 @@
|
|||
From 3baf35269555e2223dbd1733cb1c475cb7f2ed7a Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:35:47 +0100
|
||||
Subject: [PATCH 15/28] Add GUID/DUID to dhcpd logs (#1064416)
|
||||
|
||||
---
|
||||
client/dhclient.c | 70 ++++++++++++++++++++++++++++++++++--------
|
||||
server/dhcp.c | 78 ++++++++++++++++++++++++++++-------------------
|
||||
2 files changed, 105 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 48edddf..181f6e1 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -1176,6 +1176,26 @@ main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
|
||||
+ /* We create a backup seed before rediscovering interfaces in order to
|
||||
+ have a seed built using all of the available interfaces
|
||||
+ It's interesting if required interfaces doesn't let us defined
|
||||
+ a really unique seed due to a lack of valid HW addr later
|
||||
+ (this is the case with DHCP over IB)
|
||||
+ We only use the last device as using a sum could broke the
|
||||
+ uniqueness of the seed among multiple nodes
|
||||
+ */
|
||||
+ unsigned backup_seed = 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);
|
||||
+ backup_seed = junk;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
/* 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
|
||||
@@ -1204,14 +1224,34 @@ main(int argc, char **argv) {
|
||||
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;
|
||||
}
|
||||
- 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);
|
||||
+ }
|
||||
+ 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 */
|
||||
+ }
|
||||
+ seed += ((unsigned)(cur_tv.tv_usec * 1000000)) + (unsigned)getpid();
|
||||
}
|
||||
srandom(seed);
|
||||
|
||||
@@ -1869,9 +1909,10 @@ void dhcpack (packet)
|
||||
return;
|
||||
}
|
||||
|
||||
- log_info ("DHCPACK of %s from %s",
|
||||
+ log_info ("DHCPACK of %s from %s (xid=0x%x)",
|
||||
inet_ntoa(packet->raw->yiaddr),
|
||||
- piaddr (packet->client_addr));
|
||||
+ piaddr (packet -> client_addr),
|
||||
+ ntohl(client -> xid));
|
||||
|
||||
/* Check v6only first. */
|
||||
v6only_wait = check_v6only(packet, client);
|
||||
@@ -2825,7 +2866,7 @@ void dhcpnak (packet)
|
||||
return;
|
||||
}
|
||||
|
||||
- log_info ("DHCPNAK from %s", piaddr (packet -> client_addr));
|
||||
+ log_info ("DHCPNAK from %s (xid=0x%x)", piaddr (packet -> client_addr), ntohl(client -> xid));
|
||||
|
||||
if (!client -> active) {
|
||||
#if defined (DEBUG)
|
||||
@@ -2958,10 +2999,10 @@ void send_discover (cpp)
|
||||
(long)(client -> interval));
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPDISCOVER on %s to %s port %d interval %ld",
|
||||
+ log_info ("DHCPDISCOVER on %s to %s port %d interval %ld (xid=0x%x)",
|
||||
client -> name ? client -> name : client -> interface -> name,
|
||||
inet_ntoa (sockaddr_broadcast.sin_addr),
|
||||
- ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval));
|
||||
+ ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval), ntohl(client -> xid));
|
||||
|
||||
/* Send out a packet. */
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
@@ -3355,10 +3396,12 @@ void send_request (cpp)
|
||||
}
|
||||
|
||||
strncpy(rip_buf, rip_str, sizeof(rip_buf)-1);
|
||||
- log_info ("DHCPREQUEST for %s on %s to %s port %d", rip_buf,
|
||||
+ log_info ("DHCPREQUEST for %s on %s to %s port %d (xid=0x%x)",
|
||||
+ rip_buf,
|
||||
client->name ? client->name : client->interface->name,
|
||||
inet_ntoa(destination.sin_addr),
|
||||
- ntohs (destination.sin_port));
|
||||
+ ntohs (destination.sin_port),
|
||||
+ ntohl(client -> xid));
|
||||
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
if (dhcpv4_over_dhcpv6) {
|
||||
@@ -3415,11 +3458,13 @@ void send_decline (cpp)
|
||||
log_info ("DHCPDECLINE");
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPDECLINE of %s on %s to %s port %d",
|
||||
+ log_info ("DHCPDECLINE of %s on %s to %s port %d (xid=0x%x)",
|
||||
piaddr(client->requested_address),
|
||||
(client->name ? client->name : client->interface->name),
|
||||
inet_ntoa(sockaddr_broadcast.sin_addr),
|
||||
- ntohs(sockaddr_broadcast.sin_port));
|
||||
+ ntohs(sockaddr_broadcast.sin_port),
|
||||
+ ntohl(client -> xid));
|
||||
+
|
||||
|
||||
/* Send out a packet. */
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
@@ -3478,11 +3523,12 @@ void send_release (cpp)
|
||||
log_info ("DHCPRELEASE");
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPRELEASE of %s on %s to %s port %d",
|
||||
+ log_info ("DHCPRELEASE of %s on %s to %s port %d (xid=0x%x)",
|
||||
piaddr(client->active->address),
|
||||
client->name ? client->name : client->interface->name,
|
||||
inet_ntoa (destination.sin_addr),
|
||||
- ntohs (destination.sin_port));
|
||||
+ ntohs (destination.sin_port),
|
||||
+ ntohl(client -> xid));
|
||||
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
if (dhcpv4_over_dhcpv6) {
|
||||
diff --git a/server/dhcp.c b/server/dhcp.c
|
||||
index ae805a6..8363840 100644
|
||||
--- a/server/dhcp.c
|
||||
+++ b/server/dhcp.c
|
||||
@@ -93,6 +93,42 @@ const int dhcp_type_name_max = ((sizeof dhcp_type_names) / sizeof (char *));
|
||||
|
||||
static TIME leaseTimeCheck(TIME calculated, TIME alternate);
|
||||
|
||||
+char *print_client_identifier_from_packet (packet)
|
||||
+ struct packet *packet;
|
||||
+{
|
||||
+ struct option_cache *oc;
|
||||
+ struct data_string client_identifier;
|
||||
+ char *ci;
|
||||
+
|
||||
+ memset (&client_identifier, 0, sizeof client_identifier);
|
||||
+
|
||||
+ oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
+ DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
+ if (oc &&
|
||||
+ evaluate_option_cache (&client_identifier,
|
||||
+ packet, (struct lease *)0,
|
||||
+ (struct client_state *)0,
|
||||
+ packet -> options,
|
||||
+ (struct option_state *)0,
|
||||
+ &global_scope, oc, MDL)) {
|
||||
+ ci = print_hw_addr (HTYPE_INFINIBAND, client_identifier.len, client_identifier.data);
|
||||
+ data_string_forget (&client_identifier, MDL);
|
||||
+ return ci;
|
||||
+ } else
|
||||
+ return "\"no client id\"";
|
||||
+}
|
||||
+
|
||||
+char *print_hw_addr_or_client_id (packet)
|
||||
+ struct packet *packet;
|
||||
+{
|
||||
+ if (packet -> raw -> htype == HTYPE_INFINIBAND)
|
||||
+ return print_client_identifier_from_packet (packet);
|
||||
+ else
|
||||
+ return print_hw_addr (packet -> raw -> htype,
|
||||
+ packet -> raw -> hlen,
|
||||
+ packet -> raw -> chaddr);
|
||||
+}
|
||||
+
|
||||
void
|
||||
dhcp (struct packet *packet) {
|
||||
int ms_nulltp = 0;
|
||||
@@ -135,9 +171,7 @@ dhcp (struct packet *packet) {
|
||||
|
||||
log_info("%s from %s via %s: %s", s,
|
||||
(packet->raw->htype
|
||||
- ? print_hw_addr(packet->raw->htype,
|
||||
- packet->raw->hlen,
|
||||
- packet->raw->chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: "<no identifier>"),
|
||||
packet->raw->giaddr.s_addr
|
||||
? inet_ntoa(packet->raw->giaddr)
|
||||
@@ -334,9 +368,7 @@ void dhcpdiscover (packet, ms_nulltp)
|
||||
#endif
|
||||
snprintf (msgbuf, sizeof msgbuf, "DHCPDISCOVER from %s %s%s%svia %s",
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id (packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -548,9 +580,7 @@ void dhcprequest (packet, ms_nulltp, ip_lease)
|
||||
"DHCPREQUEST for %s%s from %s %s%s%svia %s",
|
||||
piaddr (cip), smbuf,
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -791,9 +821,7 @@ void dhcprelease (packet, ms_nulltp)
|
||||
if ((oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_REQUESTED_ADDRESS))) {
|
||||
log_info ("DHCPRELEASE from %s specified requested-address.",
|
||||
- print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr));
|
||||
+ print_hw_addr_or_client_id(packet));
|
||||
}
|
||||
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
@@ -885,9 +913,7 @@ void dhcprelease (packet, ms_nulltp)
|
||||
"DHCPRELEASE of %s from %s %s%s%svia %s (%sfound)",
|
||||
cstr,
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -992,9 +1018,7 @@ void dhcpdecline (packet, ms_nulltp)
|
||||
"DHCPDECLINE of %s from %s %s%s%svia %s",
|
||||
piaddr (cip),
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -1740,8 +1764,7 @@ void dhcpinform (packet, ms_nulltp)
|
||||
/* Report what we're sending. */
|
||||
snprintf(msgbuf, sizeof msgbuf, "DHCPACK to %s (%s) via", piaddr(cip),
|
||||
(packet->raw->htype && packet->raw->hlen) ?
|
||||
- print_hw_addr(packet->raw->htype, packet->raw->hlen,
|
||||
- packet->raw->chaddr) :
|
||||
+ print_hw_addr_or_client_id(packet) :
|
||||
"<no client hardware address>");
|
||||
log_info("%s %s", msgbuf, gip.len ? piaddr(gip) :
|
||||
packet->interface->name);
|
||||
@@ -1926,9 +1949,7 @@ void nak_lease (packet, cip, network_group)
|
||||
#endif
|
||||
log_info ("DHCPNAK on %s to %s via %s",
|
||||
piaddr (*cip),
|
||||
- print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr),
|
||||
+ print_hw_addr_or_client_id(packet),
|
||||
packet -> raw -> giaddr.s_addr
|
||||
? inet_ntoa (packet -> raw -> giaddr)
|
||||
: packet -> interface -> name);
|
||||
@@ -4044,7 +4065,7 @@ void dhcp_reply (lease)
|
||||
? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER")
|
||||
: "BOOTREPLY"),
|
||||
piaddr (lease -> ip_addr),
|
||||
- (lease -> hardware_addr.hlen
|
||||
+ (lease -> hardware_addr.hlen > 1
|
||||
? print_hw_addr (lease -> hardware_addr.hbuf [0],
|
||||
lease -> hardware_addr.hlen - 1,
|
||||
&lease -> hardware_addr.hbuf [1])
|
||||
@@ -4605,10 +4626,7 @@ int find_lease (struct lease **lp,
|
||||
if (uid_lease) {
|
||||
if (uid_lease->binding_state == FTS_ACTIVE) {
|
||||
log_error ("client %s has duplicate%s on %s",
|
||||
- (print_hw_addr
|
||||
- (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)),
|
||||
+ (print_hw_addr_or_client_id(packet)),
|
||||
" leases",
|
||||
(ip_lease -> subnet ->
|
||||
shared_network -> name));
|
||||
@@ -4775,9 +4793,7 @@ int find_lease (struct lease **lp,
|
||||
log_error("uid lease %s for client %s is duplicate "
|
||||
"on %s",
|
||||
piaddr(uid_lease->ip_addr),
|
||||
- print_hw_addr(packet->raw->htype,
|
||||
- packet->raw->hlen,
|
||||
- packet->raw->chaddr),
|
||||
+ print_hw_addr_or_client_id(packet),
|
||||
uid_lease->subnet->shared_network->name);
|
||||
|
||||
if (!packet -> raw -> ciaddr.s_addr &&
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,18 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.duid_uuid dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.duid_uuid 2016-04-29 12:58:14.846150838 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 12:58:14.851150839 +0200
|
||||
@@ -3868,6 +3868,59 @@ write_options(struct client_state *clien
|
||||
From 0a0a7e1afa171289b9e9d855c519101bbd71b5fe Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:36:30 +0100
|
||||
Subject: [PATCH 16/28] Turn on creating/sending of DUID
|
||||
|
||||
as client identifier with DHCPv4 clients (#560361c#40, rfc4361)
|
||||
---
|
||||
client/dhclient.c | 74 ++++++++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 70 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 181f6e1..444d251 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -4267,6 +4267,59 @@ write_options(struct client_state *client, struct option_state *options,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -61,7 +72,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.duid_uuid dhcp-4.3.4/client/dhclient.c
|
|||
/*
|
||||
* The "best" default DUID, since we cannot predict any information
|
||||
* about the system (such as whether or not the hardware addresses are
|
||||
@@ -3888,6 +3941,7 @@ form_duid(struct data_string *duid, cons
|
||||
@@ -4287,6 +4340,7 @@ form_duid(struct data_string *duid, const char *file, int line)
|
||||
struct interface_info *ip;
|
||||
int len;
|
||||
char *str;
|
||||
|
|
@ -69,7 +80,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.duid_uuid dhcp-4.3.4/client/dhclient.c
|
|||
|
||||
/* For now, just use the first interface on the list. */
|
||||
ip = interfaces;
|
||||
@@ -3908,9 +3962,16 @@ form_duid(struct data_string *duid, cons
|
||||
@@ -4307,9 +4361,16 @@ form_duid(struct data_string *duid, const char *file, int line)
|
||||
(ip->hw_address.hlen > sizeof(ip->hw_address.hbuf)))
|
||||
log_fatal("Impossible hardware address length at %s:%d.", MDL);
|
||||
|
||||
|
|
@ -89,7 +100,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.duid_uuid dhcp-4.3.4/client/dhclient.c
|
|||
/*
|
||||
* 2 bytes for the 'duid type' field.
|
||||
* 2 bytes for the 'htype' field.
|
||||
@@ -3921,13 +3982,18 @@ form_duid(struct data_string *duid, cons
|
||||
@@ -4320,13 +4381,18 @@ form_duid(struct data_string *duid, const char *file, int line)
|
||||
len = 4 + (ip->hw_address.hlen - 1);
|
||||
if (duid_type == DUID_LLT)
|
||||
len += 4;
|
||||
|
|
@ -109,3 +120,6 @@ diff -up dhcp-4.3.4/client/dhclient.c.duid_uuid dhcp-4.3.4/client/dhclient.c
|
|||
putUShort(duid->buffer->data, DUID_LLT);
|
||||
putUShort(duid->buffer->data + 2, ip->hw_address.hbuf[0]);
|
||||
putULong(duid->buffer->data + 4, cur_time - DUID_TIME_EPOCH);
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,19 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.bind-iface 2016-04-29 13:06:50.595257108 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 13:08:30.237281528 +0200
|
||||
@@ -3023,6 +3023,14 @@ void send_request (cpp)
|
||||
From d45463c2007a78623f2c90c250bb8e2f3e34a852 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:39:36 +0100
|
||||
Subject: [PATCH 17/28] Send unicast request/release via correct interface
|
||||
|
||||
(#800561, #1177351)
|
||||
(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #30544])
|
||||
---
|
||||
client/dhclient.c | 30 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 444d251..d607975 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -3417,6 +3417,14 @@ void send_request (cpp)
|
||||
#endif
|
||||
if (destination.sin_addr.s_addr != INADDR_BROADCAST &&
|
||||
fallback_interface) {
|
||||
|
|
@ -16,7 +28,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c
|
|||
result = send_packet(fallback_interface, NULL, &client->packet,
|
||||
client->packet_length, from, &destination,
|
||||
NULL);
|
||||
@@ -3032,6 +3040,13 @@ void send_request (cpp)
|
||||
@@ -3426,6 +3434,13 @@ void send_request (cpp)
|
||||
client->packet_length,
|
||||
fallback_interface->name);
|
||||
}
|
||||
|
|
@ -30,7 +42,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c
|
|||
}
|
||||
else {
|
||||
/* Send out a packet. */
|
||||
@@ -3144,6 +3159,14 @@ void send_release (cpp)
|
||||
@@ -3543,6 +3558,14 @@ void send_release (cpp)
|
||||
} else
|
||||
#endif
|
||||
if (fallback_interface) {
|
||||
|
|
@ -45,7 +57,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c
|
|||
result = send_packet(fallback_interface, NULL, &client->packet,
|
||||
client->packet_length, from, &destination,
|
||||
NULL);
|
||||
@@ -3153,6 +3176,13 @@ void send_release (cpp)
|
||||
@@ -3552,6 +3575,13 @@ void send_release (cpp)
|
||||
client->packet_length,
|
||||
fallback_interface->name);
|
||||
}
|
||||
|
|
@ -59,3 +71,6 @@ diff -up dhcp-4.3.4/client/dhclient.c.bind-iface dhcp-4.3.4/client/dhclient.c
|
|||
} else {
|
||||
/* Send out a packet. */
|
||||
result = send_packet(client->interface, NULL, &client->packet,
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,18 @@
|
|||
diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover.c
|
||||
--- dhcp-4.3.0a1/common/discover.c.error2info 2013-12-20 13:59:15.148553898 +0100
|
||||
+++ dhcp-4.3.0a1/common/discover.c 2013-12-20 13:59:15.181553438 +0100
|
||||
@@ -779,9 +779,9 @@ discover_interfaces(int state) {
|
||||
From 840c4f2175d14fa485f2a5e50a005847940b7e1f Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:40:51 +0100
|
||||
Subject: [PATCH 18/28] No subnet declaration for <iface>' should be info, not
|
||||
error.
|
||||
|
||||
---
|
||||
common/discover.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/common/discover.c b/common/discover.c
|
||||
index e562225..b4b1959 100644
|
||||
--- a/common/discover.c
|
||||
+++ b/common/discover.c
|
||||
@@ -806,9 +806,9 @@ discover_interfaces(int state) {
|
||||
|
||||
/* We must have a subnet declaration for each interface. */
|
||||
if (!tmp->shared_network && (state == DISCOVER_SERVER)) {
|
||||
|
|
@ -10,10 +21,10 @@ diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover.
|
|||
if (local_family == AF_INET) {
|
||||
- log_error("No subnet declaration for %s (%s).",
|
||||
+ log_info("No subnet declaration for %s (%s).",
|
||||
tmp->name,
|
||||
tmp->name,
|
||||
(tmp->addresses == NULL) ?
|
||||
"no IPv4 addresses" :
|
||||
@@ -796,26 +796,26 @@ discover_interfaces(int state) {
|
||||
@@ -823,26 +823,26 @@ discover_interfaces(int state) {
|
||||
} else {
|
||||
strcpy(abuf, "no IPv6 addresses");
|
||||
}
|
||||
|
|
@ -46,3 +57,6 @@ diff -up dhcp-4.3.0a1/common/discover.c.error2info dhcp-4.3.0a1/common/discover.
|
|||
goto next;
|
||||
} else {
|
||||
log_error ("You must write a %s",
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
From eeb2e5bcedd62f21472da165b80741f8072420cf Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:41:14 +0100
|
||||
Subject: [PATCH 19/28] dhclient: write DUID_LLT even in stateless mode
|
||||
(#1156356)
|
||||
|
||||
(Submitted to dhcp-bugs@isc.org - [ISC-Bugs #38144])
|
||||
---
|
||||
client/dhclient.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index d607975..6bbefc7 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -1462,6 +1462,9 @@ void run_stateless(int exit_mode, u_int16_t port)
|
||||
data_string_forget(&default_duid, MDL);
|
||||
|
||||
form_duid(&default_duid, MDL);
|
||||
+ if (form_duid(&default_duid, MDL) == ISC_R_SUCCESS &&
|
||||
+ duid_type == DUID_LLT)
|
||||
+ write_duid(&default_duid);
|
||||
}
|
||||
|
||||
#ifdef DHCP4o6
|
||||
--
|
||||
2.35.1
|
||||
|
||||
100
0020-Discover-all-hwaddress-for-xid-uniqueness.patch
Normal file
100
0020-Discover-all-hwaddress-for-xid-uniqueness.patch
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
From 908ea5f3a45a050a878de16d5acde6eda1b77d9f Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:42:50 +0100
|
||||
Subject: [PATCH 20/28] Discover all hwaddress for xid uniqueness
|
||||
|
||||
---
|
||||
common/discover.c | 2 ++
|
||||
common/lpf.c | 27 ++++++++++++++++++++++-----
|
||||
includes/dhcpd.h | 3 +++
|
||||
3 files changed, 27 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/common/discover.c b/common/discover.c
|
||||
index b4b1959..96dcdcf 100644
|
||||
--- a/common/discover.c
|
||||
+++ b/common/discover.c
|
||||
@@ -653,6 +653,8 @@ discover_interfaces(int state) {
|
||||
interface_dereference(&tmp, MDL);
|
||||
tmp = interfaces; /* XXX */
|
||||
}
|
||||
+ if (tmp != NULL)
|
||||
+ try_hw_addr(tmp);
|
||||
|
||||
if (dhcp_interface_discovery_hook) {
|
||||
(*dhcp_interface_discovery_hook)(tmp);
|
||||
diff --git a/common/lpf.c b/common/lpf.c
|
||||
index fcaa13d..77a5668 100644
|
||||
--- a/common/lpf.c
|
||||
+++ b/common/lpf.c
|
||||
@@ -713,8 +713,22 @@ ioctl_get_ll(char *name)
|
||||
return sll;
|
||||
}
|
||||
|
||||
+// define ?
|
||||
+void try_hw_addr(struct interface_info *info){
|
||||
+ get_hw_addr2(info);
|
||||
+};
|
||||
+
|
||||
void
|
||||
get_hw_addr(struct interface_info *info)
|
||||
+{
|
||||
+ if (get_hw_addr2(info) == ISC_R_NOTFOUND){
|
||||
+ log_fatal("Unsupported device type for \"%s\"",
|
||||
+ info->name);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+isc_result_t
|
||||
+get_hw_addr2(struct interface_info *info)
|
||||
{
|
||||
struct hardware *hw = &info->hw_address;
|
||||
char *name = info->name;
|
||||
@@ -724,7 +738,8 @@ get_hw_addr(struct interface_info *info)
|
||||
int sll_allocated = 0;
|
||||
char *dup = NULL;
|
||||
char *colon = NULL;
|
||||
-
|
||||
+ isc_result_t result = ISC_R_SUCCESS;
|
||||
+
|
||||
if (getifaddrs(&ifaddrs) == -1)
|
||||
log_fatal("Failed to get interfaces");
|
||||
|
||||
@@ -808,14 +823,16 @@ get_hw_addr(struct interface_info *info)
|
||||
hw->hbuf[4] = 0xef;
|
||||
break;
|
||||
#endif
|
||||
- default:
|
||||
- freeifaddrs(ifaddrs);
|
||||
- log_fatal("Unsupported device type %hu for \"%s\"",
|
||||
- sll->sll_hatype, name);
|
||||
+ default:
|
||||
+ log_error("Unsupported device type %hu for \"%s\"",
|
||||
+ sll->sll_hatype, name);
|
||||
+ result = ISC_R_NOTFOUND;
|
||||
+
|
||||
}
|
||||
|
||||
if (sll_allocated)
|
||||
dfree(sll, MDL);
|
||||
freeifaddrs(ifaddrs);
|
||||
+ return result;
|
||||
}
|
||||
#endif
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index e9e52e7..fabad01 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -2653,7 +2653,10 @@ void print_dns_status (int, struct dhcp_ddns_cb *, isc_result_t);
|
||||
#endif
|
||||
const char *print_time(TIME);
|
||||
|
||||
+
|
||||
void get_hw_addr(struct interface_info *info);
|
||||
+void try_hw_addr(struct interface_info *info);
|
||||
+isc_result_t get_hw_addr2(struct interface_info *info);
|
||||
char *buf_to_hex (const unsigned char *s, unsigned len,
|
||||
const char *file, int line);
|
||||
char *format_lease_id(const unsigned char *s, unsigned len, int format,
|
||||
--
|
||||
2.35.1
|
||||
|
||||
56
0021-Load-leases-DB-in-non-replay-mode-only.patch
Normal file
56
0021-Load-leases-DB-in-non-replay-mode-only.patch
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
From bdbbb4be07bb33fe083baef2bd0ef38b91c11120 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 21 Feb 2019 10:44:06 +0100
|
||||
Subject: [PATCH 21/28] Load leases DB in non-replay mode only
|
||||
|
||||
---
|
||||
server/confpars.c | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/server/confpars.c b/server/confpars.c
|
||||
index 5a6396b..6e08ad7 100644
|
||||
--- a/server/confpars.c
|
||||
+++ b/server/confpars.c
|
||||
@@ -134,6 +134,11 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
|
||||
|
||||
cfile = (struct parse *)0;
|
||||
#if defined (TRACING)
|
||||
+ // No need to dmalloc huge memory region if we're not going to re-play
|
||||
+ if (!trace_record()){
|
||||
+ status = new_parse(&cfile, file, NULL, 0, filename, 0);
|
||||
+ goto noreplay;
|
||||
+ };
|
||||
flen = lseek (file, (off_t)0, SEEK_END);
|
||||
if (flen < 0) {
|
||||
boom:
|
||||
@@ -165,7 +170,6 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
|
||||
if (result != ulen)
|
||||
log_fatal ("%s: short read of %d bytes instead of %d.",
|
||||
filename, ulen, result);
|
||||
- close (file);
|
||||
memfile:
|
||||
/* If we're recording, write out the filename and file contents. */
|
||||
if (trace_record ())
|
||||
@@ -174,6 +178,9 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
|
||||
#else
|
||||
status = new_parse(&cfile, file, NULL, 0, filename, 0);
|
||||
#endif
|
||||
+ noreplay:
|
||||
+ if (!trace_playback())
|
||||
+ close (file);
|
||||
if (status != ISC_R_SUCCESS || cfile == NULL)
|
||||
return status;
|
||||
|
||||
@@ -183,7 +190,8 @@ isc_result_t read_conf_file (const char *filename, struct group *group,
|
||||
status = conf_file_subparse (cfile, group, group_type);
|
||||
end_parse (&cfile);
|
||||
#if defined (TRACING)
|
||||
- dfree (dbuf, MDL);
|
||||
+ if (trace_record())
|
||||
+ dfree (dbuf, MDL);
|
||||
#endif
|
||||
return status;
|
||||
}
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,19 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.preinit6s 2016-04-29 13:15:10.361379493 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 13:17:43.622415423 +0200
|
||||
@@ -812,6 +812,12 @@ main(int argc, char **argv) {
|
||||
From 1f8681acba9ab70fbe17c85e5a1f4ce6a648b55d Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 28 Feb 2019 15:30:21 +0100
|
||||
Subject: [PATCH 22/28] dhclient: make sure link-local address is ready in
|
||||
stateless mode
|
||||
|
||||
Bug-url: https://bugzilla.redhat.com/1263466
|
||||
---
|
||||
client/dhclient.c | 30 ++++++++++++++++++++----------
|
||||
1 file changed, 20 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 6bbefc7..60836b4 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -943,6 +943,12 @@ main(int argc, char **argv) {
|
||||
|
||||
inaddr_any.s_addr = INADDR_ANY;
|
||||
|
||||
|
|
@ -14,8 +26,8 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c
|
|||
/* Stateless special case. */
|
||||
if (stateless) {
|
||||
if (release_mode || (wanted_ia_na > 0) ||
|
||||
@@ -828,12 +834,6 @@ main(int argc, char **argv) {
|
||||
return 0;
|
||||
@@ -959,12 +965,6 @@ main(int argc, char **argv) {
|
||||
finish(0);
|
||||
}
|
||||
|
||||
- /* Discover all the network interfaces. */
|
||||
|
|
@ -27,7 +39,7 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c
|
|||
/* Parse any extra command line configuration arguments: */
|
||||
if ((dhcp_client_identifier_arg != NULL) && (*dhcp_client_identifier_arg != '\0')) {
|
||||
arg_conf_len = asprintf(&arg_conf, "send dhcp-client-identifier \"%s\";", dhcp_client_identifier_arg);
|
||||
@@ -1288,20 +1288,30 @@ void run_stateless(int exit_mode, u_int1
|
||||
@@ -1433,20 +1433,30 @@ void run_stateless(int exit_mode, u_int16_t port)
|
||||
IGNORE_UNUSED(port);
|
||||
#endif
|
||||
|
||||
|
|
@ -62,3 +74,6 @@ diff -up dhcp-4.3.4/client/dhclient.c.preinit6s dhcp-4.3.4/client/dhclient.c
|
|||
|
||||
/* Parse the lease database. */
|
||||
read_client_leases();
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,26 @@
|
|||
diff -up dhcp-4.3.5b1/common/options.c.option97 dhcp-4.3.5b1/common/options.c
|
||||
--- dhcp-4.3.5b1/common/options.c.option97 2016-09-12 17:17:13.972691041 +0200
|
||||
+++ dhcp-4.3.5b1/common/options.c 2016-09-12 17:19:17.706790276 +0200
|
||||
@@ -4434,13 +4434,26 @@ int validate_packet(struct packet *packe
|
||||
From f01a29a90269c98a86accb0923d65aecf5f59b44 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 28 Feb 2019 16:40:38 +0100
|
||||
Subject: [PATCH 23/28] option 97 - pxe-client-id
|
||||
|
||||
Bug-url: https://bugzilla.redhat.com/1058674
|
||||
ISC-Bugs #38110
|
||||
---
|
||||
common/options.c | 27 ++++++++++++++++++++-------
|
||||
common/tables.c | 3 ++-
|
||||
includes/dhcp.h | 1 +
|
||||
server/dhcp.c | 19 +++++++++++++++++++
|
||||
server/dhcpd.conf.5 | 9 ++++++---
|
||||
server/dhcpleasequery.c | 18 +++++++++++++++---
|
||||
server/failover.c | 3 +++
|
||||
server/mdb.c | 5 +++--
|
||||
8 files changed, 69 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/common/options.c b/common/options.c
|
||||
index 66433c4..4e26094 100644
|
||||
--- a/common/options.c
|
||||
+++ b/common/options.c
|
||||
@@ -4551,13 +4551,26 @@ int validate_packet(struct packet *packet)
|
||||
"a future version of ISC DHCP will reject this");
|
||||
}
|
||||
} else {
|
||||
|
|
@ -35,12 +54,13 @@ diff -up dhcp-4.3.5b1/common/options.c.option97 dhcp-4.3.5b1/common/options.c
|
|||
}
|
||||
}
|
||||
|
||||
diff -up dhcp-4.3.5b1/common/tables.c.option97 dhcp-4.3.5b1/common/tables.c
|
||||
--- dhcp-4.3.5b1/common/tables.c.option97 2016-09-12 17:17:13.927691005 +0200
|
||||
+++ dhcp-4.3.5b1/common/tables.c 2016-09-12 17:17:13.972691041 +0200
|
||||
@@ -196,8 +196,9 @@ static struct option dhcp_options[] = {
|
||||
diff --git a/common/tables.c b/common/tables.c
|
||||
index 96521a6..8034d94 100644
|
||||
--- a/common/tables.c
|
||||
+++ b/common/tables.c
|
||||
@@ -200,8 +200,9 @@ static struct option dhcp_options[] = {
|
||||
/* Defined by RFC 4578 */
|
||||
{ "pxe-system-type", "S", &dhcp_universe, 93, 1 },
|
||||
{ "pxe-system-type", "Sa", &dhcp_universe, 93, 1 },
|
||||
{ "pxe-interface-id", "BBB", &dhcp_universe, 94, 1 },
|
||||
- { "pxe-client-id", "BX", &dhcp_universe, 97, 1 },
|
||||
#endif
|
||||
|
|
@ -49,32 +69,34 @@ diff -up dhcp-4.3.5b1/common/tables.c.option97 dhcp-4.3.5b1/common/tables.c
|
|||
{ "uap-servers", "t", &dhcp_universe, 98, 1 },
|
||||
#if defined(RFC4776_OPTIONS)
|
||||
{ "geoconf-civic", "X", &dhcp_universe, 99, 1 },
|
||||
diff -up dhcp-4.3.5b1/includes/dhcp.h.option97 dhcp-4.3.5b1/includes/dhcp.h
|
||||
--- dhcp-4.3.5b1/includes/dhcp.h.option97 2016-09-12 17:17:13.936691013 +0200
|
||||
+++ dhcp-4.3.5b1/includes/dhcp.h 2016-09-12 17:17:13.972691041 +0200
|
||||
@@ -159,6 +159,7 @@ struct dhcp_packet {
|
||||
diff --git a/includes/dhcp.h b/includes/dhcp.h
|
||||
index 7202f1d..4ad3874 100644
|
||||
--- a/includes/dhcp.h
|
||||
+++ b/includes/dhcp.h
|
||||
@@ -158,6 +158,7 @@ struct dhcp_packet {
|
||||
#define DHO_AUTHENTICATE 90 /* RFC3118, was 210 */
|
||||
#define DHO_CLIENT_LAST_TRANSACTION_TIME 91
|
||||
#define DHO_ASSOCIATED_IP 92
|
||||
+#define DHO_PXE_CLIENT_ID 97 /* RFC4578 */
|
||||
#define DHO_V6_ONLY_PREFERRED 108 /* RFC8925 */
|
||||
#define DHO_SUBNET_SELECTION 118 /* RFC3011! */
|
||||
#define DHO_DOMAIN_SEARCH 119 /* RFC3397 */
|
||||
#define DHO_CLASSLESS_STATIC_ROUTES 121 /* RFC3442 */
|
||||
diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
||||
--- dhcp-4.3.5b1/server/dhcp.c.option97 2016-09-12 17:17:13.947691021 +0200
|
||||
+++ dhcp-4.3.5b1/server/dhcp.c 2016-09-12 17:17:13.973691042 +0200
|
||||
@@ -221,6 +221,10 @@ dhcp (struct packet *packet) {
|
||||
diff --git a/server/dhcp.c b/server/dhcp.c
|
||||
index 8363840..29d9c69 100644
|
||||
--- a/server/dhcp.c
|
||||
+++ b/server/dhcp.c
|
||||
@@ -228,6 +228,10 @@ dhcp (struct packet *packet) {
|
||||
if (lease -> uid_len) {
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
if (!oc)
|
||||
+ if (!oc)
|
||||
+ oc = lookup_option (&dhcp_universe,
|
||||
+ packet -> options,
|
||||
+ DHO_PXE_CLIENT_ID);
|
||||
+ if (!oc)
|
||||
if (!oc)
|
||||
goto nolease;
|
||||
|
||||
memset (&data, 0, sizeof data);
|
||||
@@ -818,6 +822,9 @@ void dhcprelease (packet, ms_nulltp)
|
||||
@@ -826,6 +830,9 @@ void dhcprelease (packet, ms_nulltp)
|
||||
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -84,7 +106,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
|||
memset (&data, 0, sizeof data);
|
||||
if (oc &&
|
||||
evaluate_option_cache (&data, packet, (struct lease *)0,
|
||||
@@ -1286,6 +1293,9 @@ void dhcpinform (packet, ms_nulltp)
|
||||
@@ -1338,6 +1345,9 @@ void dhcpinform (packet, ms_nulltp)
|
||||
*/
|
||||
oc = lookup_option(&dhcp_universe, packet->options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -94,7 +116,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
|||
memset(&d1, 0, sizeof(d1));
|
||||
if (oc &&
|
||||
evaluate_option_cache(&d1, packet, NULL, NULL,
|
||||
@@ -2381,6 +2391,9 @@ void ack_lease (packet, lease, offer, wh
|
||||
@@ -2448,6 +2458,9 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
||||
can be used. */
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -104,7 +126,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
|||
if (oc &&
|
||||
evaluate_option_cache (&d1, packet, lease,
|
||||
(struct client_state *)0,
|
||||
@@ -2962,6 +2975,9 @@ void ack_lease (packet, lease, offer, wh
|
||||
@@ -3040,6 +3053,9 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp)
|
||||
/* Record the uid, if given... */
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -114,7 +136,7 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
|||
if (oc &&
|
||||
evaluate_option_cache(&d1, packet, lease, NULL,
|
||||
packet->options, state->options,
|
||||
@@ -4068,6 +4084,9 @@ int find_lease (struct lease **lp,
|
||||
@@ -4258,6 +4274,9 @@ int find_lease (struct lease **lp,
|
||||
specified unique client identifier. */
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -124,10 +146,11 @@ diff -up dhcp-4.3.5b1/server/dhcp.c.option97 dhcp-4.3.5b1/server/dhcp.c
|
|||
memset (&client_identifier, 0, sizeof client_identifier);
|
||||
if (oc &&
|
||||
evaluate_option_cache (&client_identifier,
|
||||
diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.conf.5
|
||||
--- dhcp-4.3.5b1/server/dhcpd.conf.5.option97 2016-09-12 17:17:13.885690972 +0200
|
||||
+++ dhcp-4.3.5b1/server/dhcpd.conf.5 2016-09-12 17:17:13.974691043 +0200
|
||||
@@ -1587,10 +1587,12 @@ should be a name identifying the host.
|
||||
diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5
|
||||
index b7e79ea..2354b1d 100644
|
||||
--- a/server/dhcpd.conf.5
|
||||
+++ b/server/dhcpd.conf.5
|
||||
@@ -1664,10 +1664,12 @@ should be a name identifying the host. If a \fIhostname\fR option is
|
||||
not specified for the host, \fIhostname\fR is used.
|
||||
.PP
|
||||
\fIHost\fR declarations are matched to actual DHCP or BOOTP clients
|
||||
|
|
@ -142,7 +165,7 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.con
|
|||
parameter in the \fIhost\fR declaration to the network hardware
|
||||
address supplied by the client. BOOTP clients do not normally
|
||||
provide a \fIdhcp-client-identifier\fR, so the hardware address must
|
||||
@@ -1602,7 +1604,8 @@ to identify hosts.
|
||||
@@ -1679,7 +1681,8 @@ to identify hosts.
|
||||
.PP
|
||||
Please be aware that
|
||||
.B only
|
||||
|
|
@ -152,10 +175,11 @@ diff -up dhcp-4.3.5b1/server/dhcpd.conf.5.option97 dhcp-4.3.5b1/server/dhcpd.con
|
|||
used to match a host declaration, or the \fIhost-identifier option\fR
|
||||
parameter for DHCPv6 servers. For example, it is not possible to
|
||||
match a host declaration to a \fIhost-name\fR option. This is
|
||||
diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpleasequery.c
|
||||
--- dhcp-4.3.5b1/server/dhcpleasequery.c.option97 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/server/dhcpleasequery.c 2016-09-12 17:17:13.974691043 +0200
|
||||
@@ -273,7 +273,7 @@ dhcpleasequery(struct packet *packet, in
|
||||
diff --git a/server/dhcpleasequery.c b/server/dhcpleasequery.c
|
||||
index 0f1d4f7..dae4ae7 100644
|
||||
--- a/server/dhcpleasequery.c
|
||||
+++ b/server/dhcpleasequery.c
|
||||
@@ -276,7 +276,7 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) {
|
||||
*/
|
||||
|
||||
memset(&uid, 0, sizeof(uid));
|
||||
|
|
@ -164,7 +188,7 @@ diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpl
|
|||
&dhcp_universe,
|
||||
packet,
|
||||
NULL,
|
||||
@@ -283,8 +283,20 @@ dhcpleasequery(struct packet *packet, in
|
||||
@@ -286,8 +286,20 @@ dhcpleasequery(struct packet *packet, int ms_nulltp) {
|
||||
packet->options,
|
||||
&global_scope,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER,
|
||||
|
|
@ -187,10 +211,11 @@ diff -up dhcp-4.3.5b1/server/dhcpleasequery.c.option97 dhcp-4.3.5b1/server/dhcpl
|
|||
snprintf(dbg_info,
|
||||
sizeof(dbg_info),
|
||||
"client-id %s",
|
||||
diff -up dhcp-4.3.5b1/server/failover.c.option97 dhcp-4.3.5b1/server/failover.c
|
||||
--- dhcp-4.3.5b1/server/failover.c.option97 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/server/failover.c 2016-09-12 17:17:13.975691044 +0200
|
||||
@@ -5957,6 +5957,9 @@ int load_balance_mine (struct packet *pa
|
||||
diff --git a/server/failover.c b/server/failover.c
|
||||
index 5b36d3a..a641e86 100644
|
||||
--- a/server/failover.c
|
||||
+++ b/server/failover.c
|
||||
@@ -5988,6 +5988,9 @@ int load_balance_mine (struct packet *packet, dhcp_failover_state_t *state)
|
||||
|
||||
oc = lookup_option(&dhcp_universe, packet->options,
|
||||
DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
|
|
@ -200,10 +225,11 @@ diff -up dhcp-4.3.5b1/server/failover.c.option97 dhcp-4.3.5b1/server/failover.c
|
|||
memset(&ds, 0, sizeof ds);
|
||||
if (oc &&
|
||||
evaluate_option_cache(&ds, packet, NULL, NULL,
|
||||
diff -up dhcp-4.3.5b1/server/mdb.c.option97 dhcp-4.3.5b1/server/mdb.c
|
||||
--- dhcp-4.3.5b1/server/mdb.c.option97 2016-08-26 20:19:53.000000000 +0200
|
||||
+++ dhcp-4.3.5b1/server/mdb.c 2016-09-12 17:17:13.975691044 +0200
|
||||
@@ -129,8 +129,9 @@ static int find_uid_statement (struct ex
|
||||
diff --git a/server/mdb.c b/server/mdb.c
|
||||
index 60a40e1..2cd5605 100644
|
||||
--- a/server/mdb.c
|
||||
+++ b/server/mdb.c
|
||||
@@ -129,8 +129,9 @@ static int find_uid_statement (struct executable_statement *esp,
|
||||
esp -> data.option &&
|
||||
(esp -> data.option -> option -> universe ==
|
||||
&dhcp_universe) &&
|
||||
|
|
@ -215,3 +241,6 @@ diff -up dhcp-4.3.5b1/server/mdb.c.option97 dhcp-4.3.5b1/server/mdb.c
|
|||
if (condp) {
|
||||
log_error ("dhcp client identifier may not be %s",
|
||||
"specified conditionally.");
|
||||
--
|
||||
2.35.1
|
||||
|
||||
92
0024-Detect-system-time-changes.patch
Normal file
92
0024-Detect-system-time-changes.patch
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
From a2fb8759ab48c88e3f8df94ae6e156c357d932a2 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Tue, 22 Oct 2019 16:23:01 +0200
|
||||
Subject: [PATCH 24/28] Detect system time changes
|
||||
|
||||
---
|
||||
client/dhclient.c | 6 ++++++
|
||||
common/dispatch.c | 11 ++++++++++-
|
||||
includes/dhcpd.h | 3 ++-
|
||||
server/dhcpd.c | 6 ++++++
|
||||
4 files changed, 24 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 60836b4..fd18813 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -5665,6 +5665,12 @@ isc_result_t dhcp_set_control_state (control_object_state_t oldstate,
|
||||
case server_awaken:
|
||||
state_reboot (client);
|
||||
break;
|
||||
+
|
||||
+ case server_time_changed:
|
||||
+ if (client->active){
|
||||
+ state_reboot (client);
|
||||
+ }
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/common/dispatch.c b/common/dispatch.c
|
||||
index 9741ff5..11c1787 100644
|
||||
--- a/common/dispatch.c
|
||||
+++ b/common/dispatch.c
|
||||
@@ -118,7 +118,6 @@ dispatch(void)
|
||||
* signal. It will return ISC_R_RELOAD in that
|
||||
* case. That is a normal behavior.
|
||||
*/
|
||||
-
|
||||
if (status == ISC_R_RELOAD) {
|
||||
/*
|
||||
* dhcp_set_control_state() will do the job.
|
||||
@@ -129,6 +128,16 @@ dispatch(void)
|
||||
if (status == ISC_R_SUCCESS)
|
||||
status = ISC_R_RELOAD;
|
||||
}
|
||||
+
|
||||
+
|
||||
+ if (status == ISC_R_TIMESHIFTED){
|
||||
+ status = dhcp_set_control_state(server_time_changed,
|
||||
+ server_time_changed);
|
||||
+ status = ISC_R_RELOAD;
|
||||
+ log_info ("System time has been changed. Unable to use existing leases. Restarting");
|
||||
+ // do nothing, restart context
|
||||
+ };
|
||||
+
|
||||
} while (status == ISC_R_RELOAD);
|
||||
|
||||
log_fatal ("Dispatch routine failed: %s -- exiting",
|
||||
diff --git a/includes/dhcpd.h b/includes/dhcpd.h
|
||||
index fabad01..9663508 100644
|
||||
--- a/includes/dhcpd.h
|
||||
+++ b/includes/dhcpd.h
|
||||
@@ -524,7 +524,8 @@ typedef enum {
|
||||
server_running = 1,
|
||||
server_shutdown = 2,
|
||||
server_hibernate = 3,
|
||||
- server_awaken = 4
|
||||
+ server_awaken = 4,
|
||||
+ server_time_changed = 5
|
||||
} control_object_state_t;
|
||||
|
||||
typedef struct {
|
||||
diff --git a/server/dhcpd.c b/server/dhcpd.c
|
||||
index 845d0cc..3b3bd3b 100644
|
||||
--- a/server/dhcpd.c
|
||||
+++ b/server/dhcpd.c
|
||||
@@ -1767,6 +1767,12 @@ isc_result_t dhcp_set_control_state (control_object_state_t oldstate,
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
+ if (newstate == server_time_changed){
|
||||
+ log_error ("System time has been changed. Leases information unreliable!");
|
||||
+ return ISC_R_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
if (newstate != server_shutdown)
|
||||
return DHCP_R_INVALIDARG;
|
||||
/* Re-entry. */
|
||||
--
|
||||
2.35.1
|
||||
|
||||
196
0025-bind-Detect-system-time-changes.patch
Normal file
196
0025-bind-Detect-system-time-changes.patch
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
From 8e49f4b460ad20890c63a385c17d3e5decd45a82 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Tue, 22 Oct 2019 16:23:24 +0200
|
||||
Subject: [PATCH 25/28] bind: Detect system time changes
|
||||
|
||||
---
|
||||
.../bind-9.11.36/lib/isc/include/isc/result.h | 4 +-
|
||||
bind/bind-9.11.36/lib/isc/include/isc/util.h | 4 ++
|
||||
bind/bind-9.11.36/lib/isc/result.c | 2 +
|
||||
bind/bind-9.11.36/lib/isc/unix/app.c | 41 +++++++++++++++++--
|
||||
.../lib/isc/unix/include/isc/time.h | 20 +++++++++
|
||||
bind/bind-9.11.36/lib/isc/unix/time.c | 22 ++++++++++
|
||||
6 files changed, 89 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/include/isc/result.h b/bind/bind-9.11.36/lib/isc/include/isc/result.h
|
||||
index 916641f..51c2468 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/include/isc/result.h
|
||||
+++ b/bind/bind-9.11.36/lib/isc/include/isc/result.h
|
||||
@@ -89,7 +89,9 @@
|
||||
#define ISC_R_DISCFULL 67 /*%< disc full */
|
||||
#define ISC_R_DEFAULT 68 /*%< default */
|
||||
#define ISC_R_IPV4PREFIX 69 /*%< IPv4 prefix */
|
||||
-#define ISC_R_NRESULTS 70
|
||||
+#define ISC_R_TIMESHIFTED 70 /*%< system time changed */
|
||||
+/*% Not a result code: the number of results. */
|
||||
+#define ISC_R_NRESULTS 71
|
||||
|
||||
ISC_LANG_BEGINDECLS
|
||||
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/include/isc/util.h b/bind/bind-9.11.36/lib/isc/include/isc/util.h
|
||||
index 9111c2a..20a05b4 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/include/isc/util.h
|
||||
+++ b/bind/bind-9.11.36/lib/isc/include/isc/util.h
|
||||
@@ -325,6 +325,10 @@ extern void mock_assert(const int result, const char* const expression,
|
||||
* Time
|
||||
*/
|
||||
#define TIME_NOW(tp) RUNTIME_CHECK(isc_time_now((tp)) == ISC_R_SUCCESS)
|
||||
+#ifdef CLOCK_BOOTTIME
|
||||
+#define TIME_MONOTONIC(tp) RUNTIME_CHECK(isc_time_boottime((tp)) == ISC_R_SUCCESS)
|
||||
+#endif
|
||||
+
|
||||
|
||||
/*%
|
||||
* Alignment
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/result.c b/bind/bind-9.11.36/lib/isc/result.c
|
||||
index 887b08c..2106a3a 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/result.c
|
||||
+++ b/bind/bind-9.11.36/lib/isc/result.c
|
||||
@@ -105,6 +105,7 @@ static const char *description[ISC_R_NRESULTS] = {
|
||||
"disc full", /*%< 67 */
|
||||
"default", /*%< 68 */
|
||||
"IPv4 prefix", /*%< 69 */
|
||||
+ "time changed", /*%< 70 */
|
||||
};
|
||||
|
||||
static const char *identifier[ISC_R_NRESULTS] = {
|
||||
@@ -178,6 +179,7 @@ static const char *identifier[ISC_R_NRESULTS] = {
|
||||
"ISC_R_DISCFULL",
|
||||
"ISC_R_DEFAULT",
|
||||
"ISC_R_IPV4PREFIX",
|
||||
+ "ISC_R_TIMESHIFTED",
|
||||
};
|
||||
|
||||
#define ISC_RESULT_RESULTSET 2
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/unix/app.c b/bind/bind-9.11.36/lib/isc/unix/app.c
|
||||
index 8189c63..4aabaa4 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/unix/app.c
|
||||
+++ b/bind/bind-9.11.36/lib/isc/unix/app.c
|
||||
@@ -442,15 +442,51 @@ isc__app_ctxonrun(isc_appctx_t *ctx0, isc_mem_t *mctx, isc_task_t *task,
|
||||
static isc_result_t
|
||||
evloop(isc__appctx_t *ctx) {
|
||||
isc_result_t result;
|
||||
+ isc_time_t now;
|
||||
+#ifdef CLOCK_BOOTTIME
|
||||
+ isc_time_t monotonic;
|
||||
+ uint64_t diff = 0;
|
||||
+#else
|
||||
+ isc_time_t prev;
|
||||
+ TIME_NOW(&prev);
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
+
|
||||
|
||||
while (!ctx->want_shutdown) {
|
||||
int n;
|
||||
- isc_time_t when, now;
|
||||
+ isc_time_t when;
|
||||
+
|
||||
struct timeval tv, *tvp;
|
||||
isc_socketwait_t *swait;
|
||||
bool readytasks;
|
||||
bool call_timer_dispatch = false;
|
||||
|
||||
+ uint64_t us;
|
||||
+
|
||||
+#ifdef CLOCK_BOOTTIME
|
||||
+ // TBD macros for following three lines
|
||||
+ TIME_NOW(&now);
|
||||
+ TIME_MONOTONIC(&monotonic);
|
||||
+ INSIST(now.seconds > monotonic.seconds)
|
||||
+ us = isc_time_microdiff (&now, &monotonic);
|
||||
+ if (us < diff){
|
||||
+ us = diff - us;
|
||||
+ if (us > 1000000){ // ignoring shifts less than one second
|
||||
+ return ISC_R_TIMESHIFTED;
|
||||
+ };
|
||||
+ diff = isc_time_microdiff (&now, &monotonic);
|
||||
+ } else {
|
||||
+ diff = isc_time_microdiff (&now, &monotonic);
|
||||
+ // not implemented
|
||||
+ }
|
||||
+#else
|
||||
+ TIME_NOW(&now);
|
||||
+ if (isc_time_compare (&now, &prev) < 0)
|
||||
+ return ISC_R_TIMESHIFTED;
|
||||
+ TIME_NOW(&prev);
|
||||
+#endif
|
||||
/*
|
||||
* Check the reload (or suspend) case first for exiting the
|
||||
* loop as fast as possible in case:
|
||||
@@ -475,9 +511,8 @@ evloop(isc__appctx_t *ctx) {
|
||||
if (result != ISC_R_SUCCESS)
|
||||
tvp = NULL;
|
||||
else {
|
||||
- uint64_t us;
|
||||
-
|
||||
TIME_NOW(&now);
|
||||
+
|
||||
us = isc_time_microdiff(&when, &now);
|
||||
if (us == 0)
|
||||
call_timer_dispatch = true;
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/unix/include/isc/time.h b/bind/bind-9.11.36/lib/isc/unix/include/isc/time.h
|
||||
index 03512c1..99e0dfa 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/unix/include/isc/time.h
|
||||
+++ b/bind/bind-9.11.36/lib/isc/unix/include/isc/time.h
|
||||
@@ -132,6 +132,26 @@ isc_time_isepoch(const isc_time_t *t);
|
||||
*\li 't' is a valid pointer.
|
||||
*/
|
||||
|
||||
+#ifdef CLOCK_BOOTTIME
|
||||
+isc_result_t
|
||||
+isc_time_boottime(isc_time_t *t);
|
||||
+/*%<
|
||||
+ * Set 't' to monotonic time from previous boot
|
||||
+ * it's not affected by system time change. It also
|
||||
+ * includes the time system was suspended
|
||||
+ *
|
||||
+ * Requires:
|
||||
+ *\li 't' is a valid pointer.
|
||||
+ *
|
||||
+ * Returns:
|
||||
+ *
|
||||
+ *\li Success
|
||||
+ *\li Unexpected error
|
||||
+ * Getting the time from the system failed.
|
||||
+ */
|
||||
+#endif /* CLOCK_BOOTTIME */
|
||||
+
|
||||
+
|
||||
isc_result_t
|
||||
isc_time_now(isc_time_t *t);
|
||||
/*%<
|
||||
diff --git a/bind/bind-9.11.36/lib/isc/unix/time.c b/bind/bind-9.11.36/lib/isc/unix/time.c
|
||||
index bcca41b..af6ea7f 100644
|
||||
--- a/bind/bind-9.11.36/lib/isc/unix/time.c
|
||||
+++ b/bind/bind-9.11.36/lib/isc/unix/time.c
|
||||
@@ -498,3 +498,25 @@ isc_time_formatISO8601ms(const isc_time_t *t, char *buf, unsigned int len) {
|
||||
t->nanoseconds / NS_PER_MS);
|
||||
}
|
||||
}
|
||||
+
|
||||
+
|
||||
+#ifdef CLOCK_BOOTTIME
|
||||
+isc_result_t
|
||||
+isc_time_boottime(isc_time_t *t) {
|
||||
+ struct timespec ts;
|
||||
+
|
||||
+ char strbuf[ISC_STRERRORSIZE];
|
||||
+
|
||||
+ if (clock_gettime (CLOCK_BOOTTIME, &ts) != 0){
|
||||
+ isc__strerror(errno, strbuf, sizeof(strbuf));
|
||||
+ UNEXPECTED_ERROR(__FILE__, __LINE__, "%s", strbuf);
|
||||
+ return (ISC_R_UNEXPECTED);
|
||||
+ }
|
||||
+
|
||||
+ t->seconds = ts.tv_sec;
|
||||
+ t->nanoseconds = ts.tv_nsec;
|
||||
+
|
||||
+ return (ISC_R_SUCCESS);
|
||||
+
|
||||
+};
|
||||
+#endif
|
||||
--
|
||||
2.35.1
|
||||
|
||||
29
0026-Add-dhclient-5-B-option-description.patch
Normal file
29
0026-Add-dhclient-5-B-option-description.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
From aa328eef58ff93110f2a52cb3a80002ab8cee36e Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Tue, 22 Oct 2019 16:28:04 +0200
|
||||
Subject: [PATCH 26/28] Add dhclient(5) -B option description
|
||||
|
||||
Bug-Url: https://bugzilla.redhat.com/1764088
|
||||
---
|
||||
client/dhclient.8 | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/client/dhclient.8 b/client/dhclient.8
|
||||
index bacf3bc..76f0cc0 100644
|
||||
--- a/client/dhclient.8
|
||||
+++ b/client/dhclient.8
|
||||
@@ -553,6 +553,11 @@ Path to the network configuration script invoked by
|
||||
when it gets a lease. If unspecified, the default
|
||||
.B CLIENTBINDIR/dhclient-script
|
||||
is used. See \fBdhclient-script(8)\fR for a description of this file.
|
||||
+.TP
|
||||
+.BI \-B
|
||||
+Always set the bootp broadcast flag in request packets, so that
|
||||
+servers will always broadcast replies. This option is provided as
|
||||
+an extension to enable dhclient to work on IBM s390 Linux guests.
|
||||
.PP
|
||||
.SH PORTS
|
||||
During operations the client may use multiple UDP ports
|
||||
--
|
||||
2.35.1
|
||||
|
||||
|
|
@ -1,7 +1,19 @@
|
|||
diff -up dhcp-4.3.4/configure.ac.sd_notify dhcp-4.3.4/configure.ac
|
||||
--- dhcp-4.3.4/configure.ac.sd_notify 2016-04-29 13:08:52.813287060 +0200
|
||||
+++ dhcp-4.3.4/configure.ac 2016-04-29 13:08:52.872287075 +0200
|
||||
@@ -832,6 +832,17 @@ if test x$ldap = xyes || test x$ldapcryp
|
||||
From d1b1f91a7982be28acdfb580996c93aafcc76cc2 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Thu, 7 Nov 2019 14:47:45 +0100
|
||||
Subject: [PATCH 27/28] Add missed sd notify patch to manage dhcpd with systemd
|
||||
|
||||
---
|
||||
configure.ac | 11 +++++++++++
|
||||
relay/dhcrelay.c | 12 ++++++++++++
|
||||
server/dhcpd.c | 12 ++++++++++++
|
||||
3 files changed, 35 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 300117f..f644e71 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -1005,6 +1005,17 @@ if test x$ldap = xyes || test x$ldapcrypto = xyes || test x$ldap_gssapi = xyes;
|
||||
AC_SUBST(LDAP_CFLAGS, [$LDAP_CFLAGS])
|
||||
fi
|
||||
|
||||
|
|
@ -19,9 +31,10 @@ diff -up dhcp-4.3.4/configure.ac.sd_notify dhcp-4.3.4/configure.ac
|
|||
# Append selected warning levels to CFLAGS before substitution (but after
|
||||
# AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) & etc).
|
||||
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
||||
diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c
|
||||
--- dhcp-4.3.4/relay/dhcrelay.c.sd_notify 2016-04-29 13:08:52.814287061 +0200
|
||||
+++ dhcp-4.3.4/relay/dhcrelay.c 2016-04-29 13:08:52.872287075 +0200
|
||||
diff --git a/relay/dhcrelay.c b/relay/dhcrelay.c
|
||||
index 0dc17d6..d3ad31e 100644
|
||||
--- a/relay/dhcrelay.c
|
||||
+++ b/relay/dhcrelay.c
|
||||
@@ -37,6 +37,10 @@
|
||||
int keep_capabilities = 0;
|
||||
#endif
|
||||
|
|
@ -33,7 +46,7 @@ diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c
|
|||
TIME default_lease_time = 43200; /* 12 hours... */
|
||||
TIME max_lease_time = 86400; /* 24 hours... */
|
||||
struct tree_cache *global_options[256];
|
||||
@@ -709,6 +713,14 @@ main(int argc, char **argv) {
|
||||
@@ -869,6 +873,14 @@ main(int argc, char **argv) {
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -48,12 +61,13 @@ diff -up dhcp-4.3.4/relay/dhcrelay.c.sd_notify dhcp-4.3.4/relay/dhcrelay.c
|
|||
/* Start dispatching packets and timeouts... */
|
||||
dispatch();
|
||||
|
||||
diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c
|
||||
--- dhcp-4.3.4/server/dhcpd.c.sd_notify 2016-04-29 13:08:52.873287075 +0200
|
||||
+++ dhcp-4.3.4/server/dhcpd.c 2016-04-29 13:12:00.655333096 +0200
|
||||
@@ -57,6 +57,10 @@ uid_t set_uid = 0;
|
||||
gid_t set_gid = 0;
|
||||
#endif /* PARANOIA */
|
||||
diff --git a/server/dhcpd.c b/server/dhcpd.c
|
||||
index 3b3bd3b..9223d5b 100644
|
||||
--- a/server/dhcpd.c
|
||||
+++ b/server/dhcpd.c
|
||||
@@ -60,6 +60,10 @@ gid_t set_gid = 0;
|
||||
struct class unknown_class;
|
||||
struct class known_class;
|
||||
|
||||
+#ifdef HAVE_LIBSYSTEMD
|
||||
+#include <systemd/sd-daemon.h>
|
||||
|
|
@ -62,7 +76,7 @@ diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c
|
|||
struct iaddr server_identifier;
|
||||
int server_identifier_matched;
|
||||
|
||||
@@ -931,6 +935,14 @@ main(int argc, char **argv) {
|
||||
@@ -1057,6 +1061,14 @@ main(int argc, char **argv) {
|
||||
/* Log that we are about to start working */
|
||||
log_info("Server starting service.");
|
||||
|
||||
|
|
@ -77,3 +91,6 @@ diff -up dhcp-4.3.4/server/dhcpd.c.sd_notify dhcp-4.3.4/server/dhcpd.c
|
|||
/*
|
||||
* Receive packets and dispatch them...
|
||||
* dispatch() will never return.
|
||||
--
|
||||
2.35.1
|
||||
|
||||
117
0028-Use-system-getaddrinfo-for-dhcp.patch
Normal file
117
0028-Use-system-getaddrinfo-for-dhcp.patch
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
From 9970114f558927564d9c19be969c3c35db3b0edf Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Zhukov <pzhukov@redhat.com>
|
||||
Date: Tue, 22 Jun 2021 06:58:40 +0200
|
||||
Subject: [PATCH 28/28] Use system getaddrinfo for dhcp
|
||||
|
||||
---
|
||||
.../lib/irs/include/irs/netdb.h.in | 94 +++++++++++++++++++
|
||||
1 file changed, 94 insertions(+)
|
||||
|
||||
diff --git a/bind/bind-9.11.36/lib/irs/include/irs/netdb.h.in b/bind/bind-9.11.36/lib/irs/include/irs/netdb.h.in
|
||||
index 427fef8..74069b5 100644
|
||||
--- a/bind/bind-9.11.36/lib/irs/include/irs/netdb.h.in
|
||||
+++ b/bind/bind-9.11.36/lib/irs/include/irs/netdb.h.in
|
||||
@@ -150,6 +150,100 @@ struct addrinfo {
|
||||
#define NI_NUMERICSERV 0x00000008
|
||||
#define NI_DGRAM 0x00000010
|
||||
|
||||
+/*
|
||||
+ * Define to map into irs_ namespace.
|
||||
+ */
|
||||
+
|
||||
+#define IRS_NAMESPACE
|
||||
+
|
||||
+#ifdef IRS_NAMESPACE
|
||||
+
|
||||
+/*
|
||||
+ * Use our versions not the ones from the C library.
|
||||
+ */
|
||||
+
|
||||
+#ifdef getnameinfo
|
||||
+#undef getnameinfo
|
||||
+#endif
|
||||
+#define getnameinfo irs_getnameinfo
|
||||
+
|
||||
+#ifdef getaddrinfo
|
||||
+#undef getaddrinfo
|
||||
+#endif
|
||||
+#define getaddrinfo irs_getaddrinfo
|
||||
+
|
||||
+#ifdef freeaddrinfo
|
||||
+#undef freeaddrinfo
|
||||
+#endif
|
||||
+#define freeaddrinfo irs_freeaddrinfo
|
||||
+
|
||||
+#ifdef gai_strerror
|
||||
+#undef gai_strerror
|
||||
+#endif
|
||||
+#define gai_strerror irs_gai_strerror
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+extern int getaddrinfo (const char *name,
|
||||
+ const char *service,
|
||||
+ const struct addrinfo *req,
|
||||
+ struct addrinfo **pai);
|
||||
+extern int getnameinfo (const struct sockaddr *sa,
|
||||
+ socklen_t salen, char *host,
|
||||
+ socklen_t hostlen, char *serv,
|
||||
+ socklen_t servlen, int flags);
|
||||
+extern void freeaddrinfo (struct addrinfo *ai);
|
||||
+extern const char *gai_strerror (int ecode);
|
||||
+
|
||||
+/*
|
||||
+ * Define to map into irs_ namespace.
|
||||
+ */
|
||||
+
|
||||
+#define IRS_NAMESPACE
|
||||
+
|
||||
+#ifdef IRS_NAMESPACE
|
||||
+
|
||||
+/*
|
||||
+ * Use our versions not the ones from the C library.
|
||||
+ */
|
||||
+
|
||||
+#ifdef getnameinfo
|
||||
+#undef getnameinfo
|
||||
+#endif
|
||||
+#define getnameinfo irs_getnameinfo
|
||||
+
|
||||
+#ifdef getaddrinfo
|
||||
+#undef getaddrinfo
|
||||
+#endif
|
||||
+#define getaddrinfo irs_getaddrinfo
|
||||
+
|
||||
+#ifdef freeaddrinfo
|
||||
+#undef freeaddrinfo
|
||||
+#endif
|
||||
+#define freeaddrinfo irs_freeaddrinfo
|
||||
+
|
||||
+#ifdef gai_strerror
|
||||
+#undef gai_strerror
|
||||
+#endif
|
||||
+#define gai_strerror irs_gai_strerror
|
||||
+
|
||||
+int
|
||||
+getaddrinfo(const char *hostname, const char *servname,
|
||||
+ const struct addrinfo *hints, struct addrinfo **res);
|
||||
+
|
||||
+int
|
||||
+getnameinfo(const struct sockaddr *sa, IRS_GETNAMEINFO_SOCKLEN_T salen,
|
||||
+ char *host, IRS_GETNAMEINFO_BUFLEN_T hostlen,
|
||||
+ char *serv, IRS_GETNAMEINFO_BUFLEN_T servlen,
|
||||
+ IRS_GETNAMEINFO_FLAGS_T flags);
|
||||
+
|
||||
+void freeaddrinfo (struct addrinfo *ai);
|
||||
+
|
||||
+IRS_GAISTRERROR_RETURN_T
|
||||
+gai_strerror(int ecode);
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* Tell Emacs to use C mode on this file.
|
||||
* Local variables:
|
||||
--
|
||||
2.35.1
|
||||
|
||||
151
0030-bind-configure-c99.patch
Normal file
151
0030-bind-configure-c99.patch
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
Downstream-only patch.
|
||||
Upstream bind9 development has changed configure significantly:
|
||||
https://gitlab.isc.org/isc-projects/bind9
|
||||
|
||||
From 035224d94d4cf93257cf5440a2e4e129540e81e8 Mon Sep 17 00:00:00 2001
|
||||
From: Arjun Shankar <arjun@redhat.com>
|
||||
Date: Thu, 20 Apr 2023 15:34:01 +0200
|
||||
Subject: [PATCH] Port to C99
|
||||
|
||||
---
|
||||
bind/bind-9.11.36/configure | 14 +++++++-------
|
||||
bind/bind-9.11.36/configure.ac | 14 +++++++-------
|
||||
2 files changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/bind/bind-9.11.36/configure b/bind/bind-9.11.36/configure
|
||||
index 368112f..c50d873 100755
|
||||
--- a/bind/bind-9.11.36/configure
|
||||
+++ b/bind/bind-9.11.36/configure
|
||||
@@ -20016,7 +20016,7 @@ else
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
-main() {
|
||||
+int main() {
|
||||
char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
@@ -20056,7 +20056,7 @@ else
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
-main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
|
||||
+int main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
|
||||
inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
|
||||
(inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }
|
||||
_ACEOF
|
||||
@@ -21346,7 +21346,7 @@ else
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
|
||||
+int main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: int" >&5
|
||||
@@ -21363,7 +21363,7 @@ else
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
|
||||
+int main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: long int" >&5
|
||||
@@ -21380,7 +21380,7 @@ else
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
|
||||
+int main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: long long int" >&5
|
||||
@@ -21759,7 +21759,7 @@ int
|
||||
main ()
|
||||
{
|
||||
|
||||
- main() { asm("ics"); exit(0); }
|
||||
+ int main() { asm("ics"); exit(0); }
|
||||
|
||||
;
|
||||
return 0;
|
||||
@@ -21782,7 +21782,7 @@ else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
- main() { asm("ics"); exit(0); }
|
||||
+ int main() { asm("ics"); exit(0); }
|
||||
|
||||
_ACEOF
|
||||
if ac_fn_c_try_run "$LINENO"; then :
|
||||
diff --git a/bind/bind-9.11.36/configure.ac b/bind/bind-9.11.36/configure.ac
|
||||
index 030c4d7..e74af09 100644
|
||||
--- a/bind/bind-9.11.36/configure.ac
|
||||
+++ b/bind/bind-9.11.36/configure.ac
|
||||
@@ -3274,7 +3274,7 @@ AC_TRY_RUN([
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
-main() {
|
||||
+int main() {
|
||||
char a[16],b[64]; return(inet_ntop(AF_INET6, a, b, sizeof(b)) == (char*)0);}],
|
||||
[AC_MSG_RESULT(yes)
|
||||
ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP"],
|
||||
@@ -3297,7 +3297,7 @@ AC_TRY_RUN([
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
-main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
|
||||
+int main() { char a[16]; return (inet_pton(AF_INET, "1.2.3", a) == 1 ? 1 :
|
||||
inet_pton(AF_INET, "1.2.3.04", a) == 1 ? 1 :
|
||||
(inet_pton(AF_INET6, "::1.2.3.4", a) != 1)); }],
|
||||
[AC_MSG_RESULT(yes)
|
||||
@@ -3901,7 +3901,7 @@ AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
|
||||
+int main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));}],
|
||||
[AC_MSG_RESULT(int)
|
||||
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int"],
|
||||
[
|
||||
@@ -3909,7 +3909,7 @@ AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
|
||||
+int main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));}],
|
||||
[AC_MSG_RESULT(long int)
|
||||
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int"],
|
||||
[
|
||||
@@ -3917,7 +3917,7 @@ AC_TRY_RUN([
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/resource.h>
|
||||
-main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
|
||||
+int main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));}],
|
||||
[AC_MSG_RESULT(long long int)
|
||||
ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int"],
|
||||
[AC_MSG_ERROR([unable to determine sizeof rlim_cur])
|
||||
@@ -4117,7 +4117,7 @@ case "$enable_atomic" in
|
||||
if test "X$GCC" = "Xyes"; then
|
||||
AC_MSG_CHECKING([if asm("ics"); works])
|
||||
AC_TRY_COMPILE(,[
|
||||
- main() { asm("ics"); exit(0); }
|
||||
+ int main() { asm("ics"); exit(0); }
|
||||
],
|
||||
[AC_MSG_RESULT(yes)
|
||||
use_atomic=yes],
|
||||
@@ -4125,7 +4125,7 @@ case "$enable_atomic" in
|
||||
saved_cflags="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Wa,-many"
|
||||
AC_TRY_RUN([
|
||||
- main() { asm("ics"); exit(0); }
|
||||
+ int main() { asm("ics"); exit(0); }
|
||||
],
|
||||
[AC_MSG_RESULT([yes, required -Wa,-many])
|
||||
use_atomic=yes],
|
||||
--
|
||||
2.40.0
|
||||
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
From f7eb324f5b0deef285b0eaa0d504af77f06c779f Mon Sep 17 00:00:00 2001
|
||||
From: Stepan Broz <sbroz@redhat.com>
|
||||
Date: Fri, 24 Jan 2025 15:41:41 +0100
|
||||
Subject: [PATCH] Correct declarations of ia_na_[no]match and ia_pd_[no]match
|
||||
in server/dhcpv6.c.
|
||||
|
||||
---
|
||||
server/dhcpv6.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/server/dhcpv6.c b/server/dhcpv6.c
|
||||
index 7d61dc5..c1f227c 100644
|
||||
--- a/server/dhcpv6.c
|
||||
+++ b/server/dhcpv6.c
|
||||
@@ -5852,8 +5852,8 @@ iterate_over_ia_na(struct data_string *reply_ret,
|
||||
const struct data_string *client_id,
|
||||
const struct data_string *server_id,
|
||||
const char *packet_type,
|
||||
- void (*ia_na_match)(),
|
||||
- void (*ia_na_nomatch)())
|
||||
+ void (*ia_na_match)(const struct data_string *, const struct data_string *, struct iasubopt *),
|
||||
+ void (*ia_na_nomatch)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int))
|
||||
{
|
||||
struct option_state *opt_state;
|
||||
struct host_decl *packet_host;
|
||||
@@ -6354,8 +6354,8 @@ iterate_over_ia_pd(struct data_string *reply_ret,
|
||||
const struct data_string *client_id,
|
||||
const struct data_string *server_id,
|
||||
const char *packet_type,
|
||||
- void (*ia_pd_match)(),
|
||||
- void (*ia_pd_nomatch)())
|
||||
+ void (*ia_pd_match)(const struct data_string *, const struct data_string *, struct iasubopt *),
|
||||
+ void (*ia_pd_nomatch)(const struct data_string *, const struct data_string *, u_int32_t *, struct packet *, char *, int *, int))
|
||||
{
|
||||
struct data_string reply_new;
|
||||
int reply_len;
|
||||
--
|
||||
2.48.1
|
||||
|
||||
19
12-dhcpd
19
12-dhcpd
|
|
@ -1,19 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
INTERFACE=$1 # The interface which is brought up or down
|
||||
STATUS=$2 # The new state of the interface
|
||||
|
||||
# whenever interface is brought up by NM (rhbz #565921)
|
||||
if [ "$STATUS" = "up" ]; then
|
||||
# wait a few seconds to allow interface startup to complete
|
||||
# (important at boot time without this the service still fails
|
||||
# time-out for dispatcher script is 3s (rhbz#1003695#8)
|
||||
sleep 2
|
||||
# restart the services
|
||||
# In case this dispatcher script is called several times in a short period of time, it might happen that
|
||||
# systemd refuses to further restart the units. Therefore we use reset-failed command to prevent it.
|
||||
systemctl -q is-enabled dhcpd.service && systemctl restart dhcpd.service && systemctl reset-failed dhcpd.service
|
||||
systemctl -q is-enabled dhcpd6.service && systemctl restart dhcpd6.service && systemctl reset-failed dhcpd6.service
|
||||
fi
|
||||
|
||||
exit 0
|
||||
200
CVE-2021-25220.patch
Normal file
200
CVE-2021-25220.patch
Normal file
|
|
@ -0,0 +1,200 @@
|
|||
diff --git a/bind/bind-9.11.36/lib/dns/resolver.c b/bind/bind-9.11.36/lib/dns/resolver.c
|
||||
index b34cb12..8ae9a99 100644
|
||||
--- a/bind/bind-9.11.36/lib/dns/resolver.c
|
||||
+++ b/bind/bind-9.11.36/lib/dns/resolver.c
|
||||
@@ -63,6 +63,7 @@
|
||||
#include <dns/stats.h>
|
||||
#include <dns/tsig.h>
|
||||
#include <dns/validator.h>
|
||||
+#include <dns/zone.h>
|
||||
|
||||
#ifdef WANT_QUERYTRACE
|
||||
#define RTRACE(m) isc_log_write(dns_lctx, \
|
||||
@@ -311,6 +312,8 @@ struct fetchctx {
|
||||
bool ns_ttl_ok;
|
||||
uint32_t ns_ttl;
|
||||
isc_counter_t * qc;
|
||||
+ dns_fixedname_t fwdfname;
|
||||
+ dns_name_t *fwdname;
|
||||
|
||||
/*%
|
||||
* The number of events we're waiting for.
|
||||
@@ -3389,6 +3392,7 @@ fctx_getaddresses(fetchctx_t *fctx, bool badcache) {
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
fwd = ISC_LIST_HEAD(forwarders->fwdrs);
|
||||
fctx->fwdpolicy = forwarders->fwdpolicy;
|
||||
+ dns_name_copy(domain, fctx->fwdname, NULL);
|
||||
if (fctx->fwdpolicy == dns_fwdpolicy_only &&
|
||||
isstrictsubdomain(domain, &fctx->domain)) {
|
||||
fcount_decr(fctx);
|
||||
@@ -4418,6 +4422,9 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
fctx->restarts = 0;
|
||||
fctx->querysent = 0;
|
||||
fctx->referrals = 0;
|
||||
+
|
||||
+ fctx->fwdname = dns_fixedname_initname(&fctx->fwdfname);
|
||||
+
|
||||
TIME_NOW(&fctx->start);
|
||||
fctx->timeouts = 0;
|
||||
fctx->lamecount = 0;
|
||||
@@ -4476,8 +4483,10 @@ fctx_create(dns_resolver_t *res, dns_name_t *name, dns_rdatatype_t type,
|
||||
domain = dns_fixedname_initname(&fixed);
|
||||
result = dns_fwdtable_find2(fctx->res->view->fwdtable, fwdname,
|
||||
domain, &forwarders);
|
||||
- if (result == ISC_R_SUCCESS)
|
||||
+ if (result == ISC_R_SUCCESS) {
|
||||
fctx->fwdpolicy = forwarders->fwdpolicy;
|
||||
+ dns_name_copy(domain, fctx->fwdname, NULL);
|
||||
+ }
|
||||
|
||||
if (fctx->fwdpolicy != dns_fwdpolicy_only) {
|
||||
/*
|
||||
@@ -6226,6 +6235,112 @@ mark_related(dns_name_t *name, dns_rdataset_t *rdataset,
|
||||
rdataset->attributes |= DNS_RDATASETATTR_EXTERNAL;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Returns true if 'name' is external to the namespace for which
|
||||
+ * the server being queried can answer, either because it's not a
|
||||
+ * subdomain or because it's below a forward declaration or a
|
||||
+ * locally served zone.
|
||||
+ */
|
||||
+static inline bool
|
||||
+name_external(dns_name_t *name, dns_rdatatype_t type, fetchctx_t *fctx) {
|
||||
+ isc_result_t result;
|
||||
+ dns_forwarders_t *forwarders = NULL;
|
||||
+ dns_fixedname_t fixed, zfixed;
|
||||
+ dns_name_t *fname = dns_fixedname_initname(&fixed);
|
||||
+ dns_name_t *zfname = dns_fixedname_initname(&zfixed);
|
||||
+ dns_name_t *apex = NULL;
|
||||
+ dns_name_t suffix;
|
||||
+ dns_zone_t *zone = NULL;
|
||||
+ unsigned int labels;
|
||||
+ dns_namereln_t rel;
|
||||
+ /*
|
||||
+ * The following two variables do not influence code flow; they are
|
||||
+ * only necessary for calling dns_name_fullcompare().
|
||||
+ */
|
||||
+ int _orderp = 0;
|
||||
+ unsigned int _nlabelsp = 0;
|
||||
+
|
||||
+ apex = ISFORWARDER(fctx->addrinfo) ? fctx->fwdname : &fctx->domain;
|
||||
+
|
||||
+ /*
|
||||
+ * The name is outside the queried namespace.
|
||||
+ */
|
||||
+ rel = dns_name_fullcompare(name, apex, &_orderp, &_nlabelsp);
|
||||
+ if (rel != dns_namereln_subdomain && rel != dns_namereln_equal) {
|
||||
+ return (true);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * If the record lives in the parent zone, adjust the name so we
|
||||
+ * look for the correct zone or forward clause.
|
||||
+ */
|
||||
+ labels = dns_name_countlabels(name);
|
||||
+ if (dns_rdatatype_atparent(type) && labels > 1U) {
|
||||
+ dns_name_init(&suffix, NULL);
|
||||
+ dns_name_getlabelsequence(name, 1, labels - 1, &suffix);
|
||||
+ name = &suffix;
|
||||
+ } else if (rel == dns_namereln_equal) {
|
||||
+ /* If 'name' is 'apex', no further checking is needed. */
|
||||
+ return (false);
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * If there is a locally served zone between 'apex' and 'name'
|
||||
+ * then don't cache.
|
||||
+ */
|
||||
+ LOCK(&fctx->res->view->lock);
|
||||
+ if (fctx->res->view->zonetable != NULL) {
|
||||
+ unsigned int options = DNS_ZTFIND_NOEXACT;
|
||||
+ result = dns_zt_find(fctx->res->view->zonetable, name, options,
|
||||
+ zfname, &zone);
|
||||
+ if (zone != NULL) {
|
||||
+ dns_zone_detach(&zone);
|
||||
+ }
|
||||
+ if (result == ISC_R_SUCCESS || result == DNS_R_PARTIALMATCH) {
|
||||
+ if (dns_name_fullcompare(zfname, apex, &_orderp,
|
||||
+ &_nlabelsp) ==
|
||||
+ dns_namereln_subdomain)
|
||||
+ {
|
||||
+ UNLOCK(&fctx->res->view->lock);
|
||||
+ return (true);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ UNLOCK(&fctx->res->view->lock);
|
||||
+
|
||||
+ /*
|
||||
+ * Look for a forward declaration below 'name'.
|
||||
+ */
|
||||
+ result = dns_fwdtable_find2(fctx->res->view->fwdtable, name, fname,
|
||||
+ &forwarders);
|
||||
+
|
||||
+ if (ISFORWARDER(fctx->addrinfo)) {
|
||||
+ /*
|
||||
+ * See if the forwarder declaration is better.
|
||||
+ */
|
||||
+ if (result == ISC_R_SUCCESS) {
|
||||
+ return (!dns_name_equal(fname, fctx->fwdname));
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * If the lookup failed, the configuration must have
|
||||
+ * changed: play it safe and don't cache.
|
||||
+ */
|
||||
+ return (true);
|
||||
+ } else if (result == ISC_R_SUCCESS &&
|
||||
+ forwarders->fwdpolicy == dns_fwdpolicy_only &&
|
||||
+ !ISC_LIST_EMPTY(forwarders->fwdrs))
|
||||
+ {
|
||||
+ /*
|
||||
+ * If 'name' is covered by a 'forward only' clause then we
|
||||
+ * can't cache this repsonse.
|
||||
+ */
|
||||
+ return (true);
|
||||
+ }
|
||||
+
|
||||
+ return (false);
|
||||
+}
|
||||
+
|
||||
static isc_result_t
|
||||
check_section(void *arg, dns_name_t *addname, dns_rdatatype_t type,
|
||||
dns_section_t section)
|
||||
@@ -6254,7 +6369,7 @@ check_section(void *arg, dns_name_t *addname, dns_rdatatype_t type,
|
||||
result = dns_message_findname(rmessage, section, addname,
|
||||
dns_rdatatype_any, 0, &name, NULL);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
- external = !dns_name_issubdomain(name, &fctx->domain);
|
||||
+ external = name_external(name, type, fctx);
|
||||
if (type == dns_rdatatype_a) {
|
||||
for (rdataset = ISC_LIST_HEAD(name->list);
|
||||
rdataset != NULL;
|
||||
@@ -7136,6 +7251,13 @@ answer_response(fetchctx_t *fctx, dns_message_t *message) {
|
||||
break;
|
||||
|
||||
case dns_namereln_subdomain:
|
||||
+ /*
|
||||
+ * Don't accept DNAME from parent namespace.
|
||||
+ */
|
||||
+ if (name_external(name, dns_rdatatype_dname, fctx)) {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
/*
|
||||
* In-scope DNAME records must have at least
|
||||
* as many labels as the domain being queried.
|
||||
@@ -7371,11 +7493,9 @@ answer_response(fetchctx_t *fctx, dns_message_t *message) {
|
||||
*/
|
||||
result = dns_message_firstname(message, DNS_SECTION_AUTHORITY);
|
||||
while (!done && result == ISC_R_SUCCESS) {
|
||||
- bool external;
|
||||
name = NULL;
|
||||
dns_message_currentname(message, DNS_SECTION_AUTHORITY, &name);
|
||||
- external = !dns_name_issubdomain(name, &fctx->domain);
|
||||
- if (!external) {
|
||||
+ if (!name_external(name, dns_rdatatype_ns, fctx)) {
|
||||
/*
|
||||
* We expect to find NS or SIG NS rdatasets, and
|
||||
* nothing else.
|
||||
1
ci.fmf
Normal file
1
ci.fmf
Normal file
|
|
@ -0,0 +1 @@
|
|||
resultsdb-testcase: separate
|
||||
534
codesign2021.txt
Normal file
534
codesign2021.txt
Normal file
|
|
@ -0,0 +1,534 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=fX+D
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
4xcYgqlVpv15O7VrD+I=
|
||||
=Uugw
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
From c37721f799e6b32da156759a830011949311205a Mon Sep 17 00:00:00 2001
|
||||
From: Petr Mensik <pemensik@redhat.com>
|
||||
Date: Fri, 16 Feb 2018 17:50:40 +0100
|
||||
Subject: [PATCH] New bind includes never includes isc/util.h from any public
|
||||
headers. Include them to all compiled files that require it.
|
||||
|
||||
---
|
||||
client/dhclient.c | 1 +
|
||||
common/execute.c | 1 +
|
||||
common/parse.c | 1 +
|
||||
common/socket.c | 1 +
|
||||
omapip/connection.c | 1 +
|
||||
5 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/client/dhclient.c b/client/dhclient.c
|
||||
index 228b4fe..014365d 100644
|
||||
--- a/client/dhclient.c
|
||||
+++ b/client/dhclient.c
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <sys/wait.h>
|
||||
#include <limits.h>
|
||||
#include <isc/file.h>
|
||||
+#include <isc/util.h>
|
||||
#include <dns/result.h>
|
||||
|
||||
#ifdef HAVE_LIBCAP_NG
|
||||
diff --git a/common/execute.c b/common/execute.c
|
||||
index fa4e0f8..1ee1e7d 100644
|
||||
--- a/common/execute.c
|
||||
+++ b/common/execute.c
|
||||
@@ -28,6 +28,7 @@
|
||||
|
||||
#include "dhcpd.h"
|
||||
#include <omapip/omapip_p.h>
|
||||
+#include <isc/util.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
diff --git a/common/parse.c b/common/parse.c
|
||||
index d08cd2c..729d442 100644
|
||||
--- a/common/parse.c
|
||||
+++ b/common/parse.c
|
||||
@@ -27,6 +27,7 @@
|
||||
*/
|
||||
|
||||
#include "dhcpd.h"
|
||||
+#include <isc/util.h>
|
||||
#include <syslog.h>
|
||||
|
||||
/* Enumerations can be specified in option formats, and are used for
|
||||
diff --git a/common/socket.c b/common/socket.c
|
||||
index 2b352a1..94ce334 100644
|
||||
--- a/common/socket.c
|
||||
+++ b/common/socket.c
|
||||
@@ -35,6 +35,7 @@
|
||||
*/
|
||||
|
||||
#include "dhcpd.h"
|
||||
+#include <isc/util.h>
|
||||
#include <errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/uio.h>
|
||||
diff --git a/omapip/connection.c b/omapip/connection.c
|
||||
index 9aac0c8..a74becc 100644
|
||||
--- a/omapip/connection.c
|
||||
+++ b/omapip/connection.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "dhcpd.h"
|
||||
|
||||
#include <omapip/omapip_p.h>
|
||||
+#include <isc/util.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <arpa/nameser.h>
|
||||
#include <errno.h>
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
|
@ -1,52 +0,0 @@
|
|||
commit ccff9ed69d0b26d33ce9cac8e83dab535b64d627
|
||||
Author: Thomas Markwalder <tmark@isc.org>
|
||||
Date: Tue Dec 5 15:12:34 2017 -0500
|
||||
|
||||
[46767] Plugged a socket descriptor leak in OMAPI
|
||||
|
||||
If disconnect is triggered by the reader closing the socket, while there
|
||||
is data left to write, the socket would be orphaned.
|
||||
|
||||
omapip/buffer.c
|
||||
omapi_connection_writea() - added logic to recall disconnect once
|
||||
pending data has been written
|
||||
|
||||
omapip/message.c
|
||||
Removed static declaration from omapi_message_unregister so you can
|
||||
actually compile when DEBUG_PROTOCOL is defined.
|
||||
|
||||
Added a release note
|
||||
|
||||
diff --git a/omapip/buffer.c b/omapip/buffer.c
|
||||
index 6e0621b..a21f0a8 100644
|
||||
--- a/omapip/buffer.c
|
||||
+++ b/omapip/buffer.c
|
||||
@@ -565,6 +565,15 @@ isc_result_t omapi_connection_writer (omapi_object_t *h)
|
||||
omapi_buffer_dereference (&buffer, MDL);
|
||||
}
|
||||
}
|
||||
+
|
||||
+ /* If we had data left to write when we're told to disconnect,
|
||||
+ * we need recall disconnect, now that we're done writing.
|
||||
+ * See rt46767. */
|
||||
+ if (c->out_bytes == 0 && c->state == omapi_connection_disconnecting) {
|
||||
+ omapi_disconnect (h, 1);
|
||||
+ return ISC_R_SHUTTINGDOWN;
|
||||
+ }
|
||||
+
|
||||
return ISC_R_SUCCESS;
|
||||
}
|
||||
|
||||
diff --git a/omapip/message.c b/omapip/message.c
|
||||
index ee15d82..37abbd2 100644
|
||||
--- a/omapip/message.c
|
||||
+++ b/omapip/message.c
|
||||
@@ -339,7 +339,7 @@ isc_result_t omapi_message_unregister (omapi_object_t *mo)
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PROTOCOL
|
||||
-static const char *omapi_message_op_name(int op) {
|
||||
+const char *omapi_message_op_name(int op) {
|
||||
switch (op) {
|
||||
case OMAPI_OP_OPEN: return "OMAPI_OP_OPEN";
|
||||
case OMAPI_OP_REFRESH: return "OMAPI_OP_REFRESH";
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
diff --git a/common/options.c b/common/options.c
|
||||
index 83e0384..8a1deca 100644
|
||||
--- a/common/options.c
|
||||
+++ b/common/options.c
|
||||
@@ -1672,7 +1672,8 @@ format_min_length(format, oc)
|
||||
|
||||
|
||||
/* Format the specified option so that a human can easily read it. */
|
||||
-
|
||||
+/* Maximum pretty printed size */
|
||||
+#define MAX_OUTPUT_SIZE 32*1024
|
||||
const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
struct option *option;
|
||||
const unsigned char *data;
|
||||
@@ -1680,8 +1681,9 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
int emit_commas;
|
||||
int emit_quotes;
|
||||
{
|
||||
- static char optbuf [32768]; /* XXX */
|
||||
- static char *endbuf = &optbuf[sizeof(optbuf)];
|
||||
+ /* We add 128 byte pad so we don't have to add checks everywhere. */
|
||||
+ static char optbuf [MAX_OUTPUT_SIZE + 128]; /* XXX */
|
||||
+ static char *endbuf = optbuf + MAX_OUTPUT_SIZE;
|
||||
int hunksize = 0;
|
||||
int opthunk = 0;
|
||||
int hunkinc = 0;
|
||||
@@ -2132,7 +2134,14 @@ const char *pretty_print_option (option, data, len, emit_commas, emit_quotes)
|
||||
log_error ("Unexpected format code %c",
|
||||
fmtbuf [j]);
|
||||
}
|
||||
+
|
||||
op += strlen (op);
|
||||
+ if (op >= endbuf) {
|
||||
+ log_error ("Option data exceeds"
|
||||
+ " maximum size %d", MAX_OUTPUT_SIZE);
|
||||
+ return ("<error>");
|
||||
+ }
|
||||
+
|
||||
if (dp == data + len)
|
||||
break;
|
||||
if (j + 1 < numelem && comma != ':')
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/common/options.c b/common/options.c
|
||||
index 83e0384..a58c5fc 100644
|
||||
--- a/common/options.c
|
||||
+++ b/common/options.c
|
||||
@@ -189,6 +189,8 @@ int parse_option_buffer (options, buffer, length, universe)
|
||||
|
||||
/* If the length is outrageous, the options are bad. */
|
||||
if (offset + len > length) {
|
||||
+ /* Avoid reference count overflow */
|
||||
+ option_dereference(&option, MDL);
|
||||
reason = "option length exceeds option buffer length";
|
||||
bogus:
|
||||
log_error("parse_option_buffer: malformed option "
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
diff -up dhcp-4.3.0a1/common/parse.c.64-bit_lease_parse dhcp-4.3.0a1/common/parse.c
|
||||
--- dhcp-4.3.0a1/common/parse.c.64-bit_lease_parse 2013-12-11 01:25:12.000000000 +0100
|
||||
+++ dhcp-4.3.0a1/common/parse.c 2013-12-19 15:45:25.990771814 +0100
|
||||
@@ -938,8 +938,8 @@ TIME
|
||||
parse_date_core(cfile)
|
||||
struct parse *cfile;
|
||||
{
|
||||
- int guess;
|
||||
- int tzoff, year, mon, mday, hour, min, sec;
|
||||
+ TIME guess;
|
||||
+ long int tzoff, year, mon, mday, hour, min, sec;
|
||||
const char *val;
|
||||
enum dhcp_token token;
|
||||
static int months[11] = { 31, 59, 90, 120, 151, 181,
|
||||
@@ -965,7 +965,7 @@ parse_date_core(cfile)
|
||||
}
|
||||
|
||||
skip_token(&val, NULL, cfile); /* consume number */
|
||||
- guess = atoi(val);
|
||||
+ guess = atol(val);
|
||||
|
||||
return((TIME)guess);
|
||||
}
|
||||
@@ -993,7 +993,7 @@ parse_date_core(cfile)
|
||||
somebody invents a time machine, I think we can safely disregard
|
||||
it. This actually works around a stupid Y2K bug that was present
|
||||
in a very early beta release of dhcpd. */
|
||||
- year = atoi(val);
|
||||
+ year = atol(val);
|
||||
if (year > 1900)
|
||||
year -= 1900;
|
||||
|
||||
@@ -1039,7 +1039,7 @@ parse_date_core(cfile)
|
||||
return((TIME)0);
|
||||
}
|
||||
skip_token(&val, NULL, cfile); /* consume day of month */
|
||||
- mday = atoi(val);
|
||||
+ mday = atol(val);
|
||||
|
||||
/* Hour... */
|
||||
token = peek_token(&val, NULL, cfile);
|
||||
@@ -1050,7 +1050,7 @@ parse_date_core(cfile)
|
||||
return((TIME)0);
|
||||
}
|
||||
skip_token(&val, NULL, cfile); /* consume hour */
|
||||
- hour = atoi(val);
|
||||
+ hour = atol(val);
|
||||
|
||||
/* Colon separating hour from minute... */
|
||||
token = peek_token(&val, NULL, cfile);
|
||||
@@ -1072,7 +1072,7 @@ parse_date_core(cfile)
|
||||
return((TIME)0);
|
||||
}
|
||||
skip_token(&val, NULL, cfile); /* consume minute */
|
||||
- min = atoi(val);
|
||||
+ min = atol(val);
|
||||
|
||||
/* Colon separating minute from second... */
|
||||
token = peek_token(&val, NULL, cfile);
|
||||
@@ -1094,13 +1094,13 @@ parse_date_core(cfile)
|
||||
return((TIME)0);
|
||||
}
|
||||
skip_token(&val, NULL, cfile); /* consume second */
|
||||
- sec = atoi(val);
|
||||
+ sec = atol(val);
|
||||
|
||||
tzoff = 0;
|
||||
token = peek_token(&val, NULL, cfile);
|
||||
if (token == NUMBER) {
|
||||
skip_token(&val, NULL, cfile); /* consume tzoff */
|
||||
- tzoff = atoi(val);
|
||||
+ tzoff = atol(val);
|
||||
} else if (token != SEMI) {
|
||||
skip_token(&val, NULL, cfile);
|
||||
parse_warn(cfile,
|
||||
|
|
@ -1,164 +0,0 @@
|
|||
--- a/server/dhcp.c 2017-07-14 15:32:14.611104590 +0200
|
||||
+++ b/server/dhcp.c 2017-07-14 15:34:17.508858018 +0200
|
||||
@@ -87,6 +87,42 @@
|
||||
|
||||
static TIME leaseTimeCheck(TIME calculated, TIME alternate);
|
||||
|
||||
+char *print_client_identifier_from_packet (packet)
|
||||
+ struct packet *packet;
|
||||
+{
|
||||
+ struct option_cache *oc;
|
||||
+ struct data_string client_identifier;
|
||||
+ char *ci;
|
||||
+
|
||||
+ memset (&client_identifier, 0, sizeof client_identifier);
|
||||
+
|
||||
+ oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
+ DHO_DHCP_CLIENT_IDENTIFIER);
|
||||
+ if (oc &&
|
||||
+ evaluate_option_cache (&client_identifier,
|
||||
+ packet, (struct lease *)0,
|
||||
+ (struct client_state *)0,
|
||||
+ packet -> options,
|
||||
+ (struct option_state *)0,
|
||||
+ &global_scope, oc, MDL)) {
|
||||
+ ci = print_hw_addr (HTYPE_INFINIBAND, client_identifier.len, client_identifier.data);
|
||||
+ data_string_forget (&client_identifier, MDL);
|
||||
+ return ci;
|
||||
+ } else
|
||||
+ return "\"no client id\"";
|
||||
+}
|
||||
+
|
||||
+char *print_hw_addr_or_client_id (packet)
|
||||
+ struct packet *packet;
|
||||
+{
|
||||
+ if (packet -> raw -> htype == HTYPE_INFINIBAND)
|
||||
+ return print_client_identifier_from_packet (packet);
|
||||
+ else
|
||||
+ return print_hw_addr (packet -> raw -> htype,
|
||||
+ packet -> raw -> hlen,
|
||||
+ packet -> raw -> chaddr);
|
||||
+}
|
||||
+
|
||||
void
|
||||
dhcp (struct packet *packet) {
|
||||
int ms_nulltp = 0;
|
||||
@@ -129,9 +165,7 @@
|
||||
|
||||
log_info("%s from %s via %s: %s", s,
|
||||
(packet->raw->htype
|
||||
- ? print_hw_addr(packet->raw->htype,
|
||||
- packet->raw->hlen,
|
||||
- packet->raw->chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: "<no identifier>"),
|
||||
packet->raw->giaddr.s_addr
|
||||
? inet_ntoa(packet->raw->giaddr)
|
||||
@@ -328,9 +362,7 @@
|
||||
#endif
|
||||
snprintf (msgbuf, sizeof msgbuf, "DHCPDISCOVER from %s %s%s%svia %s",
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id (packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -542,9 +574,7 @@
|
||||
"DHCPREQUEST for %s%s from %s %s%s%svia %s",
|
||||
piaddr (cip), smbuf,
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -785,9 +815,7 @@
|
||||
if ((oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
DHO_DHCP_REQUESTED_ADDRESS))) {
|
||||
log_info ("DHCPRELEASE from %s specified requested-address.",
|
||||
- print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr));
|
||||
+ print_hw_addr_or_client_id(packet));
|
||||
}
|
||||
|
||||
oc = lookup_option (&dhcp_universe, packet -> options,
|
||||
@@ -879,9 +907,7 @@
|
||||
"DHCPRELEASE of %s from %s %s%s%svia %s (%sfound)",
|
||||
cstr,
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -986,9 +1012,7 @@
|
||||
"DHCPDECLINE of %s from %s %s%s%svia %s",
|
||||
piaddr (cip),
|
||||
(packet -> raw -> htype
|
||||
- ? print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)
|
||||
+ ? print_hw_addr_or_client_id(packet)
|
||||
: (lease
|
||||
? print_hex_1(lease->uid_len, lease->uid, 60)
|
||||
: "<no identifier>")),
|
||||
@@ -1707,8 +1731,7 @@
|
||||
/* Report what we're sending. */
|
||||
snprintf(msgbuf, sizeof msgbuf, "DHCPACK to %s (%s) via", piaddr(cip),
|
||||
(packet->raw->htype && packet->raw->hlen) ?
|
||||
- print_hw_addr(packet->raw->htype, packet->raw->hlen,
|
||||
- packet->raw->chaddr) :
|
||||
+ print_hw_addr_or_client_id(packet) :
|
||||
"<no client hardware address>");
|
||||
log_info("%s %s", msgbuf, gip.len ? piaddr(gip) :
|
||||
packet->interface->name);
|
||||
@@ -1886,9 +1909,7 @@
|
||||
#endif
|
||||
log_info ("DHCPNAK on %s to %s via %s",
|
||||
piaddr (*cip),
|
||||
- print_hw_addr (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr),
|
||||
+ print_hw_addr_or_client_id(packet),
|
||||
packet -> raw -> giaddr.s_addr
|
||||
? inet_ntoa (packet -> raw -> giaddr)
|
||||
: packet -> interface -> name);
|
||||
@@ -3897,7 +3918,7 @@
|
||||
? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER")
|
||||
: "BOOTREPLY"),
|
||||
piaddr (lease -> ip_addr),
|
||||
- (lease -> hardware_addr.hlen
|
||||
+ (lease -> hardware_addr.hlen > 1
|
||||
? print_hw_addr (lease -> hardware_addr.hbuf [0],
|
||||
lease -> hardware_addr.hlen - 1,
|
||||
&lease -> hardware_addr.hbuf [1])
|
||||
@@ -4450,10 +4471,7 @@
|
||||
if (uid_lease) {
|
||||
if (uid_lease->binding_state == FTS_ACTIVE) {
|
||||
log_error ("client %s has duplicate%s on %s",
|
||||
- (print_hw_addr
|
||||
- (packet -> raw -> htype,
|
||||
- packet -> raw -> hlen,
|
||||
- packet -> raw -> chaddr)),
|
||||
+ (print_hw_addr_or_client_id(packet)),
|
||||
" leases",
|
||||
(ip_lease -> subnet ->
|
||||
shared_network -> name));
|
||||
@@ -4620,9 +4638,7 @@
|
||||
log_error("uid lease %s for client %s is duplicate "
|
||||
"on %s",
|
||||
piaddr(uid_lease->ip_addr),
|
||||
- print_hw_addr(packet->raw->htype,
|
||||
- packet->raw->hlen,
|
||||
- packet->raw->chaddr),
|
||||
+ print_hw_addr_or_client_id(packet),
|
||||
uid_lease->subnet->shared_network->name);
|
||||
|
||||
if (!packet -> raw -> ciaddr.s_addr &&
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
diff -up dhcp-4.3.0a1/common/dispatch.c.dracut dhcp-4.3.0a1/common/dispatch.c
|
||||
--- dhcp-4.3.0a1/common/dispatch.c.dracut 2013-12-11 01:25:12.000000000 +0100
|
||||
+++ dhcp-4.3.0a1/common/dispatch.c 2013-12-19 15:39:50.350505860 +0100
|
||||
@@ -210,6 +210,10 @@ void add_timeout (when, where, what, ref
|
||||
isc_interval_t interval;
|
||||
isc_time_t expires;
|
||||
|
||||
+ if (when == NULL) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
/* See if this timeout supersedes an existing timeout. */
|
||||
t = (struct timeout *)0;
|
||||
for (q = timeouts; q; q = q->next) {
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.backoff dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.backoff 2016-04-29 12:16:26.976245611 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 12:16:26.979245609 +0200
|
||||
@@ -1423,6 +1423,8 @@ void state_init (cpp)
|
||||
void *cpp;
|
||||
{
|
||||
struct client_state *client = cpp;
|
||||
+ enum dhcp_state init_state = client->state;
|
||||
+ struct timeval tv;
|
||||
|
||||
ASSERT_STATE(state, S_INIT);
|
||||
|
||||
@@ -1435,9 +1437,18 @@ void state_init (cpp)
|
||||
client -> first_sending = cur_time;
|
||||
client -> interval = client -> config -> initial_interval;
|
||||
|
||||
- /* Add an immediate timeout to cause the first DHCPDISCOVER packet
|
||||
- to go out. */
|
||||
- send_discover (client);
|
||||
+ if (init_state != S_DECLINED) {
|
||||
+ /* Add an immediate timeout to cause the first DHCPDISCOVER packet
|
||||
+ to go out. */
|
||||
+ send_discover(client);
|
||||
+ } else {
|
||||
+ /* We've received an OFFER and it has been DECLINEd by dhclient-script.
|
||||
+ * wait for a random time between 1 and backoff_cutoff seconds before
|
||||
+ * trying again. */
|
||||
+ tv . tv_sec = cur_time + ((1 + (random() >> 2)) % client->config->backoff_cutoff);
|
||||
+ tv . tv_usec = 0;
|
||||
+ add_timeout(&tv, send_discover, client, 0, 0);
|
||||
+ }
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1734,5 +1745,6 @@ void bind_lease (client)
|
||||
#endif
|
||||
exit(2);
|
||||
} else {
|
||||
+ client -> state = S_DECLINED;
|
||||
state_init(client);
|
||||
return;
|
||||
}
|
||||
@@ -4626,6 +4638,7 @@ void client_location_changed ()
|
||||
case S_INIT:
|
||||
case S_REBINDING:
|
||||
case S_STOPPED:
|
||||
+ case S_DECLINED:
|
||||
break;
|
||||
}
|
||||
client -> state = S_INIT;
|
||||
diff -up dhcp-4.3.4/includes/dhcpd.h.backoff dhcp-4.3.4/includes/dhcpd.h
|
||||
--- dhcp-4.3.4/includes/dhcpd.h.backoff 2016-04-29 12:16:26.980245609 +0200
|
||||
+++ dhcp-4.3.4/includes/dhcpd.h 2016-04-29 12:17:30.893203533 +0200
|
||||
@@ -1171,7 +1171,8 @@ enum dhcp_state {
|
||||
S_BOUND = 5,
|
||||
S_RENEWING = 6,
|
||||
S_REBINDING = 7,
|
||||
- S_STOPPED = 8
|
||||
+ S_STOPPED = 8,
|
||||
+ S_DECLINED = 9
|
||||
};
|
||||
|
||||
/* Possible pending client operations. */
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
diff -up dhcp-4.3.1b1/client/dhclient.8.KrJcIv dhcp-4.3.1b1/client/dhclient.8
|
||||
--- dhcp-4.3.1b1/client/dhclient.8.KrJcIv 2014-07-10 17:39:25.852763873 +0200
|
||||
+++ dhcp-4.3.1b1/client/dhclient.8 2014-07-10 17:54:26.841012988 +0200
|
||||
@@ -458,6 +458,9 @@ used to construct a RFC4361 style client
|
||||
in the client's messages. This client id can be overridden by
|
||||
setting a client id in the configuration file. Overridding the
|
||||
client id in this fashion is discouraged.
|
||||
+This option is turned on by default, if you want to redefine or turn off
|
||||
+sending of client id, use send dhcp-client-identifier = "better identifier"
|
||||
+or send dhcp-client-identifier = "" in /etc/dhcp/dhclient.conf.
|
||||
.TP
|
||||
.BI \-I
|
||||
Use the standard DDNS scheme from RFCs 4701 & 4702.
|
||||
diff -up dhcp-4.3.1b1/client/dhclient.c.KrJcIv dhcp-4.3.1b1/client/dhclient.c
|
||||
--- dhcp-4.3.1b1/client/dhclient.c.KrJcIv 2014-07-10 17:54:26.829013157 +0200
|
||||
+++ dhcp-4.3.1b1/client/dhclient.c 2014-07-10 17:55:50.155835918 +0200
|
||||
@@ -73,7 +73,7 @@ struct sockaddr_in sockaddr_broadcast;
|
||||
struct in_addr giaddr;
|
||||
struct data_string default_duid;
|
||||
int duid_type = 0;
|
||||
-int duid_v4 = 0;
|
||||
+int duid_v4 = 1;
|
||||
int std_dhcid = 0;
|
||||
|
||||
/* ASSERT_STATE() does nothing now; it used to be
|
||||
@@ -1301,7 +1301,7 @@ static void setup_ib_interface(struct in
|
||||
}
|
||||
|
||||
/* No client ID specified */
|
||||
- log_fatal("dhcp-client-identifier must be specified for InfiniBand");
|
||||
+ //log_fatal("dhcp-client-identifier must be specified for InfiniBand");
|
||||
}
|
||||
|
||||
/* Individual States:
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up dhcp-4.3.0rc1/common/tables.c.garbage dhcp-4.3.0rc1/common/tables.c
|
||||
--- dhcp-4.3.0rc1/common/tables.c.garbage 2014-01-29 10:03:52.132624677 +0100
|
||||
+++ dhcp-4.3.0rc1/common/tables.c 2014-01-29 10:04:51.413875343 +0100
|
||||
@@ -213,7 +213,7 @@ static struct option dhcp_options[] = {
|
||||
{ "name-service-search", "Sa", &dhcp_universe, 117, 1 },
|
||||
#endif
|
||||
{ "subnet-selection", "I", &dhcp_universe, 118, 1 },
|
||||
- { "domain-search", "Dc", &dhcp_universe, 119, 1 },
|
||||
+ { "domain-search", "D", &dhcp_universe, 119, 1 },
|
||||
{ "vivco", "Evendor-class.", &dhcp_universe, 124, 1 },
|
||||
{ "vivso", "Evendor.", &dhcp_universe, 125, 1 },
|
||||
#if 0
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
diff --git a/omapip/isclib.c b/omapip/isclib.c
|
||||
index 9ec1a0f..42d82ff 100644
|
||||
--- a/omapip/isclib.c
|
||||
+++ b/omapip/isclib.c
|
||||
@@ -185,16 +185,6 @@ dhcp_context_create(int flags,
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
|
||||
- result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
|
||||
- if (result != ISC_R_SUCCESS)
|
||||
- return (result);
|
||||
- dhcp_gbl_ctx.actx_started = ISC_TRUE;
|
||||
-
|
||||
- /* Not all OSs support suppressing SIGPIPE through socket
|
||||
- * options, so set the sigal action to be ignore. This allows
|
||||
- * broken connections to fail gracefully with EPIPE on writes */
|
||||
- handle_signal(SIGPIPE, SIG_IGN);
|
||||
-
|
||||
result = isc_taskmgr_createinctx(dhcp_gbl_ctx.mctx,
|
||||
dhcp_gbl_ctx.actx,
|
||||
1, 0,
|
||||
@@ -217,6 +207,21 @@ dhcp_context_create(int flags,
|
||||
result = isc_task_create(dhcp_gbl_ctx.taskmgr, 0, &dhcp_gbl_ctx.task);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
goto cleanup;
|
||||
+
|
||||
+ result = isc_app_ctxstart(dhcp_gbl_ctx.actx);
|
||||
+ if (result != ISC_R_SUCCESS)
|
||||
+ return (result);
|
||||
+ dhcp_gbl_ctx.actx_started = ISC_TRUE;
|
||||
+
|
||||
+ /* Not all OSs support suppressing SIGPIPE through socket
|
||||
+ * options, so set the sigal action to be ignore. This allows
|
||||
+ * broken connections to fail gracefully with EPIPE on writes */
|
||||
+ handle_signal(SIGPIPE, SIG_IGN);
|
||||
+
|
||||
+ /* Reset handlers installed by isc_app_ctxstart()
|
||||
+ * to default for control-c and kill */
|
||||
+ handle_signal(SIGINT, SIG_DFL);
|
||||
+ handle_signal(SIGTERM, SIG_DFL);
|
||||
}
|
||||
|
||||
#if defined (NSUPDATE)
|
||||
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
diff -up dhcp-4.3.0a1/client/dhc6.c.honor-expired dhcp-4.3.0a1/client/dhc6.c
|
||||
--- dhcp-4.3.0a1/client/dhc6.c.honor-expired 2013-12-19 16:00:28.062183037 +0100
|
||||
+++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 16:00:28.076182842 +0100
|
||||
@@ -1351,6 +1351,32 @@ start_info_request6(struct client_state
|
||||
go_daemon();
|
||||
}
|
||||
|
||||
+/* Run through the addresses in lease and return true if there's any unexpired.
|
||||
+ * Return false otherwise.
|
||||
+ */
|
||||
+isc_boolean_t
|
||||
+unexpired_address_in_lease(struct dhc6_lease *lease)
|
||||
+{
|
||||
+ struct dhc6_ia *ia;
|
||||
+ struct dhc6_addr *addr;
|
||||
+
|
||||
+ for (ia = lease->bindings ; ia != NULL ; ia = ia->next) {
|
||||
+ for (addr = ia->addrs ; addr != NULL ; addr = addr->next) {
|
||||
+ if (addr->flags & DHC6_ADDR_EXPIRED)
|
||||
+ continue;
|
||||
+
|
||||
+ if (addr->starts + addr->max_life > cur_time) {
|
||||
+ return ISC_TRUE;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ log_info("PRC: Previous lease is devoid of active addresses."
|
||||
+ " Re-initializing.");
|
||||
+
|
||||
+ return ISC_FALSE;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* start_confirm6() kicks off an "init-reboot" version of the process, at
|
||||
* startup to find out if old bindings are 'fair' and at runtime whenever
|
||||
@@ -1363,8 +1389,10 @@ start_confirm6(struct client_state *clie
|
||||
|
||||
/* If there is no active lease, there is nothing to check. */
|
||||
if ((client->active_lease == NULL) ||
|
||||
- !active_prefix(client) ||
|
||||
- client->active_lease->released) {
|
||||
+ !active_prefix(client) ||
|
||||
+ client->active_lease->released ||
|
||||
+ !unexpired_address_in_lease(client->active_lease)) {
|
||||
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
||||
start_init6(client);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/common/discover.c b/common/discover.c
|
||||
index 26a78ca..ed01e45 100644
|
||||
--- a/common/discover.c
|
||||
+++ b/common/discover.c
|
||||
@@ -635,6 +635,8 @@ discover_interfaces(int state) {
|
||||
interface_dereference(&tmp, MDL);
|
||||
tmp = interfaces; /* XXX */
|
||||
}
|
||||
+ if (tmp != NULL)
|
||||
+ get_hw_addr(tmp);
|
||||
|
||||
if (dhcp_interface_discovery_hook) {
|
||||
(*dhcp_interface_discovery_hook)(tmp);
|
||||
|
|
@ -1,138 +0,0 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.improved-xid dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.improved-xid 2016-04-29 12:54:55.997102182 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 12:57:25.123139587 +0200
|
||||
@@ -1045,6 +1045,26 @@ main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
|
||||
+ /* We create a backup seed before rediscovering interfaces in order to
|
||||
+ have a seed built using all of the available interfaces
|
||||
+ It's interesting if required interfaces doesn't let us defined
|
||||
+ a really unique seed due to a lack of valid HW addr later
|
||||
+ (this is the case with DHCP over IB)
|
||||
+ We only use the last device as using a sum could broke the
|
||||
+ uniqueness of the seed among multiple nodes
|
||||
+ */
|
||||
+ unsigned backup_seed = 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);
|
||||
+ backup_seed = junk;
|
||||
+ }
|
||||
+
|
||||
+
|
||||
/* 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
|
||||
@@ -1059,14 +1079,36 @@ 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);
|
||||
+ }
|
||||
+ 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 + ((unsigned)(cur_tv.tv_usec * 1000000)) + (unsigned)getpid());
|
||||
+ }
|
||||
+ else
|
||||
+ srandom(seed + ((unsigned)(cur_tv.tv_usec * 1000000)) + (unsigned)getpid());
|
||||
|
||||
/* Setup specific Infiniband options */
|
||||
for (ip = interfaces; ip; ip = ip->next) {
|
||||
@@ -1633,7 +1675,7 @@ void dhcpack (packet)
|
||||
return;
|
||||
}
|
||||
|
||||
- log_info ("DHCPACK from %s", piaddr (packet -> client_addr));
|
||||
+ log_info ("DHCPACK from %s (xid=0x%x)", piaddr (packet -> client_addr), ntohl(client -> xid));
|
||||
|
||||
lease = packet_to_lease (packet, client);
|
||||
if (!lease) {
|
||||
@@ -2541,7 +2583,7 @@ void dhcpnak (packet)
|
||||
return;
|
||||
}
|
||||
|
||||
- log_info ("DHCPNAK from %s", piaddr (packet -> client_addr));
|
||||
+ log_info ("DHCPNAK from %s (xid=0x%x)", piaddr (packet -> client_addr), ntohl(client -> xid));
|
||||
|
||||
if (!client -> active) {
|
||||
#if defined (DEBUG)
|
||||
@@ -2674,10 +2716,10 @@ void send_discover (cpp)
|
||||
(long)(client -> interval));
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPDISCOVER on %s to %s port %d interval %ld",
|
||||
+ log_info ("DHCPDISCOVER on %s to %s port %d interval %ld (xid=0x%x)",
|
||||
client -> name ? client -> name : client -> interface -> name,
|
||||
inet_ntoa (sockaddr_broadcast.sin_addr),
|
||||
- ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval));
|
||||
+ ntohs (sockaddr_broadcast.sin_port), (long)(client -> interval), ntohl(client -> xid));
|
||||
|
||||
/* Send out a packet. */
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
@@ -2962,10 +3004,10 @@ void send_request (cpp)
|
||||
log_info ("DHCPREQUEST");
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPREQUEST on %s to %s port %d",
|
||||
+ log_info ("DHCPREQUEST on %s to %s port %d (xid=0x%x)",
|
||||
client -> name ? client -> name : client -> interface -> name,
|
||||
inet_ntoa (destination.sin_addr),
|
||||
- ntohs (destination.sin_port));
|
||||
+ ntohs (destination.sin_port), ntohl(client -> xid));
|
||||
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
if (dhcpv4_over_dhcpv6) {
|
||||
@@ -3022,10 +3064,10 @@ void send_decline (cpp)
|
||||
log_info ("DHCPDECLINE");
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPDECLINE on %s to %s port %d",
|
||||
+ log_info ("DHCPDECLINE on %s to %s port %d (xid=0x%x)",
|
||||
client->name ? client->name : client->interface->name,
|
||||
inet_ntoa(sockaddr_broadcast.sin_addr),
|
||||
- ntohs(sockaddr_broadcast.sin_port));
|
||||
+ ntohs(sockaddr_broadcast.sin_port), ntohl(client -> xid));
|
||||
|
||||
/* Send out a packet. */
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
@@ -3084,10 +3126,10 @@ void send_release (cpp)
|
||||
log_info ("DHCPRELEASE");
|
||||
} else
|
||||
#endif
|
||||
- log_info ("DHCPRELEASE on %s to %s port %d",
|
||||
+ log_info ("DHCPRELEASE on %s to %s port %d (xid=0x%x)",
|
||||
client -> name ? client -> name : client -> interface -> name,
|
||||
inet_ntoa (destination.sin_addr),
|
||||
- ntohs (destination.sin_port));
|
||||
+ ntohs (destination.sin_port), ntohl(client -> xid));
|
||||
|
||||
#if defined(DHCPv6) && defined(DHCP4o6)
|
||||
if (dhcpv4_over_dhcpv6) {
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
diff -up dhcp-4.3.0a1/doc/examples/dhcpd-dhcpv6.conf.paths dhcp-4.3.0a1/doc/examples/dhcpd-dhcpv6.conf
|
||||
--- dhcp-4.3.0a1/doc/examples/dhcpd-dhcpv6.conf.paths 2013-11-07 20:15:08.000000000 +0100
|
||||
+++ dhcp-4.3.0a1/doc/examples/dhcpd-dhcpv6.conf 2013-12-19 15:34:16.262247711 +0100
|
||||
@@ -42,7 +42,7 @@ option dhcp6.domain-search "test.example
|
||||
option dhcp6.info-refresh-time 21600;
|
||||
|
||||
# The path of the lease file
|
||||
-dhcpv6-lease-file-name "/usr/local/var/db/dhcpd6.leases";
|
||||
+dhcpv6-lease-file-name "/var/lib/dhcpd/dhcpd6.leases";
|
||||
|
||||
# Static definition (must be global)
|
||||
host myclient {
|
||||
diff -up dhcp-4.3.0a1/includes/dhcpd.h.paths dhcp-4.3.0a1/includes/dhcpd.h
|
||||
--- dhcp-4.3.0a1/includes/dhcpd.h.paths 2013-12-19 15:34:16.253247840 +0100
|
||||
+++ dhcp-4.3.0a1/includes/dhcpd.h 2013-12-19 15:34:16.263247697 +0100
|
||||
@@ -1429,7 +1429,7 @@ typedef unsigned char option_mask [16];
|
||||
#else /* !DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCPD_CONF
|
||||
-#define _PATH_DHCPD_CONF "/etc/dhcpd.conf"
|
||||
+#define _PATH_DHCPD_CONF "/etc/dhcp/dhcpd.conf"
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCPD_DB
|
||||
@@ -1451,11 +1451,11 @@ typedef unsigned char option_mask [16];
|
||||
#endif /* DEBUG */
|
||||
|
||||
#ifndef _PATH_DHCLIENT_CONF
|
||||
-#define _PATH_DHCLIENT_CONF "/etc/dhclient.conf"
|
||||
+#define _PATH_DHCLIENT_CONF "/etc/dhcp/dhclient.conf"
|
||||
#endif
|
||||
|
||||
#ifndef _PATH_DHCLIENT_SCRIPT
|
||||
-#define _PATH_DHCLIENT_SCRIPT "/sbin/dhclient-script"
|
||||
+#define _PATH_DHCLIENT_SCRIPT "/usr/sbin/dhclient-script"
|
||||
#endif
|
||||
|
||||
#ifndef _PATH_DHCLIENT_PID
|
||||
|
|
@ -1,351 +0,0 @@
|
|||
From 2698385647a6ebd58b5d25147333e494c3da2409 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Mensik <pemensik@redhat.com>
|
||||
Date: Fri, 9 Feb 2018 15:24:53 +0100
|
||||
Subject: [PATCH] Support for isc-config.sh script on --with-libbind parameter
|
||||
|
||||
Move checks only to isc-config section
|
||||
|
||||
Fix detection of bind flags from config
|
||||
|
||||
Add support for with-libbind=config, Improve help message
|
||||
---
|
||||
client/Makefile.am | 5 ++-
|
||||
client/tests/Makefile.am | 8 ++---
|
||||
common/tests/Makefile.am | 14 +++-----
|
||||
configure.ac | 84 ++++++++++++++++++++++++++++++++++++++++++------
|
||||
dhcpctl/Makefile.am | 8 ++---
|
||||
omapip/Makefile.am | 5 ++-
|
||||
relay/Makefile.am | 5 ++-
|
||||
server/Makefile.am | 6 ++--
|
||||
server/tests/Makefile.am | 9 +++---
|
||||
9 files changed, 98 insertions(+), 46 deletions(-)
|
||||
|
||||
diff --git a/client/Makefile.am b/client/Makefile.am
|
||||
index 2cb83d8..b85f5d2 100644
|
||||
--- a/client/Makefile.am
|
||||
+++ b/client/Makefile.am
|
||||
@@ -4,7 +4,7 @@
|
||||
# production code. Sadly, we are not there yet.
|
||||
SUBDIRS = . tests
|
||||
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
AM_CPPFLAGS = -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \
|
||||
-DLOCALSTATEDIR='"$(localstatedir)"'
|
||||
@@ -15,7 +15,6 @@ dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
|
||||
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
|
||||
scripts/netbsd scripts/nextstep scripts/openbsd \
|
||||
scripts/solaris scripts/openwrt
|
||||
-dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a $(BIND_LIBS)
|
||||
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/client/tests/Makefile.am b/client/tests/Makefile.am
|
||||
index 5031d0c..bb1fda4 100644
|
||||
--- a/client/tests/Makefile.am
|
||||
+++ b/client/tests/Makefile.am
|
||||
@@ -1,9 +1,9 @@
|
||||
SUBDIRS = .
|
||||
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
AM_CPPFLAGS = $(ATF_CFLAGS) -DUNIT_TEST -I$(top_srcdir)/includes
|
||||
-AM_CPPFLAGS += -I@BINDDIR@/include -I$(top_srcdir)
|
||||
+AM_CPPFLAGS += @BIND_CPPFLAGS@ -I$(top_srcdir)
|
||||
AM_CPPFLAGS += -DLOCALSTATEDIR='"."'
|
||||
AM_CPPFLAGS += -DCLIENT_PATH='"."'
|
||||
|
||||
@@ -18,9 +18,7 @@ info:
|
||||
DHCPSRC = ../clparse.c ../dhc6.c ../dhclient.c
|
||||
|
||||
DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.a \
|
||||
- $(top_builddir)/dhcpctl/libdhcpctl.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a \
|
||||
- $(BINDLIBDIR)/libisc.a
|
||||
+ $(top_builddir)/dhcpctl/libdhcpctl.a $(BIND_LIBS)
|
||||
|
||||
ATF_TESTS =
|
||||
if HAVE_ATF
|
||||
diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
|
||||
index f6a43e4..196aa44 100644
|
||||
--- a/common/tests/Makefile.am
|
||||
+++ b/common/tests/Makefile.am
|
||||
@@ -1,6 +1,6 @@
|
||||
SUBDIRS = .
|
||||
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
AM_CPPFLAGS = $(ATF_CFLAGS) -I$(top_srcdir)/includes
|
||||
|
||||
@@ -15,26 +15,22 @@ ATF_TESTS += alloc_unittest dns_unittest misc_unittest ns_name_unittest
|
||||
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
alloc_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
alloc_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
|
||||
dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
dns_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
dns_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
|
||||
misc_unittest_SOURCES = misc_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
misc_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
misc_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
|
||||
ns_name_unittest_SOURCES = ns_name_test.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
ns_name_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
ns_name_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
|
||||
check: $(ATF_TESTS)
|
||||
@if test $(top_srcdir) != ${top_builddir}; then \
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index cdfa352..ef55f8d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -688,8 +688,12 @@ AC_CHECK_MEMBER(struct tpacket_auxdata.tp_vlan_tci,
|
||||
|
||||
BINDDIR=
|
||||
BINDSRCDIR=
|
||||
+BIND_CONFIG=
|
||||
+BIND_CPPFLAGS=
|
||||
+BIND_LIBS=
|
||||
AC_ARG_WITH(libbind,
|
||||
- AS_HELP_STRING([--with-libbind=PATH],[bind includes and libraries are in PATH
|
||||
+ AS_HELP_STRING([--with-libbind=PATH|config],[bind includes and libraries are in PATH.
|
||||
+ Use config to obtain libraries from isc-config.sh.
|
||||
(default is ./bind)]),
|
||||
use_libbind="$withval", use_libbind="no")
|
||||
case "$use_libbind" in
|
||||
@@ -701,23 +705,85 @@ no)
|
||||
BINDDIR="\${top_srcdir}/bind"
|
||||
BINDSRCDIR="\${top_srcdir}/bind"
|
||||
;;
|
||||
+config)
|
||||
+ AC_PATH_PROG(BIND_CONFIG, [isc-config.sh bind9-config])
|
||||
+ ;;
|
||||
*)
|
||||
- BINDDIR="$use_libbind"
|
||||
- if test ! -d "$srcdir/bind"; then
|
||||
- # no bind directory, create it with a fake Makefile.in
|
||||
- # (AC_CONFIG_FILES and top Makefile refer to it so
|
||||
- # it must exits)
|
||||
- mkdir $srcdir/bind
|
||||
- cat > $srcdir/bind/Makefile.in << EOF
|
||||
+ if test -f "$use_libbind" -a -x "$use_libbind"; then
|
||||
+ # passed full path of isc-config.sh
|
||||
+ BIND_CONFIG="$use_libbind"
|
||||
+ else
|
||||
+ BINDDIR="$use_libbind"
|
||||
+ if test ! -d "$srcdir/bind"; then
|
||||
+ # no bind directory, create it with a fake Makefile.in
|
||||
+ # (AC_CONFIG_FILES and top Makefile refer to it so
|
||||
+ # it must exits)
|
||||
+ mkdir $srcdir/bind
|
||||
+ cat > $srcdir/bind/Makefile.in << EOF
|
||||
# placeholder
|
||||
all check clean distclean distdir install uninstall:
|
||||
|
||||
EOF
|
||||
+ fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
+if test -z "$BIND_CONFIG"; then
|
||||
+ BIND_CPPFLAGS="-I${BINDDIR}/include"
|
||||
+ BIND_LIBDIR="${BINDDIR}/lib"
|
||||
+ BIND_LIBS="$(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a"
|
||||
+else
|
||||
+ BIND_CPPFLAGS=`$BIND_CONFIG --cflags`
|
||||
+ BIND_LIBS=`$BIND_CONFIG --libs irs dns isccfg isc`
|
||||
+
|
||||
+ # bind is already built
|
||||
+ AC_CHECKING([Checking bind libraries have no thread support])
|
||||
+ saved_libs="$LIBS"
|
||||
+ saved_CPPFLAGS="$CPPFLAGS"
|
||||
+ CPPFLAGS="${CPPFLAGS} ${BIND_CPPFLAGS}"
|
||||
+ LIBS="${LIBS} ${BIND_LIBS}"
|
||||
+AC_TRY_LINK([
|
||||
+#include <isc/bind9.h>
|
||||
+#include <isc/lib.h>
|
||||
+],[
|
||||
+#ifdef BIND9
|
||||
+#error Export BIND library has to be used with BIND version up to 9.9
|
||||
+#endif
|
||||
+isc_lib_register();
|
||||
+], [AC_MSG_RESULT(Bind export library found)
|
||||
+ BIND_EXPORT=yes], [BIND_EXPORT=no]
|
||||
+)
|
||||
+
|
||||
+# Allow build with disabled threads for dhcp
|
||||
+AC_TRY_LINK([
|
||||
+#include <isc/platform.h>
|
||||
+#include <isc/bind9.h>
|
||||
+#include <isc/lib.h>
|
||||
+],[
|
||||
+#ifdef ISC_PLATFORM_USETHREADS
|
||||
+#error Bind library must not be compiled with threads
|
||||
+#endif
|
||||
+isc_lib_register();
|
||||
+if (isc_bind9 != 0) {}
|
||||
+], [AC_MSG_RESULT(Bind single thread library found)
|
||||
+ BIND_SINGLETHREAD=yes], [BIND_SINGLETHREAD=no]
|
||||
+)
|
||||
+
|
||||
+ if test "x$BIND_EXPORT" != xyes -a "x$BIND_SINGLETHREADED" != xyes
|
||||
+ then
|
||||
+ AC_MSG_RESULT([BIND_CONFIG=${BIND_CONFIG}])
|
||||
+ AC_MSG_RESULT([BIND_CPPFLAGS=${BIND_CPPFLAGS}])
|
||||
+ AC_MSG_RESULT([BIND_LIBS=${BIND_LIBS}])
|
||||
+ AC_MSG_ERROR([Bind libraries are not useable for dhcp])
|
||||
+ fi
|
||||
+ CPPFLAGS="$saved_CPPFLAGS"
|
||||
+ LIBS="$saved_LIBS"
|
||||
+fi
|
||||
+
|
||||
AC_SUBST(BINDDIR)
|
||||
AC_SUBST(BINDSRCDIR)
|
||||
+AC_SUBST(BIND_CPPFLAGS)
|
||||
+AC_SUBST(BIND_LIBS)
|
||||
|
||||
# OpenLDAP support.
|
||||
AC_ARG_WITH(ldap,
|
||||
@@ -795,7 +861,7 @@ fi
|
||||
CFLAGS="$CFLAGS $STD_CWARNINGS"
|
||||
|
||||
# Try to add the bind and dhcp include directories
|
||||
-CFLAGS="$CFLAGS -I\$(top_srcdir)/includes -I$BINDDIR/include"
|
||||
+CFLAGS="$CFLAGS -I\$(top_srcdir)/includes $BIND_CPPFLAGS"
|
||||
|
||||
case "$host" in
|
||||
*-darwin*)
|
||||
diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
|
||||
index ceb0de1..fa20a78 100644
|
||||
--- a/dhcpctl/Makefile.am
|
||||
+++ b/dhcpctl/Makefile.am
|
||||
@@ -1,4 +1,4 @@
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
bin_PROGRAMS = omshell
|
||||
lib_LIBRARIES = libdhcpctl.a
|
||||
@@ -8,12 +8,10 @@ EXTRA_DIST = $(man_MANS)
|
||||
|
||||
omshell_SOURCES = omshell.c
|
||||
omshell_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
|
||||
- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ $(BIND_LIBS)
|
||||
|
||||
libdhcpctl_a_SOURCES = dhcpctl.c callback.c remote.c
|
||||
|
||||
cltest_SOURCES = cltest.c
|
||||
cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
|
||||
- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ $(BIND_LIBS)
|
||||
diff --git a/omapip/Makefile.am b/omapip/Makefile.am
|
||||
index 446a594..b0d2680 100644
|
||||
--- a/omapip/Makefile.am
|
||||
+++ b/omapip/Makefile.am
|
||||
@@ -1,4 +1,4 @@
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
lib_LIBRARIES = libomapi.a
|
||||
noinst_PROGRAMS = svtest
|
||||
@@ -12,6 +12,5 @@ man_MANS = omapi.3
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
svtest_SOURCES = test.c
|
||||
-svtest_LDADD = libomapi.a $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
|
||||
- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+svtest_LDADD = libomapi.a $(BIND_LIBS)
|
||||
|
||||
diff --git a/relay/Makefile.am b/relay/Makefile.am
|
||||
index 3060eca..c9a1cba 100644
|
||||
--- a/relay/Makefile.am
|
||||
+++ b/relay/Makefile.am
|
||||
@@ -1,12 +1,11 @@
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
|
||||
|
||||
sbin_PROGRAMS = dhcrelay
|
||||
dhcrelay_SOURCES = dhcrelay.c
|
||||
dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
- $(BINDLIBDIR)/libirs.a $(BINDLIBDIR)/libdns.a \
|
||||
- $(BINDLIBDIR)/libisccfg.a $(BINDLIBDIR)/libisc.a
|
||||
+ $(BIND_LIBS)
|
||||
man_MANS = dhcrelay.8
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
diff --git a/server/Makefile.am b/server/Makefile.am
|
||||
index 54feedf..30cf2b1 100644
|
||||
--- a/server/Makefile.am
|
||||
+++ b/server/Makefile.am
|
||||
@@ -4,7 +4,7 @@
|
||||
# production code. Sadly, we are not there yet.
|
||||
SUBDIRS = . tests
|
||||
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"'
|
||||
|
||||
@@ -16,9 +16,7 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
|
||||
|
||||
dhcpd_CFLAGS = $(LDAP_CFLAGS)
|
||||
dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
- ../dhcpctl/libdhcpctl.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a \
|
||||
- $(BINDLIBDIR)/libisc.a $(LDAP_LIBS)
|
||||
+ ../dhcpctl/libdhcpctl.a $(BIND_LIBS) $(LDAP_LIBS)
|
||||
|
||||
man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
|
||||
index a87c5e7..771de06 100644
|
||||
--- a/server/tests/Makefile.am
|
||||
+++ b/server/tests/Makefile.am
|
||||
@@ -1,9 +1,10 @@
|
||||
SUBDIRS = .
|
||||
|
||||
-BINDLIBDIR = @BINDDIR@/lib
|
||||
+BIND_LIBS = @BIND_LIBS@
|
||||
+
|
||||
|
||||
AM_CPPFLAGS = $(ATF_CFLAGS) -DUNIT_TEST -I$(top_srcdir)/includes
|
||||
-AM_CPPFLAGS += -I@BINDDIR@/include -I$(top_srcdir)
|
||||
+AM_CPPFLAGS += $(BIND_CPPFLAGS) -I$(top_srcdir)
|
||||
AM_CPPFLAGS += -DLOCALSTATEDIR='"."'
|
||||
|
||||
EXTRA_DIST = Atffile
|
||||
@@ -20,9 +21,7 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpars.c ../db.c ../class.c \
|
||||
../ldap.c ../ldap_casa.c ../dhcpd.c ../leasechain.c
|
||||
|
||||
DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.a \
|
||||
- $(top_builddir)/dhcpctl/libdhcpctl.a $(BINDLIBDIR)/libirs.a \
|
||||
- $(BINDLIBDIR)/libdns.a $(BINDLIBDIR)/libisccfg.a \
|
||||
- $(BINDLIBDIR)/libisc.a
|
||||
+ $(top_builddir)/dhcpctl/libdhcpctl.a $(BIND_LIBS)
|
||||
|
||||
ATF_TESTS =
|
||||
if HAVE_ATF
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
|
@ -1,231 +0,0 @@
|
|||
diff -up dhcp-4.3.4/client/dhc6.c.sendDecline dhcp-4.3.4/client/dhc6.c
|
||||
--- dhcp-4.3.4/client/dhc6.c.sendDecline 2016-03-22 14:16:51.000000000 +0100
|
||||
+++ dhcp-4.3.4/client/dhc6.c 2016-05-02 14:51:57.916578401 +0200
|
||||
@@ -115,6 +115,8 @@ void do_select6(void *input);
|
||||
void do_refresh6(void *input);
|
||||
static void do_release6(void *input);
|
||||
static void start_bound(struct client_state *client);
|
||||
+static void start_decline6(struct client_state *client);
|
||||
+static void do_decline6(void *input);
|
||||
static void start_informed(struct client_state *client);
|
||||
void informed_handler(struct packet *packet, struct client_state *client);
|
||||
void bound_handler(struct packet *packet, struct client_state *client);
|
||||
@@ -2314,6 +2316,7 @@ start_release6(struct client_state *clie
|
||||
cancel_timeout(do_select6, client);
|
||||
cancel_timeout(do_refresh6, client);
|
||||
cancel_timeout(do_release6, client);
|
||||
+ cancel_timeout(do_decline6, client);
|
||||
client->state = S_STOPPED;
|
||||
|
||||
/*
|
||||
@@ -2968,6 +2971,7 @@ dhc6_check_reply(struct client_state *cl
|
||||
break;
|
||||
|
||||
case S_STOPPED:
|
||||
+ case S_DECLINED:
|
||||
action = dhc6_stop_action;
|
||||
break;
|
||||
|
||||
@@ -3084,6 +3088,7 @@ dhc6_check_reply(struct client_state *cl
|
||||
break;
|
||||
|
||||
case S_STOPPED:
|
||||
+ case S_DECLINED:
|
||||
/* Nothing critical to do at this stage. */
|
||||
break;
|
||||
|
||||
@@ -4214,17 +4219,23 @@ reply_handler(struct packet *packet, str
|
||||
cancel_timeout(do_select6, client);
|
||||
cancel_timeout(do_refresh6, client);
|
||||
cancel_timeout(do_release6, client);
|
||||
+ cancel_timeout(do_decline6, client);
|
||||
|
||||
/* If this is in response to a Release/Decline, clean up and return. */
|
||||
- if (client->state == S_STOPPED) {
|
||||
- if (client->active_lease == NULL)
|
||||
- return;
|
||||
+ if ((client->state == S_STOPPED) ||
|
||||
+ (client->state == S_DECLINED)) {
|
||||
+
|
||||
+ if (client->active_lease != NULL) {
|
||||
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
||||
+ client->active_lease = NULL;
|
||||
+ /* We should never wait for nothing!? */
|
||||
+ if (stopping_finished())
|
||||
+ exit(0);
|
||||
+ }
|
||||
+
|
||||
+ if (client->state == S_DECLINED)
|
||||
+ start_init6(client);
|
||||
|
||||
- dhc6_lease_destroy(&client->active_lease, MDL);
|
||||
- client->active_lease = NULL;
|
||||
- /* We should never wait for nothing!? */
|
||||
- if (stopping_finished())
|
||||
- exit(0);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4798,7 +4809,11 @@ start_bound(struct client_state *client)
|
||||
dhc6_marshall_values("new_", client, lease, ia, addr);
|
||||
script_write_requested6(client);
|
||||
|
||||
- script_go(client);
|
||||
+ // when script returns 3, DAD failed
|
||||
+ if (script_go(client) == 3) {
|
||||
+ start_decline6(client);
|
||||
+ return;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* XXX: maybe we should loop on the old values instead? */
|
||||
@@ -4851,6 +4866,149 @@ start_bound(struct client_state *client)
|
||||
dhc6_check_times(client);
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * Decline addresses.
|
||||
+ */
|
||||
+void
|
||||
+start_decline6(struct client_state *client)
|
||||
+{
|
||||
+ /* Cancel any pending transmissions */
|
||||
+ cancel_timeout(do_confirm6, client);
|
||||
+ cancel_timeout(do_select6, client);
|
||||
+ cancel_timeout(do_refresh6, client);
|
||||
+ cancel_timeout(do_release6, client);
|
||||
+ cancel_timeout(do_decline6, client);
|
||||
+ client->state = S_DECLINED;
|
||||
+
|
||||
+ if (client->active_lease == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ /* Set timers per RFC3315 section 18.1.7. */
|
||||
+ client->IRT = DEC_TIMEOUT * 100;
|
||||
+ client->MRT = 0;
|
||||
+ client->MRC = DEC_MAX_RC;
|
||||
+ client->MRD = 0;
|
||||
+
|
||||
+ dhc6_retrans_init(client);
|
||||
+ client->v6_handler = reply_handler;
|
||||
+
|
||||
+ client->refresh_type = DHCPV6_DECLINE;
|
||||
+ do_decline6(client);
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * do_decline6() creates a Decline packet and transmits it.
|
||||
+ */
|
||||
+static void
|
||||
+do_decline6(void *input)
|
||||
+{
|
||||
+ struct client_state *client;
|
||||
+ struct data_string ds;
|
||||
+ struct timeval elapsed, tv;
|
||||
+ int send_ret, added;
|
||||
+
|
||||
+ client = input;
|
||||
+
|
||||
+ if ((client->active_lease == NULL) || !active_prefix(client))
|
||||
+ return;
|
||||
+
|
||||
+ if ((client->MRC != 0) && (client->txcount > client->MRC)) {
|
||||
+ log_info("Max retransmission count exceeded.");
|
||||
+ goto decline_done;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * Start_time starts at the first transmission.
|
||||
+ */
|
||||
+ if (client->txcount == 0) {
|
||||
+ client->start_time.tv_sec = cur_tv.tv_sec;
|
||||
+ client->start_time.tv_usec = cur_tv.tv_usec;
|
||||
+ }
|
||||
+
|
||||
+ /* elapsed = cur - start */
|
||||
+ elapsed.tv_sec = cur_tv.tv_sec - client->start_time.tv_sec;
|
||||
+ elapsed.tv_usec = cur_tv.tv_usec - client->start_time.tv_usec;
|
||||
+ if (elapsed.tv_usec < 0) {
|
||||
+ elapsed.tv_sec -= 1;
|
||||
+ elapsed.tv_usec += 1000000;
|
||||
+ }
|
||||
+
|
||||
+ memset(&ds, 0, sizeof(ds));
|
||||
+ if (!buffer_allocate(&ds.buffer, 4, MDL)) {
|
||||
+ log_error("Unable to allocate memory for Decline.");
|
||||
+ goto decline_done;
|
||||
+ }
|
||||
+
|
||||
+ ds.data = ds.buffer->data;
|
||||
+ ds.len = 4;
|
||||
+ ds.buffer->data[0] = DHCPV6_DECLINE;
|
||||
+ memcpy(ds.buffer->data + 1, client->dhcpv6_transaction_id, 3);
|
||||
+
|
||||
+ /* Form an elapsed option. */
|
||||
+ /* Maximum value is 65535 1/100s coded as 0xffff. */
|
||||
+ if ((elapsed.tv_sec < 0) || (elapsed.tv_sec > 655) ||
|
||||
+ ((elapsed.tv_sec == 655) && (elapsed.tv_usec > 350000))) {
|
||||
+ client->elapsed = 0xffff;
|
||||
+ } else {
|
||||
+ client->elapsed = elapsed.tv_sec * 100;
|
||||
+ client->elapsed += elapsed.tv_usec / 10000;
|
||||
+ }
|
||||
+
|
||||
+ client->elapsed = htons(client->elapsed);
|
||||
+
|
||||
+ log_debug("XMT: Forming Decline.");
|
||||
+ make_client6_options(client, &client->sent_options,
|
||||
+ client->active_lease, DHCPV6_DECLINE);
|
||||
+ dhcpv6_universe.encapsulate(&ds, NULL, NULL, client, NULL,
|
||||
+ client->sent_options, &global_scope,
|
||||
+ &dhcpv6_universe);
|
||||
+
|
||||
+ /* Append IA's (but don't release temporary addresses). */
|
||||
+ if (wanted_ia_na &&
|
||||
+ dhc6_add_ia_na(client, &ds, client->active_lease,
|
||||
+ DHCPV6_DECLINE, 0, &added) != ISC_R_SUCCESS) {
|
||||
+ data_string_forget(&ds, MDL);
|
||||
+ goto decline_done;
|
||||
+ }
|
||||
+ if (wanted_ia_pd &&
|
||||
+ dhc6_add_ia_pd(client, &ds, client->active_lease,
|
||||
+ DHCPV6_DECLINE, 0, &added) != ISC_R_SUCCESS) {
|
||||
+ data_string_forget(&ds, MDL);
|
||||
+ goto decline_done;
|
||||
+ }
|
||||
+
|
||||
+ /* Transmit and wait. */
|
||||
+ log_info("XMT: Decline on %s, interval %ld0ms.",
|
||||
+ client->name ? client->name : client->interface->name,
|
||||
+ (long int)client->RT);
|
||||
+
|
||||
+ send_ret = send_packet6(client->interface, ds.data, ds.len,
|
||||
+ &DHCPv6DestAddr);
|
||||
+ if (send_ret != ds.len) {
|
||||
+ log_error("dhc6: sendpacket6() sent %d of %d bytes",
|
||||
+ send_ret, ds.len);
|
||||
+ }
|
||||
+
|
||||
+ data_string_forget(&ds, MDL);
|
||||
+
|
||||
+ /* Wait RT */
|
||||
+ tv.tv_sec = cur_tv.tv_sec + client->RT / 100;
|
||||
+ tv.tv_usec = cur_tv.tv_usec + (client->RT % 100) * 10000;
|
||||
+ if (tv.tv_usec >= 1000000) {
|
||||
+ tv.tv_sec += 1;
|
||||
+ tv.tv_usec -= 1000000;
|
||||
+ }
|
||||
+ add_timeout(&tv, do_decline6, client, NULL, NULL);
|
||||
+ dhc6_retrans_advance(client);
|
||||
+ return;
|
||||
+
|
||||
+decline_done:
|
||||
+ dhc6_lease_destroy(&client->active_lease, MDL);
|
||||
+ client->active_lease = NULL;
|
||||
+ start_init6(client);
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
/* While bound, ignore packets. In the future we'll want to answer
|
||||
* Reconfigure-Request messages and the like.
|
||||
*/
|
||||
|
|
@ -1,149 +0,0 @@
|
|||
diff --git a/client/Makefile.am b/client/Makefile.am
|
||||
index b85f5d2..b1ecf82 100644
|
||||
--- a/client/Makefile.am
|
||||
+++ b/client/Makefile.am
|
||||
@@ -15,6 +15,6 @@ dhclient_SOURCES = clparse.c dhclient.c dhc6.c \
|
||||
scripts/bsdos scripts/freebsd scripts/linux scripts/macos \
|
||||
scripts/netbsd scripts/nextstep scripts/openbsd \
|
||||
scripts/solaris scripts/openwrt
|
||||
-dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.a $(BIND_LIBS)
|
||||
+dhclient_LDADD = ../common/libdhcp.a ../omapip/libomapi.la $(BIND_LIBS)
|
||||
man_MANS = dhclient.8 dhclient-script.8 dhclient.conf.5 dhclient.leases.5
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/common/tests/Makefile.am b/common/tests/Makefile.am
|
||||
index 196aa44..1ccaa05 100644
|
||||
--- a/common/tests/Makefile.am
|
||||
+++ b/common/tests/Makefile.am
|
||||
@@ -15,22 +15,22 @@ ATF_TESTS += alloc_unittest dns_unittest misc_unittest ns_name_unittest
|
||||
alloc_unittest_SOURCES = test_alloc.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
alloc_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
alloc_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
+ ../../omapip/libomapi.la $(BIND_LIBS)
|
||||
|
||||
dns_unittest_SOURCES = dns_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
dns_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
dns_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
+ ../../omapip/libomapi.la $(BIND_LIBS)
|
||||
|
||||
misc_unittest_SOURCES = misc_unittest.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
misc_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
misc_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
+ ../../omapip/libomapi.la $(BIND_LIBS)
|
||||
|
||||
ns_name_unittest_SOURCES = ns_name_test.c $(top_srcdir)/tests/t_api_dhcp.c
|
||||
ns_name_unittest_LDADD = $(ATF_LDFLAGS)
|
||||
ns_name_unittest_LDADD += ../libdhcp.a \
|
||||
- ../../omapip/libomapi.a $(BIND_LIBS)
|
||||
+ ../../omapip/libomapi.la $(BIND_LIBS)
|
||||
|
||||
check: $(ATF_TESTS)
|
||||
@if test $(top_srcdir) != ${top_builddir}; then \
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index f594cfa..adc98a8 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -47,7 +47,8 @@ AM_CONDITIONAL(CROSS_COMPILING, test "$cross_compiling" = "yes")
|
||||
# Use this to define _GNU_SOURCE to pull in the IPv6 Advanced Socket API.
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
-AC_PROG_RANLIB
|
||||
+# Use libtool to simplify building of shared libraries
|
||||
+AC_PROG_LIBTOOL
|
||||
|
||||
AC_PATH_PROG(AR, ar)
|
||||
AC_SUBST(AR)
|
||||
diff --git a/dhcpctl/Makefile.am b/dhcpctl/Makefile.am
|
||||
index fa20a78..dd016e4 100644
|
||||
--- a/dhcpctl/Makefile.am
|
||||
+++ b/dhcpctl/Makefile.am
|
||||
@@ -1,17 +1,17 @@
|
||||
BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
bin_PROGRAMS = omshell
|
||||
-lib_LIBRARIES = libdhcpctl.a
|
||||
+lib_LTLIBRARIES = libdhcpctl.la
|
||||
noinst_PROGRAMS = cltest
|
||||
man_MANS = omshell.1 dhcpctl.3
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
omshell_SOURCES = omshell.c
|
||||
-omshell_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
+omshell_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
$(BIND_LIBS)
|
||||
|
||||
-libdhcpctl_a_SOURCES = dhcpctl.c callback.c remote.c
|
||||
+libdhcpctl_la_SOURCES = dhcpctl.c callback.c remote.c
|
||||
|
||||
cltest_SOURCES = cltest.c
|
||||
-cltest_LDADD = libdhcpctl.a ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
+cltest_LDADD = libdhcpctl.la ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
$(BIND_LIBS)
|
||||
diff --git a/omapip/Makefile.am b/omapip/Makefile.am
|
||||
index b0d2680..265bcef 100644
|
||||
--- a/omapip/Makefile.am
|
||||
+++ b/omapip/Makefile.am
|
||||
@@ -1,9 +1,9 @@
|
||||
BIND_LIBS = @BIND_LIBS@
|
||||
|
||||
-lib_LIBRARIES = libomapi.a
|
||||
+lib_LTLIBRARIES = libomapi.la
|
||||
noinst_PROGRAMS = svtest
|
||||
|
||||
-libomapi_a_SOURCES = protocol.c buffer.c alloc.c result.c connection.c \
|
||||
+libomapi_la_SOURCES = protocol.c buffer.c alloc.c result.c connection.c \
|
||||
errwarn.c listener.c dispatch.c generic.c support.c \
|
||||
handle.c message.c convert.c hash.c auth.c inet_addr.c \
|
||||
array.c trace.c toisc.c iscprint.c isclib.c
|
||||
@@ -12,5 +12,5 @@ man_MANS = omapi.3
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
|
||||
svtest_SOURCES = test.c
|
||||
-svtest_LDADD = libomapi.a $(BIND_LIBS)
|
||||
+svtest_LDADD = libomapi.la $(BIND_LIBS)
|
||||
|
||||
diff --git a/relay/Makefile.am b/relay/Makefile.am
|
||||
index c9a1cba..316a524 100644
|
||||
--- a/relay/Makefile.am
|
||||
+++ b/relay/Makefile.am
|
||||
@@ -4,7 +4,7 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localstatedir@"'
|
||||
|
||||
sbin_PROGRAMS = dhcrelay
|
||||
dhcrelay_SOURCES = dhcrelay.c
|
||||
-dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
+dhcrelay_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
$(BIND_LIBS)
|
||||
man_MANS = dhcrelay.8
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/server/Makefile.am b/server/Makefile.am
|
||||
index 30cf2b1..f56f310 100644
|
||||
--- a/server/Makefile.am
|
||||
+++ b/server/Makefile.am
|
||||
@@ -15,8 +15,8 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \
|
||||
dhcpv6.c mdb6.c ldap.c ldap_casa.c leasechain.c ldap_krb_helper.c
|
||||
|
||||
dhcpd_CFLAGS = $(LDAP_CFLAGS)
|
||||
-dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.a \
|
||||
- ../dhcpctl/libdhcpctl.a $(BIND_LIBS) $(LDAP_LIBS)
|
||||
+dhcpd_LDADD = ../common/libdhcp.a ../omapip/libomapi.la \
|
||||
+ ../dhcpctl/libdhcpctl.la $(BIND_LIBS) $(LDAP_LIBS)
|
||||
|
||||
man_MANS = dhcpd.8 dhcpd.conf.5 dhcpd.leases.5
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
diff --git a/server/tests/Makefile.am b/server/tests/Makefile.am
|
||||
index 771de06..8d8a2c1 100644
|
||||
--- a/server/tests/Makefile.am
|
||||
+++ b/server/tests/Makefile.am
|
||||
@@ -20,8 +20,8 @@ DHCPSRC = ../dhcp.c ../bootp.c ../confpars.c ../db.c ../class.c \
|
||||
../ddns.c ../dhcpleasequery.c ../dhcpv6.c ../mdb6.c \
|
||||
../ldap.c ../ldap_casa.c ../dhcpd.c ../leasechain.c
|
||||
|
||||
-DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.a \
|
||||
- $(top_builddir)/dhcpctl/libdhcpctl.a $(BIND_LIBS)
|
||||
+DHCPLIBS = $(top_builddir)/common/libdhcp.a $(top_builddir)/omapip/libomapi.la \
|
||||
+ $(top_builddir)/dhcpctl/libdhcpctl.la $(BIND_LIBS)
|
||||
|
||||
ATF_TESTS =
|
||||
if HAVE_ATF
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff -up dhcp-4.3.4/client/dhclient.c.stateless-DUID-LLT dhcp-4.3.4/client/dhclient.c
|
||||
--- dhcp-4.3.4/client/dhclient.c.stateless-DUID-LLT 2016-04-29 13:13:50.467360008 +0200
|
||||
+++ dhcp-4.3.4/client/dhclient.c 2016-04-29 13:14:53.389375428 +0200
|
||||
@@ -1317,6 +1317,9 @@ void run_stateless(int exit_mode, u_int1
|
||||
data_string_forget(&default_duid, MDL);
|
||||
|
||||
form_duid(&default_duid, MDL);
|
||||
+ if (form_duid(&default_duid, MDL) == ISC_R_SUCCESS &&
|
||||
+ duid_type == DUID_LLT)
|
||||
+ write_duid(&default_duid);
|
||||
}
|
||||
|
||||
#ifdef DHCP4o6
|
||||
25
gating.yaml
Normal file
25
gating.yaml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_testing
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional}
|
||||
|
||||
#Rawhide
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_stable
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional}
|
||||
|
||||
#gating rhel
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-*
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-public.functional}
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional}
|
||||
35
plans.fmf
Normal file
35
plans.fmf
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/tier1-internal:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/tier1/internal
|
||||
|
||||
/tier1-public:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/tier1/public
|
||||
|
||||
/tier2-tier3-internal:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/tier2-tier3/internal
|
||||
|
||||
/tier2-tier3-public:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/tier2-tier3/public
|
||||
|
||||
/others-internal:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/others/internal
|
||||
|
||||
/others-public:
|
||||
plan:
|
||||
import:
|
||||
url: https://gitlab.com/redhat/centos-stream/tests/dhcp.git
|
||||
name: /plans/others/public
|
||||
22
rpminspect.yaml
Normal file
22
rpminspect.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
badfuncs:
|
||||
# Adding waiver for all these functions to stop rpminspec to complain about them.
|
||||
# The DHCP is EOL software so there is no chance to get them replaced
|
||||
# with alternatives upstream.
|
||||
allowed:
|
||||
/usr/bin/omshell:
|
||||
- gethostbyname
|
||||
- inet_ntoa
|
||||
/usr/sbin/dhcpd:
|
||||
- gethostbyaddr
|
||||
- gethostbyname
|
||||
- inet_ntoa
|
||||
/usr/sbin/dhclient:
|
||||
- gethostbyname
|
||||
- inet_ntoa
|
||||
/usr/sbin/dhcrelay:
|
||||
- gethostbyname
|
||||
- inet_ntoa
|
||||
/usr/sbin/keama:
|
||||
- gethostbyname
|
||||
|
||||
3
sources
3
sources
|
|
@ -1 +1,2 @@
|
|||
SHA512 (dhcp-4.3.6.tar.gz) = de4962dc2aa174df17a3a1456719a777a42d238c3d6ad1771ccc460fa70c9e9cefcce52c7437f7acde61b9c3a2e84e9d49fd2dc33c7e9243053ceed5b247be03
|
||||
SHA512 (dhcp-4.4.3-P1.tar.gz) = d14dc44d1c015780ae19769816cb01015959927a1ad7a3e84b89e0463253aaf46451af88e3260347196373906d5b438c7c616fee45ec3f128aa82af6702b7154
|
||||
SHA512 (dhcp-4.4.3-P1.tar.gz.asc) = b24a81eda6fea2727e520d83c52ef25717db3a7c05b55f6e61f03cbf484e8b17b46ef11f2c46b223f30014866f32ed4170f223ce1d2233c63d7a6cfd7f9fa444
|
||||
|
|
|
|||
3
systemd-sysusers.conf
Normal file
3
systemd-sysusers.conf
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
#Type Name ID GECOS Home directory Shell
|
||||
g dhcpd 177
|
||||
u dhcpd 177 "DHCP server" / /sbin/nologin
|
||||
1
systemd-tmpfiles.conf
Normal file
1
systemd-tmpfiles.conf
Normal file
|
|
@ -0,0 +1 @@
|
|||
d /var/lib/dhcpd 0755 dhcpd dhcpd -
|
||||
Loading…
Add table
Add a link
Reference in a new issue