API Incompatibilities 
A list of API incompatibilities between Nagios 3 and Naemon.
Global Variables 
- event_list_{high,low}and- event_list_{high,low}_tailare no more. Instead there is- squeue_t *nagios_sqeueue, which is a single queue to handle all timed events.
- last_command_check,- command_check_interval,- external_command_bufferand- external_command_buffer_slotsare no more.
- check_result_listis no more
- passive_check_result_listand- passive_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.
- nextand- prevhave been removed from- timed_event. It's no longer possible to sanely loop over all queued elements, since the squeue library keeps its types opaque. Adding an- squeue_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 a- last_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()and- submit_raw_external_command()have been removed, as has- check_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 called- run_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.