diff --git a/.gitignore b/.gitignore index 7cb7255..d7fafe9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /dhcp-4.2.1rc1.tar.gz /dhcp-4.2.1.tar.gz /dhcp-4.2.1-P1.tar.gz +/dhcp-4.2.2b1.tar.gz diff --git a/dhcp-4.2.0-dhclient-usage.patch b/dhcp-4.2.0-dhclient-usage.patch deleted file mode 100644 index 881ce23..0000000 --- a/dhcp-4.2.0-dhclient-usage.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up dhcp-4.2.0/client/dhclient.c.usage dhcp-4.2.0/client/dhclient.c ---- dhcp-4.2.0/client/dhclient.c.usage 2010-07-21 13:38:31.000000000 +0200 -+++ dhcp-4.2.0/client/dhclient.c 2010-07-21 13:49:01.000000000 +0200 -@@ -1013,6 +1013,10 @@ static void usage() - "[-s server]"); - log_error(" [-cf config-file] [-lf lease-file]%s", - "[-pf pid-file] [-e VAR=val]"); -+ log_error(" [-I ] [-B]"); -+ log_error(" [-H | -F ] [-timeout ]"); -+ log_error(" [-V ]"); -+ log_error(" [-R ]"); - log_fatal(" [-sf script-file] [interface]"); - } - diff --git a/dhcp-4.2.0-initialization-delay.patch b/dhcp-4.2.0-initialization-delay.patch deleted file mode 100644 index d44c3ec..0000000 --- a/dhcp-4.2.0-initialization-delay.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff -up dhcp-4.2.0/client/dhclient.c.initialization-delay dhcp-4.2.0/client/dhclient.c ---- dhcp-4.2.0/client/dhclient.c.initialization-delay 2010-07-21 16:16:51.000000000 +0200 -+++ dhcp-4.2.0/client/dhclient.c 2010-07-21 16:22:18.000000000 +0200 -@@ -949,11 +949,16 @@ main(int argc, char **argv) { - do_release(client); - else { - client->state = S_INIT; -- /* Set up a timeout to start the -- * initialization process. -+ /* Set up a timeout (0-1 second) to -+ * start the initialization process. - */ -- tv.tv_sec = cur_time + random() % 5; -- tv.tv_usec = 0; -+ tv.tv_sec = cur_tv.tv_sec; -+ tv.tv_usec = cur_tv.tv_usec; -+ tv.tv_usec += (random() % 100) * 10000; -+ if (tv.tv_usec >= 1000000) { -+ tv.tv_sec += 1; -+ tv.tv_usec -= 1000000; -+ } - add_timeout(&tv, state_reboot, - client, 0, 0); - } -@@ -3930,10 +3935,16 @@ isc_result_t dhclient_interface_startup_ - ip -> flags |= INTERFACE_RUNNING; - for (client = ip -> client; client; client = client -> next) { - client -> state = S_INIT; -- /* Set up a timeout to start the initialization -- process. */ -- tv . tv_sec = cur_time + random () % 5; -- tv . tv_usec = 0; -+ /* Set up a timeout (0-1 second) to -+ * start the initialization process. -+ */ -+ tv.tv_sec = cur_tv.tv_sec; -+ tv.tv_usec = cur_tv.tv_usec; -+ tv.tv_usec += (random() % 100) * 10000; -+ if (tv.tv_usec >= 1000000) { -+ tv.tv_sec += 1; -+ tv.tv_usec -= 1000000; -+ } - add_timeout (&tv, state_reboot, client, 0, 0); - } - } diff --git a/dhcp-4.2.2-CLOEXEC.patch b/dhcp-4.2.2-CLOEXEC.patch new file mode 100644 index 0000000..b07e2ff --- /dev/null +++ b/dhcp-4.2.2-CLOEXEC.patch @@ -0,0 +1,423 @@ +diff -up dhcp-4.2.2b1/client/clparse.c.cloexec dhcp-4.2.2b1/client/clparse.c +--- dhcp-4.2.2b1/client/clparse.c.cloexec 2011-07-01 14:13:30.973887714 +0200 ++++ dhcp-4.2.2b1/client/clparse.c 2011-07-01 14:15:15.021580693 +0200 +@@ -246,7 +246,7 @@ int read_client_conf_file (const char *n + int token; + isc_result_t status; + +- if ((file = open (name, O_RDONLY)) < 0) ++ if ((file = open (name, O_RDONLY | O_CLOEXEC)) < 0) + return uerr2isc (errno); + + cfile = NULL; +@@ -283,7 +283,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. */ +- if ((file = open (path_dhclient_db, O_RDONLY)) < 0) ++ if ((file = open (path_dhclient_db, O_RDONLY | O_CLOEXEC)) < 0) + return; + + cfile = NULL; +diff -up dhcp-4.2.2b1/client/dhclient.c.cloexec dhcp-4.2.2b1/client/dhclient.c +--- dhcp-4.2.2b1/client/dhclient.c.cloexec 2011-07-01 14:13:30.970887717 +0200 ++++ dhcp-4.2.2b1/client/dhclient.c 2011-07-01 14:16:51.485930388 +0200 +@@ -148,11 +148,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. */ +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 0) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 1) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 2) + log_perror = 0; /* No sense logging to /dev/null. */ + else if (fd != -1) +@@ -506,7 +506,7 @@ main(int argc, char **argv) { + int e; + + oldpid = 0; +- if ((pidfd = fopen(path_dhclient_pid, "r")) != NULL) { ++ if ((pidfd = fopen(path_dhclient_pid, "re")) != NULL) { + e = fscanf(pidfd, "%ld\n", &temp); + oldpid = (pid_t)temp; + +@@ -548,7 +548,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); + +- if ((pidfd = fopen(new_path_dhclient_pid, "r")) != NULL) { ++ if ((pidfd = fopen(new_path_dhclient_pid, "re")) != NULL) { + e = fscanf(pidfd, "%ld\n", &temp); + oldpid = (pid_t)temp; + +@@ -573,7 +573,7 @@ main(int argc, char **argv) { + int dhc_running = 0; + char procfn[256] = ""; + +- if ((pidfp = fopen(path_dhclient_pid, "r")) != NULL) { ++ if ((pidfp = fopen(path_dhclient_pid, "re")) != NULL) { + if ((fscanf(pidfp, "%ld", &temp)==1) && ((dhcpid=(pid_t)temp) > 0)) { + snprintf(procfn,256,"/proc/%u",dhcpid); + dhc_running = (access(procfn, F_OK) == 0); +@@ -2995,7 +2995,7 @@ void rewrite_client_leases () + + if (leaseFile != NULL) + fclose (leaseFile); +- leaseFile = fopen (path_dhclient_db, "w"); ++ leaseFile = fopen (path_dhclient_db, "we"); + if (leaseFile == NULL) { + log_error ("can't create %s: %m", path_dhclient_db); + return; +@@ -3105,7 +3105,7 @@ write_duid(struct data_string *duid) + return DHCP_R_INVALIDARG; + + if (leaseFile == NULL) { /* XXX? */ +- leaseFile = fopen(path_dhclient_db, "w"); ++ leaseFile = fopen(path_dhclient_db, "we"); + if (leaseFile == NULL) { + log_error("can't create %s: %m", path_dhclient_db); + return ISC_R_IOERROR; +@@ -3285,7 +3285,7 @@ int write_client_lease (client, lease, r + return 1; + + if (leaseFile == NULL) { /* XXX */ +- leaseFile = fopen (path_dhclient_db, "w"); ++ leaseFile = fopen (path_dhclient_db, "we"); + if (leaseFile == NULL) { + log_error ("can't create %s: %m", path_dhclient_db); + return 0; +@@ -3772,9 +3772,9 @@ void go_daemon () + close(2); + + /* Reopen them on /dev/null. */ +- open("/dev/null", O_RDWR); +- open("/dev/null", O_RDWR); +- open("/dev/null", O_RDWR); ++ open("/dev/null", O_RDWR | O_CLOEXEC); ++ open("/dev/null", O_RDWR | O_CLOEXEC); ++ open("/dev/null", O_RDWR | O_CLOEXEC); + + write_client_pid_file (); + +@@ -3791,14 +3791,14 @@ void write_client_pid_file () + return; + } + +- pfdesc = open (path_dhclient_pid, O_CREAT | O_TRUNC | O_WRONLY, 0644); ++ pfdesc = open (path_dhclient_pid, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, 0644); + + if (pfdesc < 0) { + log_error ("Can't create %s: %m", path_dhclient_pid); + return; + } + +- pf = fdopen (pfdesc, "w"); ++ pf = fdopen (pfdesc, "we"); + if (!pf) { + close(pfdesc); + log_error ("Can't fdopen %s: %m", path_dhclient_pid); +diff -up dhcp-4.2.2b1/common/bpf.c.cloexec dhcp-4.2.2b1/common/bpf.c +--- dhcp-4.2.2b1/common/bpf.c.cloexec 2011-07-01 14:13:30.976887712 +0200 ++++ dhcp-4.2.2b1/common/bpf.c 2011-07-01 14:13:31.030887673 +0200 +@@ -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); +- sock = open (filename, O_RDWR, 0); ++ sock = open (filename, O_RDWR | O_CLOEXEC, 0); + if (sock < 0) { + if (errno == EBUSY) { + continue; +diff -up dhcp-4.2.2b1/common/discover.c.cloexec dhcp-4.2.2b1/common/discover.c +--- dhcp-4.2.2b1/common/discover.c.cloexec 2011-06-27 18:18:20.000000000 +0200 ++++ dhcp-4.2.2b1/common/discover.c 2011-07-01 14:13:31.031887673 +0200 +@@ -421,7 +421,7 @@ begin_iface_scan(struct iface_conf_list + int len; + int i; + +- ifaces->fp = fopen("/proc/net/dev", "r"); ++ ifaces->fp = fopen("/proc/net/dev", "re"); + if (ifaces->fp == NULL) { + log_error("Error opening '/proc/net/dev' to list interfaces"); + return 0; +@@ -456,7 +456,7 @@ begin_iface_scan(struct iface_conf_list + + #ifdef DHCPv6 + if (local_family == AF_INET6) { +- ifaces->fp6 = fopen("/proc/net/if_inet6", "r"); ++ ifaces->fp6 = fopen("/proc/net/if_inet6", "re"); + if (ifaces->fp6 == NULL) { + log_error("Error opening '/proc/net/if_inet6' to " + "list IPv6 interfaces; %m"); +diff -up dhcp-4.2.2b1/common/dlpi.c.cloexec dhcp-4.2.2b1/common/dlpi.c +--- dhcp-4.2.2b1/common/dlpi.c.cloexec 2011-07-01 14:13:30.977887712 +0200 ++++ dhcp-4.2.2b1/common/dlpi.c 2011-07-01 14:13:31.032887673 +0200 +@@ -806,7 +806,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.2.2b1/common/nit.c.cloexec dhcp-4.2.2b1/common/nit.c +--- dhcp-4.2.2b1/common/nit.c.cloexec 2011-07-01 14:13:30.978887712 +0200 ++++ dhcp-4.2.2b1/common/nit.c 2011-07-01 14:13:31.033887672 +0200 +@@ -81,7 +81,7 @@ int if_register_nit (info) + struct strioctl sio; + + /* Open a NIT device */ +- sock = open ("/dev/nit", O_RDWR); ++ sock = open ("/dev/nit", O_RDWR | O_CLOEXEC); + if (sock < 0) + log_fatal ("Can't open NIT device for %s: %m", info -> name); + +diff -up dhcp-4.2.2b1/common/resolv.c.cloexec dhcp-4.2.2b1/common/resolv.c +--- dhcp-4.2.2b1/common/resolv.c.cloexec 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.2b1/common/resolv.c 2011-07-01 14:13:31.033887672 +0200 +@@ -49,7 +49,7 @@ void read_resolv_conf (parse_time) + struct domain_search_list *dp, *dl, *nd; + isc_result_t status; + +- if ((file = open (path_resolv_conf, O_RDONLY)) < 0) { ++ if ((file = open (path_resolv_conf, O_RDONLY | O_CLOEXEC)) < 0) { + log_error ("Can't open %s: %m", path_resolv_conf); + return; + } +diff -up dhcp-4.2.2b1/common/upf.c.cloexec dhcp-4.2.2b1/common/upf.c +--- dhcp-4.2.2b1/common/upf.c.cloexec 2011-07-01 14:13:30.979887712 +0200 ++++ dhcp-4.2.2b1/common/upf.c 2011-07-01 14:13:31.034887671 +0200 +@@ -77,7 +77,7 @@ int if_register_upf (info) + /* %Audit% Cannot exceed 36 bytes. %2004.06.17,Safe% */ + sprintf(filename, "/dev/pf/pfilt%d", b); + +- sock = open (filename, O_RDWR, 0); ++ sock = open (filename, O_RDWR | O_CLOEXEC, 0); + if (sock < 0) { + if (errno == EBUSY) { + continue; +diff -up dhcp-4.2.2b1/dst/dst_api.c.cloexec dhcp-4.2.2b1/dst/dst_api.c +--- dhcp-4.2.2b1/dst/dst_api.c.cloexec 2009-10-29 01:46:48.000000000 +0100 ++++ dhcp-4.2.2b1/dst/dst_api.c 2011-07-01 14:13:31.035887670 +0200 +@@ -437,7 +437,7 @@ dst_s_write_private_key(const DST_KEY *k + PRIVATE_KEY, PATH_MAX); + + /* Do not overwrite an existing file */ +- if ((fp = dst_s_fopen(file, "w", 0600)) != NULL) { ++ if ((fp = dst_s_fopen(file, "we", 0600)) != NULL) { + int nn; + if ((nn = fwrite(encoded_block, 1, len, fp)) != len) { + EREPORT(("dst_write_private_key(): Write failure on %s %d != %d errno=%d\n", +@@ -494,7 +494,7 @@ dst_s_read_public_key(const char *in_nam + * flags, proto, alg stored as decimal (or hex numbers FIXME). + * (FIXME: handle parentheses for line continuation.) + */ +- if ((fp = dst_s_fopen(name, "r", 0)) == NULL) { ++ if ((fp = dst_s_fopen(name, "re", 0)) == NULL) { + EREPORT(("dst_read_public_key(): Public Key not found %s\n", + name)); + return (NULL); +@@ -620,7 +620,7 @@ dst_s_write_public_key(const DST_KEY *ke + return (0); + } + /* create public key file */ +- if ((fp = dst_s_fopen(filename, "w+", 0644)) == NULL) { ++ if ((fp = dst_s_fopen(filename, "w+e", 0644)) == NULL) { + EREPORT(("DST_write_public_key: open of file:%s failed (errno=%d)\n", + filename, errno)); + return (0); +@@ -854,7 +854,7 @@ dst_s_read_private_key_file(char *name, + return (0); + } + /* first check if we can find the key file */ +- if ((fp = dst_s_fopen(filename, "r", 0)) == NULL) { ++ if ((fp = dst_s_fopen(filename, "re", 0)) == NULL) { + EREPORT(("dst_s_read_private_key_file: Could not open file %s in directory %s\n", + filename, dst_path[0] ? dst_path : + (char *) getcwd(NULL, PATH_MAX - 1))); +diff -up dhcp-4.2.2b1/dst/prandom.c.cloexec dhcp-4.2.2b1/dst/prandom.c +--- dhcp-4.2.2b1/dst/prandom.c.cloexec 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.2b1/dst/prandom.c 2011-07-01 14:13:31.035887670 +0200 +@@ -269,7 +269,7 @@ get_dev_random(u_char *output, unsigned + + s = stat("/dev/random", &st); + if (s == 0 && S_ISCHR(st.st_mode)) { +- if ((fd = open("/dev/random", O_RDONLY | O_NONBLOCK)) != -1) { ++ if ((fd = open("/dev/random", O_RDONLY | O_NONBLOCK | O_CLOEXEC)) != -1) { + if ((n = read(fd, output, size)) < 0) + n = 0; + close(fd); +@@ -480,7 +480,7 @@ digest_file(dst_work *work) + work->file_digest = dst_free_key(work->file_digest); + return (0); + } +- if ((fp = fopen(name, "r")) == NULL) ++ if ((fp = fopen(name, "re")) == NULL) + return (0); + for (no = 0; (i = fread(buf, sizeof(*buf), sizeof(buf), fp)) > 0; + no += i) +diff -up dhcp-4.2.2b1/omapip/trace.c.cloexec dhcp-4.2.2b1/omapip/trace.c +--- dhcp-4.2.2b1/omapip/trace.c.cloexec 2010-05-27 02:34:57.000000000 +0200 ++++ dhcp-4.2.2b1/omapip/trace.c 2011-07-01 14:13:31.036887669 +0200 +@@ -141,10 +141,10 @@ isc_result_t trace_begin (const char *fi + return DHCP_R_INVALIDARG; + } + +- traceoutfile = open (filename, O_CREAT | O_WRONLY | O_EXCL, 0600); ++ traceoutfile = open (filename, O_CREAT | O_WRONLY | O_EXCL | O_CLOEXEC, 0600); + if (traceoutfile < 0 && errno == EEXIST) { + log_error ("WARNING: Overwriting trace file \"%s\"", filename); +- traceoutfile = open (filename, O_WRONLY | O_EXCL | O_TRUNC, ++ traceoutfile = open (filename, O_WRONLY | O_EXCL | O_TRUNC | O_CLOEXEC, + 0600); + } + +@@ -431,7 +431,7 @@ void trace_file_replay (const char *file + isc_result_t result; + int len; + +- traceinfile = fopen (filename, "r"); ++ traceinfile = fopen (filename, "re"); + if (!traceinfile) { + log_error("Can't open tracefile %s: %m", filename); + return; +diff -up dhcp-4.2.2b1/relay/dhcrelay.c.cloexec dhcp-4.2.2b1/relay/dhcrelay.c +--- dhcp-4.2.2b1/relay/dhcrelay.c.cloexec 2011-05-10 15:07:37.000000000 +0200 ++++ dhcp-4.2.2b1/relay/dhcrelay.c 2011-07-01 14:18:07.630209767 +0200 +@@ -183,11 +183,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. */ +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 0) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 1) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 2) + log_perror = 0; /* No sense logging to /dev/null. */ + else if (fd != -1) +@@ -540,13 +540,13 @@ main(int argc, char **argv) { + + if (no_pid_file == ISC_FALSE) { + pfdesc = open(path_dhcrelay_pid, +- O_CREAT | O_TRUNC | O_WRONLY, 0644); ++ O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, 0644); + + if (pfdesc < 0) { + log_error("Can't create %s: %m", + path_dhcrelay_pid); + } else { +- pf = fdopen(pfdesc, "w"); ++ pf = fdopen(pfdesc, "we"); + if (!pf) + log_error("Can't fdopen %s: %m", + path_dhcrelay_pid); +diff -up dhcp-4.2.2b1/server/confpars.c.cloexec dhcp-4.2.2b1/server/confpars.c +--- dhcp-4.2.2b1/server/confpars.c.cloexec 2010-10-14 00:34:45.000000000 +0200 ++++ dhcp-4.2.2b1/server/confpars.c 2011-07-01 14:13:31.039887666 +0200 +@@ -116,7 +116,7 @@ isc_result_t read_conf_file (const char + } + #endif + +- if ((file = open (filename, O_RDONLY)) < 0) { ++ if ((file = open (filename, O_RDONLY | O_CLOEXEC)) < 0) { + if (leasep) { + log_error ("Can't open lease database %s: %m --", + path_dhcpd_db); +diff -up dhcp-4.2.2b1/server/db.c.cloexec dhcp-4.2.2b1/server/db.c +--- dhcp-4.2.2b1/server/db.c.cloexec 2010-09-14 00:15:26.000000000 +0200 ++++ dhcp-4.2.2b1/server/db.c 2011-07-01 14:13:31.040887665 +0200 +@@ -1035,7 +1035,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 (); +@@ -1083,12 +1083,12 @@ int new_lease_file () + path_dhcpd_db, (int)t) >= sizeof newfname) + log_fatal("new_lease_file: lease file path too long"); + +- db_fd = open (newfname, O_WRONLY | O_TRUNC | O_CREAT, 0664); ++ db_fd = open (newfname, O_WRONLY | O_TRUNC | O_CREAT | O_CLOEXEC, 0664); + if (db_fd < 0) { + log_error ("Can't create new lease file: %m"); + return 0; + } +- if ((new_db_file = fdopen(db_fd, "w")) == NULL) { ++ if ((new_db_file = fdopen(db_fd, "we")) == NULL) { + log_error("Can't fdopen new lease file: %m"); + close(db_fd); + goto fdfail; +diff -up dhcp-4.2.2b1/server/dhcpd.c.cloexec dhcp-4.2.2b1/server/dhcpd.c +--- dhcp-4.2.2b1/server/dhcpd.c.cloexec 2011-04-21 16:08:15.000000000 +0200 ++++ dhcp-4.2.2b1/server/dhcpd.c 2011-07-01 14:19:40.354124505 +0200 +@@ -270,11 +270,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. */ +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 0) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 1) +- fd = open("/dev/null", O_RDWR); ++ fd = open("/dev/null", O_RDWR | O_CLOEXEC); + if (fd == 2) + log_perror = 0; /* No sense logging to /dev/null. */ + else if (fd != -1) +@@ -793,7 +793,7 @@ main(int argc, char **argv) { + */ + if (no_pid_file == ISC_FALSE) { + /*Read previous pid file. */ +- if ((i = open (path_dhcpd_pid, O_RDONLY)) >= 0) { ++ if ((i = open (path_dhcpd_pid, O_RDONLY | O_CLOEXEC)) >= 0) { + status = read(i, pbuf, (sizeof pbuf) - 1); + close (i); + if (status > 0) { +@@ -812,7 +812,7 @@ main(int argc, char **argv) { + } + + /* Write new pid file. */ +- i = open(path_dhcpd_pid, O_WRONLY|O_CREAT|O_TRUNC, 0644); ++ i = open(path_dhcpd_pid, O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0644); + if (i >= 0) { + sprintf(pbuf, "%d\n", (int) getpid()); + IGNORE_RET (write(i, pbuf, strlen(pbuf))); +@@ -840,9 +840,9 @@ main(int argc, char **argv) { + close(2); + + /* Reopen them on /dev/null. */ +- open("/dev/null", O_RDWR); +- open("/dev/null", O_RDWR); +- open("/dev/null", O_RDWR); ++ open("/dev/null", O_RDWR | O_CLOEXEC); ++ open("/dev/null", O_RDWR | O_CLOEXEC); ++ open("/dev/null", O_RDWR | O_CLOEXEC); + log_perror = 0; /* No sense logging to /dev/null. */ + + IGNORE_RET (chdir("/")); +diff -up dhcp-4.2.2b1/server/ldap.c.cloexec dhcp-4.2.2b1/server/ldap.c +--- dhcp-4.2.2b1/server/ldap.c.cloexec 2010-03-25 16:26:58.000000000 +0100 ++++ dhcp-4.2.2b1/server/ldap.c 2011-07-01 14:13:31.043887665 +0200 +@@ -685,7 +685,7 @@ ldap_start (void) + + if (ldap_debug_file != NULL && ldap_debug_fd == -1) + { +- if ((ldap_debug_fd = open (ldap_debug_file, O_CREAT | O_TRUNC | O_WRONLY, ++ if ((ldap_debug_fd = open (ldap_debug_file, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, + S_IRUSR | S_IWUSR)) < 0) + log_error ("Error opening debug LDAP log file %s: %s", ldap_debug_file, + strerror (errno)); diff --git a/dhcp-4.2.1-PIE-RELRO.patch b/dhcp-4.2.2-PIE-RELRO.patch similarity index 62% rename from dhcp-4.2.1-PIE-RELRO.patch rename to dhcp-4.2.2-PIE-RELRO.patch index 2dea12a..0eb68b1 100644 --- a/dhcp-4.2.1-PIE-RELRO.patch +++ b/dhcp-4.2.2-PIE-RELRO.patch @@ -1,18 +1,18 @@ -diff -up dhcp-4.2.1rc1/bind/Makefile.PIE-RELRO dhcp-4.2.1rc1/bind/Makefile ---- dhcp-4.2.1rc1/bind/Makefile.PIE-RELRO 2011-02-18 20:59:02.000000000 +0100 -+++ dhcp-4.2.1rc1/bind/Makefile 2011-02-23 10:56:35.000000000 +0100 +diff -up dhcp-4.2.2b1/bind/Makefile.PIE-RELRO dhcp-4.2.2b1/bind/Makefile +--- dhcp-4.2.2b1/bind/Makefile.PIE-RELRO 2011-06-27 23:43:09.000000000 +0200 ++++ dhcp-4.2.2b1/bind/Makefile 2011-07-01 14:28:49.134674155 +0200 @@ -45,7 +45,7 @@ all: # Currently disable the epoll and devpoll options as they don't interact # well with the DHCP code. @echo Configuring BIND Export libraries for DHCP. -- @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib > ${binddir}/configure.log) -+ @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib --with-libtool --with-pic --disable-shared > ${binddir}/configure.log) +- @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib --with-gssapi=no > ${binddir}/configure.log) ++ @(cd ${bindsrcdir} && ./configure --disable-kqueue --disable-epoll --disable-devpoll --without-openssl --without-libxml2 --enable-exportlib --enable-threads=no --with-export-includedir=${binddir}/include --with-export-libdir=${binddir}/lib --with-gssapi=no --with-libtool --with-pic --disable-shared > ${binddir}/configure.log) # Build the export libraries @echo Building BIND Export libraries - this takes some time. -diff -up dhcp-4.2.1rc1/client/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/client/Makefile.am ---- dhcp-4.2.1rc1/client/Makefile.am.PIE-RELRO 2011-02-23 10:56:35.000000000 +0100 -+++ dhcp-4.2.1rc1/client/Makefile.am 2011-02-23 10:56:35.000000000 +0100 +diff -up dhcp-4.2.2b1/client/Makefile.am.PIE-RELRO dhcp-4.2.2b1/client/Makefile.am +--- dhcp-4.2.2b1/client/Makefile.am.PIE-RELRO 2011-07-01 14:26:36.995286194 +0200 ++++ dhcp-4.2.2b1/client/Makefile.am 2011-07-01 14:26:37.047285196 +0200 @@ -4,15 +4,11 @@ dhclient_SOURCES = clparse.c dhclient.c scripts/bsdos scripts/freebsd scripts/linux scripts/macos \ scripts/netbsd scripts/nextstep scripts/openbsd \ @@ -33,9 +33,9 @@ diff -up dhcp-4.2.1rc1/client/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/client/Makefil -dhc6.o: dhc6.c - $(COMPILE) -DCLIENT_PATH='"PATH=$(sbindir):/sbin:/bin:/usr/sbin:/usr/bin"' \ - -DLOCALSTATEDIR='"$(localstatedir)"' -c dhc6.c -diff -up dhcp-4.2.1rc1/common/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/common/Makefile.am ---- dhcp-4.2.1rc1/common/Makefile.am.PIE-RELRO 2011-02-18 19:44:42.000000000 +0100 -+++ dhcp-4.2.1rc1/common/Makefile.am 2011-02-23 10:59:39.000000000 +0100 +diff -up dhcp-4.2.2b1/common/Makefile.am.PIE-RELRO dhcp-4.2.2b1/common/Makefile.am +--- dhcp-4.2.2b1/common/Makefile.am.PIE-RELRO 2011-02-18 19:44:42.000000000 +0100 ++++ dhcp-4.2.2b1/common/Makefile.am 2011-07-01 14:26:37.048285177 +0200 @@ -1,5 +1,5 @@ AM_CPPFLAGS = -I.. -DLOCALSTATEDIR='"@localstatedir@"' -AM_CFLAGS = $(LDAP_CFLAGS) @@ -43,9 +43,9 @@ diff -up dhcp-4.2.1rc1/common/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/common/Makefil noinst_LIBRARIES = libdhcp.a libdhcp_a_SOURCES = alloc.c bpf.c comapi.c conflex.c ctrace.c discover.c \ -diff -up dhcp-4.2.1rc1/omapip/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/omapip/Makefile.am ---- dhcp-4.2.1rc1/omapip/Makefile.am.PIE-RELRO 2010-02-12 01:13:54.000000000 +0100 -+++ dhcp-4.2.1rc1/omapip/Makefile.am 2011-02-23 10:56:35.000000000 +0100 +diff -up dhcp-4.2.2b1/omapip/Makefile.am.PIE-RELRO dhcp-4.2.2b1/omapip/Makefile.am +--- dhcp-4.2.2b1/omapip/Makefile.am.PIE-RELRO 2011-07-01 14:26:36.884288319 +0200 ++++ dhcp-4.2.2b1/omapip/Makefile.am 2011-07-01 14:26:37.048285177 +0200 @@ -1,3 +1,5 @@ +AM_CFLAGS = -fpic + @@ -59,9 +59,9 @@ diff -up dhcp-4.2.1rc1/omapip/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/omapip/Makefil +svtest_CFLAGS = -fpie svtest_LDADD = libomapi.a $(BIND9_LIBDIR) -ldns-export -lisc-export -diff -up dhcp-4.2.1rc1/relay/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/relay/Makefile.am ---- dhcp-4.2.1rc1/relay/Makefile.am.PIE-RELRO 2009-10-28 05:12:30.000000000 +0100 -+++ dhcp-4.2.1rc1/relay/Makefile.am 2011-02-23 10:56:35.000000000 +0100 +diff -up dhcp-4.2.2b1/relay/Makefile.am.PIE-RELRO dhcp-4.2.2b1/relay/Makefile.am +--- dhcp-4.2.2b1/relay/Makefile.am.PIE-RELRO 2011-07-01 14:26:36.884288319 +0200 ++++ dhcp-4.2.2b1/relay/Makefile.am 2011-07-01 14:26:37.049285158 +0200 @@ -2,8 +2,11 @@ AM_CPPFLAGS = -DLOCALSTATEDIR='"@localst sbin_PROGRAMS = dhcrelay @@ -74,10 +74,10 @@ diff -up dhcp-4.2.1rc1/relay/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/relay/Makefile. man_MANS = dhcrelay.8 EXTRA_DIST = $(man_MANS) -diff -up dhcp-4.2.1rc1/server/Makefile.am.PIE-RELRO dhcp-4.2.1rc1/server/Makefile.am ---- dhcp-4.2.1rc1/server/Makefile.am.PIE-RELRO 2010-03-24 22:49:47.000000000 +0100 -+++ dhcp-4.2.1rc1/server/Makefile.am 2011-02-23 10:56:35.000000000 +0100 -@@ -6,9 +6,10 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c confpars.c db.c class.c failover.c \ +diff -up dhcp-4.2.2b1/server/Makefile.am.PIE-RELRO dhcp-4.2.2b1/server/Makefile.am +--- dhcp-4.2.2b1/server/Makefile.am.PIE-RELRO 2011-07-01 14:26:36.885288300 +0200 ++++ dhcp-4.2.2b1/server/Makefile.am 2011-07-01 14:26:37.049285158 +0200 +@@ -6,9 +6,10 @@ dhcpd_SOURCES = dhcpd.c dhcp.c bootp.c c omapi.c mdb.c stables.c salloc.c ddns.c dhcpleasequery.c \ dhcpv6.c mdb6.c ldap.c ldap_casa.c diff --git a/dhcp-4.2.2-dhclient-usage.patch b/dhcp-4.2.2-dhclient-usage.patch new file mode 100644 index 0000000..0d41943 --- /dev/null +++ b/dhcp-4.2.2-dhclient-usage.patch @@ -0,0 +1,14 @@ +diff -up dhcp-4.2.2b1/client/dhclient.c.usage dhcp-4.2.2b1/client/dhclient.c +--- dhcp-4.2.2b1/client/dhclient.c.usage 2011-07-01 13:55:16.000000000 +0200 ++++ dhcp-4.2.2b1/client/dhclient.c 2011-07-01 13:58:55.243800602 +0200 +@@ -1047,6 +1047,10 @@ static void usage() + " [-s server-addr] [-cf config-file] " + "[-lf lease-file]\n" + " [-pf pid-file] [--no-pid] [-e VAR=val]\n" ++ " [-I ] [-B]\n" ++ " [-H | -F ] [-timeout ]\n" ++ " [-V ]\n" ++ " [-R ]\n" + " [-sf script-file] [interface]"); + } + diff --git a/dhcp-4.2.0-options.patch b/dhcp-4.2.2-options.patch similarity index 86% rename from dhcp-4.2.0-options.patch rename to dhcp-4.2.2-options.patch index 5ebe870..32e2add 100644 --- a/dhcp-4.2.0-options.patch +++ b/dhcp-4.2.2-options.patch @@ -1,7 +1,7 @@ -diff -up dhcp-4.2.0/client/clparse.c.options dhcp-4.2.0/client/clparse.c ---- dhcp-4.2.0/client/clparse.c.options 2009-11-20 02:48:58.000000000 +0100 -+++ dhcp-4.2.0/client/clparse.c 2010-07-21 13:29:05.000000000 +0200 -@@ -136,6 +136,7 @@ isc_result_t read_client_conf () +diff -up dhcp-4.2.2b1/client/clparse.c.options dhcp-4.2.2b1/client/clparse.c +--- dhcp-4.2.2b1/client/clparse.c.options 2011-04-21 16:08:14.000000000 +0200 ++++ dhcp-4.2.2b1/client/clparse.c 2011-07-01 13:51:52.935755570 +0200 +@@ -146,6 +146,7 @@ isc_result_t read_client_conf () /* Requested lease time, used by DHCPv6 (DHCPv4 uses the option cache) */ top_level_config.requested_lease = 7200; @@ -9,7 +9,7 @@ diff -up dhcp-4.2.0/client/clparse.c.options dhcp-4.2.0/client/clparse.c group_allocate (&top_level_config.on_receipt, MDL); if (!top_level_config.on_receipt) -@@ -303,7 +304,8 @@ void read_client_leases () +@@ -313,7 +314,8 @@ void read_client_leases () interface-declaration | LEASE client-lease-statement | ALIAS client-lease-statement | @@ -19,7 +19,7 @@ diff -up dhcp-4.2.0/client/clparse.c.options dhcp-4.2.0/client/clparse.c void parse_client_statement (cfile, ip, config) struct parse *cfile; -@@ -717,6 +719,12 @@ void parse_client_statement (cfile, ip, +@@ -732,6 +734,12 @@ void parse_client_statement (cfile, ip, parse_reject_statement (cfile, config); return; @@ -32,9 +32,9 @@ diff -up dhcp-4.2.0/client/clparse.c.options dhcp-4.2.0/client/clparse.c default: lose = 0; stmt = (struct executable_statement *)0; -diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c ---- dhcp-4.2.0/client/dhclient.c.options 2010-02-17 21:33:55.000000000 +0100 -+++ dhcp-4.2.0/client/dhclient.c 2010-07-21 13:30:10.000000000 +0200 +diff -up dhcp-4.2.2b1/client/dhclient.c.options dhcp-4.2.2b1/client/dhclient.c +--- dhcp-4.2.2b1/client/dhclient.c.options 2011-05-11 16:20:59.000000000 +0200 ++++ dhcp-4.2.2b1/client/dhclient.c 2011-07-01 13:51:52.936755545 +0200 @@ -39,6 +39,12 @@ #include #include @@ -48,7 +48,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c TIME default_lease_time = 43200; /* 12 hours... */ TIME max_lease_time = 86400; /* 24 hours... */ -@@ -82,6 +88,9 @@ int wanted_ia_na = -1; /* the absolute +@@ -87,6 +93,9 @@ int wanted_ia_na = -1; /* the absolute int wanted_ia_ta = 0; int wanted_ia_pd = 0; char *mockup_relay = NULL; @@ -58,7 +58,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c void run_stateless(int exit_mode); -@@ -112,6 +121,15 @@ main(int argc, char **argv) { +@@ -123,6 +132,15 @@ main(int argc, char **argv) { int local_family_set = 0; #endif /* DHCPv6 */ char *s; @@ -74,7 +74,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c /* Initialize client globals. */ memset(&default_duid, 0, sizeof(default_duid)); -@@ -297,6 +315,88 @@ main(int argc, char **argv) { +@@ -310,6 +328,88 @@ main(int argc, char **argv) { } else if (!strcmp(argv[i], "--version")) { log_info("isc-dhclient-%s", PACKAGE_VERSION); exit(0); @@ -163,7 +163,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c } else if (argv[i][0] == '-') { usage(); } else if (interfaces_requested < 0) { -@@ -466,6 +566,166 @@ main(int argc, char **argv) { +@@ -484,6 +584,166 @@ main(int argc, char **argv) { /* Parse the dhclient.conf file. */ read_client_conf(); @@ -330,7 +330,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c /* Parse the lease database. */ read_client_leases(); -@@ -2337,7 +2597,8 @@ void make_discover (client, lease) +@@ -2397,7 +2657,8 @@ void make_discover (client, lease) client -> packet.xid = random (); client -> packet.secs = 0; /* filled in by send_discover. */ @@ -340,7 +340,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -2421,7 +2682,9 @@ void make_request (client, lease) +@@ -2481,7 +2742,9 @@ void make_request (client, lease) } else { memset (&client -> packet.ciaddr, 0, sizeof client -> packet.ciaddr); @@ -351,7 +351,7 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -@@ -2483,7 +2746,8 @@ void make_decline (client, lease) +@@ -2543,7 +2806,8 @@ void make_decline (client, lease) client -> packet.hops = 0; client -> packet.xid = client -> xid; client -> packet.secs = 0; /* Filled in by send_request. */ @@ -361,10 +361,10 @@ diff -up dhcp-4.2.0/client/dhclient.c.options dhcp-4.2.0/client/dhclient.c client -> packet.flags = 0; else client -> packet.flags = htons (BOOTP_BROADCAST); -diff -up dhcp-4.2.0/common/conflex.c.options dhcp-4.2.0/common/conflex.c ---- dhcp-4.2.0/common/conflex.c.options 2010-03-24 22:49:47.000000000 +0100 -+++ dhcp-4.2.0/common/conflex.c 2010-07-21 13:29:05.000000000 +0200 -@@ -803,6 +803,8 @@ intern(char *atom, enum dhcp_token dfv) +diff -up dhcp-4.2.2b1/common/conflex.c.options dhcp-4.2.2b1/common/conflex.c +--- dhcp-4.2.2b1/common/conflex.c.options 2011-05-11 16:20:59.000000000 +0200 ++++ dhcp-4.2.2b1/common/conflex.c 2011-07-01 13:51:52.938755494 +0200 +@@ -808,6 +808,8 @@ intern(char *atom, enum dhcp_token dfv) return BALANCE; if (!strcasecmp (atom + 1, "ound")) return BOUND; @@ -373,10 +373,10 @@ diff -up dhcp-4.2.0/common/conflex.c.options dhcp-4.2.0/common/conflex.c break; case 'c': if (!strcasecmp(atom + 1, "ase")) -diff -up dhcp-4.2.0/includes/dhcpd.h.options dhcp-4.2.0/includes/dhcpd.h ---- dhcp-4.2.0/includes/dhcpd.h.options 2010-06-01 19:29:59.000000000 +0200 -+++ dhcp-4.2.0/includes/dhcpd.h 2010-07-21 13:29:05.000000000 +0200 -@@ -1119,6 +1119,9 @@ struct client_config { +diff -up dhcp-4.2.2b1/includes/dhcpd.h.options dhcp-4.2.2b1/includes/dhcpd.h +--- dhcp-4.2.2b1/includes/dhcpd.h.options 2011-05-20 16:21:11.000000000 +0200 ++++ dhcp-4.2.2b1/includes/dhcpd.h 2011-07-01 13:51:52.940755442 +0200 +@@ -1147,6 +1147,9 @@ struct client_config { int do_forward_update; /* If nonzero, and if we have the information we need, update the A record for the address we get. */ @@ -386,16 +386,16 @@ diff -up dhcp-4.2.0/includes/dhcpd.h.options dhcp-4.2.0/includes/dhcpd.h }; /* Per-interface state used in the dhcp client... */ -diff -up dhcp-4.2.0/includes/dhctoken.h.options dhcp-4.2.0/includes/dhctoken.h ---- dhcp-4.2.0/includes/dhctoken.h.options 2010-02-17 21:33:55.000000000 +0100 -+++ dhcp-4.2.0/includes/dhctoken.h 2010-07-21 13:33:08.000000000 +0200 -@@ -357,7 +357,8 @@ enum dhcp_token { - CONFLICT_DONE = 660, - AUTO_PARTNER_DOWN = 661, +diff -up dhcp-4.2.2b1/includes/dhctoken.h.options dhcp-4.2.2b1/includes/dhctoken.h +--- dhcp-4.2.2b1/includes/dhctoken.h.options 2011-05-12 14:02:47.000000000 +0200 ++++ dhcp-4.2.2b1/includes/dhctoken.h 2011-07-01 13:53:43.316861637 +0200 +@@ -361,7 +361,8 @@ enum dhcp_token { GETHOSTNAME = 662, -- REWIND = 663 -+ REWIND = 663, -+ BOOTP_BROADCAST_ALWAYS = 664 + REWIND = 663, + INITIAL_DELAY = 664, +- GETHOSTBYNAME = 665 ++ GETHOSTBYNAME = 665, ++ BOOTP_BROADCAST_ALWAYS = 666 }; #define is_identifier(x) ((x) >= FIRST_TOKEN && \ diff --git a/dhcp-4.2.0-rfc3442-classless-static-routes.patch b/dhcp-4.2.2-rfc3442-classless-static-routes.patch similarity index 79% rename from dhcp-4.2.0-rfc3442-classless-static-routes.patch rename to dhcp-4.2.2-rfc3442-classless-static-routes.patch index d1292f5..0a0bfcb 100644 --- a/dhcp-4.2.0-rfc3442-classless-static-routes.patch +++ b/dhcp-4.2.2-rfc3442-classless-static-routes.patch @@ -1,6 +1,6 @@ -diff -up dhcp-4.2.0/client/clparse.c.rfc3442 dhcp-4.2.0/client/clparse.c ---- dhcp-4.2.0/client/clparse.c.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/client/clparse.c 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/client/clparse.c.rfc3442 dhcp-4.2.2b1/client/clparse.c +--- dhcp-4.2.2b1/client/clparse.c.rfc3442 2011-07-01 14:22:38.031534508 +0200 ++++ dhcp-4.2.2b1/client/clparse.c 2011-07-01 14:22:38.128532940 +0200 @@ -37,7 +37,7 @@ struct client_config top_level_config; @@ -35,9 +35,9 @@ diff -up dhcp-4.2.0/client/clparse.c.rfc3442 dhcp-4.2.0/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.2.0/common/dhcp-options.5.rfc3442 dhcp-4.2.0/common/dhcp-options.5 ---- dhcp-4.2.0/common/dhcp-options.5.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/common/dhcp-options.5 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/common/dhcp-options.5.rfc3442 dhcp-4.2.2b1/common/dhcp-options.5 +--- dhcp-4.2.2b1/common/dhcp-options.5.rfc3442 2011-07-01 14:22:38.020534686 +0200 ++++ dhcp-4.2.2b1/common/dhcp-options.5 2011-07-01 14:22:38.129532924 +0200 @@ -115,6 +115,26 @@ hexadecimal, separated by colons. For or option dhcp-client-identifier 43:4c:49:45:54:2d:46:4f:4f; @@ -95,10 +95,10 @@ diff -up dhcp-4.2.0/common/dhcp-options.5.rfc3442 dhcp-4.2.0/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.2.0/common/inet.c.rfc3442 dhcp-4.2.0/common/inet.c ---- dhcp-4.2.0/common/inet.c.rfc3442 2009-11-20 02:49:00.000000000 +0100 -+++ dhcp-4.2.0/common/inet.c 2010-08-31 10:13:49.000000000 +0200 -@@ -526,6 +526,60 @@ free_iaddrcidrnetlist(struct iaddrcidrne +diff -up dhcp-4.2.2b1/common/inet.c.rfc3442 dhcp-4.2.2b1/common/inet.c +--- dhcp-4.2.2b1/common/inet.c.rfc3442 2011-05-11 02:47:22.000000000 +0200 ++++ dhcp-4.2.2b1/common/inet.c 2011-07-01 14:22:38.130532908 +0200 +@@ -528,6 +528,60 @@ free_iaddrcidrnetlist(struct iaddrcidrne return ISC_R_SUCCESS; } @@ -159,9 +159,9 @@ diff -up dhcp-4.2.0/common/inet.c.rfc3442 dhcp-4.2.0/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.2.0/common/options.c.rfc3442 dhcp-4.2.0/common/options.c ---- dhcp-4.2.0/common/options.c.rfc3442 2010-06-01 19:29:59.000000000 +0200 -+++ dhcp-4.2.0/common/options.c 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/common/options.c.rfc3442 dhcp-4.2.2b1/common/options.c +--- dhcp-4.2.2b1/common/options.c.rfc3442 2011-03-24 22:57:13.000000000 +0100 ++++ dhcp-4.2.2b1/common/options.c 2011-07-01 14:22:38.132532876 +0200 @@ -706,7 +706,11 @@ cons_options(struct packet *inpacket, st * packet. */ @@ -246,9 +246,9 @@ diff -up dhcp-4.2.0/common/options.c.rfc3442 dhcp-4.2.0/common/options.c case '6': iaddr.len = 16; memcpy(iaddr.iabuf, dp, 16); -diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c ---- dhcp-4.2.0/common/parse.c.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/common/parse.c 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/common/parse.c.rfc3442 dhcp-4.2.2b1/common/parse.c +--- dhcp-4.2.2b1/common/parse.c.rfc3442 2011-07-01 14:22:38.097533441 +0200 ++++ dhcp-4.2.2b1/common/parse.c 2011-07-01 14:22:38.135532828 +0200 @@ -341,6 +341,39 @@ int parse_ip_addr (cfile, addr) } @@ -289,7 +289,7 @@ diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c * Return true if every character in the string is hexadecimal. */ static int -@@ -707,8 +740,10 @@ unsigned char *parse_numeric_aggregate ( +@@ -700,8 +733,10 @@ unsigned char *parse_numeric_aggregate ( if (count) { token = peek_token (&val, (unsigned *)0, cfile); if (token != separator) { @@ -301,7 +301,7 @@ diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c if (token != RBRACE && token != LBRACE) token = next_token (&val, (unsigned *)0, -@@ -1619,6 +1654,9 @@ int parse_option_code_definition (cfile, +@@ -1624,6 +1659,9 @@ int parse_option_code_definition (cfile, case IP_ADDRESS: type = 'I'; break; @@ -311,7 +311,7 @@ diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c case IP6_ADDRESS: type = '6'; break; -@@ -5232,6 +5270,15 @@ int parse_option_token (rv, cfile, fmt, +@@ -5288,6 +5326,15 @@ int parse_option_token (rv, cfile, fmt, } break; @@ -327,7 +327,7 @@ diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c case '6': /* IPv6 address. */ if (!parse_ip6_addr(cfile, &addr)) { return 0; -@@ -5492,6 +5539,13 @@ int parse_option_decl (oc, cfile) +@@ -5548,6 +5595,13 @@ int parse_option_decl (oc, cfile) goto exit; len = ip_addr.len; dp = ip_addr.iabuf; @@ -341,9 +341,9 @@ diff -up dhcp-4.2.0/common/parse.c.rfc3442 dhcp-4.2.0/common/parse.c alloc: if (hunkix + len > sizeof hunkbuf) { -diff -up dhcp-4.2.0/common/tables.c.rfc3442 dhcp-4.2.0/common/tables.c ---- dhcp-4.2.0/common/tables.c.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/common/tables.c 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/common/tables.c.rfc3442 dhcp-4.2.2b1/common/tables.c +--- dhcp-4.2.2b1/common/tables.c.rfc3442 2011-07-01 14:22:38.087533601 +0200 ++++ dhcp-4.2.2b1/common/tables.c 2011-07-01 14:22:38.137532796 +0200 @@ -51,6 +51,7 @@ HASH_FUNCTIONS (option_code, const unsig Format codes: @@ -360,28 +360,28 @@ diff -up dhcp-4.2.0/common/tables.c.rfc3442 dhcp-4.2.0/common/tables.c { "vivco", "Evendor-class.", &dhcp_universe, 124, 1 }, { "vivso", "Evendor.", &dhcp_universe, 125, 1 }, #if 0 -diff -up dhcp-4.2.0/includes/dhcpd.h.rfc3442 dhcp-4.2.0/includes/dhcpd.h ---- dhcp-4.2.0/includes/dhcpd.h.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/includes/dhcpd.h 2010-08-31 10:13:49.000000000 +0200 -@@ -2638,6 +2638,7 @@ isc_result_t range2cidr(struct iaddrcidr +diff -up dhcp-4.2.2b1/includes/dhcpd.h.rfc3442 dhcp-4.2.2b1/includes/dhcpd.h +--- dhcp-4.2.2b1/includes/dhcpd.h.rfc3442 2011-07-01 14:22:38.000000000 +0200 ++++ dhcp-4.2.2b1/includes/dhcpd.h 2011-07-01 14:24:19.999810333 +0200 +@@ -2662,6 +2662,7 @@ isc_result_t range2cidr(struct iaddrcidr const struct iaddr *lo, const struct iaddr *hi); isc_result_t free_iaddrcidrnetlist(struct iaddrcidrnetlist **result); - const char *piaddr PROTO ((struct iaddr)); -+const char *pdestdesc PROTO ((struct iaddr)); + const char *piaddr (struct iaddr); ++const char *pdestdesc (struct iaddr); char *piaddrmask(struct iaddr *, struct iaddr *); char *piaddrcidr(const struct iaddr *, unsigned int); u_int16_t validate_port(char *); -@@ -2849,6 +2850,7 @@ void parse_client_lease_declaration PROT - int parse_option_decl PROTO ((struct option_cache **, struct parse *)); - void parse_string_list PROTO ((struct parse *, struct string_list **, int)); - int parse_ip_addr PROTO ((struct parse *, struct iaddr *)); -+int parse_destination_descriptor PROTO ((struct parse *, struct iaddr *)); +@@ -2869,6 +2870,7 @@ void parse_client_lease_declaration (str + 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 *); ++int parse_destination_descriptor (struct parse *, struct iaddr *); int parse_ip_addr_with_subnet(struct parse *, struct iaddrmatch *); - void parse_reject_statement PROTO ((struct parse *, struct client_config *)); + void parse_reject_statement (struct parse *, struct client_config *); -diff -up dhcp-4.2.0/includes/dhcp.h.rfc3442 dhcp-4.2.0/includes/dhcp.h ---- dhcp-4.2.0/includes/dhcp.h.rfc3442 2009-11-20 02:49:01.000000000 +0100 -+++ dhcp-4.2.0/includes/dhcp.h 2010-08-31 10:13:49.000000000 +0200 +diff -up dhcp-4.2.2b1/includes/dhcp.h.rfc3442 dhcp-4.2.2b1/includes/dhcp.h +--- dhcp-4.2.2b1/includes/dhcp.h.rfc3442 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.2b1/includes/dhcp.h 2011-07-01 14:22:38.145532665 +0200 @@ -158,6 +158,7 @@ struct dhcp_packet { #define DHO_ASSOCIATED_IP 92 #define DHO_SUBNET_SELECTION 118 /* RFC3011! */ @@ -390,16 +390,16 @@ diff -up dhcp-4.2.0/includes/dhcp.h.rfc3442 dhcp-4.2.0/includes/dhcp.h #define DHO_VIVCO_SUBOPTIONS 124 #define DHO_VIVSO_SUBOPTIONS 125 -diff -up dhcp-4.2.0/includes/dhctoken.h.rfc3442 dhcp-4.2.0/includes/dhctoken.h ---- dhcp-4.2.0/includes/dhctoken.h.rfc3442 2010-08-31 10:12:51.000000000 +0200 -+++ dhcp-4.2.0/includes/dhctoken.h 2010-08-31 10:15:39.000000000 +0200 -@@ -358,7 +358,8 @@ enum dhcp_token { - AUTO_PARTNER_DOWN = 661, - GETHOSTNAME = 662, +diff -up dhcp-4.2.2b1/includes/dhctoken.h.rfc3442 dhcp-4.2.2b1/includes/dhctoken.h +--- dhcp-4.2.2b1/includes/dhctoken.h.rfc3442 2011-07-01 14:22:37.000000000 +0200 ++++ dhcp-4.2.2b1/includes/dhctoken.h 2011-07-01 14:25:12.541867623 +0200 +@@ -362,7 +362,8 @@ enum dhcp_token { REWIND = 663, -- BOOTP_BROADCAST_ALWAYS = 664 -+ BOOTP_BROADCAST_ALWAYS = 664, -+ DESTINATION_DESCRIPTOR = 666 + INITIAL_DELAY = 664, + GETHOSTBYNAME = 665, +- BOOTP_BROADCAST_ALWAYS = 666 ++ BOOTP_BROADCAST_ALWAYS = 666, ++ DESTINATION_DESCRIPTOR = 667 }; #define is_identifier(x) ((x) >= FIRST_TOKEN && \ diff --git a/dhcp-4.2.1-xen-checksum.patch b/dhcp-4.2.2-xen-checksum.patch similarity index 70% rename from dhcp-4.2.1-xen-checksum.patch rename to dhcp-4.2.2-xen-checksum.patch index 65ffca9..038d346 100644 --- a/dhcp-4.2.1-xen-checksum.patch +++ b/dhcp-4.2.2-xen-checksum.patch @@ -1,6 +1,6 @@ -diff -up dhcp-4.2.1-P1/common/bpf.c.xen dhcp-4.2.1-P1/common/bpf.c ---- dhcp-4.2.1-P1/common/bpf.c.xen 2009-11-20 02:48:59.000000000 +0100 -+++ dhcp-4.2.1-P1/common/bpf.c 2011-06-17 13:33:18.398055078 +0200 +diff -up dhcp-4.2.2b1/common/bpf.c.xen dhcp-4.2.2b1/common/bpf.c +--- dhcp-4.2.2b1/common/bpf.c.xen 2009-11-20 02:48:59.000000000 +0100 ++++ dhcp-4.2.2b1/common/bpf.c 2011-07-01 14:00:16.936959001 +0200 @@ -485,7 +485,7 @@ ssize_t receive_packet (interface, buf, offset = decode_udp_ip_header (interface, interface -> rbuf, @@ -10,10 +10,10 @@ diff -up dhcp-4.2.1-P1/common/bpf.c.xen dhcp-4.2.1-P1/common/bpf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) { -diff -up dhcp-4.2.1-P1/common/dlpi.c.xen dhcp-4.2.1-P1/common/dlpi.c ---- dhcp-4.2.1-P1/common/dlpi.c.xen 2011-02-18 20:16:04.000000000 +0100 -+++ dhcp-4.2.1-P1/common/dlpi.c 2011-06-17 13:33:18.398055078 +0200 -@@ -695,7 +695,7 @@ ssize_t receive_packet (interface, buf, +diff -up dhcp-4.2.2b1/common/dlpi.c.xen dhcp-4.2.2b1/common/dlpi.c +--- dhcp-4.2.2b1/common/dlpi.c.xen 2011-05-11 16:20:59.000000000 +0200 ++++ dhcp-4.2.2b1/common/dlpi.c 2011-07-01 14:00:16.937958997 +0200 +@@ -693,7 +693,7 @@ ssize_t receive_packet (interface, buf, length -= offset; #endif offset = decode_udp_ip_header (interface, dbuf, bufix, @@ -22,10 +22,10 @@ diff -up dhcp-4.2.1-P1/common/dlpi.c.xen dhcp-4.2.1-P1/common/dlpi.c /* * If the IP or UDP checksum was bad, skip the packet... -diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c ---- dhcp-4.2.1-P1/common/lpf.c.xen 2009-07-23 20:52:19.000000000 +0200 -+++ dhcp-4.2.1-P1/common/lpf.c 2011-06-17 13:37:31.611730430 +0200 -@@ -29,18 +29,33 @@ +diff -up dhcp-4.2.2b1/common/lpf.c.xen dhcp-4.2.2b1/common/lpf.c +--- dhcp-4.2.2b1/common/lpf.c.xen 2011-05-10 16:38:58.000000000 +0200 ++++ dhcp-4.2.2b1/common/lpf.c 2011-07-01 14:11:24.725748028 +0200 +@@ -29,19 +29,33 @@ #include "dhcpd.h" #if defined (USE_LPF_SEND) || defined (USE_LPF_RECEIVE) #include @@ -38,6 +38,7 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c #include +#include #include +-#include #include "includes/netinet/ip.h" #include "includes/netinet/udp.h" #include "includes/netinet/if_ether.h" @@ -59,7 +60,7 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c /* Reinitializes the specified interface after an address change. This is not required for packet-filter APIs. */ -@@ -66,10 +81,14 @@ int if_register_lpf (info) +@@ -67,10 +81,14 @@ int if_register_lpf (info) struct interface_info *info; { int sock; @@ -76,7 +77,7 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c htons((short)ETH_P_ALL))) < 0) { if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT || -@@ -84,11 +103,17 @@ int if_register_lpf (info) +@@ -85,11 +103,17 @@ int if_register_lpf (info) log_fatal ("Open a socket for LPF: %m"); } @@ -97,7 +98,7 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT || errno == EAFNOSUPPORT || errno == EINVAL) { -@@ -170,9 +195,18 @@ static void lpf_gen_filter_setup (struct +@@ -171,9 +195,18 @@ static void lpf_gen_filter_setup (struct void if_register_receive (info) struct interface_info *info; { @@ -116,32 +117,34 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c #if defined (HAVE_TR_SUPPORT) if (info -> hw_address.hbuf [0] == HTYPE_IEEE802) lpf_tr_filter_setup (info); -@@ -294,7 +328,6 @@ ssize_t send_packet (interface, packet, +@@ -295,7 +328,6 @@ ssize_t send_packet (interface, packet, double hh [16]; double ih [1536 / sizeof (double)]; unsigned char *buf = (unsigned char *)ih; -- struct sockaddr sa; +- struct sockaddr_pkt sa; int result; int fudge; -@@ -315,15 +348,7 @@ ssize_t send_packet (interface, packet, +@@ -316,17 +348,7 @@ ssize_t send_packet (interface, packet, (unsigned char *)raw, len); memcpy (buf + ibufp, raw, len); - /* For some reason, SOCK_PACKET sockets can't be connected, - so we have to do a sentdo every time. */ - memset (&sa, 0, sizeof sa); -- sa.sa_family = AF_PACKET; -- strncpy (sa.sa_data, -- (const char *)interface -> ifp, sizeof sa.sa_data); +- sa.spkt_family = AF_PACKET; +- strncpy ((char *)sa.spkt_device, +- (const char *)interface -> ifp, sizeof sa.spkt_device); +- sa.spkt_protocol = htons(ETH_P_IP); - - result = sendto (interface -> wfdesc, -- buf + fudge, ibufp + len - fudge, 0, &sa, sizeof sa); +- buf + fudge, ibufp + len - fudge, 0, +- (const struct sockaddr *)&sa, sizeof sa); + result = write (interface -> wfdesc, buf + fudge, ibufp + len - fudge); if (result < 0) log_error ("send_packet: %m"); return result; -@@ -340,14 +365,35 @@ ssize_t receive_packet (interface, buf, +@@ -343,14 +365,35 @@ ssize_t receive_packet (interface, buf, { int length = 0; int offset = 0; @@ -178,7 +181,7 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c bufix = 0; /* Decode the physical header... */ offset = decode_hw_header (interface, ibuf, bufix, hfrom); -@@ -364,7 +410,7 @@ ssize_t receive_packet (interface, buf, +@@ -367,7 +410,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ offset = decode_udp_ip_header (interface, ibuf, bufix, from, @@ -187,9 +190,9 @@ diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.1-P1/common/nit.c.xen dhcp-4.2.1-P1/common/nit.c ---- dhcp-4.2.1-P1/common/nit.c.xen 2009-11-20 02:49:01.000000000 +0100 -+++ dhcp-4.2.1-P1/common/nit.c 2011-06-17 13:33:18.414054663 +0200 +diff -up dhcp-4.2.2b1/common/nit.c.xen dhcp-4.2.2b1/common/nit.c +--- dhcp-4.2.2b1/common/nit.c.xen 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.2b1/common/nit.c 2011-07-01 14:00:16.939958989 +0200 @@ -369,7 +369,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ @@ -199,9 +202,9 @@ diff -up dhcp-4.2.1-P1/common/nit.c.xen dhcp-4.2.1-P1/common/nit.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.1-P1/common/packet.c.xen dhcp-4.2.1-P1/common/packet.c ---- dhcp-4.2.1-P1/common/packet.c.xen 2009-07-23 20:52:20.000000000 +0200 -+++ dhcp-4.2.1-P1/common/packet.c 2011-06-17 13:33:18.414054663 +0200 +diff -up dhcp-4.2.2b1/common/packet.c.xen dhcp-4.2.2b1/common/packet.c +--- dhcp-4.2.2b1/common/packet.c.xen 2009-07-23 20:52:20.000000000 +0200 ++++ dhcp-4.2.2b1/common/packet.c 2011-07-01 14:00:16.939958989 +0200 @@ -211,7 +211,7 @@ ssize_t decode_udp_ip_header(struct interface_info *interface, unsigned char *buf, unsigned bufix, @@ -220,9 +223,9 @@ diff -up dhcp-4.2.1-P1/common/packet.c.xen dhcp-4.2.1-P1/common/packet.c udp_packets_bad_checksum++; if (udp_packets_seen > 4 && (udp_packets_seen / udp_packets_bad_checksum) < 2) { -diff -up dhcp-4.2.1-P1/common/upf.c.xen dhcp-4.2.1-P1/common/upf.c ---- dhcp-4.2.1-P1/common/upf.c.xen 2009-11-20 02:49:01.000000000 +0100 -+++ dhcp-4.2.1-P1/common/upf.c 2011-06-17 13:33:18.418054566 +0200 +diff -up dhcp-4.2.2b1/common/upf.c.xen dhcp-4.2.2b1/common/upf.c +--- dhcp-4.2.2b1/common/upf.c.xen 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.2b1/common/upf.c 2011-07-01 14:00:16.940958986 +0200 @@ -320,7 +320,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ @@ -232,15 +235,15 @@ diff -up dhcp-4.2.1-P1/common/upf.c.xen dhcp-4.2.1-P1/common/upf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.1-P1/includes/dhcpd.h.xen dhcp-4.2.1-P1/includes/dhcpd.h ---- dhcp-4.2.1-P1/includes/dhcpd.h.xen 2011-06-17 13:33:18.382055486 +0200 -+++ dhcp-4.2.1-P1/includes/dhcpd.h 2011-06-17 13:33:18.420054516 +0200 -@@ -2776,7 +2776,7 @@ ssize_t decode_hw_header PROTO ((struct - unsigned, struct hardware *)); - ssize_t decode_udp_ip_header PROTO ((struct interface_info *, unsigned char *, - unsigned, struct sockaddr_in *, -- unsigned, unsigned *)); -+ unsigned, unsigned *, int)); +diff -up dhcp-4.2.2b1/includes/dhcpd.h.xen dhcp-4.2.2b1/includes/dhcpd.h +--- dhcp-4.2.2b1/includes/dhcpd.h.xen 2011-07-01 14:00:16.000000000 +0200 ++++ dhcp-4.2.2b1/includes/dhcpd.h 2011-07-01 14:12:18.069642470 +0200 +@@ -2796,7 +2796,7 @@ ssize_t decode_hw_header (struct interfa + unsigned, struct hardware *); + ssize_t decode_udp_ip_header (struct interface_info *, unsigned char *, + unsigned, struct sockaddr_in *, +- unsigned, unsigned *); ++ unsigned, unsigned *, int); /* ethernet.c */ - void assemble_ethernet_header PROTO ((struct interface_info *, unsigned char *, + void assemble_ethernet_header (struct interface_info *, unsigned char *, diff --git a/dhcp.spec b/dhcp.spec index 5b2dbe9..bedd73c 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -5,18 +5,18 @@ %global dhcpconfdir %{_sysconfdir}/dhcp # Patch version -%global patchver P1 +#%global patchver P1 # Pre-Release version -#%global prever rc1 +%global prever b1 -#%global VERSION %{version}%{prever} #%global VERSION %{version} -%global VERSION %{version}-%{patchver} +#%global VERSION %{version}-%{patchver} +%global VERSION %{version}%{prever} Summary: Dynamic host configuration protocol software Name: dhcp -Version: 4.2.1 -Release: 12.%{patchver}%{?dist} +Version: 4.2.2 +Release: 0.1.%{prever}%{?dist} # NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to # dcantrell maintaining the package) made incorrect use of the epoch and # that's why it is at 12 now. It should have never been used, but it was. @@ -39,16 +39,16 @@ Source10: dhcpd6.service Source11: dhcrelay.service Patch0: dhcp-4.2.0-errwarn-message.patch -Patch1: dhcp-4.2.0-options.patch +Patch1: dhcp-4.2.2-options.patch Patch2: dhcp-4.2.0-release-by-ifup.patch Patch3: dhcp-4.2.0-dhclient-decline-backoff.patch Patch4: dhcp-4.2.0-unicast-bootp.patch -Patch6: dhcp-4.2.0-dhclient-usage.patch +Patch6: dhcp-4.2.2-dhclient-usage.patch Patch7: dhcp-4.2.0-default-requested-options.patch -Patch8: dhcp-4.2.1-xen-checksum.patch +Patch8: dhcp-4.2.2-xen-checksum.patch Patch10: dhcp-4.2.1-manpages.patch Patch11: dhcp-4.2.0-paths.patch -Patch12: dhcp-4.2.0-CLOEXEC.patch +Patch12: dhcp-4.2.2-CLOEXEC.patch Patch13: dhcp-4.2.0-inherit-leases.patch Patch14: dhcp-4.2.0-garbage-chars.patch Patch15: dhcp-4.2.0-missing-ipv6-not-fatal.patch @@ -59,9 +59,8 @@ Patch20: dhcp-4.2.0-logpid.patch Patch21: dhcp-4.2.0-UseMulticast.patch Patch22: dhcp-4.2.1-sendDecline.patch Patch23: dhcp-4.2.1-retransmission.patch -Patch24: dhcp-4.2.0-initialization-delay.patch -Patch25: dhcp-4.2.0-rfc3442-classless-static-routes.patch -Patch26: dhcp-4.2.1-PIE-RELRO.patch +Patch25: dhcp-4.2.2-rfc3442-classless-static-routes.patch +Patch26: dhcp-4.2.2-PIE-RELRO.patch Patch27: dhcp-4.2.0-honor-expired.patch Patch28: dhcp-4.2.0-noprefixavail.patch Patch29: dhcp420-rh637017.patch @@ -276,9 +275,6 @@ rm bind/bind.tar.gz # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #21238]) %patch23 -p1 -b .retransmission -# Cut down the 0-4 second delay before sending first DHCPDISCOVER (#587070) -%patch24 -p1 -b .initialization-delay - # RFC 3442 - Classless Static Route Option for DHCPv4 (#516325) %patch25 -p1 -b .rfc3442 @@ -651,6 +647,9 @@ fi %{_initddir}/dhcrelay %changelog +* Fri Jul 01 2011 Jiri Popelka - 12:4.2.2-0.1.b1 +- 4.2.2b1: upstream merged initialization-delay.patch + * Fri Jun 17 2011 Jiri Popelka - 12:4.2.1-12.P1 - Removed upstream-merged IFNAMSIZ.patch - Polished patches according to results from static analysis of code. diff --git a/sources b/sources index da855bd..69c9811 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -22e6f1eff6d5cfe2621a06cc62ba5b70 dhcp-4.2.1-P1.tar.gz +8522920f79ec79614a8f0dae30ae14c8 dhcp-4.2.2b1.tar.gz