cast to dns_rdatatype_t via macros of their same name
so that they are of the proper integral type wherever
a dns_rdatatype_t is needed.
(And a few prototypes that I recently bogusly changed to take "int" parameters
in place of "dns_rdatatype_t" to accomodate the type of an enum identifier
have been reverted to again properly take a dns_rdatatype_t.)
Mostly, several functions that take pointers as arguments, almost
always char * pointers, had those pointers qualified with "const".
Those that returned pointers to previously const-qualified arguments
had their return values qualified as const. Some structure members
were qualified as const to retain that attribute from the variables
from which they were assigned.
Minor other ISC style cleanups.
Mostly, several functions that take pointers as arguments, almost
always char * pointers, had those pointers qualified with "const".
Those that returned pointers to previously const-qualified arguments
had their return values qualified as const. Some structure members
were qualified as const to retain that attribute from the variables
from which they were assigned.
The macro DE_CONST is used to deal with a handful of very special
places where something is qualified as const but really needs to have
its const qualifier removed.
rdata.c now defines macros for the prototypes of the basic rdata functions,
and all of the lib/dns/rdata/**/*.c files now use them.
Some minor integer-compatibility issues. (IE, ~0x03 is a signed int,
so assigning it to an unsigned int should use a cast. The type of an
enum member is int, so there are some conversion issues there, too.)
A pointers-to-function should not be cast to a pointer-to-object.
Variables should not be named for C reserved identifiers.
One or two set-but-not-used variables removed.
Minor other ISC style cleanups.
Mostly, several functions that take pointers as arguments, almost
always char * pointers, had those pointers qualified with "const".
Those that returned pointers to previously const-qualified arguments
had their return values qualified as const. Some structure members
were qualified as const to retain that attribute from the variables
from which they were assigned.
Minor other ISC style cleanups.
Mostly, several functions that take pointers as arguments, almost
always char * pointers, had those pointers qualified with "const".
Those that returned pointers to previously const-qualified arguments
had their return values qualified as const. Some structure members
were qualified as const to retain that attribute from the variables
from which they were assigned.
Mostly, several functions that take pointers as arguments, almost
always char * pointers, had those pointers qualified with "const".
Those that returned pointers to previously const-qualified arguments
had their return values qualified as const. Some structure members
were qualified as const to retain that attribute from the variables
from which they were assigned.
The macro DE_CONST was added to isc/util.h to deal with a handful of very
special places where something is qualified as const but really needs to have
its const qualifier removed.
Also cleaned up a few places where variable names clashed with reserved
identifiers. (Which mostly works fine, but strictly speaking is undefined
by the standard.)
Minor other ISC style cleanups.
the message "in6_addr.s6_addr is *always* an array" (been there, done that)
is actually useful to just rebuild the include/dns/*.h files which
"gen" generates ... if only the rule had a backslash, so that
include/dns/rdatastruct.h was recognized as a dependent rather than
the command to execute. now it does.
isc_buffer_remaininglength of 0. this finds problems like isc_buffer_init
not followed by isc_buffer_add much sooner.
also, enforce the already documented contract requirements of needing
a valid source buffer and either a valid target buffer or a name
with a dedicated buffer.
- Eliminated massive code duplication
- Eliminated code for configuring forward and hint "zones",
as those no longer have zone objects. Left stub zones in
because those probably will have zone objects associated
with them.
- Fixed several bugs:
+ 'allow-transfer' was not obeyed for slave zones or stub zones
+ 'dialup' was not obeyed for stub zones
+ 'transfers-per-ns' was not obeyed for any zones
there are no major fixes in here but couple of bug fixes that
may affect operation in some cases. I updated rename.h to
make sure all symbols with T have dst__openssl prefix.
Any bugs found in this source code should be reported to the
openssl people.
Olafur
"comparison between signed and unsigned" warnings and allowing for 64 bit
offsets on machines that support it (though there is an issue, there
with journal_rawpos_t being only 4 bytes.)
and int variable. in three of the four cases this cast is questionable,
as suitable range had not been checked, but the situation is no worse
than without the casts.
macro in dns_rdataclass_fromtext by using an intermediate variable
to hold the constant 2nd argument in each use.
added the RESERVED attribute to the reserved0 class in the same function.
the logconfig is properly dimensioned, and only free the channellist
memory in isc_logconfig_destroy if the channellist_count is > 0.
the first addresses a problem that could occur when a successful
isc_log_create was followed immediately by isc_log_[v]write[1] or
isc_log_destroy (with no intervening isc_log_usechannel or
isc_logconfig_use), and the second addresses a problem that could
occur in cleanup if isc_log_create or isc_logconfig_create failed.
reversing part of the changes made on 2000/05/17. Doing an explicit
zone shutdown on destruction of the zone table caused the zone to
be shut down prematurely on server reload when the zone table was
destroyed but the zone had already been attached to a new zone table.
An external reference count is needed to correctly handle this situation.
invariant, causing timer events not to be posted
when due.
Specifically, isc_heap_delete() moved the last element of the heap to
the vacated position and then attempted to restore the heap invariant
by calling sink_down(). This works when the last element has a lower
priority than the one being deleted, and this is often the case
because the last element tends to have a low priority. However, it is
not guaranteed to be the lowest. When deleting an item of a lower
priority than the last item, restoring the invariant requires a call
to float_up(), not sink_down().
isc_heap_delete_now calls either float_up() or sink_down() as needed,
and INSISTs have been added to verify that the heap invariant indeed
holds after the calls.
zone->expire instead of zone->expiretime. This left zone->expiretime
with a value of zero, causing zone_settimer() to get horribly confused
and set the timer to the inactive state (!). This in turn caused
notify-driven refreshes (and probably other timer-scheduled events, too)
to never happen.
are any problems in a validation, a SERVFAIL will be returned. This may not
be correct in all cases (and will be fixed), but it leaves the server in a
much more consistent state after failures.
dns_dispatch_create() no longer exists. dns_dispatch_createtcp()
and dns_dispatch_getudp() are the replacements. _createtcp() takes
a bound, connected TCP socket, while _getudp() will search for
a sharable UDP socket, and if found, attach to it and return a
pointer to it. If one is not found, it will create a udp socket,
bind it to a supplied local address, and create a new dispatcher
around it.
dns_dispatch_remove{request,response}() no longer take the dispatch
as an argument.
query-source can now be set per view.
The dispatch manager holds onto three memory pools, one for
allocating dispatchers from, one for events, and one for
requests/replies. The free list on these pools is hard-coded,
but set to 1024. This keeps us from having to dig into the
isc_mem_t the pools draw from as often.
dns_resolver_create() and dns_view_createresolver() require that
valid dispatchers be passed in; dispatchers are no longer created
for the caller.
should have been set to NULL when the top of a level was being rotated but
instead it was set to the node which pointed down to the level of the deleted
node.
rotate_left and rotate_right no longer take a parent parameter, since they
don't need it with the existence of parent pointers.
dns_rbt_deletefromlevel now takes a pointer to the pointer of the root of
the level as a parameter so that it doesn't have to rediscover the root that
its caller (dns_rbt_deletenode) already discovered.
dns_rbt_deletefromlevel did some (minor) pointless work with the sibling of the
deleted node before the color fixup loop was entered; it does so no more.
forward function declarations changed to ISC style.
Use isc_time_secondsastimet() to set a time_t variable.
Properly skip the duplicate checking loop if the boundary time is not
successfully set (this was intended before, but coded wrongly).
Removed unused variable pid_string, after I opted to not add the
unrequested ISC_LOG_PRINTPID option half way into implementing it.
that the number of seconds in an isc_time_t does not
exceed the range of a time_t, or return ISC_R_RANGE.
Similarly, isc_time_now(), isc_time_nowplusinterval(),
isc_time_add() and isc_time_subtract() now check the
range for overflow/underflow. In the case of
isc_time_subtract, this changed a calling requirement
(ie, something that could generate an assertion)
into merely a condition that returns an error result.
isc_time_add() and isc_time_subtract() were void-
valued before but now return isc_result_t.
The seconds member isc_time_t on Unix platforms was changed from time_t
to unsigned int.
unix/time.c now uses macros for nanoseconds per second, nanoseconds per
microsecond and microseconds per second to make sure that the right
number of zeros appears each place the constant is used.
unix/time.c functions which take initialized isc_(interval|time)_t arguments
INSIST() that the nanoseconds value is less than one full second.
unix/time.c's isc_time_microdiff was broken because it did multiplication and
addition with unsigned integers and attempted to set them a 64 bit int to
avoid overflow, but C's ints don't promote to 64 bits on machines that only
have 32 bit longs. Fixed.
Added all the pertinent documentation to time.h.
involved extensive restructuring of the reference counting of
zones and related objects.
Zones now attach to their views. To avoid a circular dependency that
would keep views from ever shutting down, this is done using the new
functions dns_view_weakattach() / dns_view_weakdetach() which
guarantee that the view will not be freed but still allow it
to be shut down.
The zones themselves now only have a single reference count, with
similar "weak" semantics. Managed zones must now be shut down
explicitly by calling dns_zone_shutdown(). To shut down all
zones in a zone table, call dns_zt_shutdown().
The zone manager is now reference counted, weakly. To shut down the
zone manager, you must explicitly call dns_zonemgr_shutdown().
public functions did not have an isc__ prefix, and
referred to functions that had previously been
renamed.
184. [cleanup] Variables/functions which began with two leading
underscores were made to conform to the ANSI/ISO
function declaration and comment reformatting in accordance with coding
style document.
check_overrun conditionally compiled based on ISC_MEM_FILL and
ISC_MEM_CHECKOVERRUN to avoid compiler warnings about being defined
but not used if one of those two CPP symbols is not defined.
statements.
- Post-load of named.conf check verifies a slave zone has non-empty list
of masters defined.
- New per-zone boolean:
enable-zone yes | no ;
- intended to let a zone be disabled without having to comment out the
entire zone statement.
- New global and per-view option:
max-cache-ttl number
- New global and per-view option:
addition-data internal | minimal | maximal;
line 356: remark(1174): parameter "dev" was declared but never referenced
This is true when ISC_NET_BSD44MSGHDR is not defined. UNUSED()s were added.
line 1580: remark(1552): variable "task" was set but never used
line 1670: remark(1552): variable "task" was set but never used
I removed the stack variable and its assignment in each case.
line 2915: remark(1552): variable "ret" was set but never used
It was apparent that the variable was meant to be the return value
of isc_socket_getsockname, so the return statement was changed to use it.
Also ...
Changed function declarations to ISC coding style.
Wrapped two lines that were wider than column 79.
Removed two UNUSED() macros for variables that were no longer unused.
line 684: remark(1692): prototyped function redeclared without prototype
line 700: remark(1692): prototyped function redeclared without prototype
Prototypes fixed.
line 331: remark(1552): variable "n" was set but never used.
Variable removed.
It was removed and the function call that set it (getword) was cast to void.
In the context in which it was being used, the return value was not needed.
line 84: remark(1692): prototyped function redeclared without prototype
line 137: remark(1692): prototyped function redeclared without prototype
The missing prototypes were added.
to "long": rounding, sign extension, or loss of accuracy may result
Fixed by ensuring unsigned long ctx->timeout does not overflow the signed
long timeout.tv_sec.
"tkey.c", line 220: remark(1552): variable "tsigkey" was set but never used
"tkey.c", line 846: remark(1552): variable "tsigkey" was set but never used
by removing the unused variables.
"resolver.c", line 750: remark(1552): variable "trdataset" was set but never
used
"resolver.c", line 3043: remark(1552): variable "have_sig" was set but never
used
True and true.
"resolver.c", line 2194: warning(1551): variable "now" is used before its
value is set
Moved setting of "now" to earlier in the function.
"rdata.c", line 164: remark(1174): variable "octdigits" was declared but never
referenced
This was true; octdigits was used in no lib/dns/**/* files.
"rdata.c", line 1485: remark(1506): implicit conversion from "unsigned long"
to "int": rounding, sign extension, or loss of accuracy may result
"rdata.c", line 1493: remark(1506): implicit conversion from "unsigned long"
to "int": rounding, sign extension, or loss of accuracy may result
"rdata.c", line 1501: remark(1506): implicit conversion from "unsigned long"
to "int": rounding, sign extension, or loss of accuracy may result
These three were all in atob_tobuffer, where the value of stroul was being
assigned to an isc_int32_t, which is typedef'd from int and possibly smaller
than long (definitely on the IRIX machine). The variables in question were
changed from isc_int32_t to long.
"./rdata/any_255/tsig_250.c", line 74: remark(1506): implicit conversion from
"unsigned long" to "int": rounding, sign extension, or loss of
accuracy may result
"./rdata/any_255/tsig_250.c", line 95: remark(1506): implicit conversion from
"unsigned long" to "int": rounding, sign extension, or loss of
accuracy may result
The values in question were already being checked to be within the range of
a short, so where the warnings were occuring they were just cast to int.
"./rdata/generic/tkey_249.c", line 89: remark(1506): implicit conversion from
"unsigned long" to "int": rounding, sign extension, or loss of
accuracy may result
"./rdata/generic/tkey_249.c", line 98: remark(1506): implicit conversion from
"unsigned long" to "int": rounding, sign extension, or loss of
accuracy may result
The values in question were already being checked to be within the range of
a short, so where the warnings were occuring they were just cast to int.
"./rdata/generic/unspec_103.c", line 138: warning(1184): possible use of "="
where "==" was intended
by changing to ==, which is clearly what was intended.
"./rdata/generic/opt_41.c", line 73: remark(1552): variable "option" was set
but never used
by removing option, because there was nothing to do with its value.
"./rdata/in_1/a6_38.c", line 259: remark(1552): variable "octets" was set but
never used
by using UNUSED() on this stack variable. I didn't take it out altogether
because this function is not yet finished, but someone was starting to
do some work on it and I didn't want to undo that.
"./rdata/generic/nxt_30.c", line 66: warning(1042): operand types are
incompatible ("char *" and "void *")
by casting to char *, as already being done with several other uses of
token.value.as_pointer.
"./rdata/generic/loc_29.c", line ??: remark(1506): implicit conversion from
"unsigned long" to "int": rounding, sign extension, or loss of
accuracy may result
by making sure that the range was suitable for an int and casting to
int in each case. (This appeared to be more desirable than changing
all of the variables in question to longs.)
"./rdata/generic/mx_15.c", line 202: warning(1184): possible use of "=" where
"==" was intended
by changing to == since it was clear that test was desired, not assignment.
"./rdata/in_1/a_1.c", line 178: warning(1184): possible use of "=" where "=="
was intended
"./rdata/in_1/a_1.c", line 179: warning(1184): possible use of "=" where "=="
was intended
By chaning them to ==, because (a) we don't allow side-effects in REQUIRE()
and (b) it is clear from the rest of the code that it really was a test that
was desired and not an assignment.
"rbtdb.c", line 1579: remark(1552): parameter "now" was set but never used
"rbtdb.c", line 2888: remark(1552): parameter "version" was set but never used
by using UNUSED() rather than setting variables to unused values.