From 0 Mon Sep 17 00:00:00 2001 From: Mikhail Efremov 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 */ {