- Corrected a static analyzer warning in common/execute.c
[ISC-Bugs #40374]
+- ISC DHCP now follows the common convention to use the base name a
+ program is invoked with (aka argv[0], vs. a builtin name) for
+ logs. This should help differentiate syslog entires for DHCPv4 and
+ DHCPv6 servers. You can define OLD_LOG_NAME in includes/site.h to
+ keep the previous behavior.
+ [ISC-BUGS #38692]
+
Changes since 4.1-ESV-R12b1
- None
int wanted_ia_pd = 0;
char *mockup_relay = NULL;
+char *progname = NULL;
+
void run_stateless(int exit_mode);
static void usage(void);
#endif /* DHCPv6 */
char *s;
+#ifdef OLD_LOG_NAME
+ progname = "dhclient";
+#else
+ progname = argv[0];
+#endif
+
/* Initialize client globals. */
memset(&default_duid, 0, sizeof(default_duid));
else if (fd != -1)
close(fd);
- openlog("dhclient", DHCP_LOG_OPTIONS, LOG_DAEMON);
+ openlog(isc_file_basename(progname), DHCP_LOG_OPTIONS, LOG_DAEMON);
#if !(defined(DEBUG) || defined(__CYGWIN32__))
setlogmask(LOG_UPTO(LOG_INFO));
log_info(url);
- log_fatal("Usage: dhclient "
+ log_fatal("Usage: %s "
#ifdef DHCPv6
"[-4|-6] [-SNTP1dvrx] [-nw] [-p <port>]\n"
#else /* DHCPv6 */
" [-s server-addr] [-cf config-file] "
"[-lf lease-file]\n"
" [-pf pid-file] [--no-pid] [-e VAR=val]\n"
- " [-sf script-file] [interface]");
+ " [-sf script-file] [interface]",
+ isc_file_basename(progname));
}
void run_stateless(int exit_mode)
Examine and modify omapi objects. */
/*
- * Copyright (c) 2009-2011,2013,2014 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2009-2011,2013-2015 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2001-2003 by Internet Software Consortium
*
}
void classify (struct packet *packet, struct class *class) { }
-static void usage (char *s) {
+static void usage (const char *s) {
fprintf (stderr, "Usage: %s\n", s);
exit (1);
}
char s1[1024];
int connected = 0;
char hex_buf[1025];
+ char *progname;
+
+#ifdef OLD_LOG_NAME
+ progname = "omshell";
+#else
+ progname = argv[0];
+#endif
for (i = 1; i < argc; i++) {
- usage(argv[0]);
+ usage(isc_file_basename(progname));
}
/* Initially, log errors to stderr as well as to syslogd. */
- openlog ("omshell", DHCP_LOG_OPTIONS, DHCPD_LOG_FACILITY);
+ openlog (isc_file_basename(progname),
+ DHCP_LOG_OPTIONS, DHCPD_LOG_FACILITY);
status = dhcpctl_initialize ();
if (status != ISC_R_SUCCESS) {
fprintf (stderr, "dhcpctl_initialize: %s\n",
Private master include file for the OMAPI library. */
/*
- * Copyright (c) 2009-2010,2014 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2014-2015 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2009-2010 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2004,2007 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996-2003 by Internet Software Consortium
*
isc_result_t uerr2isc (int);
isc_result_t ns_rcode_to_isc (int);
+const char *isc_file_basename(const char *filename);
+
extern omapi_message_object_t *omapi_registered_messages;
#endif /* __OMAPIP_OMAPIP_P_H__ */
/* #define USE_RAW_SOCKETS */
+/* Define this to keep the old program name (e.g., "dhcpd" for
+ the DHCP server) in place of the (base) name the program was
+ invoked with. */
+
+/* #define OLD_LOG_NAME */
+
/* Define this to change the logging facility used by dhcpd. */
/* #define DHCPD_LOG_FACILITY LOG_DAEMON */
/*
* Copyright (c) 1995 RadioMail Corporation.
- * Copyright (c) 2004,2007,2009,2014 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2014-2015 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004,2007,2009 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
#include <omapip/omapip_p.h>
#include <errno.h>
+#include <string.h>
#include <syslog.h>
#ifdef DEBUG
return "Unknown WinSock error";
}
#endif /* _WIN32 */
+
+/* From bind9 libisc */
+
+#ifndef _WIN32
+#define ISC_PATH_SEPARATOR '/'
+#else
+#defineISC_PATH_SEPARATOR '\\'
+#endif
+
+const char *
+isc_file_basename(const char *filename) {
+ char *s;
+
+ if (filename == NULL)
+ return (filename);
+
+ s = strrchr(filename, ISC_PATH_SEPARATOR);
+ if (s == NULL)
+ return (filename);
+
+ return (s + 1);
+}
static const char url[] =
"For info, please visit https://www.isc.org/software/dhcp/";
+char *progname;
+
#ifdef DHCPv6
#define DHCRELAY_USAGE \
-"Usage: dhcrelay [-4] [-d] [-q] [-a] [-D]\n"\
+"Usage: %s [-4] [-d] [-q] [-a] [-D]\n"\
" [-A <length>] [-c <hops>] [-p <port>]\n" \
" [-pf <pid-file>] [--no-pid]\n"\
" [-m append|replace|forward|discard]\n" \
" [-i interface0 [ ... -i interfaceN]\n" \
" server0 [ ... serverN]\n\n" \
-" dhcrelay -6 [-d] [-q] [-I] [-c <hops>] [-p <port>]\n" \
+" %s -6 [-d] [-q] [-I] [-c <hops>] [-p <port>]\n" \
" [-pf <pid-file>] [--no-pid]\n"\
" -l lower0 [ ... -l lowerN]\n" \
" -u upper0 [ ... -u upperN]\n" \
" upper (server link): [address%%]interface"
#else
#define DHCRELAY_USAGE \
-"Usage: dhcrelay [-d] [-q] [-a] [-D] [-A <length>] [-c <hops>] [-p <port>]\n" \
+"Usage: %s [-d] [-q] [-a] [-D] [-A <length>] [-c <hops>] [-p <port>]\n" \
" [-pf <pid-file>] [--no-pid]\n"\
" [-m append|replace|forward|discard]\n" \
" [-i interface0 [ ... -i interfaceN]\n" \
#endif
static void usage() {
- log_fatal(DHCRELAY_USAGE);
+ log_fatal(DHCRELAY_USAGE,
+#ifdef DHCPv6
+ isc_file_basename(progname),
+#endif
+ isc_file_basename(progname));
}
int
int local_family_set = 0;
#endif
+#ifdef OLD_LOG_NAME
+ progname = "dhcrelay";
+#else
+ progname = argv[0];
+#endif
+
/* 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. */
else if (fd != -1)
close(fd);
- openlog("dhcrelay", DHCP_LOG_OPTIONS, LOG_DAEMON);
+ openlog(isc_file_basename(progname), DHCP_LOG_OPTIONS, LOG_DAEMON);
#if !defined(DEBUG)
setlogmask(LOG_UPTO(LOG_INFO));
exit(0);
} else if (!strcmp(argv[i], "--help") ||
!strcmp(argv[i], "-h")) {
- log_info(DHCRELAY_USAGE);
+ log_info(DHCRELAY_USAGE,
+#ifdef DHCPv6
+ isc_file_basename(progname),
+#endif
+ isc_file_basename(progname));
exit(0);
} else if (argv[i][0] == '-') {
usage();
trace_type_t *trace_srandom;
#endif
+#ifndef UNIT_TEST
+char *progname;
+#endif
+
static isc_result_t verify_addr (omapi_object_t *l, omapi_addr_t *addr) {
return ISC_R_SUCCESS;
}
char *set_chroot = 0;
#endif /* PARANOIA */
+#ifdef OLD_LOG_NAME
+ progname = "dhcpd";
+#else
+ progname = argv[0];
+#endif
+
/* 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. */
dhcp_common_objects_setup ();
/* Initially, log errors to stderr as well as to syslogd. */
- openlog ("dhcpd", DHCP_LOG_OPTIONS, DHCPD_LOG_FACILITY);
+ openlog (isc_file_basename(progname),
+ DHCP_LOG_OPTIONS, DHCPD_LOG_FACILITY);
for (i = 1; i < argc; i++) {
if (!strcmp (argv [i], "-p")) {
&global_scope, oc, MDL)) {
if (db.len == 1) {
closelog ();
- openlog("dhcpd", DHCP_LOG_OPTIONS, db.data[0]);
+ openlog(isc_file_basename(progname),
+ DHCP_LOG_OPTIONS, db.data[0]);
/* Log the startup banner into the new
log file. */
if (!quiet) {
log_info(copyright);
log_info(arr);
- log_fatal("Usage: dhcpd [-p <UDP port #>] [-f] [-d] [-q] [-t|-T]\n"
+ log_fatal("Usage: %s [-p <UDP port #>] [-f] [-d] [-q] [-t|-T]\n"
#ifdef DHCPv6
" [-4|-6] [-cf config-file] [-lf lease-file]\n"
#else /* !DHCPv6 */
" [-play trace-input-file]\n"
#endif /* TRACING */
" [-pf pid-file] [--no-pid] [-s server]\n"
- " [if0 [...ifN]]");
+ " [if0 [...ifN]]",
+ isc_file_basename(progname));
}
#endif