rather than sockaddr. Packet etherType is now forced to ETH_P_IP.
[ISC-Bugs #18975]
+- Minor code cleanups - but note port change for #23196
+ [ISC-Bugs #23470] - Modify when an ignore return macro is defined to
+ handle unsed error return warnings for more versions of gcc.
+ [ISC-Bugs #23196] - Modify the reply handling in the server code to
+ send to a specified port rather than to the source port for the incoming
+ message. Sending to the source port was test code that should have
+ been removed. The previous functionality may be restored by defining
+ REPLY_TO_SOURCE_PORT in the includes/site.h file. We suggest you don't
+ enable this except for testing purposes.
+ [ISC-Bugs #22695] - Close a file descriptor in an error path.
+ [ISC-Bugs #19368] - Tidy up variable types in validate_port.
+
Changes since 4.2.1rc1
- None
}
pf = fdopen (pfdesc, "w");
- if (!pf)
+ if (!pf) {
+ close(pfdesc);
log_error ("Can't fdopen %s: %m", path_dhclient_pid);
- else {
+ } else {
fprintf (pf, "%ld\n", (long)getpid ());
fclose (pf);
}
way... */
/*
- * Copyright (c) 2004,2005,2007-2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2011 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2007-2009 by Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (c) 2004,2005 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1995-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
u_int16_t
validate_port(char *port) {
- int local_port = 0;
- int lower = 1;
- int upper = 65535;
+ long local_port = 0;
+ long lower = 1;
+ long upper = 65535;
char *endptr;
errno = 0;
log_fatal ("Invalid port number specification: %s", port);
if (local_port < lower || local_port > upper)
- log_fatal("Port number specified is out of range (%d-%d).",
+ log_fatal("Port number specified is out of range (%ld-%ld).",
lower, upper);
- return htons(local_port);
+ return htons((u_int16_t)local_port);
}
/*
* Copyright (c) 1995 RadioMail Corporation. All rights reserved.
+ * Copyright (c) 2011 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 2004,2009 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996-2003 by Internet Software Consortium
*
* these warnings prohibit the compilation of the package. This macro
* allows us to assign the return value to a variable and then ignore it.
*/
-#if !defined(__GNUC__) || (__GNUC__ < 4) || \
- ((__GNUC__ == 4) && (__GNUC_MINOR__ < 3))
+#if !defined(__GNUC__) || (__GNUC__ < 4)
#define IGNORE_RET(x) (void) x
#else
#define IGNORE_RET(x) \
/* #define USE_OLD_DDNS_TTL */
+/* Define this if you want a DHCPv6 server to send replies to the
+ source port of the message it received. This is useful for testing
+ but is only included for backwards compatibility. */
+/* #define REPLY_TO_SOURCE_PORT */
} else {
to_addr.sin6_port = remote_port;
}
-/* For testing, we reply to the sending port, so we don't need a root client */
+
+#if defined (REPLY_TO_SOURCE_PORT)
+ /*
+ * This appears to have been included for testing so we would
+ * not need a root client, but was accidently left in the
+ * final code. We continue to include it in case
+ * some users have come to rely upon it, but leave
+ * it off by default as it's a bad idea.
+ */
to_addr.sin6_port = packet->client_port;
+#endif
+
memcpy(&to_addr.sin6_addr, packet->client_addr.iabuf,
sizeof(to_addr.sin6_addr));