Sophie

Sophie

distrib > Fedora > 17 > i386 > by-pkgid > 675c8c8167236dfcf8d66da674f931e8 > files > 924

erlang-doc-R15B-03.3.fc17.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css">
<title>Erlang -- inet_res</title>
</head>
<body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container">
<script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript">
            <!--
              function getWinHeight() {
                var myHeight = 0;
                if( typeof( window.innerHeight ) == 'number' ) {
                  //Non-IE
                  myHeight = window.innerHeight;
                } else if( document.documentElement && ( document.documentElement.clientWidth ||
                                                         document.documentElement.clientHeight ) ) {
                  //IE 6+ in 'standards compliant mode'
                  myHeight = document.documentElement.clientHeight;
                } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                  //IE 4 compatible
                  myHeight = document.body.clientHeight;
                }
                return myHeight;
              }

              function setscrollpos() {
                var objf=document.getElementById('loadscrollpos');
                 document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2;
              }

              function addEvent(obj, evType, fn){
                if (obj.addEventListener){
                obj.addEventListener(evType, fn, true);
                return true;
              } else if (obj.attachEvent){
                var r = obj.attachEvent("on"+evType, fn);
                return r;
              } else {
                return false;
              }
             }

             addEvent(window, 'load', setscrollpos);

             //--></script><div id="leftnav"><div class="innertube">
<img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/kernel-2.15.3.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>Kernel</strong><br><strong>Reference Manual</strong><br><small>Version 2.15.3</small></p>
<br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Table of Contents</strong></small></p>
<ul class="flipMenu">
<li title="kernel (App)"><a href="kernel_app.html">kernel (App)
                </a></li>
<li id="no" title="application " expanded="false">application<ul>
<li><a href="application.html">
                  Top of manual page
                </a></li>
<li title="get_all_env-0"><a href="application.html#get_all_env-0">get_all_env/0</a></li>
<li title="get_all_env-1"><a href="application.html#get_all_env-1">get_all_env/1</a></li>
<li title="get_all_key-0"><a href="application.html#get_all_key-0">get_all_key/0</a></li>
<li title="get_all_key-1"><a href="application.html#get_all_key-1">get_all_key/1</a></li>
<li title="get_application-0"><a href="application.html#get_application-0">get_application/0</a></li>
<li title="get_application-1"><a href="application.html#get_application-1">get_application/1</a></li>
<li title="get_env-1"><a href="application.html#get_env-1">get_env/1</a></li>
<li title="get_env-2"><a href="application.html#get_env-2">get_env/2</a></li>
<li title="get_key-1"><a href="application.html#get_key-1">get_key/1</a></li>
<li title="get_key-2"><a href="application.html#get_key-2">get_key/2</a></li>
<li title="load-1"><a href="application.html#load-1">load/1</a></li>
<li title="load-2"><a href="application.html#load-2">load/2</a></li>
<li title="loaded_applications-0"><a href="application.html#loaded_applications-0">loaded_applications/0</a></li>
<li title="permit-2"><a href="application.html#permit-2">permit/2</a></li>
<li title="set_env-3"><a href="application.html#set_env-3">set_env/3</a></li>
<li title="set_env-4"><a href="application.html#set_env-4">set_env/4</a></li>
<li title="start-1"><a href="application.html#start-1">start/1</a></li>
<li title="start-2"><a href="application.html#start-2">start/2</a></li>
<li title="start_type-0"><a href="application.html#start_type-0">start_type/0</a></li>
<li title="stop-1"><a href="application.html#stop-1">stop/1</a></li>
<li title="takeover-2"><a href="application.html#takeover-2">takeover/2</a></li>
<li title="unload-1"><a href="application.html#unload-1">unload/1</a></li>
<li title="unset_env-2"><a href="application.html#unset_env-2">unset_env/2</a></li>
<li title="unset_env-3"><a href="application.html#unset_env-3">unset_env/3</a></li>
<li title="which_applications-0"><a href="application.html#which_applications-0">which_applications/0</a></li>
<li title="which_applications-1"><a href="application.html#which_applications-1">which_applications/1</a></li>
<li title="Module:start-2"><a href="application.html#Module:start-2">Module:start/2</a></li>
<li title="Module:start_phase-3"><a href="application.html#Module:start_phase-3">Module:start_phase/3</a></li>
<li title="Module:prep_stop-1"><a href="application.html#Module:prep_stop-1">Module:prep_stop/1</a></li>
<li title="Module:stop-1"><a href="application.html#Module:stop-1">Module:stop/1</a></li>
<li title="Module:config_change-3"><a href="application.html#Module:config_change-3">Module:config_change/3</a></li>
</ul>
</li>
<li id="no" title="auth " expanded="false">auth<ul>
<li><a href="auth.html">
                  Top of manual page
                </a></li>
<li title="is_auth-1"><a href="auth.html#is_auth-1">is_auth/1</a></li>
<li title="cookie-0"><a href="auth.html#cookie-0">cookie/0</a></li>
<li title="cookie-1"><a href="auth.html#cookie-1">cookie/1</a></li>
<li title="node_cookie-1"><a href="auth.html#node_cookie-1">node_cookie/1</a></li>
<li title="node_cookie-2"><a href="auth.html#node_cookie-2">node_cookie/2</a></li>
</ul>
</li>
<li id="no" title="code " expanded="false">code<ul>
<li><a href="code.html">
                  Top of manual page
                </a></li>
<li title="set_path-1"><a href="code.html#set_path-1">set_path/1</a></li>
<li title="get_path-0"><a href="code.html#get_path-0">get_path/0</a></li>
<li title="add_path-1"><a href="code.html#add_path-1">add_path/1</a></li>
<li title="add_pathz-1"><a href="code.html#add_pathz-1">add_pathz/1</a></li>
<li title="add_patha-1"><a href="code.html#add_patha-1">add_patha/1</a></li>
<li title="add_paths-1"><a href="code.html#add_paths-1">add_paths/1</a></li>
<li title="add_pathsz-1"><a href="code.html#add_pathsz-1">add_pathsz/1</a></li>
<li title="add_pathsa-1"><a href="code.html#add_pathsa-1">add_pathsa/1</a></li>
<li title="del_path-1"><a href="code.html#del_path-1">del_path/1</a></li>
<li title="replace_path-2"><a href="code.html#replace_path-2">replace_path/2</a></li>
<li title="load_file-1"><a href="code.html#load_file-1">load_file/1</a></li>
<li title="load_abs-1"><a href="code.html#load_abs-1">load_abs/1</a></li>
<li title="ensure_loaded-1"><a href="code.html#ensure_loaded-1">ensure_loaded/1</a></li>
<li title="load_binary-3"><a href="code.html#load_binary-3">load_binary/3</a></li>
<li title="delete-1"><a href="code.html#delete-1">delete/1</a></li>
<li title="purge-1"><a href="code.html#purge-1">purge/1</a></li>
<li title="soft_purge-1"><a href="code.html#soft_purge-1">soft_purge/1</a></li>
<li title="is_loaded-1"><a href="code.html#is_loaded-1">is_loaded/1</a></li>
<li title="all_loaded-0"><a href="code.html#all_loaded-0">all_loaded/0</a></li>
<li title="which-1"><a href="code.html#which-1">which/1</a></li>
<li title="get_object_code-1"><a href="code.html#get_object_code-1">get_object_code/1</a></li>
<li title="root_dir-0"><a href="code.html#root_dir-0">root_dir/0</a></li>
<li title="lib_dir-0"><a href="code.html#lib_dir-0">lib_dir/0</a></li>
<li title="lib_dir-1"><a href="code.html#lib_dir-1">lib_dir/1</a></li>
<li title="lib_dir-2"><a href="code.html#lib_dir-2">lib_dir/2</a></li>
<li title="compiler_dir-0"><a href="code.html#compiler_dir-0">compiler_dir/0</a></li>
<li title="priv_dir-1"><a href="code.html#priv_dir-1">priv_dir/1</a></li>
<li title="objfile_extension-0"><a href="code.html#objfile_extension-0">objfile_extension/0</a></li>
<li title="stick_dir-1"><a href="code.html#stick_dir-1">stick_dir/1</a></li>
<li title="unstick_dir-1"><a href="code.html#unstick_dir-1">unstick_dir/1</a></li>
<li title="is_sticky-1"><a href="code.html#is_sticky-1">is_sticky/1</a></li>
<li title="rehash-0"><a href="code.html#rehash-0">rehash/0</a></li>
<li title="where_is_file-1"><a href="code.html#where_is_file-1">where_is_file/1</a></li>
<li title="clash-0"><a href="code.html#clash-0">clash/0</a></li>
<li title="is_module_native-1"><a href="code.html#is_module_native-1">is_module_native/1</a></li>
</ul>
</li>
<li id="no" title="disk_log " expanded="false">disk_log<ul>
<li><a href="disk_log.html">
                  Top of manual page
                </a></li>
<li title="accessible_logs-0"><a href="disk_log.html#accessible_logs-0">accessible_logs/0</a></li>
<li title="alog-2"><a href="disk_log.html#alog-2">alog/2</a></li>
<li title="balog-2"><a href="disk_log.html#balog-2">balog/2</a></li>
<li title="alog_terms-2"><a href="disk_log.html#alog_terms-2">alog_terms/2</a></li>
<li title="balog_terms-2"><a href="disk_log.html#balog_terms-2">balog_terms/2</a></li>
<li title="block-1"><a href="disk_log.html#block-1">block/1</a></li>
<li title="block-2"><a href="disk_log.html#block-2">block/2</a></li>
<li title="change_header-2"><a href="disk_log.html#change_header-2">change_header/2</a></li>
<li title="change_notify-3"><a href="disk_log.html#change_notify-3">change_notify/3</a></li>
<li title="change_size-2"><a href="disk_log.html#change_size-2">change_size/2</a></li>
<li title="chunk-2"><a href="disk_log.html#chunk-2">chunk/2</a></li>
<li title="chunk-3"><a href="disk_log.html#chunk-3">chunk/3</a></li>
<li title="bchunk-2"><a href="disk_log.html#bchunk-2">bchunk/2</a></li>
<li title="bchunk-3"><a href="disk_log.html#bchunk-3">bchunk/3</a></li>
<li title="chunk_info-1"><a href="disk_log.html#chunk_info-1">chunk_info/1</a></li>
<li title="chunk_step-3"><a href="disk_log.html#chunk_step-3">chunk_step/3</a></li>
<li title="close-1"><a href="disk_log.html#close-1">close/1</a></li>
<li title="format_error-1"><a href="disk_log.html#format_error-1">format_error/1</a></li>
<li title="inc_wrap_file-1"><a href="disk_log.html#inc_wrap_file-1">inc_wrap_file/1</a></li>
<li title="info-1"><a href="disk_log.html#info-1">info/1</a></li>
<li title="lclose-1"><a href="disk_log.html#lclose-1">lclose/1</a></li>
<li title="lclose-2"><a href="disk_log.html#lclose-2">lclose/2</a></li>
<li title="log-2"><a href="disk_log.html#log-2">log/2</a></li>
<li title="blog-2"><a href="disk_log.html#blog-2">blog/2</a></li>
<li title="log_terms-2"><a href="disk_log.html#log_terms-2">log_terms/2</a></li>
<li title="blog_terms-2"><a href="disk_log.html#blog_terms-2">blog_terms/2</a></li>
<li title="open-1"><a href="disk_log.html#open-1">open/1</a></li>
<li title="pid2name-1"><a href="disk_log.html#pid2name-1">pid2name/1</a></li>
<li title="reopen-2"><a href="disk_log.html#reopen-2">reopen/2</a></li>
<li title="reopen-3"><a href="disk_log.html#reopen-3">reopen/3</a></li>
<li title="breopen-3"><a href="disk_log.html#breopen-3">breopen/3</a></li>
<li title="sync-1"><a href="disk_log.html#sync-1">sync/1</a></li>
<li title="truncate-1"><a href="disk_log.html#truncate-1">truncate/1</a></li>
<li title="truncate-2"><a href="disk_log.html#truncate-2">truncate/2</a></li>
<li title="btruncate-2"><a href="disk_log.html#btruncate-2">btruncate/2</a></li>
<li title="unblock-1"><a href="disk_log.html#unblock-1">unblock/1</a></li>
</ul>
</li>
<li id="no" title="erl_boot_server " expanded="false">erl_boot_server<ul>
<li><a href="erl_boot_server.html">
                  Top of manual page
                </a></li>
<li title="start-1"><a href="erl_boot_server.html#start-1">start/1</a></li>
<li title="start_link-1"><a href="erl_boot_server.html#start_link-1">start_link/1</a></li>
<li title="add_slave-1"><a href="erl_boot_server.html#add_slave-1">add_slave/1</a></li>
<li title="delete_slave-1"><a href="erl_boot_server.html#delete_slave-1">delete_slave/1</a></li>
<li title="which_slaves-0"><a href="erl_boot_server.html#which_slaves-0">which_slaves/0</a></li>
</ul>
</li>
<li id="no" title="erl_ddll " expanded="false">erl_ddll<ul>
<li><a href="erl_ddll.html">
                  Top of manual page
                </a></li>
<li title="demonitor-1"><a href="erl_ddll.html#demonitor-1">demonitor/1</a></li>
<li title="info-0"><a href="erl_ddll.html#info-0">info/0</a></li>
<li title="info-1"><a href="erl_ddll.html#info-1">info/1</a></li>
<li title="info-2"><a href="erl_ddll.html#info-2">info/2</a></li>
<li title="load-2"><a href="erl_ddll.html#load-2">load/2</a></li>
<li title="load_driver-2"><a href="erl_ddll.html#load_driver-2">load_driver/2</a></li>
<li title="monitor-2"><a href="erl_ddll.html#monitor-2">monitor/2</a></li>
<li title="reload-2"><a href="erl_ddll.html#reload-2">reload/2</a></li>
<li title="reload_driver-2"><a href="erl_ddll.html#reload_driver-2">reload_driver/2</a></li>
<li title="try_load-3"><a href="erl_ddll.html#try_load-3">try_load/3</a></li>
<li title="try_unload-2"><a href="erl_ddll.html#try_unload-2">try_unload/2</a></li>
<li title="unload-1"><a href="erl_ddll.html#unload-1">unload/1</a></li>
<li title="unload_driver-1"><a href="erl_ddll.html#unload_driver-1">unload_driver/1</a></li>
<li title="loaded_drivers-0"><a href="erl_ddll.html#loaded_drivers-0">loaded_drivers/0</a></li>
<li title="format_error-1"><a href="erl_ddll.html#format_error-1">format_error/1</a></li>
</ul>
</li>
<li title="erl_prim_loader"><a href="erl_prim_loader.html">erl_prim_loader</a></li>
<li title="erlang"><a href="erlang.html">erlang</a></li>
<li id="no" title="error_handler " expanded="false">error_handler<ul>
<li><a href="error_handler.html">
                  Top of manual page
                </a></li>
<li title="undefined_function-3"><a href="error_handler.html#undefined_function-3">undefined_function/3</a></li>
<li title="undefined_lambda-3"><a href="error_handler.html#undefined_lambda-3">undefined_lambda/3</a></li>
</ul>
</li>
<li id="no" title="error_logger " expanded="false">error_logger<ul>
<li><a href="error_logger.html">
                  Top of manual page
                </a></li>
<li title="error_msg-1"><a href="error_logger.html#error_msg-1">error_msg/1</a></li>
<li title="error_msg-2"><a href="error_logger.html#error_msg-2">error_msg/2</a></li>
<li title="format-2"><a href="error_logger.html#format-2">format/2</a></li>
<li title="error_report-1"><a href="error_logger.html#error_report-1">error_report/1</a></li>
<li title="error_report-2"><a href="error_logger.html#error_report-2">error_report/2</a></li>
<li title="warning_map-0"><a href="error_logger.html#warning_map-0">warning_map/0</a></li>
<li title="warning_msg-1"><a href="error_logger.html#warning_msg-1">warning_msg/1</a></li>
<li title="warning_msg-2"><a href="error_logger.html#warning_msg-2">warning_msg/2</a></li>
<li title="warning_report-1"><a href="error_logger.html#warning_report-1">warning_report/1</a></li>
<li title="warning_report-2"><a href="error_logger.html#warning_report-2">warning_report/2</a></li>
<li title="info_msg-1"><a href="error_logger.html#info_msg-1">info_msg/1</a></li>
<li title="info_msg-2"><a href="error_logger.html#info_msg-2">info_msg/2</a></li>
<li title="info_report-1"><a href="error_logger.html#info_report-1">info_report/1</a></li>
<li title="info_report-2"><a href="error_logger.html#info_report-2">info_report/2</a></li>
<li title="add_report_handler-1"><a href="error_logger.html#add_report_handler-1">add_report_handler/1</a></li>
<li title="add_report_handler-2"><a href="error_logger.html#add_report_handler-2">add_report_handler/2</a></li>
<li title="delete_report_handler-1"><a href="error_logger.html#delete_report_handler-1">delete_report_handler/1</a></li>
<li title="tty-1"><a href="error_logger.html#tty-1">tty/1</a></li>
<li title="logfile-1"><a href="error_logger.html#logfile-1">logfile/1</a></li>
</ul>
</li>
<li id="no" title="file " expanded="false">file<ul>
<li><a href="file.html">
                  Top of manual page
                </a></li>
<li title="advise-4"><a href="file.html#advise-4">advise/4</a></li>
<li title="change_group-2"><a href="file.html#change_group-2">change_group/2</a></li>
<li title="change_mode-2"><a href="file.html#change_mode-2">change_mode/2</a></li>
<li title="change_owner-2"><a href="file.html#change_owner-2">change_owner/2</a></li>
<li title="change_owner-3"><a href="file.html#change_owner-3">change_owner/3</a></li>
<li title="change_time-2"><a href="file.html#change_time-2">change_time/2</a></li>
<li title="change_time-3"><a href="file.html#change_time-3">change_time/3</a></li>
<li title="close-1"><a href="file.html#close-1">close/1</a></li>
<li title="consult-1"><a href="file.html#consult-1">consult/1</a></li>
<li title="copy-2"><a href="file.html#copy-2">copy/2</a></li>
<li title="copy-3"><a href="file.html#copy-3">copy/3</a></li>
<li title="del_dir-1"><a href="file.html#del_dir-1">del_dir/1</a></li>
<li title="delete-1"><a href="file.html#delete-1">delete/1</a></li>
<li title="eval-1"><a href="file.html#eval-1">eval/1</a></li>
<li title="eval-2"><a href="file.html#eval-2">eval/2</a></li>
<li title="file_info-1"><a href="file.html#file_info-1">file_info/1</a></li>
<li title="format_error-1"><a href="file.html#format_error-1">format_error/1</a></li>
<li title="get_cwd-0"><a href="file.html#get_cwd-0">get_cwd/0</a></li>
<li title="get_cwd-1"><a href="file.html#get_cwd-1">get_cwd/1</a></li>
<li title="list_dir-1"><a href="file.html#list_dir-1">list_dir/1</a></li>
<li title="make_dir-1"><a href="file.html#make_dir-1">make_dir/1</a></li>
<li title="make_link-2"><a href="file.html#make_link-2">make_link/2</a></li>
<li title="make_symlink-2"><a href="file.html#make_symlink-2">make_symlink/2</a></li>
<li title="native_name_encoding-0"><a href="file.html#native_name_encoding-0">native_name_encoding/0</a></li>
<li title="open-2"><a href="file.html#open-2">open/2</a></li>
<li title="path_consult-2"><a href="file.html#path_consult-2">path_consult/2</a></li>
<li title="path_eval-2"><a href="file.html#path_eval-2">path_eval/2</a></li>
<li title="path_open-3"><a href="file.html#path_open-3">path_open/3</a></li>
<li title="path_script-2"><a href="file.html#path_script-2">path_script/2</a></li>
<li title="path_script-3"><a href="file.html#path_script-3">path_script/3</a></li>
<li title="pid2name-1"><a href="file.html#pid2name-1">pid2name/1</a></li>
<li title="position-2"><a href="file.html#position-2">position/2</a></li>
<li title="pread-2"><a href="file.html#pread-2">pread/2</a></li>
<li title="pread-3"><a href="file.html#pread-3">pread/3</a></li>
<li title="pwrite-2"><a href="file.html#pwrite-2">pwrite/2</a></li>
<li title="pwrite-3"><a href="file.html#pwrite-3">pwrite/3</a></li>
<li title="read-2"><a href="file.html#read-2">read/2</a></li>
<li title="read_file-1"><a href="file.html#read_file-1">read_file/1</a></li>
<li title="read_file_info-1"><a href="file.html#read_file_info-1">read_file_info/1</a></li>
<li title="read_file_info-2"><a href="file.html#read_file_info-2">read_file_info/2</a></li>
<li title="read_line-1"><a href="file.html#read_line-1">read_line/1</a></li>
<li title="read_link-1"><a href="file.html#read_link-1">read_link/1</a></li>
<li title="read_link_info-1"><a href="file.html#read_link_info-1">read_link_info/1</a></li>
<li title="read_link_info-2"><a href="file.html#read_link_info-2">read_link_info/2</a></li>
<li title="rename-2"><a href="file.html#rename-2">rename/2</a></li>
<li title="script-1"><a href="file.html#script-1">script/1</a></li>
<li title="script-2"><a href="file.html#script-2">script/2</a></li>
<li title="set_cwd-1"><a href="file.html#set_cwd-1">set_cwd/1</a></li>
<li title="sync-1"><a href="file.html#sync-1">sync/1</a></li>
<li title="datasync-1"><a href="file.html#datasync-1">datasync/1</a></li>
<li title="truncate-1"><a href="file.html#truncate-1">truncate/1</a></li>
<li title="sendfile-2"><a href="file.html#sendfile-2">sendfile/2</a></li>
<li title="sendfile-5"><a href="file.html#sendfile-5">sendfile/5</a></li>
<li title="write-2"><a href="file.html#write-2">write/2</a></li>
<li title="write_file-2"><a href="file.html#write_file-2">write_file/2</a></li>
<li title="write_file-3"><a href="file.html#write_file-3">write_file/3</a></li>
<li title="write_file_info-2"><a href="file.html#write_file_info-2">write_file_info/2</a></li>
<li title="write_file_info-3"><a href="file.html#write_file_info-3">write_file_info/3</a></li>
</ul>
</li>
<li id="no" title="gen_tcp " expanded="false">gen_tcp<ul>
<li><a href="gen_tcp.html">
                  Top of manual page
                </a></li>
<li title="connect-3"><a href="gen_tcp.html#connect-3">connect/3</a></li>
<li title="connect-4"><a href="gen_tcp.html#connect-4">connect/4</a></li>
<li title="listen-2"><a href="gen_tcp.html#listen-2">listen/2</a></li>
<li title="accept-1"><a href="gen_tcp.html#accept-1">accept/1</a></li>
<li title="accept-2"><a href="gen_tcp.html#accept-2">accept/2</a></li>
<li title="send-2"><a href="gen_tcp.html#send-2">send/2</a></li>
<li title="recv-2"><a href="gen_tcp.html#recv-2">recv/2</a></li>
<li title="recv-3"><a href="gen_tcp.html#recv-3">recv/3</a></li>
<li title="controlling_process-2"><a href="gen_tcp.html#controlling_process-2">controlling_process/2</a></li>
<li title="close-1"><a href="gen_tcp.html#close-1">close/1</a></li>
<li title="shutdown-2"><a href="gen_tcp.html#shutdown-2">shutdown/2</a></li>
</ul>
</li>
<li id="no" title="gen_udp " expanded="false">gen_udp<ul>
<li><a href="gen_udp.html">
                  Top of manual page
                </a></li>
<li title="open-1"><a href="gen_udp.html#open-1">open/1</a></li>
<li title="open-2"><a href="gen_udp.html#open-2">open/2</a></li>
<li title="send-4"><a href="gen_udp.html#send-4">send/4</a></li>
<li title="recv-2"><a href="gen_udp.html#recv-2">recv/2</a></li>
<li title="recv-3"><a href="gen_udp.html#recv-3">recv/3</a></li>
<li title="controlling_process-2"><a href="gen_udp.html#controlling_process-2">controlling_process/2</a></li>
<li title="close-1"><a href="gen_udp.html#close-1">close/1</a></li>
</ul>
</li>
<li id="no" title="gen_sctp " expanded="false">gen_sctp<ul>
<li><a href="gen_sctp.html">
                  Top of manual page
                </a></li>
<li title="abort-2"><a href="gen_sctp.html#abort-2">abort/2</a></li>
<li title="close-1"><a href="gen_sctp.html#close-1">close/1</a></li>
<li title="connect-4"><a href="gen_sctp.html#connect-4">connect/4</a></li>
<li title="connect-5"><a href="gen_sctp.html#connect-5">connect/5</a></li>
<li title="connect_init-4"><a href="gen_sctp.html#connect_init-4">connect_init/4</a></li>
<li title="connect_init-5"><a href="gen_sctp.html#connect_init-5">connect_init/5</a></li>
<li title="controlling_process-2"><a href="gen_sctp.html#controlling_process-2">controlling_process/2</a></li>
<li title="eof-2"><a href="gen_sctp.html#eof-2">eof/2</a></li>
<li title="listen-2"><a href="gen_sctp.html#listen-2">listen/2</a></li>
<li title="open-0"><a href="gen_sctp.html#open-0">open/0</a></li>
<li title="open-1"><a href="gen_sctp.html#open-1">open/1</a></li>
<li title="open-2"><a href="gen_sctp.html#open-2">open/2</a></li>
<li title="peeloff-2"><a href="gen_sctp.html#peeloff-2">peeloff/2</a></li>
<li title="recv-1"><a href="gen_sctp.html#recv-1">recv/1</a></li>
<li title="recv-2"><a href="gen_sctp.html#recv-2">recv/2</a></li>
<li title="send-3"><a href="gen_sctp.html#send-3">send/3</a></li>
<li title="send-4"><a href="gen_sctp.html#send-4">send/4</a></li>
<li title="error_string-1"><a href="gen_sctp.html#error_string-1">error_string/1</a></li>
</ul>
</li>
<li id="no" title="global " expanded="false">global<ul>
<li><a href="global.html">
                  Top of manual page
                </a></li>
<li title="del_lock-1"><a href="global.html#del_lock-1">del_lock/1</a></li>
<li title="del_lock-2"><a href="global.html#del_lock-2">del_lock/2</a></li>
<li title="notify_all_name-3"><a href="global.html#notify_all_name-3">notify_all_name/3</a></li>
<li title="random_exit_name-3"><a href="global.html#random_exit_name-3">random_exit_name/3</a></li>
<li title="random_notify_name-3"><a href="global.html#random_notify_name-3">random_notify_name/3</a></li>
<li title="register_name-2"><a href="global.html#register_name-2">register_name/2</a></li>
<li title="register_name-3"><a href="global.html#register_name-3">register_name/3</a></li>
<li title="registered_names-0"><a href="global.html#registered_names-0">registered_names/0</a></li>
<li title="re_register_name-2"><a href="global.html#re_register_name-2">re_register_name/2</a></li>
<li title="re_register_name-3"><a href="global.html#re_register_name-3">re_register_name/3</a></li>
<li title="send-2"><a href="global.html#send-2">send/2</a></li>
<li title="set_lock-1"><a href="global.html#set_lock-1">set_lock/1</a></li>
<li title="set_lock-2"><a href="global.html#set_lock-2">set_lock/2</a></li>
<li title="set_lock-3"><a href="global.html#set_lock-3">set_lock/3</a></li>
<li title="sync-0"><a href="global.html#sync-0">sync/0</a></li>
<li title="trans-2"><a href="global.html#trans-2">trans/2</a></li>
<li title="trans-3"><a href="global.html#trans-3">trans/3</a></li>
<li title="trans-4"><a href="global.html#trans-4">trans/4</a></li>
<li title="unregister_name-1"><a href="global.html#unregister_name-1">unregister_name/1</a></li>
<li title="whereis_name-1"><a href="global.html#whereis_name-1">whereis_name/1</a></li>
</ul>
</li>
<li id="no" title="global_group " expanded="false">global_group<ul>
<li><a href="global_group.html">
                  Top of manual page
                </a></li>
<li title="global_groups-0"><a href="global_group.html#global_groups-0">global_groups/0</a></li>
<li title="info-0"><a href="global_group.html#info-0">info/0</a></li>
<li title="monitor_nodes-1"><a href="global_group.html#monitor_nodes-1">monitor_nodes/1</a></li>
<li title="own_nodes-0"><a href="global_group.html#own_nodes-0">own_nodes/0</a></li>
<li title="registered_names-1"><a href="global_group.html#registered_names-1">registered_names/1</a></li>
<li title="send-2"><a href="global_group.html#send-2">send/2</a></li>
<li title="send-3"><a href="global_group.html#send-3">send/3</a></li>
<li title="sync-0"><a href="global_group.html#sync-0">sync/0</a></li>
<li title="whereis_name-1"><a href="global_group.html#whereis_name-1">whereis_name/1</a></li>
<li title="whereis_name-2"><a href="global_group.html#whereis_name-2">whereis_name/2</a></li>
</ul>
</li>
<li id="no" title="heart " expanded="false">heart<ul>
<li><a href="heart.html">
                  Top of manual page
                </a></li>
<li title="set_cmd-1"><a href="heart.html#set_cmd-1">set_cmd/1</a></li>
<li title="clear_cmd-0"><a href="heart.html#clear_cmd-0">clear_cmd/0</a></li>
<li title="get_cmd-0"><a href="heart.html#get_cmd-0">get_cmd/0</a></li>
</ul>
</li>
<li id="no" title="inet " expanded="false">inet<ul>
<li><a href="inet.html">
                  Top of manual page
                </a></li>
<li title="close-1"><a href="inet.html#close-1">close/1</a></li>
<li title="get_rc-0"><a href="inet.html#get_rc-0">get_rc/0</a></li>
<li title="format_error-1"><a href="inet.html#format_error-1">format_error/1</a></li>
<li title="getaddr-2"><a href="inet.html#getaddr-2">getaddr/2</a></li>
<li title="getaddrs-2"><a href="inet.html#getaddrs-2">getaddrs/2</a></li>
<li title="gethostbyaddr-1"><a href="inet.html#gethostbyaddr-1">gethostbyaddr/1</a></li>
<li title="gethostbyname-1"><a href="inet.html#gethostbyname-1">gethostbyname/1</a></li>
<li title="gethostbyname-2"><a href="inet.html#gethostbyname-2">gethostbyname/2</a></li>
<li title="gethostname-0"><a href="inet.html#gethostname-0">gethostname/0</a></li>
<li title="getifaddrs-0"><a href="inet.html#getifaddrs-0">getifaddrs/0</a></li>
<li title="getopts-2"><a href="inet.html#getopts-2">getopts/2</a></li>
<li title="getstat-1"><a href="inet.html#getstat-1">getstat/1</a></li>
<li title="getstat-2"><a href="inet.html#getstat-2">getstat/2</a></li>
<li title="peername-1"><a href="inet.html#peername-1">peername/1</a></li>
<li title="port-1"><a href="inet.html#port-1">port/1</a></li>
<li title="sockname-1"><a href="inet.html#sockname-1">sockname/1</a></li>
<li title="setopts-2"><a href="inet.html#setopts-2">setopts/2</a></li>
</ul>
</li>
<li id="loadscrollpos" title="inet_res " expanded="true">inet_res<ul>
<li><a href="inet_res.html">
                  Top of manual page
                </a></li>
<li title="getbyname-2"><a href="inet_res.html#getbyname-2">getbyname/2</a></li>
<li title="getbyname-3"><a href="inet_res.html#getbyname-3">getbyname/3</a></li>
<li title="gethostbyaddr-1"><a href="inet_res.html#gethostbyaddr-1">gethostbyaddr/1</a></li>
<li title="gethostbyaddr-2"><a href="inet_res.html#gethostbyaddr-2">gethostbyaddr/2</a></li>
<li title="gethostbyname-1"><a href="inet_res.html#gethostbyname-1">gethostbyname/1</a></li>
<li title="gethostbyname-2"><a href="inet_res.html#gethostbyname-2">gethostbyname/2</a></li>
<li title="gethostbyname-3"><a href="inet_res.html#gethostbyname-3">gethostbyname/3</a></li>
<li title="lookup-3"><a href="inet_res.html#lookup-3">lookup/3</a></li>
<li title="lookup-4"><a href="inet_res.html#lookup-4">lookup/4</a></li>
<li title="lookup-5"><a href="inet_res.html#lookup-5">lookup/5</a></li>
<li title="resolve-3"><a href="inet_res.html#resolve-3">resolve/3</a></li>
<li title="resolve-4"><a href="inet_res.html#resolve-4">resolve/4</a></li>
<li title="resolve-5"><a href="inet_res.html#resolve-5">resolve/5</a></li>
<li title="nslookup-3"><a href="inet_res.html#nslookup-3">nslookup/3</a></li>
<li title="nslookup-4"><a href="inet_res.html#nslookup-4">nslookup/4</a></li>
<li title="nnslookup-4"><a href="inet_res.html#nnslookup-4">nnslookup/4</a></li>
<li title="nnslookup-5"><a href="inet_res.html#nnslookup-5">nnslookup/5</a></li>
</ul>
</li>
<li title="init"><a href="init.html">init</a></li>
<li id="no" title="net_adm " expanded="false">net_adm<ul>
<li><a href="net_adm.html">
                  Top of manual page
                </a></li>
<li title="dns_hostname-1"><a href="net_adm.html#dns_hostname-1">dns_hostname/1</a></li>
<li title="host_file-0"><a href="net_adm.html#host_file-0">host_file/0</a></li>
<li title="localhost-0"><a href="net_adm.html#localhost-0">localhost/0</a></li>
<li title="names-0"><a href="net_adm.html#names-0">names/0</a></li>
<li title="names-1"><a href="net_adm.html#names-1">names/1</a></li>
<li title="ping-1"><a href="net_adm.html#ping-1">ping/1</a></li>
<li title="world-0"><a href="net_adm.html#world-0">world/0</a></li>
<li title="world-1"><a href="net_adm.html#world-1">world/1</a></li>
<li title="world_list-1"><a href="net_adm.html#world_list-1">world_list/1</a></li>
<li title="world_list-2"><a href="net_adm.html#world_list-2">world_list/2</a></li>
</ul>
</li>
<li id="no" title="net_kernel " expanded="false">net_kernel<ul>
<li><a href="net_kernel.html">
                  Top of manual page
                </a></li>
<li title="allow-1"><a href="net_kernel.html#allow-1">allow/1</a></li>
<li title="connect_node-1"><a href="net_kernel.html#connect_node-1">connect_node/1</a></li>
<li title="monitor_nodes-1"><a href="net_kernel.html#monitor_nodes-1">monitor_nodes/1</a></li>
<li title="monitor_nodes-2"><a href="net_kernel.html#monitor_nodes-2">monitor_nodes/2</a></li>
<li title="get_net_ticktime-0"><a href="net_kernel.html#get_net_ticktime-0">get_net_ticktime/0</a></li>
<li title="set_net_ticktime-1"><a href="net_kernel.html#set_net_ticktime-1">set_net_ticktime/1</a></li>
<li title="set_net_ticktime-2"><a href="net_kernel.html#set_net_ticktime-2">set_net_ticktime/2</a></li>
<li title="start-1"><a href="net_kernel.html#start-1">start/1</a></li>
<li title="start-1"><a href="net_kernel.html#start-1">start/1</a></li>
<li title="start-1"><a href="net_kernel.html#start-1">start/1</a></li>
<li title="stop-0"><a href="net_kernel.html#stop-0">stop/0</a></li>
</ul>
</li>
<li id="no" title="os " expanded="false">os<ul>
<li><a href="os.html">
                  Top of manual page
                </a></li>
<li title="cmd-1"><a href="os.html#cmd-1">cmd/1</a></li>
<li title="find_executable-1"><a href="os.html#find_executable-1">find_executable/1</a></li>
<li title="find_executable-2"><a href="os.html#find_executable-2">find_executable/2</a></li>
<li title="getenv-0"><a href="os.html#getenv-0">getenv/0</a></li>
<li title="getenv-1"><a href="os.html#getenv-1">getenv/1</a></li>
<li title="getpid-0"><a href="os.html#getpid-0">getpid/0</a></li>
<li title="putenv-2"><a href="os.html#putenv-2">putenv/2</a></li>
<li title="timestamp-0"><a href="os.html#timestamp-0">timestamp/0</a></li>
<li title="type-0"><a href="os.html#type-0">type/0</a></li>
<li title="version-0"><a href="os.html#version-0">version/0</a></li>
</ul>
</li>
<li id="no" title="pg2 " expanded="false">pg2<ul>
<li><a href="pg2.html">
                  Top of manual page
                </a></li>
<li title="create-1"><a href="pg2.html#create-1">create/1</a></li>
<li title="delete-1"><a href="pg2.html#delete-1">delete/1</a></li>
<li title="get_closest_pid-1"><a href="pg2.html#get_closest_pid-1">get_closest_pid/1</a></li>
<li title="get_members-1"><a href="pg2.html#get_members-1">get_members/1</a></li>
<li title="get_local_members-1"><a href="pg2.html#get_local_members-1">get_local_members/1</a></li>
<li title="join-2"><a href="pg2.html#join-2">join/2</a></li>
<li title="leave-2"><a href="pg2.html#leave-2">leave/2</a></li>
<li title="which_groups-0"><a href="pg2.html#which_groups-0">which_groups/0</a></li>
<li title="start-0"><a href="pg2.html#start-0">start/0</a></li>
<li title="start_link-0"><a href="pg2.html#start_link-0">start_link/0</a></li>
</ul>
</li>
<li id="no" title="rpc " expanded="false">rpc<ul>
<li><a href="rpc.html">
                  Top of manual page
                </a></li>
<li title="call-4"><a href="rpc.html#call-4">call/4</a></li>
<li title="call-5"><a href="rpc.html#call-5">call/5</a></li>
<li title="block_call-4"><a href="rpc.html#block_call-4">block_call/4</a></li>
<li title="block_call-5"><a href="rpc.html#block_call-5">block_call/5</a></li>
<li title="async_call-4"><a href="rpc.html#async_call-4">async_call/4</a></li>
<li title="yield-1"><a href="rpc.html#yield-1">yield/1</a></li>
<li title="nb_yield-1"><a href="rpc.html#nb_yield-1">nb_yield/1</a></li>
<li title="nb_yield-2"><a href="rpc.html#nb_yield-2">nb_yield/2</a></li>
<li title="multicall-3"><a href="rpc.html#multicall-3">multicall/3</a></li>
<li title="multicall-4"><a href="rpc.html#multicall-4">multicall/4</a></li>
<li title="multicall-5"><a href="rpc.html#multicall-5">multicall/5</a></li>
<li title="cast-4"><a href="rpc.html#cast-4">cast/4</a></li>
<li title="eval_everywhere-3"><a href="rpc.html#eval_everywhere-3">eval_everywhere/3</a></li>
<li title="eval_everywhere-4"><a href="rpc.html#eval_everywhere-4">eval_everywhere/4</a></li>
<li title="abcast-2"><a href="rpc.html#abcast-2">abcast/2</a></li>
<li title="abcast-3"><a href="rpc.html#abcast-3">abcast/3</a></li>
<li title="sbcast-2"><a href="rpc.html#sbcast-2">sbcast/2</a></li>
<li title="sbcast-3"><a href="rpc.html#sbcast-3">sbcast/3</a></li>
<li title="server_call-4"><a href="rpc.html#server_call-4">server_call/4</a></li>
<li title="multi_server_call-2"><a href="rpc.html#multi_server_call-2">multi_server_call/2</a></li>
<li title="multi_server_call-3"><a href="rpc.html#multi_server_call-3">multi_server_call/3</a></li>
<li title="safe_multi_server_call-2"><a href="rpc.html#safe_multi_server_call-2">safe_multi_server_call/2</a></li>
<li title="safe_multi_server_call-3"><a href="rpc.html#safe_multi_server_call-3">safe_multi_server_call/3</a></li>
<li title="parallel_eval-1"><a href="rpc.html#parallel_eval-1">parallel_eval/1</a></li>
<li title="pmap-3"><a href="rpc.html#pmap-3">pmap/3</a></li>
<li title="pinfo-1"><a href="rpc.html#pinfo-1">pinfo/1</a></li>
<li title="pinfo-2"><a href="rpc.html#pinfo-2">pinfo/2</a></li>
</ul>
</li>
<li id="no" title="seq_trace " expanded="false">seq_trace<ul>
<li><a href="seq_trace.html">
                  Top of manual page
                </a></li>
<li title="set_token-1"><a href="seq_trace.html#set_token-1">set_token/1</a></li>
<li title="set_token-2"><a href="seq_trace.html#set_token-2">set_token/2</a></li>
<li title="get_token-0"><a href="seq_trace.html#get_token-0">get_token/0</a></li>
<li title="get_token-1"><a href="seq_trace.html#get_token-1">get_token/1</a></li>
<li title="print-1"><a href="seq_trace.html#print-1">print/1</a></li>
<li title="print-2"><a href="seq_trace.html#print-2">print/2</a></li>
<li title="reset_trace-0"><a href="seq_trace.html#reset_trace-0">reset_trace/0</a></li>
<li title="set_system_tracer-1"><a href="seq_trace.html#set_system_tracer-1">set_system_tracer/1</a></li>
<li title="get_system_tracer-0"><a href="seq_trace.html#get_system_tracer-0">get_system_tracer/0</a></li>
</ul>
</li>
<li title="user"><a href="user.html">user</a></li>
<li id="no" title="wrap_log_reader " expanded="false">wrap_log_reader<ul>
<li><a href="wrap_log_reader.html">
                  Top of manual page
                </a></li>
<li title="chunk-1"><a href="wrap_log_reader.html#chunk-1">chunk/1</a></li>
<li title="chunk-2"><a href="wrap_log_reader.html#chunk-2">chunk/2</a></li>
<li title="close-1"><a href="wrap_log_reader.html#close-1">close/1</a></li>
<li title="open-1"><a href="wrap_log_reader.html#open-1">open/1</a></li>
<li title="open-2"><a href="wrap_log_reader.html#open-2">open/2</a></li>
</ul>
</li>
<li title="zlib"><a href="zlib.html">zlib</a></li>
<li title="app"><a href="app.html">app</a></li>
<li title="config"><a href="config.html">config</a></li>
<li title="packages"><a href="packages.html">packages</a></li>
</ul>
</div></div>
<div id="content">
<div class="innertube">
<!-- refpage --><center><h1>inet_res</h1></center>
  
  <h3>MODULE</h3>
<div class="REFBODY">inet_res</div>
  <h3>MODULE SUMMARY</h3>
<div class="REFBODY">A Rudimentary DNS Client</div>
  <h3>DESCRIPTION</h3>
<div class="REFBODY"><p>
    <p>Performs DNS name resolving towards recursive name servers</p>
    <p>See also 
      <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','erts','inet_cfg.html');">
        ERTS User's Guide: Inet configuration
      </a></span> for more
      information on how to configure an Erlang runtime system for IP
      communication and how to enable this DNS client by defining
      <span class="code">'dns'</span> as a lookup method. It then acts
      as a backend for the resolving functions in
      <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','kernel','inet.html');">inet</a></span>.</p>
    <p>This DNS client can resolve DNS records even if it
      is not used for normal name resolving in the node.</p>
    <p>This is not a full-fledged resolver. It is just a
      DNS client that relies on asking trusted recursive nameservers.</p>
  </p></div>

  <h3><a name="id129787">Name Resolving</a></h3>
<div class="REFBODY">
    
    <p>UDP queries are used unless resolver option
      <span class="code">usevc</span> is <span class="code">true</span>, which forces TCP queries.
      If the query is to large for UDP, TCP is used instead.
      For regular DNS queries 512 bytes is the size limit.
      When EDNS is enabled (resolver option
      <span class="code">edns</span> is set to the EDNS version i.e <span class="code">0</span>
      instead of <span class="code">false</span>), resolver option
      <span class="code">udp_payload_size</span> sets the limit. If a nameserver
      replies with the TC bit set (truncation), indicating
      the answer is incomplete, the query is retried
      to that nameserver using TCP. The resolver option
      <span class="code">udp_payload_size</span> also sets the advertised
      size for the max allowed reply size, if EDNS is
      enabled, otherwise the nameserver uses the limit
      512 byte. If the reply is larger it gets truncated,
      forcing a TCP re-query.</p>
    <p>For UDP queries, the resolver options <span class="code">timeout</span>
      and <span class="code">retry</span> control retransmission.
      Each nameserver in the <span class="code">nameservers</span> list is
      tried with a timeout of <span class="code">timeout</span> / <span class="code">retry</span>.
      Then all nameservers are tried again doubling the
      timeout, for a total of <span class="code">retry</span> times.</p>
    <p>For queries that not use the <span class="code">search</span> list,
      if the query to all <span class="code">nameservers</span> results in
      <span class="code">{error,nxdomain}</span>or an empty answer, the same
      query is tried for the <span class="code">alt_nameservers</span>.</p>
  </div>

  <h3>DATA TYPES</h3>
    <p>Resolver types:</p>
    <p>
      <span class="bold_code"><a name="type-res_option">res_option()</a> = {alt_nameservers, [<span class="bold_code"><a href="#type-nameserver">nameserver()</a></span>]}<br>             | {edns, 0 | false}<br>             | {inet6, boolean()}<br>             | {nameservers, [<span class="bold_code"><a href="#type-nameserver">nameserver()</a></span>]}<br>             | {recurse, boolean()}<br>             | {retry, integer()}<br>             | {timeout, integer()}<br>             | {udp_payload_size, integer()}<br>             | {usevc, boolean()}</span><br></p>
    <p>
      <span class="bold_code"><a name="type-nameserver">nameserver()</a> = {<span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span>, Port :: 1..65535}</span><br></p>
    <p>
      <span class="bold_code"><a name="type-res_error">res_error()</a> = formerr<br>            | qfmterror<br>            | servfail<br>            | nxdomain<br>            | notimp<br>            | refused<br>            | badvers<br>            | timeout</span><br></p>

    <p><a name="dns_types"></a>DNS types:</p>
    <p>
      <span class="bold_code"><a name="type-dns_name">dns_name()</a> = string()</span><br></p>
<div class="REFBODY"><p><p>A string with no adjacent dots.</p></p></div>
    <p>
      <span class="bold_code"><a name="type-rr_type">rr_type()</a> = a<br>          | aaaa<br>          | cname<br>          | gid<br>          | hinfo<br>          | ns<br>          | mb<br>          | md<br>          | mg<br>          | mf<br>          | minfo<br>          | mx<br>          | naptr<br>          | null<br>          | ptr<br>          | soa<br>          | spf<br>          | srv<br>          | txt<br>          | uid<br>          | uinfo<br>          | unspec<br>          | wks</span><br></p>
    <p>
      <span class="bold_code"><a name="type-dns_class">dns_class()</a> = in | chaos | hs | any</span><br></p>
    <p>
      <span class="bold_code"><a name="type-dns_msg">dns_msg()</a> = term()</span><br></p>
<div class="REFBODY"><p>
        <p>This is the start of a hiearchy of opaque data structures
          that can be examined with access functions in inet_dns that
          return lists of {Field,Value} tuples. The arity 2 functions
          just return the value for a given field.
<div class="example"><pre>
dns_msg() = DnsMsg
    inet_dns:msg(DnsMsg) -&gt;
        [ {header, dns_header()}
        | {qdlist, dns_query()}
        | {anlist, dns_rr()}
        | {nslist, dns_rr()}
        | {arlist, dns_rr()} ]
    inet_dns:msg(DnsMsg, header) -&gt; dns_header() % for example
    inet_dns:msg(DnsMsg, Field) -&gt; Value

dns_header() = DnsHeader
    inet_dns:header(DnsHeader) -&gt;
        [ {id, integer()}
        | {qr, boolean()}
        | {opcode, 'query' | iquery | status | integer()}
        | {aa, boolean()}
        | {tc, boolean()}
        | {rd, boolean()}
        | {ra, boolean()}
        | {pr, boolean()}
        | {rcode, integer(0..16)} ]
    inet_dns:header(DnsHeader, Field) -&gt; Value

query_type() = axfr | mailb | maila | any | rr_type()

dns_query() = DnsQuery
    inet_dns:dns_query(DnsQuery) -&gt;
        [ {domain, dns_name()}
        | {type, query_type()}
        | {class, dns_class()} ]
    inet_dns:dns_query(DnsQuery, Field) -&gt; Value

dns_rr() = DnsRr
    inet_dns:rr(DnsRr) -&gt; DnsRrFields | DnsRrOptFields
    DnsRrFields = [ {domain, dns_name()}
                  | {type, rr_type()}
                  | {class, dns_class()}
                  | {ttl, integer()}
                  | {data, dns_data()} ]
    DnsRrOptFields = [ {domain, dns_name()}
                     | {type, opt}
                     | {udp_payload_size, integer()}
                     | {ext_rcode, integer()}
                     | {version, integer()}
                     | {z, integer()}
                     | {data, dns_data()} ]
    inet_dns:rr(DnsRr, Field) -&gt; Value

There is an info function for the types above:

inet_dns:record_type(dns_msg()) -&gt; msg;
inet_dns:record_type(dns_header()) -&gt; header;
inet_dns:record_type(dns_query()) -&gt; dns_query;
inet_dns:record_type(dns_rr()) -&gt; rr;
inet_dns:record_type(_) -&gt; undefined.

So; inet_dns:(inet_dns:record_type(X))(X) will convert
any of these data structures into a {Field,Value} list.</pre></div></p>
      </p></div>
    <p>
      <span class="bold_code"><a name="type-dns_data">dns_data()</a> = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span><br>           | <span class="bold_code"><a href="inet.html#type-ip4_address">inet:ip4_address()</a></span><br>           | <span class="bold_code"><a href="inet.html#type-ip6_address">inet:ip6_address()</a></span><br>           | {MName :: <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>,<br>              RName :: <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>,<br>              Serial :: integer(),<br>              Refresh :: integer(),<br>              Retry :: integer(),<br>              Expiry :: integer(),<br>              Minimum :: integer()}<br>           | {<span class="bold_code"><a href="inet.html#type-ip4_address">inet:ip4_address()</a></span>,<br>              Proto :: integer(),<br>              BitMap :: binary()}<br>           | {CpuString :: string(), OsString :: string()}<br>           | {RM :: <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>, EM :: <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>}<br>           | {Prio :: integer(), <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>}<br>           | {Prio :: integer(),<br>              Weight :: integer(),<br>              Port :: integer(),<br>              <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>}<br>           | {Order :: integer(),<br>              Preference :: integer(),<br>              Flags :: string(),<br>              Services :: string(),<br>              Regexp :: string(),<br>              <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span>}<br>           | [string()]<br>           | binary()</span><br></p>
<div class="REFBODY"><p><p><span class="code">Regexp</span> is a string with characters encoded in the
         UTF-8 coding standard.</p>
      </p></div>
  


  <h3>EXPORTS</h3>

    <p><a name="getbyname-2"></a><span class="bold_code">getbyname(Name, Type) -&gt; {ok, Hostent} | {error, Reason}</span><br><a name="getbyname-3"></a><span class="bold_code">getbyname(Name, Type, Timeout) -&gt; {ok, Hostent} | {error, Reason}</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Type = <span class="bold_code"><a href="#type-rr_type">rr_type()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Hostent = <span class="bold_code"><a href="inet.html#type-hostent">inet:hostent()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span> | <span class="bold_code"><a href="#type-res_error">res_error()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Resolve a DNS record of the given type for the given host,
          of class <span class="code">in</span>. On success returns a <span class="code">hostent()</span> record with
          <span class="code">dns_data()</span> elements in the address list field.
        </p><p>
          This function uses the resolver option <span class="code">search</span> that
          is a list of domain names. If the name to resolve contains
          no dots, it is prepended to each domain name in the
          search list, and they are tried in order. If the name
          contains dots, it is first tried as an absolute name
          and if that fails the search list is used. If the name
          has a trailing dot it is simply supposed to be
          an absolute name and the search list is not used.
        </p>
      </p></div>

    <p><a name="gethostbyaddr-1"></a><span class="bold_code">gethostbyaddr(Address) -&gt; {ok, Hostent} | {error, Reason}</span><br><a name="gethostbyaddr-2"></a><span class="bold_code">gethostbyaddr(Address, Timeout) -&gt; {ok, Hostent} | {error, Reason}</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Address = <span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Hostent = <span class="bold_code"><a href="inet.html#type-hostent">inet:hostent()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span> | <span class="bold_code"><a href="#type-res_error">res_error()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Backend functions used by
          <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','kernel','inet.html#gethostbyaddr-1');">
            inet:gethostbyaddr/1
          </a></span>.
        </p>
      </p></div>

    <p><a name="gethostbyname-1"></a><span class="bold_code">gethostbyname(Name) -&gt; {ok, Hostent} | {error, Reason}</span><br><a name="gethostbyname-2"></a><span class="bold_code">gethostbyname(Name, Family) -&gt; {ok, Hostent} | {error, Reason}</span><br><a name="gethostbyname-3"></a><span class="bold_code">gethostbyname(Name, Family, Timeout) -&gt;<br>                 {ok, Hostent} | {error, Reason}</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Hostent = <span class="bold_code"><a href="inet.html#type-hostent">inet:hostent()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Family = <span class="bold_code"><a href="inet.html#type-address_family">inet:address_family()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span> | <span class="bold_code"><a href="#type-res_error">res_error()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Backend functions used by
          <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','kernel','inet.html#gethostbyname-1');">
            inet:gethostbyname/1,2
          </a></span>.
        </p><p>
          This function uses the resolver option <span class="code">search</span> just like 
          <span class="bold_code"><a href="#getbyname-2">getbyname/2,3</a></span>.
        </p><p>
          If the resolver option <span class="code">inet6</span> is <span class="code">true</span>,
          an IPv6 address is looked up, and if that fails
          the IPv4 address is looked up and returned on
          IPv6 mapped IPv4 format.
        </p>
      </p></div>

    <p><a name="lookup-3"></a><span class="bold_code">lookup(Name, Class, Type) -&gt; [<span class="bold_code"><a href="#type-dns_data">dns_data()</a></span>]</span><br><a name="lookup-4"></a><span class="bold_code">lookup(Name, Class, Type, Opts) -&gt; [<span class="bold_code"><a href="#type-dns_data">dns_data()</a></span>]</span><br><a name="lookup-5"></a><span class="bold_code">lookup(Name, Class, Type, Opts, Timeout) -&gt; [<span class="bold_code"><a href="#type-dns_data">dns_data()</a></span>]</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span> | <span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Class = <span class="bold_code"><a href="#type-dns_class">dns_class()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Type = <span class="bold_code"><a href="#type-rr_type">rr_type()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Opts = [<span class="bold_code"><a href="#type-res_option">res_option()</a></span> | verbose]</span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Resolve the DNS data for the record of the given type and class
          for the given name. On success filters out the answer records
          with the correct <span class="code">Class</span> and <span class="code">Type</span> and returns
          a list of their data fields. So a lookup for type <span class="code">any</span>
          will give an empty answer since the answer records have
          specific types that are not <span class="code">any</span>. An empty answer
          as well as a failed lookup returns an empty list.
        </p><p>
          Calls <span class="bold_code"><a href="#resolve-3">resolve/2..4</a></span>
          with the same arguments and filters the result, so
          <span class="code">Opts</span> is explained there.
        </p>
      </p></div>

    <p><a name="resolve-3"></a><span class="bold_code">resolve(Name, Class, Type) -&gt; {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | Error</span><br><a name="resolve-4"></a><span class="bold_code">resolve(Name, Class, Type, Opts) -&gt; {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | Error</span><br><a name="resolve-5"></a><span class="bold_code">resolve(Name, Class, Type, Opts, Timeout) -&gt;<br>           {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | Error</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span> | <span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Class = <span class="bold_code"><a href="#type-dns_class">dns_class()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Type = <span class="bold_code"><a href="#type-rr_type">rr_type()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Opts = [Opt]</span></div>
<div class="REFTYPES"><span class="bold_code">Opt = <span class="bold_code"><a href="#type-res_option">res_option()</a></span> | verbose | atom()</span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Error = {error, Reason} | {error, {Reason, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>}}</span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span> | <span class="bold_code"><a href="#type-res_error">res_error()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Resolve a DNS record of the given type and class for the given name.
          The returned <span class="code">dns_msg()</span> can be examined using
          access functions in <span class="code">inet_db</span> as described 
          in <span class="bold_code"><a href="#dns_types">DNS types</a></span>.
        </p><p>
          If <span class="code">Name</span> is an <span class="code">ip_address()</span>, the domain name
          to query for is generated as the standard reverse
          ".IN-ADDR.ARPA." name for an IPv4 address, or the
          ".IP6.ARPA." name for an IPv6 address.
          In this case you most probably want to use
          <span class="code">Class = in</span> and <span class="code">Type = ptr</span> but it
          is not done automatically.
        </p><p>
          <span class="code">Opts</span> override the corresponding resolver options.
          If the option <span class="code">nameservers</span> is given, it is
          also assumed that it is the complete list of nameserves,
          so the resolver option <span class="code">alt_nameserves</span> is ignored.
          Of course, if that option is also given to this function,
          it is used.
        </p><p>
          The <span class="code">verbose</span> option (or rather <span class="code">{verbose,true}</span>),
          causes diagnostics printout through
          <span class="bold_code"><a href="javascript:erlhref('../../../../doc/../','stdlib','io.html#format-3');">io:format/2</a></span>
          of queries, replies retransmissions, etc, similar
          to from utilities like <span class="code">dig</span>, <span class="code">nslookup</span> et.al.
        </p><p>
          If <span class="code">Opt</span> is an arbitrary atom it is interpreted
          as <span class="code">{Opt,true}</span> unless the atom string starts with
          <span class="code">"no"</span> making the interpretation <span class="code">{Opt,false}</span>.
          For example: <span class="code">usevc</span> is an alias for <span class="code">{usevc,true}</span>,
          and <span class="code">nousevc</span> an alias for <span class="code">{usevc,false}</span>.
        </p><p>
          The <span class="code">inet6</span> option currently has no effect on this function.
          You probably want to use <span class="code">Type = a | aaaa</span> instead.
        </p>
      </p></div>

  



  <h3><a name="id130400">Examples</a></h3>
<div class="REFBODY">
    
    <p>Access functions example: how
      <span class="bold_code"><a href="#lookup-3">lookup/3</a></span>
      could have been implemented using
      <span class="bold_code"><a href="#resolve-3">resolve/3</a></span>
      from outside the module.
    </p>
<div class="example"><pre>
    example_lookup(Name, Class, Type) -&gt;
        case inet_res:resolve(Name, Class, Type) of
            {ok,Msg} -&gt;
                [inet_dns:rr(RR, data)
                 || RR &lt;- inet_dns:msg(Msg, anlist),
                    inet_dns:rr(RR, type) =:= Type,
                    inet_dns:rr(RR, class) =:= Class];
            {error,_} -&gt;
                []
        end.</pre></div>
  </div>



  <h3><a name="id130432">Legacy Functions</a></h3>
<div class="REFBODY">
    
    <p>These have been deprecated due to the annoying double
      meaning of the nameservers/timeout argument, and
      because they had no decent place for a resolver options list.</p>
  </div>

  <h3>EXPORTS</h3>

    <p><a name="nslookup-3"></a><span class="bold_code">nslookup(Name, Class, Type) -&gt; {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | {error, Reason}</span><br><a name="nslookup-4"></a><span class="bold_code">nslookup(Name, Class, Type, Timeout) -&gt;<br>            {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | {error, Reason}</span><br><span class="bold_code">nslookup(Name, Class, Type, Nameservers) -&gt;<br>            {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | {error, Reason}</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span> | <span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Class = <span class="bold_code"><a href="#type-dns_class">dns_class()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Type = <span class="bold_code"><a href="#type-rr_type">rr_type()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Nameservers = [<span class="bold_code"><a href="#type-nameserver">nameserver()</a></span>]</span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span> | <span class="bold_code"><a href="#type-res_error">res_error()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Resolve a DNS record of the given type and class for the given name.
        </p>
      </p></div>

    <p><a name="nnslookup-4"></a><span class="bold_code">nnslookup(Name, Class, Type, Nameservers) -&gt;<br>             {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | {error, Reason}</span><br><a name="nnslookup-5"></a><span class="bold_code">nnslookup(Name, Class, Type, Nameservers, Timeout) -&gt;<br>             {ok, <span class="bold_code"><a href="#type-dns_msg">dns_msg()</a></span>} | {error, Reason}</span><br><div class="REFBODY">
<p>Types:</p>
<div class="REFTYPES"><span class="bold_code">Name = <span class="bold_code"><a href="#type-dns_name">dns_name()</a></span> | <span class="bold_code"><a href="inet.html#type-ip_address">inet:ip_address()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Class = <span class="bold_code"><a href="#type-dns_class">dns_class()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Type = <span class="bold_code"><a href="#type-rr_type">rr_type()</a></span></span></div>
<div class="REFTYPES"><span class="bold_code">Timeout = timeout()</span></div>
<div class="REFTYPES"><span class="bold_code">Nameservers = [<span class="bold_code"><a href="#type-nameserver">nameserver()</a></span>]</span></div>
<div class="REFTYPES"><span class="bold_code">Reason = <span class="bold_code"><a href="inet.html#type-posix">inet:posix()</a></span></span></div>
</div></p>
<div class="REFBODY"><p>
        <p>Resolve a DNS record of the given type and class for the given name.
        </p>
      </p></div>

  

</div>
<div class="footer">
<hr>
<p>Copyright © 1997-2012 Ericsson AB. All Rights Reserved.</p>
</div>
</div>
</div></body>
</html>