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,"ANY","","",1,null],[13,"AXFR","","",1,null],[13,"CNAME","","",1,null],[13,"DNSKEY","","",1,null],[13,"DS","","",1,null],[13,"IXFR","","",1,null],[13,"MX","","",1,null],[13,"NS","","",1,null],[13,"NULL","","",1,null],[13,"NSEC","","",1,null],[13,"NSEC3","","",1,null],[13,"NSEC3PARAM","","",1,null],[13,"OPT","","",1,null],[13,"PTR","","",1,null],[13,"RRSIG","","",1,null],[13,"SIG","","",1,null],[13,"SOA","","",1,null],[13,"SRV","","",1,null],[13,"TXT","","",1,null],[11,"clone","","",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],[11,"partial_cmp","","",1,null],[11,"cmp","","",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],[13,"OPT","","",2,null],[11,"clone","","",2,null],[11,"hash","","",2,null],[11,"eq","","",2,null],[11,"ne","","",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,"for_opt","","",2,{"inputs":[{"name":"u16"}],"output":{"name":"self"}}],[11,"read","","",2,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",2,null],[11,"partial_cmp","","",2,null],[11,"cmp","","",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,"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],[11,"partial_cmp","","",3,null],[0,"record_data","trust_dns::rr","",null,null],[4,"RData","trust_dns::rr::record_data","3.3. Standard RRs",null,null],[13,"A","","",4,null],[12,"address","trust_dns::rr::record_data::RData","",4,null],[13,"AAAA","trust_dns::rr::record_data","",4,null],[12,"address","trust_dns::rr::record_data::RData","",4,null],[13,"CNAME","trust_dns::rr::record_data","",4,null],[12,"cname","trust_dns::rr::record_data::RData","",4,null],[13,"DNSKEY","trust_dns::rr::record_data","",4,null],[12,"zone_key","trust_dns::rr::record_data::RData","",4,null],[12,"secure_entry_point","","",4,null],[12,"revoke","","",4,null],[12,"algorithm","","",4,null],[12,"public_key","","",4,null],[13,"DS","trust_dns::rr::record_data","",4,null],[12,"key_tag","trust_dns::rr::record_data::RData","",4,null],[12,"algorithm","","",4,null],[12,"digest_type","","",4,null],[12,"digest","","",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,"NSEC","trust_dns::rr::record_data","",4,null],[12,"next_domain_name","trust_dns::rr::record_data::RData","",4,null],[12,"type_bit_maps","","",4,null],[13,"NSEC3","trust_dns::rr::record_data","",4,null],[12,"hash_algorithm","trust_dns::rr::record_data::RData","",4,null],[12,"opt_out","","",4,null],[12,"iterations","","",4,null],[12,"salt","","",4,null],[12,"next_hashed_owner_name","","",4,null],[12,"type_bit_maps","","",4,null],[13,"NSEC3PARAM","trust_dns::rr::record_data","",4,null],[12,"hash_algorithm","trust_dns::rr::record_data::RData","",4,null],[12,"opt_out","","",4,null],[12,"iterations","","",4,null],[12,"salt","","",4,null],[13,"OPT","trust_dns::rr::record_data","",4,null],[12,"option_rdata","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,"SIG","trust_dns::rr::record_data","",4,null],[12,"type_covered","trust_dns::rr::record_data::RData","",4,null],[12,"algorithm","","",4,null],[12,"num_labels","","",4,null],[12,"original_ttl","","",4,null],[12,"sig_expiration","","",4,null],[12,"sig_inception","","",4,null],[12,"key_tag","","",4,null],[12,"signer_name","","",4,null],[12,"sig","","",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],[11,"clone","trust_dns::rr::record_data","",4,null],[11,"hash","","",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"},{"name":"recordtype"},{"name":"u16"}],"output":{"name":"decoderesult"}}],[11,"emit","","",4,null],[11,"partial_cmp","","",4,null],[11,"cmp","","",4,null],[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,"eq","","",5,null],[11,"ne","","",5,null],[11,"fmt","","",5,null],[11,"new","","",5,{"inputs":[],"output":{"name":"self"}}],[11,"root","","",5,{"inputs":[],"output":{"name":"self"}}],[11,"is_root","","",5,null],[11,"label","","inline builder",5,null],[11,"with_labels","","for mutating over time",5,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"prepend_label","","prepend the String to the label",5,null],[11,"add_label","","appends the String to this label at the end",5,null],[11,"append","","appends the other to this name",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,"num_labels","","",5,null],[11,"len","","returns the length in bytes of the labels. '.' counts as 1",5,null],[11,"parse","","",5,{"inputs":[{"name":"str"},{"name":"option"}],"output":{"name":"parseresult"}}],[11,"emit_as_canonical","","",5,null],[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],[11,"partial_cmp","","",5,null],[11,"cmp","","",5,null],[0,"dnssec","trust_dns::rr","",null,null],[3,"Signer","trust_dns::rr::dnssec","",null,null],[3,"SupportedAlgorithms","","",null,null],[3,"TrustAnchor","","",null,null],[4,"Algorithm","","",null,null],[13,"RSASHA1","","DO NOT USE, SHA1 is a compromised hashing function, it is here for backward compatability",6,null],[13,"RSASHA256","","",6,null],[13,"RSASHA1NSEC3SHA1","","DO NOT USE, SHA1 is a compromised hashing function, it is here for backward compatability",6,null],[13,"RSASHA512","","",6,null],[4,"DigestType","","",null,null],[13,"SHA1","","",7,null],[13,"SHA256","","",7,null],[13,"SHA384","","",7,null],[13,"SHA512","","",7,null],[4,"Nsec3HashAlgorithm","","",null,null],[13,"SHA1","","",8,null],[11,"fmt","","",6,null],[11,"cmp","","",6,null],[11,"partial_cmp","","",6,null],[11,"hash","","",6,null],[11,"eq","","",6,null],[11,"clone","","",6,null],[11,"sign","","",6,null],[11,"verify","","",6,null],[11,"from_u8","","http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml",6,{"inputs":[{"name":"u8"}],"output":{"name":"decoderesult"}}],[11,"hash_len","","length in bytes that the hash portion of this function will produce",6,null],[11,"public_key_from_vec","","",6,null],[11,"public_key_to_vec","","",6,null],[11,"read","","",6,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",6,null],[11,"from","","",6,{"inputs":[{"name":"str"}],"output":{"name":"algorithm"}}],[11,"fmt","","",7,null],[11,"cmp","","",7,null],[11,"partial_cmp","","",7,null],[11,"hash","","",7,null],[11,"eq","","",7,null],[11,"clone","","",7,null],[11,"from_u8","","http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml",7,{"inputs":[{"name":"u8"}],"output":{"name":"decoderesult"}}],[11,"to_hash","","",7,null],[11,"hash","","",7,null],[11,"from","","",7,{"inputs":[{"name":"algorithm"}],"output":{"name":"digesttype"}}],[11,"clone","","",8,null],[11,"hash","","",8,null],[11,"eq","","",8,null],[11,"fmt","","",8,null],[11,"from_u8","","http://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml",8,{"inputs":[{"name":"u8"}],"output":{"name":"decoderesult"}}],[11,"hash","","",8,null],[11,"new","","",9,{"inputs":[{"name":"algorithm"},{"name":"pkey"},{"name":"name"}],"output":{"name":"self"}}],[11,"get_algorithm","","",9,null],[11,"get_signer_name","","",9,null],[11,"calculate_key_tag","","",9,null],[11,"sign_message","","4.1.8.1 Calculating Transaction and Request SIGs",9,null],[11,"hash_rrset","","name is the the name of the records in the rrset",9,null],[11,"verify","","verifies the hash matches the signature with the current key.",9,null],[11,"clone","","",10,null],[11,"eq","","",10,null],[11,"ne","","",10,null],[11,"partial_cmp","","",10,null],[11,"lt","","",10,null],[11,"le","","",10,null],[11,"gt","","",10,null],[11,"ge","","",10,null],[11,"fmt","","",10,null],[11,"new","","",10,{"inputs":[],"output":{"name":"self"}}],[11,"all","","",10,{"inputs":[],"output":{"name":"self"}}],[11,"set","","",10,null],[11,"has","","",10,null],[11,"iter","","",10,null],[11,"len","","",10,null],[11,"from","","",10,null],[11,"new","","",11,{"inputs":[],"output":{"name":"trustanchor"}}],[11,"contains","","",11,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","","",12,null],[13,"Slave","","",12,null],[13,"Hint","","",12,null],[13,"Forward","","",12,null],[11,"fmt","","",13,null],[11,"new","","",13,{"inputs":[{"name":"name"},{"name":"hashmap"},{"name":"zonetype"},{"name":"bool"}],"output":{"name":"authority"}}],[11,"get_origin","","",13,null],[11,"get_zone_type","","",13,null],[11,"get_soa","","",13,null],[11,"get_ns","","",13,null],[11,"update","","",13,null],[11,"upsert","","upserts into the resource vector\nGuarantees that SOA, CNAME only has one record, will implicitly update if they already exist",13,null],[11,"lookup","","",13,null],[11,"fmt","","",14,null],[11,"new","","",14,{"inputs":[],"output":{"name":"self"}}],[11,"handle_request","","",14,null],[11,"error_msg","","",14,{"inputs":[{"name":"u16"},{"name":"opcode"},{"name":"responsecode"}],"output":{"name":"message"}}],[11,"upsert","","",14,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.",14,null],[11,"lookup","","",14,null],[11,"search","","",14,null],[6,"UpdateResult","","",null,null],[11,"clone","","",12,null],[11,"fmt","","",12,null],[11,"eq","","",12,null],[11,"decode","","",12,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[0,"op","trust_dns","",null,null],[3,"Edns","trust_dns::op","",null,null],[0,"op_code","","",null,null],[4,"OpCode","trust_dns::op::op_code","",null,null],[13,"Query","","",15,null],[13,"Status","","",15,null],[13,"Notify","","",15,null],[13,"Update","","",15,null],[11,"clone","","",15,null],[11,"partial_cmp","","",15,null],[11,"eq","","",15,null],[11,"fmt","","",15,null],[11,"from","","",15,{"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","","",16,null],[13,"FormErr","","",16,null],[13,"ServFail","","",16,null],[13,"NXDomain","","",16,null],[13,"NotImp","","",16,null],[13,"Refused","","",16,null],[13,"YXDomain","","",16,null],[13,"YXRRSet","","",16,null],[13,"NXRRSet","","",16,null],[13,"NotAuth","","",16,null],[13,"NotZone","","",16,null],[13,"BADVERS","","",16,null],[13,"BADSIG","","",16,null],[13,"BADKEY","","",16,null],[13,"BADTIME","","",16,null],[13,"BADMODE","","",16,null],[13,"BADNAME","","",16,null],[13,"BADALG","","",16,null],[13,"BADTRUNC","","",16,null],[13,"BADCOOKIE","","",16,null],[11,"clone","","",16,null],[11,"partial_cmp","","",16,null],[11,"eq","","",16,null],[11,"fmt","","",16,null],[11,"low","","returns the lower 4 bits of the response code (for the original header portion of the code)",16,null],[11,"high","","returns the high 12 bits for the edns portion of the response code",16,null],[11,"from","","",16,{"inputs":[{"name":"u8"},{"name":"u8"}],"output":{"name":"responsecode"}}],[11,"to_str","","",16,null],[11,"from","","",16,{"inputs":[{"name":"u16"}],"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","","to reduce errors in using the Message struct as an Update, this will do the call throughs\nto properly do that.",null,null],[10,"add_zone","","",17,null],[10,"add_pre_requisite","","",17,null],[10,"add_all_pre_requisites","","",17,null],[10,"add_update","","",17,null],[10,"add_all_updates","","",17,null],[10,"add_additional","","",17,null],[10,"get_zones","","",17,null],[10,"get_pre_requisites","","",17,null],[10,"get_updates","","",17,null],[10,"get_additional","","",17,null],[10,"get_sig0","","returns the sig0, i.e. signed record, for verifying the sending and package integrity\n RFC 2535 section 4\nthis should be the final record in the additional section of the Message",17,null],[10,"sign","","",17,null],[11,"eq","","",18,null],[11,"ne","","",18,null],[11,"fmt","","",18,null],[11,"new","","",18,{"inputs":[],"output":{"name":"self"}}],[11,"truncate","","",18,null],[11,"id","","",18,null],[11,"message_type","","",18,null],[11,"op_code","","",18,null],[11,"authoritative","","",18,null],[11,"truncated","","",18,null],[11,"recursion_desired","","",18,null],[11,"recursion_available","","",18,null],[11,"authentic_data","","",18,null],[11,"checking_disabled","","",18,null],[11,"response_code","","",18,null],[11,"add_query","","",18,null],[11,"add_answer","","",18,null],[11,"add_all_answers","","",18,null],[11,"add_name_server","","",18,null],[11,"add_all_name_servers","","",18,null],[11,"add_additional","","",18,null],[11,"set_edns","","",18,null],[11,"add_sig0","","",18,null],[11,"get_id","","",18,null],[11,"get_message_type","","",18,null],[11,"get_op_code","","",18,null],[11,"is_authoritative","","",18,null],[11,"is_truncated","","",18,null],[11,"is_recursion_desired","","",18,null],[11,"is_recursion_available","","",18,null],[11,"is_authentic_data","","",18,null],[11,"is_checking_disabled","","",18,null],[11,"get_response_code","","",18,null],[11,"get_queries","","",18,null],[11,"get_answers","","",18,null],[11,"get_name_servers","","",18,null],[11,"get_additional","","",18,null],[11,"get_edns","","",18,null],[11,"get_max_payload","","",18,null],[11,"get_version","","",18,null],[11,"add_zone","","",18,null],[11,"add_pre_requisite","","",18,null],[11,"add_all_pre_requisites","","",18,null],[11,"add_update","","",18,null],[11,"add_all_updates","","",18,null],[11,"add_additional","","",18,null],[11,"get_zones","","",18,null],[11,"get_pre_requisites","","",18,null],[11,"get_updates","","",18,null],[11,"get_additional","","",18,null],[11,"get_sig0","","",18,null],[11,"sign","","",18,null],[11,"read","","",18,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",18,null],[0,"header","trust_dns::op","",null,null],[3,"Header","trust_dns::op::header","",null,null],[4,"MessageType","","",null,null],[13,"Query","","",19,null],[13,"Response","","",19,null],[11,"partial_cmp","","",20,null],[11,"lt","","",20,null],[11,"le","","",20,null],[11,"gt","","",20,null],[11,"ge","","",20,null],[11,"eq","","",20,null],[11,"ne","","",20,null],[11,"fmt","","",20,null],[11,"clone","","",19,null],[11,"partial_cmp","","",19,null],[11,"eq","","",19,null],[11,"fmt","","",19,null],[11,"new","","A default Header, not very useful.",20,{"inputs":[],"output":{"name":"self"}}],[11,"len","","",20,{"inputs":[],"output":{"name":"usize"}}],[11,"id","","",20,null],[11,"message_type","","",20,null],[11,"op_code","","",20,null],[11,"authoritative","","",20,null],[11,"truncated","","",20,null],[11,"recursion_desired","","",20,null],[11,"recursion_available","","",20,null],[11,"authentic_data","","",20,null],[11,"checking_disabled","","",20,null],[11,"response_code","","",20,null],[11,"query_count","","",20,null],[11,"answer_count","","",20,null],[11,"name_server_count","","",20,null],[11,"additional_count","","",20,null],[11,"get_id","","",20,null],[11,"get_message_type","","",20,null],[11,"get_op_code","","",20,null],[11,"is_authoritative","","",20,null],[11,"is_truncated","","",20,null],[11,"is_recursion_desired","","",20,null],[11,"is_recursion_available","","",20,null],[11,"is_authentic_data","","",20,null],[11,"is_checking_disabled","","",20,null],[11,"get_response_code","","",20,null],[11,"get_query_count","","for query this is the count of query records\nfor updates this is the zone count (only 1 allowed)",20,null],[11,"get_answer_count","","for queries this is the answer section and record count\nfor updates this is the prerequisite count",20,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",20,null],[11,"get_additional_count","","number of records in the additional section, same for queries and updates.",20,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.",20,null],[11,"read","","",20,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",20,null],[0,"query","trust_dns::op","",null,null],[3,"Query","trust_dns::op::query","",null,null],[11,"fmt","","",21,null],[11,"eq","","",21,null],[11,"ne","","",21,null],[11,"new","","return a default query with an empty name and A, IN for the query_type and query_class",21,{"inputs":[],"output":{"name":"self"}}],[11,"name","","replaces name with the new name",21,null],[11,"query_type","","",21,null],[11,"query_class","","",21,null],[11,"get_name","","",21,null],[11,"get_query_type","","",21,null],[11,"get_query_class","","",21,null],[11,"read","","",21,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[11,"emit","","",21,null],[11,"clone","trust_dns::op","",22,null],[11,"eq","","",22,null],[11,"ne","","",22,null],[11,"fmt","","",22,null],[11,"new","","",22,{"inputs":[],"output":{"name":"self"}}],[11,"get_rcode_high","","",22,null],[11,"get_version","","",22,null],[11,"is_dnssec_ok","","",22,null],[11,"get_max_payload","","",22,null],[11,"get_option","","",22,null],[11,"get_options","","",22,null],[11,"set_rcode_high","","",22,null],[11,"set_version","","",22,null],[11,"set_dnssec_ok","","",22,null],[11,"set_max_payload","","",22,null],[11,"set_option","","",22,null],[11,"from","","",22,{"inputs":[{"name":"record"}],"output":{"name":"self"}}],[11,"from","trust_dns::rr::resource","This returns a Resource Record that is formatted for Edns(0).\nNote: the rcode_high value is only part of the rcode, the rest is part of the base",3,{"inputs":[{"name":"edns"}],"output":{"name":"record"}}],[0,"udp","trust_dns","",null,null],[3,"UdpHandler","trust_dns::udp","",null,null],[3,"UdpClientConnection","","",null,null],[4,"UdpState","","",null,null],[13,"Reading","","",23,null],[13,"Writing","","",23,null],[13,"Done","","",23,null],[11,"new_client","","",24,{"inputs":[{"name":"socketaddr"},{"name":"message"}],"output":{"name":"self"}}],[11,"new_server","","",24,{"inputs":[{"name":"udpsocket"},{"name":"arc"}],"output":{"name":"option"}}],[11,"remote_addr","","",24,null],[11,"serialize_msg","","",24,{"inputs":[{"name":"vec"},{"name":"message"}],"output":{"name":"vec"}}],[11,"handle_message","","",24,null],[11,"fmt","","",25,null],[11,"new","","",25,{"inputs":[{"name":"socketaddr"}],"output":{"name":"clientresult"}}],[11,"send","","",25,null],[0,"tcp","trust_dns","",null,null],[3,"TcpHandler","trust_dns::tcp","",null,null],[3,"TcpClientConnection","","",null,null],[4,"TcpState","","",null,null],[13,"WillReadLength","","",26,null],[13,"WillRead","","",26,null],[12,"length","trust_dns::tcp::TcpState","",26,null],[13,"WillWriteLength","trust_dns::tcp","",26,null],[13,"WillWrite","","",26,null],[13,"Done","","",26,null],[11,"fmt","","",27,null],[11,"new_client_handler","","initializes this handler with the intention to write first",27,{"inputs":[{"name":"message"},{"name":"tcpstream"},{"name":"arc"}],"output":{"name":"self"}}],[11,"new_server_handler","","initializes this handler with the intention to read first",27,{"inputs":[{"name":"tcpstream"},{"name":"arc"}],"output":{"name":"self"}}],[11,"get_stream","","",27,null],[11,"get_events","","",27,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.",27,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",27,null],[11,"fmt","","",26,null],[11,"clone","","",26,null],[11,"eq","","",26,null],[11,"ne","","",26,null],[11,"initial_state","","",26,{"inputs":[{"name":"tcptype"}],"output":{"name":"self"}}],[11,"next_state","","",26,null],[11,"fmt","","",28,null],[11,"new","","",28,{"inputs":[{"name":"socketaddr"}],"output":{"name":"clientresult"}}],[11,"send","","",28,null],[0,"client","trust_dns","",null,null],[3,"Client","trust_dns::client","The Client is abstracted over either trust_dns::tcp::TcpClientConnection or\ntrust_dns::udp::UdpClientConnection, usage of TCP or UDP is up to the user. Some DNS servers\ndisallow TCP in some cases, so if TCP double check if UDP works.",null,null],[11,"new","","name_server to connect to with default port 53",29,{"inputs":[{"name":"c"}],"output":{"name":"client"}}],[11,"secure_query","","When the resolver receives an answer via the normal DNS lookup process, it then checks to\nmake sure that the answer is correct. Then starts\nwith verifying the DS and DNSKEY records at the DNS root. Then use the DS\nrecords for the top level domain found at the root, e.g. 'com', to verify the DNSKEY\nrecords in the 'com' zone. From there see if there is a DS record for the\nsubdomain, e.g. 'example.com', in the 'com' zone, and if there is use the\nDS record to verify a DNSKEY record found in the 'example.com' zone. Finally,\nverify the RRSIG record found in the answer for the rrset, e.g. 'www.example.com'.",29,null],[11,"query","","",29,null],[8,"ClientConnection","","",null,null],[10,"send","","send the message to the specified address",30,null],[0,"server","trust_dns","",null,null],[3,"Server","trust_dns::server","",null,null],[11,"new","","",31,{"inputs":[{"name":"catalog"}],"output":{"name":"server"}}],[11,"register_socket","","register a UDP socket. Should be bound before calling this.",31,null],[11,"register_listener","","register a TcpListener to the Server. This should already be bound to either an IPv6 or an\nIPv4 address.",31,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.",31,null],[11,"ready","","",31,null],[11,"interrupted","","",31,null],[0,"error","trust_dns","",null,null],[4,"DecodeError","trust_dns::error","",null,null],[13,"ParseUtf8Error","","",32,null],[13,"UnknownDnsClassValue","","",32,null],[13,"UnknownDnsClassStr","","",32,null],[13,"UnknownRecordTypeValue","","",32,null],[13,"UnknownRecordTypeStr","","",32,null],[13,"UnknownAlgorithmTypeValue","","",32,null],[13,"NoRecordDataType","","",32,null],[13,"NoRecordDataLength","","",32,null],[13,"EOF","","",32,null],[13,"Sig0NotLast","","",32,null],[13,"EdnsNameNotRoot","","",32,null],[13,"DnsKeyProtocolNot3","","",32,null],[13,"UnrecognizedNsec3Flags","","",32,null],[13,"UnrecognizedLabelCode","","",32,null],[13,"IncorrectRDataLengthRead","","",32,null],[13,"BadPublicKey","","",32,null],[13,"SslError","","",32,null],[4,"EncodeError","","",null,null],[13,"CharacterDataTooLong","","",33,null],[13,"LabelBytesTooLong","","",33,null],[13,"DomainNameTooLong","","",33,null],[4,"ClientError","","",null,null],[13,"DecodeError","","",34,null],[13,"EncodeError","","",34,null],[13,"IoError","","",34,null],[13,"NotAllBytesSent","","",34,null],[12,"sent","trust_dns::error::ClientError","",34,null],[12,"expect","","",34,null],[13,"NotAllBytesReceived","trust_dns::error","",34,null],[12,"received","trust_dns::error::ClientError","",34,null],[12,"expect","","",34,null],[13,"IncorrectMessageId","trust_dns::error","",34,null],[12,"got","trust_dns::error::ClientError","",34,null],[12,"expect","","",34,null],[13,"TimedOut","trust_dns::error","",34,null],[13,"NoAddress","","",34,null],[13,"NoNameServer","","",34,null],[13,"TimerError","","",34,null],[13,"NoDataReceived","","",34,null],[13,"ErrorResponse","","",34,null],[13,"NoRRSIG","","",34,null],[13,"NoDNSKEY","","",34,null],[13,"NoDS","","",34,null],[13,"NoSOARecord","","",34,null],[13,"SecNxDomain","","",34,null],[12,"proof","trust_dns::error::ClientError","",34,null],[13,"InvalidNsec","trust_dns::error","",34,null],[13,"InvalidNsec3","","",34,null],[13,"NoNsec","","",34,null],[4,"LexerError","","",null,null],[13,"ParseUtf8Error","","",35,null],[13,"EscapedCharOutsideCharData","","",35,null],[13,"IllegalCharacter","","",35,null],[13,"UnrecognizedChar","","",35,null],[13,"BadEscapedData","","",35,null],[13,"UnrecognizedOctet","","",35,null],[13,"ParseIntError","","",35,null],[13,"UnclosedQuotedString","","",35,null],[13,"UnclosedList","","",35,null],[13,"UnrecognizedDollar","","",35,null],[13,"EOF","","",35,null],[13,"IllegalState","","",35,null],[4,"ParseError","","",null,null],[13,"LexerError","","",36,null],[13,"DecodeError","","",36,null],[13,"UnexpectedToken","","",36,null],[13,"OriginIsUndefined","","",36,null],[13,"RecordTypeNotSpecified","","",36,null],[13,"RecordNameNotSpecified","","",36,null],[13,"RecordClassNotSpecified","","",36,null],[13,"RecordTTLNotSpecified","","",36,null],[13,"RecordDataNotSpecified","","",36,null],[13,"SoaAlreadySpecified","","",36,null],[13,"MissingToken","","",36,null],[13,"IoError","","",36,null],[13,"ParseIntError","","",36,null],[13,"AddrParseError","","",36,null],[13,"CharToIntError","","",36,null],[13,"ParseTimeError","","",36,null],[4,"ConfigError","","",null,null],[13,"IoError","","",37,null],[13,"ParserError","","",37,null],[13,"VecParserError","","",37,null],[13,"DecodeError","","",37,null],[11,"fmt","","",32,null],[11,"fmt","","",32,null],[11,"description","","",32,null],[11,"cause","","",32,null],[11,"from","","",32,{"inputs":[{"name":"fromutf8error"}],"output":{"name":"decodeerror"}}],[11,"from","","",32,{"inputs":[{"name":"sslerror"}],"output":{"name":"decodeerror"}}],[11,"fmt","","",33,null],[11,"fmt","","",33,null],[11,"description","","",33,null],[11,"cause","","",33,null],[11,"fmt","","",34,null],[11,"fmt","","",34,null],[11,"description","","",34,null],[11,"cause","","",34,null],[11,"from","","",34,{"inputs":[{"name":"decodeerror"}],"output":{"name":"self"}}],[11,"from","","",34,{"inputs":[{"name":"encodeerror"}],"output":{"name":"self"}}],[11,"from","","",34,{"inputs":[{"name":"error"}],"output":{"name":"self"}}],[11,"fmt","","",35,null],[11,"fmt","","",35,null],[11,"description","","",35,null],[11,"cause","","",35,null],[11,"from","","",35,{"inputs":[{"name":"fromutf8error"}],"output":{"name":"lexererror"}}],[11,"from","","",35,{"inputs":[{"name":"parseinterror"}],"output":{"name":"lexererror"}}],[11,"fmt","","",36,null],[11,"fmt","","",36,null],[11,"description","","",36,null],[11,"cause","","",36,null],[11,"from","","",36,{"inputs":[{"name":"lexererror"}],"output":{"name":"parseerror"}}],[11,"from","","",36,{"inputs":[{"name":"decodeerror"}],"output":{"name":"parseerror"}}],[11,"from","","",36,{"inputs":[{"name":"error"}],"output":{"name":"parseerror"}}],[11,"from","","",36,{"inputs":[{"name":"parseinterror"}],"output":{"name":"parseerror"}}],[11,"from","","",36,{"inputs":[{"name":"addrparseerror"}],"output":{"name":"parseerror"}}],[11,"fmt","","",37,null],[11,"fmt","","",37,null],[11,"description","","",37,null],[11,"cause","","",37,null],[11,"from","","",37,{"inputs":[{"name":"error"}],"output":{"name":"self"}}],[11,"from","","",37,{"inputs":[{"name":"parsererror"}],"output":{"name":"self"}}],[11,"from","","",37,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"from","","",37,{"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],[4,"EncodeMode","","In the Verify mode there maybe some things which are encoded differently, e.g. SIG0 records\nshould not be included in the additional count and not in the encoded data when in Verify",null,null],[13,"Verify","","",38,null],[13,"Normal","","",38,null],[11,"new","","",39,null],[11,"pop","","",39,null],[11,"len","","",39,null],[11,"peek","","",39,null],[11,"index","","",39,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",39,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).",39,null],[11,"read_vec","","",39,null],[11,"read_u8","","",39,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)",39,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)",39,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)",39,null],[11,"new","","",40,{"inputs":[{"name":"vec"}],"output":{"name":"self"}}],[11,"with_mode","","",40,{"inputs":[{"name":"vec"},{"name":"encodemode"}],"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.",40,{"inputs":[{"name":"vec"},{"name":"u32"},{"name":"encodemode"}],"output":{"name":"self"}}],[11,"as_bytes","","",40,null],[11,"len","","",40,null],[11,"offset","","",40,null],[11,"mode","","",40,null],[11,"set_canonical_names","","",40,null],[11,"is_canonical_names","","",40,null],[11,"reserve","","",40,null],[11,"emit","","",40,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.",40,null],[11,"get_label_pointer","","",40,null],[11,"emit_character_data","","matches description from above.",40,null],[11,"emit_u16","","",40,null],[11,"emit_i32","","",40,null],[11,"emit_u32","","",40,null],[11,"emit_vec","","",40,null],[11,"eq","","",38,null],[11,"clone","","",38,null],[8,"BinSerializable","","",null,null],[10,"read","","",41,{"inputs":[{"name":"bindecoder"}],"output":{"name":"decoderesult"}}],[10,"emit","","",41,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","","",42,null],[13,"List","","",42,null],[13,"CharData","","",42,null],[13,"At","","",42,null],[13,"Include","","",42,null],[13,"Origin","","",42,null],[13,"Ttl","","",42,null],[13,"EOL","","",42,null],[11,"new","","",43,{"inputs":[{"name":"str"}],"output":{"name":"lexer"}}],[11,"next_token","","",43,null],[11,"clone","","",42,null],[11,"fmt","","",42,null],[11,"eq","","",42,null],[11,"ne","","",42,null],[11,"new","","",44,{"inputs":[],"output":{"name":"self"}}],[11,"parse_file","","",44,{"inputs":[{"name":"file"},{"name":"option"},{"name":"zonetype"},{"name":"bool"}],"output":{"name":"parseresult"}}],[11,"parse","","",44,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",44,{"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","","",45,null],[11,"decode","","",45,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"read_config","","read a Config file from the file specified at path.",45,{"inputs":[{"name":"path"}],"output":{"name":"configresult"}}],[11,"get_listen_addrs_ipv4","","",45,null],[11,"get_listen_addrs_ipv6","","",45,null],[11,"get_listen_port","","",45,null],[11,"get_log_level","","",45,null],[11,"get_directory","","",45,null],[11,"get_zones","","",45,null],[11,"from_str","","",45,{"inputs":[{"name":"str"}],"output":{"name":"configresult"}}],[11,"fmt","","",46,null],[11,"eq","","",46,null],[11,"ne","","",46,null],[11,"decode","","",46,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"get_zone","","",46,null],[11,"get_zone_type","","",46,null],[11,"get_file","","",46,null],[11,"get_allow_udpate","","",46,null]],"paths":[[3,"TrustDnsLogger"],[4,"RecordType"],[4,"DNSClass"],[3,"Record"],[4,"RData"],[3,"Name"],[4,"Algorithm"],[4,"DigestType"],[4,"Nsec3HashAlgorithm"],[3,"Signer"],[3,"SupportedAlgorithms"],[3,"TrustAnchor"],[4,"ZoneType"],[3,"Authority"],[3,"Catalog"],[4,"OpCode"],[4,"ResponseCode"],[8,"UpdateMessage"],[3,"Message"],[4,"MessageType"],[3,"Header"],[3,"Query"],[3,"Edns"],[4,"UdpState"],[3,"UdpHandler"],[3,"UdpClientConnection"],[4,"TcpState"],[3,"TcpHandler"],[3,"TcpClientConnection"],[3,"Client"],[8,"ClientConnection"],[3,"Server"],[4,"DecodeError"],[4,"EncodeError"],[4,"ClientError"],[4,"LexerError"],[4,"ParseError"],[4,"ConfigError"],[4,"EncodeMode"],[3,"BinDecoder"],[3,"BinEncoder"],[8,"BinSerializable"],[4,"Token"],[3,"Lexer"],[3,"Parser"],[3,"Config"],[3,"ZoneConfig"]]}; initSearch(searchIndex);