var searchIndex = {}; searchIndex["trust_dns"] = {"doc":"","items":[[5,"version","trust_dns","",null,{"inputs":[],"output":{"name":"str"}}],[0,"logger","","",null,null],[3,"TrustDnsLogger","trust_dns::logger","",null,null],[11,"new","","",0,{"inputs":[{"name":"loglevel"}],"output":{"name":"trustdnslogger"}}],[11,"init","","",0,null],[11,"enable_logging","","",0,{"inputs":[{"name":"loglevel"}],"output":null}],[11,"enabled","","",0,null],[11,"log","","",0,null],[0,"rr","trust_dns","",null,null],[0,"record_type","trust_dns::rr","",null,null],[4,"RecordType","trust_dns::rr::record_type","",null,null],[13,"A","","",1,null],[13,"AAAA","","",1,null],[13,"CNAME","","",1,null],[13,"MX","","",1,null],[13,"NS","","",1,null],[13,"NULL","","",1,null],[13,"PTR","","",1,null],[13,"SOA","","",1,null],[13,"SRV","","",1,null],[13,"TXT","","",1,null],[13,"ANY","","",1,null],[13,"AXFR","","",1,null],[13,"IXFR","","",1,null],[13,"OPT","","",1,null],[11,"clone","","",1,null],[11,"cmp","","",1,null],[11,"partial_cmp","","",1,null],[11,"hash","","",1,null],[11,"eq","","",1,null],[11,"fmt","","",1,null],[11,"from_str","","Convert from RecordType to &str",1,{"inputs":[{"name":"str"}],"output":{"name":"decoderesult"}}],[11,"from_u16","","Convert from RecordType to &str",1,{"inputs":[{"name":"u16"}],"output":{"name":"decoderesult"}}],[11,"read","","",1,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",1,null],[0,"dns_class","trust_dns::rr","",null,null],[4,"DNSClass","trust_dns::rr::dns_class","",null,null],[13,"IN","","",2,null],[13,"CH","","",2,null],[13,"HS","","",2,null],[13,"NONE","","",2,null],[13,"ANY","","",2,null],[11,"clone","","",2,null],[11,"cmp","","",2,null],[11,"partial_cmp","","",2,null],[11,"hash","","",2,null],[11,"eq","","",2,null],[11,"fmt","","",2,null],[11,"from_str","","Convert from &str to DNSClass",2,{"inputs":[{"name":"str"}],"output":{"name":"decoderesult"}}],[11,"from_u16","","Convert from u16 to DNSClass",2,{"inputs":[{"name":"u16"}],"output":{"name":"decoderesult"}}],[11,"read","","",2,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",2,null],[0,"resource","trust_dns::rr","",null,null],[3,"Record","trust_dns::rr::resource","",null,null],[11,"clone","","",3,null],[11,"fmt","","",3,null],[11,"cmp","","",3,null],[11,"partial_cmp","","",3,null],[11,"lt","","",3,null],[11,"le","","",3,null],[11,"gt","","",3,null],[11,"ge","","",3,null],[11,"hash","","",3,null],[11,"new","","Creates a not very useful empty record, use the setters to build a more useful object\nThere are no optional elements in this object, defaults are an empty name, type A, class IN,\nttl of 0 and the 0.0.0.0 ip address.",3,{"inputs":[],"output":{"name":"record"}}],[11,"name","","",3,null],[11,"add_name","","",3,null],[11,"rr_type","","",3,null],[11,"dns_class","","",3,null],[11,"ttl","","",3,null],[11,"rdata","","",3,null],[11,"get_name","","",3,null],[11,"get_rr_type","","",3,null],[11,"get_dns_class","","",3,null],[11,"get_ttl","","",3,null],[11,"get_rdata","","",3,null],[11,"read","","parse a resource record line example:\nWARNING: the record_bytes is 100% consumed and destroyed in this parsing process",3,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",3,null],[11,"eq","","",3,null],[11,"ne","","",3,null],[0,"record_data","trust_dns::rr","",null,null],[4,"RData","trust_dns::rr::record_data","",null,null],[13,"CNAME","","",4,null],[12,"cname","trust_dns::rr::record_data::RData","",4,null],[13,"HINFO","trust_dns::rr::record_data","",4,null],[12,"cpu","trust_dns::rr::record_data::RData","",4,null],[12,"os","","",4,null],[13,"MX","trust_dns::rr::record_data","",4,null],[12,"preference","trust_dns::rr::record_data::RData","",4,null],[12,"exchange","","",4,null],[13,"NULL","trust_dns::rr::record_data","",4,null],[12,"anything","trust_dns::rr::record_data::RData","",4,null],[13,"NS","trust_dns::rr::record_data","",4,null],[12,"nsdname","trust_dns::rr::record_data::RData","",4,null],[13,"PTR","trust_dns::rr::record_data","",4,null],[12,"ptrdname","trust_dns::rr::record_data::RData","",4,null],[13,"SOA","trust_dns::rr::record_data","",4,null],[12,"mname","trust_dns::rr::record_data::RData","",4,null],[12,"rname","","",4,null],[12,"serial","","",4,null],[12,"refresh","","",4,null],[12,"retry","","",4,null],[12,"expire","","",4,null],[12,"minimum","","",4,null],[13,"SRV","trust_dns::rr::record_data","",4,null],[12,"priority","trust_dns::rr::record_data::RData","",4,null],[12,"weight","","",4,null],[12,"port","","",4,null],[12,"target","","",4,null],[13,"TXT","trust_dns::rr::record_data","",4,null],[12,"txt_data","trust_dns::rr::record_data::RData","",4,null],[13,"A","trust_dns::rr::record_data","",4,null],[12,"address","trust_dns::rr::record_data::RData","",4,null],[13,"WKS","trust_dns::rr::record_data","",4,null],[12,"address","trust_dns::rr::record_data::RData","",4,null],[12,"protocol","","",4,null],[12,"bitmap","","",4,null],[13,"AAAA","trust_dns::rr::record_data","",4,null],[12,"address","trust_dns::rr::record_data::RData","",4,null],[11,"clone","trust_dns::rr::record_data","",4,null],[11,"hash","","",4,null],[11,"cmp","","",4,null],[11,"partial_cmp","","",4,null],[11,"lt","","",4,null],[11,"le","","",4,null],[11,"gt","","",4,null],[11,"ge","","",4,null],[11,"eq","","",4,null],[11,"ne","","",4,null],[11,"fmt","","",4,null],[11,"parse","","",4,{"inputs":[{"name":"recordtype"},{"name":"vec"},{"name":"option"}],"output":{"name":"parseresult"}}],[11,"read","","",4,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",4,null],[11,"from","trust_dns::rr::record_type","",1,{"inputs":[{"name":"rdata"}],"output":{"name":"self"}}],[0,"domain","trust_dns::rr","",null,null],[3,"Name","trust_dns::rr::domain","TODO: all Names should be stored in a global "intern" space, and then everything that uses\n them should be through references. As a workaround the Strings are all Rc as well as the array\nTODO: Currently this probably doesn't support binary names, it would be nice to do that.",null,null],[11,"hash","","",5,null],[11,"clone","","",5,null],[11,"cmp","","",5,null],[11,"partial_cmp","","",5,null],[11,"lt","","",5,null],[11,"le","","",5,null],[11,"gt","","",5,null],[11,"ge","","",5,null],[11,"eq","","",5,null],[11,"ne","","",5,null],[11,"fmt","","",5,null],[11,"new","","",5,{"inputs":[],"output":{"name":"self"}}],[11,"label","","",5,null],[11,"with_labels","","",5,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"add_label","","",5,null],[11,"append","","",5,null],[11,"base_name","","Trims off the first part of the name, to help with searching for the domain piece",5,null],[11,"zone_of","","returns true if the name components of self are all present at the end of name",5,null],[11,"parse","","",5,{"inputs":[{"name":"str"},{"name":"option"}],"output":{"name":"parseresult"}}],[11,"read","","parses the chain of labels\n this has a max of 255 octets, with each label being less than 63.\n all names will be stored lowercase internally.\nThis will consume the portions of the Vec which it is reading...",5,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",5,null],[11,"fmt","","",5,null],[11,"index","","",5,null],[0,"authority","trust_dns","The catalog module has the types necessary for storing and caching authoritative records.",null,null],[3,"Authority","trust_dns::authority","Authority is the storage method for all resource records",null,null],[3,"Catalog","","",null,null],[4,"ZoneType","","",null,null],[13,"Master","","",6,null],[13,"Slave","","",6,null],[13,"Hint","","",6,null],[13,"Forward","","",6,null],[11,"fmt","","",7,null],[11,"new","","",7,{"inputs":[{"name":"name"},{"name":"hashmap"},{"name":"zonetype"},{"name":"bool"}],"output":{"name":"authority"}}],[11,"get_origin","","",7,null],[11,"get_zone_type","","",7,null],[11,"get_soa","","",7,null],[11,"get_ns","","",7,null],[11,"update","","",7,null],[11,"upsert","","upserts into the resource vector\nGuarantees that SOA, CNAME only has one record, will implicitly update if they already exist",7,null],[11,"lookup","","",7,null],[11,"fmt","","",8,null],[11,"new","","",8,{"inputs":[],"output":{"name":"self"}}],[11,"handle_request","","",8,null],[11,"error_msg","","",8,{"inputs":[{"name":"u16"},{"name":"opcode"},{"name":"responsecode"}],"output":{"name":"message"}}],[11,"upsert","","",8,null],[11,"update","","The "request" should be an update formatted message.\nThe response will be in the alternate, all 0's format described in RFC 2136 section 3.8\nas this is more efficient.",8,null],[11,"lookup","","",8,null],[11,"search","","",8,null],[6,"UpdateResult","","",null,null],[11,"clone","","",6,null],[11,"fmt","","",6,null],[11,"eq","","",6,null],[11,"decode","","",6,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[0,"op","trust_dns","",null,null],[0,"op_code","trust_dns::op","",null,null],[4,"OpCode","trust_dns::op::op_code","",null,null],[13,"Query","","",9,null],[13,"Status","","",9,null],[13,"Notify","","",9,null],[13,"Update","","",9,null],[11,"clone","","",9,null],[11,"partial_cmp","","",9,null],[11,"eq","","",9,null],[11,"fmt","","",9,null],[11,"from","","",9,{"inputs":[{"name":"u8"}],"output":{"name":"self"}}],[0,"response_code","trust_dns::op","",null,null],[4,"ResponseCode","trust_dns::op::response_code","",null,null],[13,"NoError","","",10,null],[13,"FormErr","","",10,null],[13,"ServFail","","",10,null],[13,"NXDomain","","",10,null],[13,"NotImp","","",10,null],[13,"Refused","","",10,null],[13,"YXDomain","","",10,null],[13,"YXRRSet","","",10,null],[13,"NXRRSet","","",10,null],[13,"NotAuth","","",10,null],[13,"NotZone","","",10,null],[13,"BADVERS","","",10,null],[13,"BADSIG","","",10,null],[13,"BADKEY","","",10,null],[13,"BADTIME","","",10,null],[13,"BADMODE","","",10,null],[13,"BADNAME","","",10,null],[13,"BADALG","","",10,null],[13,"BADTRUNC","","",10,null],[13,"BADCOOKIE","","",10,null],[11,"clone","","",10,null],[11,"partial_cmp","","",10,null],[11,"eq","","",10,null],[11,"fmt","","",10,null],[11,"from","","",10,{"inputs":[{"name":"u8"}],"output":{"name":"self"}}],[0,"message","trust_dns::op","",null,null],[3,"Message","trust_dns::op::message","By default Message is a Query. Use the Message::as_update() to create and update, or\nMessage::new_update()",null,null],[8,"UpdateMessage","","",null,null],[10,"add_zone","","",11,null],[10,"add_pre_requisite","","",11,null],[10,"add_all_pre_requisites","","",11,null],[10,"add_update","","",11,null],[10,"add_all_updates","","",11,null],[10,"add_additional","","",11,null],[10,"get_zones","","",11,null],[10,"get_pre_requisites","","",11,null],[10,"get_updates","","",11,null],[10,"get_additional","","",11,null],[11,"eq","","",12,null],[11,"ne","","",12,null],[11,"fmt","","",12,null],[11,"new","","",12,{"inputs":[],"output":{"name":"self"}}],[11,"id","","",12,null],[11,"message_type","","",12,null],[11,"op_code","","",12,null],[11,"authoritative","","",12,null],[11,"truncated","","",12,null],[11,"recursion_desired","","",12,null],[11,"recursion_available","","",12,null],[11,"response_code","","",12,null],[11,"add_query","","",12,null],[11,"add_answer","","",12,null],[11,"add_all_answers","","",12,null],[11,"add_name_server","","",12,null],[11,"add_all_name_servers","","",12,null],[11,"add_additional","","",12,null],[11,"get_id","","",12,null],[11,"get_message_type","","",12,null],[11,"get_op_code","","",12,null],[11,"is_authoritative","","",12,null],[11,"is_truncated","","",12,null],[11,"is_recursion_desired","","",12,null],[11,"is_recursion_available","","",12,null],[11,"get_response_code","","",12,null],[11,"get_queries","","",12,null],[11,"get_answers","","",12,null],[11,"get_name_servers","","",12,null],[11,"get_additional","","",12,null],[11,"update_counts","","this is necessary to match the counts in the header from the record sections\nthis happens implicitly on write_to, so no need to call before write_to",12,null],[11,"add_zone","","",12,null],[11,"add_pre_requisite","","",12,null],[11,"add_all_pre_requisites","","",12,null],[11,"add_update","","",12,null],[11,"add_all_updates","","",12,null],[11,"add_additional","","",12,null],[11,"get_zones","","",12,null],[11,"get_pre_requisites","","",12,null],[11,"get_updates","","",12,null],[11,"get_additional","","",12,null],[11,"read","","",12,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",12,null],[0,"header","trust_dns::op","",null,null],[3,"Header","trust_dns::op::header","",null,null],[4,"MessageType","","",null,null],[13,"Query","","",13,null],[13,"Response","","",13,null],[11,"partial_cmp","","",14,null],[11,"lt","","",14,null],[11,"le","","",14,null],[11,"gt","","",14,null],[11,"ge","","",14,null],[11,"eq","","",14,null],[11,"ne","","",14,null],[11,"fmt","","",14,null],[11,"clone","","",13,null],[11,"partial_cmp","","",13,null],[11,"eq","","",13,null],[11,"fmt","","",13,null],[11,"new","","A default Header, not very useful.",14,{"inputs":[],"output":{"name":"self"}}],[11,"id","","",14,null],[11,"message_type","","",14,null],[11,"op_code","","",14,null],[11,"authoritative","","",14,null],[11,"truncated","","",14,null],[11,"recursion_desired","","",14,null],[11,"recursion_available","","",14,null],[11,"response_code","","",14,null],[11,"query_count","","",14,null],[11,"answer_count","","",14,null],[11,"name_server_count","","",14,null],[11,"additional_count","","",14,null],[11,"get_id","","",14,null],[11,"get_message_type","","",14,null],[11,"get_op_code","","",14,null],[11,"is_authoritative","","",14,null],[11,"is_truncated","","",14,null],[11,"is_recursion_desired","","",14,null],[11,"is_recursion_available","","",14,null],[11,"get_response_code","","",14,null],[11,"get_query_count","","for query this is the count of query records\nfor updates this is the zone count (only 1 allowed)",14,null],[11,"get_answer_count","","for queries this is the answer section and record count\nfor updates this is the prerequisite count",14,null],[11,"get_name_server_count","","for queries this is the nameservers which are authorities for the SOA of the Record\nfor updates this is the update record count",14,null],[11,"get_additional_count","","number of records in the additional section, same for queries and updates.",14,null],[11,"clone","","This is a specialized clone which clones all the fields but the counts\nhandy for setting the count fields before sending over the wire.",14,null],[11,"read","","",14,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",14,null],[0,"query","trust_dns::op","",null,null],[3,"Query","trust_dns::op::query","",null,null],[11,"fmt","","",15,null],[11,"eq","","",15,null],[11,"ne","","",15,null],[11,"new","","return a default query with an empty name and A, IN for the query_type and query_class",15,{"inputs":[],"output":{"name":"self"}}],[11,"name","","replaces name with the new name",15,null],[11,"query_type","","",15,null],[11,"query_class","","",15,null],[11,"get_name","","",15,null],[11,"get_query_type","","",15,null],[11,"get_query_class","","",15,null],[11,"read","","",15,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",15,null],[0,"udp","trust_dns","",null,null],[3,"Client","trust_dns::udp","",null,null],[3,"UdpHandler","","",null,null],[4,"UdpState","","",null,null],[13,"Reading","","",16,null],[13,"Writing","","",16,null],[13,"Done","","",16,null],[11,"new","","name_server to connect to with default port 53",17,{"inputs":[{"name":"ipv4addr"}],"output":{"name":"clientresult"}}],[11,"with_addr","","",17,{"inputs":[{"name":"a"}],"output":{"name":"clientresult"}}],[11,"query","","",17,null],[11,"new_client","","",18,{"inputs":[{"name":"socketaddr"},{"name":"message"}],"output":{"name":"self"}}],[11,"new_server","","",18,{"inputs":[{"name":"udpsocket"},{"name":"arc"}],"output":{"name":"option"}}],[11,"remote_addr","","",18,null],[11,"serialize_msg","","",18,{"inputs":[{"name":"vec"},{"name":"message"}],"output":{"name":"vec"}}],[11,"handle_message","","",18,null],[0,"tcp","trust_dns","",null,null],[3,"TcpHandler","trust_dns::tcp","",null,null],[3,"Client","","",null,null],[4,"TcpState","","",null,null],[13,"WillReadLength","","",19,null],[13,"WillRead","","",19,null],[12,"length","trust_dns::tcp::TcpState","",19,null],[13,"WillWriteLength","trust_dns::tcp","",19,null],[13,"WillWrite","","",19,null],[13,"Done","","",19,null],[11,"new","","name_server to connect to with default port 53",20,{"inputs":[{"name":"ipv4addr"}],"output":{"name":"clientresult"}}],[11,"with_addr","","",20,{"inputs":[{"name":"a"}],"output":{"name":"clientresult"}}],[11,"query","","",20,null],[11,"fmt","","",21,null],[11,"new_client_handler","","initializes this handler with the intention to write first",21,{"inputs":[{"name":"message"},{"name":"tcpstream"},{"name":"arc"}],"output":{"name":"self"}}],[11,"new_server_handler","","initializes this handler with the intention to read first",21,{"inputs":[{"name":"tcpstream"},{"name":"arc"}],"output":{"name":"self"}}],[11,"get_stream","","",21,null],[11,"get_events","","",21,null],[11,"handle_message","","The result may be an error case of ErrorKind::WouldBlock, which means that the handler\nhandler should be put back into the event loop for more processing.",21,null],[11,"reset","","resets the state of the handler to perform more requests if desired.\nclears the buffers and sets the state back to the initial state",21,null],[11,"fmt","","",19,null],[11,"clone","","",19,null],[11,"eq","","",19,null],[11,"ne","","",19,null],[11,"initial_state","","",19,{"inputs":[{"name":"tcptype"}],"output":{"name":"self"}}],[11,"next_state","","",19,null],[0,"server","trust_dns","",null,null],[3,"Server","trust_dns::server","",null,null],[11,"new","","",22,{"inputs":[{"name":"catalog"}],"output":{"name":"server"}}],[11,"register_socket","","register a UDP socket. Should be bound before calling this.",22,null],[11,"register_listener","","register a TcpListener to the Server. This should already be bound to either an IPv6 or an\nIPv4 address.",22,null],[11,"listen","","TODO how to do threads? should we do a bunch of listener threads and then query threads?\nIdeally the processing would be n-threads for recieving, which hand off to m-threads for\n request handling. It would generally be the case that n <= m.",22,null],[11,"ready","","",22,null],[11,"interrupted","","",22,null],[0,"error","trust_dns","",null,null],[4,"DecodeError","trust_dns::error","",null,null],[13,"ParseUtf8Error","","",23,null],[13,"UnknownDnsClassValue","","",23,null],[13,"UnknownDnsClassStr","","",23,null],[13,"UnknownRecordTypeValue","","",23,null],[13,"UnknownRecordTypeStr","","",23,null],[13,"NoRecordDataType","","",23,null],[13,"NoRecordDataLength","","",23,null],[13,"EOF","","",23,null],[4,"EncodeError","","",null,null],[13,"CharacterDataTooLong","","",24,null],[13,"LabelBytesTooLong","","",24,null],[13,"DomainNameTooLong","","",24,null],[4,"ClientError","","",null,null],[13,"DecodeError","","",25,null],[13,"EncodeError","","",25,null],[13,"IoError","","",25,null],[13,"NotAllBytesSent","","",25,null],[12,"sent","trust_dns::error::ClientError","",25,null],[12,"expect","","",25,null],[13,"NotAllBytesReceived","trust_dns::error","",25,null],[12,"received","trust_dns::error::ClientError","",25,null],[12,"expect","","",25,null],[13,"IncorrectMessageId","trust_dns::error","",25,null],[12,"got","trust_dns::error::ClientError","",25,null],[12,"expect","","",25,null],[13,"TimedOut","trust_dns::error","",25,null],[13,"NoAddress","","",25,null],[13,"NoNameServer","","",25,null],[13,"TimerError","","",25,null],[13,"NoDataReceived","","",25,null],[4,"LexerError","","",null,null],[13,"ParseUtf8Error","","",26,null],[13,"EscapedCharOutsideCharData","","",26,null],[13,"IllegalCharacter","","",26,null],[13,"UnrecognizedChar","","",26,null],[13,"BadEscapedData","","",26,null],[13,"UnrecognizedOctet","","",26,null],[13,"ParseIntError","","",26,null],[13,"UnclosedQuotedString","","",26,null],[13,"UnclosedList","","",26,null],[13,"UnrecognizedDollar","","",26,null],[13,"EOF","","",26,null],[13,"IllegalState","","",26,null],[4,"ParseError","","",null,null],[13,"LexerError","","",27,null],[13,"DecodeError","","",27,null],[13,"UnexpectedToken","","",27,null],[13,"OriginIsUndefined","","",27,null],[13,"RecordTypeNotSpecified","","",27,null],[13,"RecordNameNotSpecified","","",27,null],[13,"RecordClassNotSpecified","","",27,null],[13,"RecordTTLNotSpecified","","",27,null],[13,"RecordDataNotSpecified","","",27,null],[13,"SoaAlreadySpecified","","",27,null],[13,"MissingToken","","",27,null],[13,"IoError","","",27,null],[13,"ParseIntError","","",27,null],[13,"AddrParseError","","",27,null],[13,"CharToIntError","","",27,null],[13,"ParseTimeError","","",27,null],[4,"ConfigError","","",null,null],[13,"IoError","","",28,null],[13,"ParserError","","",28,null],[13,"VecParserError","","",28,null],[13,"DecodeError","","",28,null],[11,"fmt","","",23,null],[11,"fmt","","",23,null],[11,"description","","",23,null],[11,"cause","","",23,null],[11,"from","","",23,{"inputs":[{"name":"fromutf8error"}],"output":{"name":"decodeerror"}}],[11,"fmt","","",24,null],[11,"fmt","","",24,null],[11,"description","","",24,null],[11,"cause","","",24,null],[11,"fmt","","",25,null],[11,"fmt","","",25,null],[11,"description","","",25,null],[11,"cause","","",25,null],[11,"from","","",25,{"inputs":[{"name":"decodeerror"}],"output":{"name":"self"}}],[11,"from","","",25,{"inputs":[{"name":"encodeerror"}],"output":{"name":"self"}}],[11,"from","","",25,{"inputs":[{"name":"error"}],"output":{"name":"self"}}],[11,"fmt","","",26,null],[11,"fmt","","",26,null],[11,"description","","",26,null],[11,"cause","","",26,null],[11,"from","","",26,{"inputs":[{"name":"fromutf8error"}],"output":{"name":"lexererror"}}],[11,"from","","",26,{"inputs":[{"name":"parseinterror"}],"output":{"name":"lexererror"}}],[11,"fmt","","",27,null],[11,"fmt","","",27,null],[11,"description","","",27,null],[11,"cause","","",27,null],[11,"from","","",27,{"inputs":[{"name":"lexererror"}],"output":{"name":"parseerror"}}],[11,"from","","",27,{"inputs":[{"name":"decodeerror"}],"output":{"name":"parseerror"}}],[11,"from","","",27,{"inputs":[{"name":"error"}],"output":{"name":"parseerror"}}],[11,"from","","",27,{"inputs":[{"name":"parseinterror"}],"output":{"name":"parseerror"}}],[11,"from","","",27,{"inputs":[{"name":"addrparseerror"}],"output":{"name":"parseerror"}}],[11,"fmt","","",28,null],[11,"fmt","","",28,null],[11,"description","","",28,null],[11,"cause","","",28,null],[11,"from","","",28,{"inputs":[{"name":"error"}],"output":{"name":"self"}}],[11,"from","","",28,{"inputs":[{"name":"parsererror"}],"output":{"name":"self"}}],[11,"from","","",28,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"from","","",28,{"inputs":[{"name":"decodeerror"}],"output":{"name":"self"}}],[6,"DecodeResult","","",null,null],[6,"EncodeResult","","",null,null],[6,"ClientResult","","",null,null],[6,"LexerResult","","",null,null],[6,"ParseResult","","",null,null],[6,"ConfigResult","","",null,null],[0,"serialize","trust_dns","",null,null],[0,"binary","trust_dns::serialize","",null,null],[3,"BinDecoder","trust_dns::serialize::binary","This is non-destructive to the inner buffer, b/c for pointer types we need to perform a reverse\n seek to lookup names",null,null],[3,"BinEncoder","","Encode DNS messages and resource record types.",null,null],[11,"new","","",29,null],[11,"set_record_type","","",29,null],[11,"set_rdata_length","","",29,null],[11,"record_type","","",29,null],[11,"rdata_length","","",29,null],[11,"pop","","",29,null],[11,"len","","",29,null],[11,"peek","","",29,null],[11,"clone","","This is a pretty efficient clone, as the buffer is never cloned, and only the index is set\nto the value passed in",29,null],[11,"read_character_data","","<character-string> is a single\nlength octet followed by that number of characters. <character-string>\nis treated as binary information, and can be up to 256 characters in\nlength (including the length octet).",29,null],[11,"read_u16","","parses the next 2 bytes into u16. This performs a byte-by-byte manipulation, there\n which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)",29,null],[11,"read_i32","","parses the next four bytes into i32. This performs a byte-by-byte manipulation, there\n which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)",29,null],[11,"read_u32","","parses the next four bytes into u32. This performs a byte-by-byte manipulation, there\n which means endianness is implicitly handled (i.e. no network to little endian (intel), issues)",29,null],[11,"new","","",30,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"with_offset","","offset is used mainly for pointers. If this encoder is starting at some point further in\nthe sequence of bytes, for the proper offset of the pointer, the offset accounts for that\nby using the offset to add to the pointer location being written.",30,{"inputs":[{"name":"vec"},{"name":"u32"}],"output":{"name":"self"}}],[11,"as_bytes","","",30,null],[11,"len","","",30,null],[11,"offset","","",30,null],[11,"reserve","","",30,null],[11,"emit","","",30,null],[11,"store_label_pointer","","store the label pointer, the location is the current position in the buffer\nimplicitly, it is expected that the name will be written to the stream after this.",30,null],[11,"get_label_pointer","","",30,null],[11,"emit_character_data","","matches description from above.",30,null],[11,"emit_u16","","",30,null],[11,"emit_i32","","",30,null],[11,"emit_u32","","",30,null],[8,"BinSerializable","","",null,null],[10,"read","","",31,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[10,"emit","","",31,null],[0,"txt","trust_dns::serialize","",null,null],[3,"Parser","trust_dns::serialize::txt","",null,null],[3,"Lexer","","",null,null],[4,"Token","","",null,null],[13,"Blank","","",32,null],[13,"List","","",32,null],[13,"CharData","","",32,null],[13,"At","","",32,null],[13,"Include","","",32,null],[13,"Origin","","",32,null],[13,"Ttl","","",32,null],[13,"EOL","","",32,null],[11,"new","","",33,{"inputs":[{"name":"str"}],"output":{"name":"lexer"}}],[11,"next_token","","",33,null],[11,"clone","","",32,null],[11,"fmt","","",32,null],[11,"eq","","",32,null],[11,"ne","","",32,null],[11,"new","","",34,{"inputs":[],"output":{"name":"self"}}],[11,"parse_file","","",34,{"inputs":[{"name":"file"},{"name":"option"},{"name":"zonetype"},{"name":"bool"}],"output":{"name":"parseresult"}}],[11,"parse","","",34,null],[11,"parse_time","","parses the string following the rules from:\n https://tools.ietf.org/html/rfc2308 (NXCaching RFC) and\n http://www.zytrax.com/books/dns/apa/time.html",34,{"inputs":[{"name":"str"}],"output":{"name":"parseresult"}}],[0,"config","trust_dns","",null,null],[3,"Config","trust_dns::config","",null,null],[3,"ZoneConfig","","",null,null],[11,"fmt","","",35,null],[11,"decode","","",35,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"read_config","","read a Config file from the file specified at path.",35,{"inputs":[{"name":"path"}],"output":{"name":"configresult"}}],[11,"get_listen_addrs_ipv4","","",35,null],[11,"get_listen_addrs_ipv6","","",35,null],[11,"get_listen_port","","",35,null],[11,"get_log_level","","",35,null],[11,"get_directory","","",35,null],[11,"get_zones","","",35,null],[11,"from_str","","",35,{"inputs":[{"name":"str"}],"output":{"name":"configresult"}}],[11,"fmt","","",36,null],[11,"eq","","",36,null],[11,"ne","","",36,null],[11,"decode","","",36,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"get_zone","","",36,null],[11,"get_zone_type","","",36,null],[11,"get_file","","",36,null],[11,"get_allow_udpate","","",36,null]],"paths":[[3,"TrustDnsLogger"],[4,"RecordType"],[4,"DNSClass"],[3,"Record"],[4,"RData"],[3,"Name"],[4,"ZoneType"],[3,"Authority"],[3,"Catalog"],[4,"OpCode"],[4,"ResponseCode"],[8,"UpdateMessage"],[3,"Message"],[4,"MessageType"],[3,"Header"],[3,"Query"],[4,"UdpState"],[3,"Client"],[3,"UdpHandler"],[4,"TcpState"],[3,"Client"],[3,"TcpHandler"],[3,"Server"],[4,"DecodeError"],[4,"EncodeError"],[4,"ClientError"],[4,"LexerError"],[4,"ParseError"],[4,"ConfigError"],[3,"BinDecoder"],[3,"BinEncoder"],[8,"BinSerializable"],[4,"Token"],[3,"Lexer"],[3,"Parser"],[3,"Config"],[3,"ZoneConfig"]]}; initSearch(searchIndex);