Documentation
#![feature(ip)]

#[macro_use]
pub mod util {
	#[macro_use]
	mod macros;
	pub mod channel;
	pub use channel::*;
	pub mod misc;
	pub use misc::*;
	pub mod sleep;
	pub use sleep::Sleeper;
	pub mod task;
	pub use task::*;
}
//pub mod cache;
pub mod config;
pub mod control {
	pub mod argument;
	pub use argument::*;
	pub mod command;
	pub use command::{
		Command,
		Response
	};
	pub mod request;
	pub use request::{
		AnyRequest,
		DaemonReq,
		NodeReq,
		MirrorReq,
		DispatcherReq,
		RouterReq,

		NodeJoinRequest,
		CnsprcyStatus,
		Conspirator
	};
	pub mod socket;
	pub use socket::{
		ClientSocket,
		ControlSocket
	};
}
pub mod daemon;
pub mod event {
	pub mod events;
	pub use events::*;
	pub mod dispatch;
	pub use dispatch::{
		Dispatcher,
		DispatcherSetup,
		Interest
	};
	pub mod handle;
	pub use handle::launch;
	pub mod load;
	pub use load::{
		DirectoryType,
		get_all_entries,
		parse_all
	};
}
pub mod host {
	pub mod device;
	pub mod netlink;
}
pub mod message;
pub mod net {
	pub mod address;
	pub use address::InterfaceAddress;
	pub use address::InterfaceRoute;
	pub mod chacha20;
	pub use chacha20::Server as ChaCha20Server;
	pub mod mirror;
	pub use mirror::Mirror;
	pub mod interface;
	pub mod router;
	pub use router::Router;
	pub use router::RouterSetup;
}
pub mod node;
pub mod store;
#[cfg(test)]
mod tests;
pub mod peer {
	pub mod address;
	pub use address::Address;
	pub mod data;
	pub use data::Peer;
	pub use data::LinkUpdateResult;
	pub mod id;
	pub use id::NodeID;
	pub mod induct;
	pub use induct::Invitation;
	pub mod link;
	pub mod status;
	pub use status::Status;
	pub use status::PeerState;
	pub use status::AtomicClock;
	pub use status::Clock;
}