API Incompatibilities
A list of API incompatibilities between Nagios 3 and Naemon.
Global Variables
event_list_{high,low}andevent_list_{high,low}_tailare no more. Instead there issqueue_t *nagios_sqeueue, which is a single queue to handle all timed events.last_command_check,command_check_interval,external_command_bufferandexternal_command_buffer_slotsare no more.check_result_listis no morepassive_check_result_listandpassive_check_result_list_tailare no more.
Data Structures
- All primary objects have been given an
idfield, which can be used to store additional data about each object, or mark them in bitmaps, or... - Container-ish pointers have been removed pretty much everywhere in favour of testable libraries with specific lookup properties and containers. This means
next_hashetc no longer exist in any object. Thenextpointers in primary objects still remain, but you should avoid using them in favour of iterating over objects using the object arrays. nextandprevhave been removed fromtimed_event. It's no longer possible to sanely loop over all queued elements, since the squeue library keeps its types opaque. Adding ansqueue_foreach()thing would be as simple as running a breadth-first search in the pqueue library that drives the squeue implementation.- The
scheduled_downtimedata type now hasstart_eventandstop_event. nebstruct_program_status_datano longer has alast_command_checkvar.- The
passive_service_checkdata type is no more. - The data type
circular_bufferhas been removed. - The host object's
notify_on_down,notify_on_up,notify_on_blablahvariables have been replaced with a singlenotification_optionsfield instead, which is a small hand-managed bitmask of the states we should notify on, based on1 << current_state. - As per above, with
flap_detection_options - As per above, with
stalking_options - As per the three above, with services
- As per above, with dependencies which now have a
failure_optionsfield instead of multiplefail_on_foofields. - As per above with escalations, which now have an
escalation_optionsfield instead of multipleescalate on foofields.
Functions
- Event queue management functions have been significantly altered to match the new scheduling queue implementation.
add_event(),remove_event(),reschedule_event()andschedule_new_event()are the primary ones. submit_external_command()andsubmit_raw_external_command()have been removed, as hascheck_for_external_commands().- All functions handling adding and removing objects to circular buffers or other types of linked lists used for searching have been removed.
- The
*host*_3x()functions are gone. They have been replaced with versions without the_3xsuffix. run_sync_host_check_3x()is gone.perform_on_demand_host_check(), which previously only calledrun_sync_host_check_3x(), now does something sensible instead of calling out to a single helper.- Using the
struct host_struct *fooform of type-naming has been obsoleted and will no longer work. Usestruct hostinstead. - Use of typedef'ed typenames for non-opaque structures is now deprecated. The typedef's will be removed in future Naemon releases, and modules that wish to continue using them after that will have to add them themselves. The new preferred form is
struct host *foo, which clearly shows that we're dealing with a non-opaque type.