dns.c je řetězit, rekurzivní a non-blocking DNS resolver knihovna, která je umístěna v souboru sincle .c. Také funguje skvěle jako stub resolveru.
Jádro API postavený kolem skutečné paket DNS; míře všeobecné DNS sám. Tím dotazování a manipulaci ostatních, než A, AAAA, a PTR mnohem snadnější záznamy.
Restartable záznam iterátory s uživatelem zadané třídění. Iterace přes MX nebo SRV záznamů v sémantické pořadí (tj preference a priority), je stejně jednoduché jako:
dns_rr_foreach (a rr, paket, .type = DNS_T_SRV, .sort = & dns_rr_i_order) {
& Nbsp; ...
}
Nebo v restartovatelném způsobem:
switch (my-> state) {
Případ 0:
& Nbsp; dns_rr_i_init (a my-> rr_i);
& Nbsp; my-> rr_i.type = DNS_T_SRV;
& Nbsp; my-> rr_i.sort = & dns_rr_i_order;
& Nbsp; my-> stav ++;
Případ 1:
& Nbsp; while (dns_rr_grep (a rr, 1, a my-> rr_i, my-> paket, a chyba)) {
& Nbsp; & nbsp; & nbsp; ...
& Nbsp; & nbsp; & nbsp; / * Návrat do akce smyčky * /
& Nbsp; }
}
Podporuje "chytré" dotazy. Pokud je povoleno v hlavní řešitel, bude dotazy k NS, MX a SRV záznamy vždy pokusí vyřešit kanonické jméno počítače RDATA do záznamu. Hostitelé, které nejsou a / nebo pro který in-bailiwick autoritativní server neposkytuje lepidlo se automagicky vyřešeny, a vrátil se do odpovědí paketu. Podporované jak pahýl a rekurzivní resolver konkretizací. "Smart" rozlišení je také postaven do adresního info (tj getaddrinfo ()) API.
Randomizovaná zdrojové porty a QIDs.
Non-blokování, reentrantní, iterator bázi getaddrinfo () interface: dns_ai_open (), dns_ai_nextent (), dns_ai_close (). Sémanticky stejně jako getaddrinfo (), ale také bere typ záznamu. Iteraci (struct addrinfo), objekty, i když dotazování MX, NS, SRV (et al) hostitele. Tam je dělá "chytré" dotazy tudy méně latence, protože jakékoli nezbytné rekurze lze odložit (a se vší pravděpodobností nebude nutné, protože první hostitel, je pravděpodobné, že stačí).
Co je nový v této verzi:.
- Fix chyba, kdy dns_srv_print () se nepodařilo vytisknout koncové znak NUL
Co je nového ve verzi 20100813:
- Přidat socket.c do contrib /. Byl jsem pomocí a rozvíjí to po dobu jednoho roku, nebo tak v rámci jiných projektů. Koncepčně je to jednoduchý obal kolem BSD Sockets API, které zpracovává DNS dotazy a SSL vyjednávání transparentně a asynchronně.
- Po vytvoření zásuvky s so_open (), volající zor režimy, např so_connect () a so_starttls (). Volající pak může čekat na jejich dokončení (budou vracet EAGAIN-li to nutné), nebo více pohodlně ignorovat výsledek a přejít přímo k pokusu čte a zapisuje. Chyby z předchozích států, včetně EAGAIN, bude vrácena na jakémkoliv čtení nebo zápisu pokusů, dokud se tyto státy jsou kompletní.
- Použít so_pollfd () a so_events (), stejně jako protějšky dns.c. Se vrátí, respektive příslušné deskriptoru a události příznaky závislosti na kterém je vnitřní stav provádění. Aplikace nemusí starat jen o vydávání logické operace čtení / zápisu.
Co je nového ve verzi 20100709:
- Fix MinGW vytvořit přidáním vnitřního dns_strsep () a DNS_ETIMEDOUT.
Co je nového ve verzi 20100708:
- Zkontrolujte platnost délky vrácené dns_d_expand () před předáním jako délka zdrojového dns_d_cleave () uvnitř dns_hints_query (), jinak bychom mohli dělat neplatný čtení. Díky Anonymous.
- Tag rel-20100708 (d493a0f7d8f1d67ef312a7ca3e142660895b32d8).
- Poznámka: Zapomněli narazit DNS_V_REL pro 20100708 vydání, a protože nové statistiky rozhraní byl v zavazadlovém prostoru, by měla rovněž narazil DNS_V_API. Příliš pozdě.
Co je nového ve verzi 20100515:
- Loop přes nameservery resolv.conf: options.attempts časů.
- Vynutit SPF kanonické jméno omezení dotazu při spuštění MX a PTR mechanismy.
- Přidat dns_p_study () učit a obchod v sekci rozsahy.
- Mějte přehled o úseku se pohybuje v dns_p_push ().
- Refactor dns_p_merge () pro zlepšení výkonu na velkých paketů.
- Přidat dns_p_make () pro malloc'ing a inicializaci nový paket.
- Vynutit SPF časových lhůt dotazu. Změnil uspořádání struct spf_limits v očekávání prosazení limity na MX a PTR hostitelských dotazy.
- Fix chyby v návodu k generátoru VM pro skok indexy o více než 255.
Co je nového ve verzi 20100416:.
- Přidána podpora SSHFP
- Tag rel-20100416 (5bd9963e693510e485a1f081f6c98a95d84debfe).
- 90% sazba pasáž o testovací sady OpenSPF. Potřebuji, aby simulovaly časové limity projít TempError testy. Některé z gramatických testů jsou diskutabilní.
- Added OpenSPF YAML testovací sada procesoru. Vyžaduje libyaml.
Co je nového ve verzi 0.5:
- Fix chyba, kdy jsme neměli nouzový z & quot; bind & quot, ; způsob, jak & quot; soubor & quot; Metoda pokud recurse vlajka byla zakázána.
- Search generátor mohly změnit QName. Takže v dns_ai_nextent () canonicalize QName z odpovědi, ne qname původně předložila resolver.
Komentáře nebyl nalezen