ALT Linux repositórios
Group :: Sistema/Servidores
RPM: dhcp
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: 0022-dhcpd-and-dhcrelay-Override-default-user-jail-dir-an.patch
Download
Download
From 0 Mon Sep 17 00:00:00 2001
From: Mikhail Efremov <sem@altlinux.org>
Date: Fri, 23 Nov 2012 18:11:14 +0400
Subject: [PATCH 22] dhcpd and dhcrelay: Override default user, jail dir and
config for DHCPv6.
diff --git a/dhcp/relay/dhcrelay.c b/dhcp/relay/dhcrelay.c
index defaced..defaced 100644
--- a/dhcp/relay/dhcrelay.c
+++ b/dhcp/relay/dhcrelay.c
@@ -297,6 +297,9 @@ main(int argc, char **argv) {
#endif
char *server_user = "dhcrelay";
char *server_jail = "/var/empty";
+ /* DHCPv6 defaults */
+ char *server_user_6 = "dhcrelay6";
+ int no_server_user = 0;
#ifdef DHCPv6
struct stream_list *sl = NULL;
int local_family_set = 0;
@@ -510,6 +513,7 @@ main(int argc, char **argv) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
server_user = argv[i];
+ no_server_user = 1;
} else if (!strcmp (argv [i], "-j")) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
@@ -708,6 +712,12 @@ main(int argc, char **argv) {
} else
log_perror = 0;
+#ifdef DHCPv6
+ /* DHCPv6: Override default user */
+ if (local_family == AF_INET6 && !no_server_user)
+ server_user = server_user_6;
+#endif
+
/* Set default port */
if (local_family == AF_INET) {
service_local = "bootps";
diff --git a/dhcp/server/dhcpd.c b/dhcp/server/dhcpd.c
index defaced..defaced 100644
--- a/dhcp/server/dhcpd.c
+++ b/dhcp/server/dhcpd.c
@@ -288,6 +288,12 @@ main(int argc, char **argv) {
#endif
char *server_user = "dhcpd";
char *server_jail = "/var/lib/dhcp/dhcpd";
+ /* IPv6 defaults */
+ char *server_user_6 = "dhcpd6";
+ char *server_jail_6 = "/var/lib/dhcp/dhcpd6";
+ char *path_dhcpd_conf_6 = "/etc/dhcpd6.conf";
+ int no_server_user = 0;
+ int no_server_jail = 0;
#if defined (PARANOIA)
char *set_user = 0;
@@ -533,10 +539,12 @@ main(int argc, char **argv) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
server_user = argv[i];
+ no_server_user = 1;
} else if (!strcmp (argv [i], "-j")) {
if (++i == argc)
usage(use_noarg, argv[i-1]);
server_jail = argv[i];
+ no_server_jail = 1;
#if defined (TRACING)
} else if (!strcmp (argv [i], "-tf")) {
if (++i == argc)
@@ -585,8 +593,13 @@ main(int argc, char **argv) {
}
#endif /* DHCPv6 && DHCP4o6 */
- if (!have_dhcpd_conf && (s = getenv ("PATH_DHCPD_CONF"))) {
- path_dhcpd_conf = s;
+ if (!have_dhcpd_conf) {
+ if ((s = getenv ("PATH_DHCPD_CONF")))
+ path_dhcpd_conf = s;
+#ifdef DHCPv6
+ else if (local_family == AF_INET6)
+ path_dhcpd_conf = path_dhcpd_conf_6;
+#endif /* DHCPv6 */
}
#ifdef DHCPv6
@@ -604,6 +617,11 @@ main(int argc, char **argv) {
else
path_dhcpd_pid = _PATH_DHCPD6_PID;
}
+ /* DHCPv6: Override default user and jail dir */
+ if (!no_server_user)
+ server_user = server_user_6;
+ if (!no_server_jail)
+ server_jail = server_jail_6;
} else
#endif /* DHCPv6 */
{