extern crate libc;
use self::libc::c_int;
#[derive(PartialEq,Debug,Clone)]
pub enum Type {
A = 1,
NS = 2,
MD = 3,
MF = 4,
CNAME = 5,
SOA = 6,
MB = 7,
MG = 8,
MR = 9,
NULL = 10,
WKS = 11,
PTR = 12,
HINFO = 13,
MINFO = 14,
MX = 15,
TXT = 16,
AAAA = 28,
SRV = 33,
AXFR = 252,
MAILB = 253,
MAILA = 254,
ALL = 255,
}
#[derive(PartialEq,Debug,Clone)]
pub enum Class {
INET = 1,
CSNET = 2,
CHAOS = 3,
HESIOD = 4,
ANY = 255,
}
#[derive(PartialEq,Debug,Clone)]
pub enum Rcode {
Success = 0,
FormatError = 1,
ServerFailure = 2,
NameError = 3,
NotImplemented = 4,
Refused = 5,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub enum ns_sect_q {
ns_s_qd = 0,
ns_s_an = 1,
ns_s_ns = 2,
ns_s_ar = 3,
ns_s_max = 4
}
#[repr(C)]
pub struct ns_rr {
pub name: [u8;1025],
pub typef: u16,
pub rr_class: u16,
pub ttl: u32,
pub rdlength: u16,
pub rdata: *const u8,
}
impl Default for ns_rr {
fn default() -> ns_rr {
ns_rr {
name: [0u8;1025],
typef: 0,
rr_class: 0,
ttl: 0,
rdlength: 0,
rdata: 0 as *const u8,
}
}
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct ns_msg {
pub msg: *const u8,
pub eom: *const u8,
pub id: u16,
pub flags: u16,
pub counts: [u16;4],
pub sections: [*const u8;4],
pub sect: ns_sect_q,
pub rrnum: c_int,
pub msg_ptr: *const u8,
}
impl Default for ns_msg {
fn default() -> ns_msg {
ns_msg {
msg: 0 as *const u8,
eom: 0 as *const u8,
id: 0,
flags: 0,
counts: [0,0,0,0],
sections: [0 as *const u8, 0 as *const u8, 0 as *const u8, 0 as *const u8],
sect: ns_sect_q::ns_s_qd,
rrnum: 0,
msg_ptr: 0 as *const u8,
}
}
}