mod kind;
pub use self::kind::Kind;
pub mod code;
mod packet;
pub use self::packet::Packet;
mod builder;
pub use self::builder::Builder;
pub mod echo;
pub mod information;
pub mod parameter_problem;
pub mod previous;
pub mod redirect_message;
pub mod timestamp;
pub fn checksum(buffer: &[u8]) -> u16 {
use std::io::Cursor;
use byteorder::{ReadBytesExt, BigEndian};
let mut result = 0xffffu32;
let mut buffer = Cursor::new(buffer);
while let Ok(value) = buffer.read_u16::<BigEndian>() {
if buffer.position() == 4 {
continue;
}
result += u32::from(value);
if result > 0xffff {
result -= 0xffff;
}
}
!result as u16
}