OpenVPN
resolve.h File Reference

DNS resolution. More...

#include "syshead.h"
#include "sig.h"
Include dependency graph for resolve.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  cached_dns_entry

Macros

#define GETADDR_RESOLVE   (1u << 0)
#define GETADDR_FATAL   (1u << 1)
#define GETADDR_HOST_ORDER   (1u << 2)
#define GETADDR_MENTION_RESOLVE_RETRY   (1u << 3)
#define GETADDR_FATAL_ON_SIGNAL   (1u << 4)
#define GETADDR_WARN_ON_SIGNAL   (1u << 5)
#define GETADDR_MSG_VIRT_OUT   (1u << 6)
#define GETADDR_TRY_ONCE   (1u << 7)
#define GETADDR_UPDATE_MANAGEMENT_STATE   (1u << 8)
#define GETADDR_RANDOMIZE   (1u << 9)
#define GETADDR_PASSIVE   (1u << 10)
#define GETADDR_DATAGRAM   (1u << 11)
#define GETADDR_CACHE_MASK   (GETADDR_DATAGRAM | GETADDR_PASSIVE)

Functions

unsigned int sf2gaf (const unsigned int getaddr_flags, const unsigned int sockflags)
 Convert sockflags/getaddr_flags into getaddr_flags.
in_addr_t getaddr (unsigned int flags, const char *hostname, int resolve_retry_seconds, bool *succeeded, struct signal_info *sig_info)
 Translate an IPv4 addr or hostname from string form to in_addr_t.
in_addr_t get_ip_addr (const char *ip_string, msglvl_t msglevel, bool *error)
bool get_ipv6_addr (const char *hostname, struct in6_addr *network, unsigned int *netbits, msglvl_t msglevel)
 Translate an IPv6 addr or hostname from string form to in6_addr.
static bool ipv6_addr_safe_hexplusbits (const char *ipv6_prefix_spec)
int openvpn_getaddrinfo (unsigned int flags, const char *hostname, const char *servname, int resolve_retry_seconds, struct signal_info *sig_info, int ai_family, struct addrinfo **res)
void do_preresolve (struct context *c)
int get_cached_dns_entry (struct cached_dns_entry *dns_cache, const char *hostname, const char *servname, int ai_family, unsigned int resolve_flags, struct addrinfo **ai)
 get_cached_dns_entry return 0 on success and -1 otherwise.

Detailed Description

DNS resolution.

Definition in file resolve.h.

Macro Definition Documentation

◆ GETADDR_CACHE_MASK

#define GETADDR_CACHE_MASK   (GETADDR_DATAGRAM | GETADDR_PASSIVE)

Definition at line 51 of file resolve.h.

Referenced by do_preresolve_host(), and get_cached_dns_entry().

◆ GETADDR_DATAGRAM

#define GETADDR_DATAGRAM   (1u << 11)

Definition at line 49 of file resolve.h.

Referenced by do_preresolve(), openvpn_getaddrinfo(), resolve_bind_local(), and resolve_remote().

◆ GETADDR_FATAL

#define GETADDR_FATAL   (1u << 1)

◆ GETADDR_FATAL_ON_SIGNAL

#define GETADDR_FATAL_ON_SIGNAL   (1u << 4)

Definition at line 42 of file resolve.h.

Referenced by init_tun(), and openvpn_getaddrinfo().

◆ GETADDR_HOST_ORDER

◆ GETADDR_MENTION_RESOLVE_RETRY

#define GETADDR_MENTION_RESOLVE_RETRY   (1u << 3)

Definition at line 41 of file resolve.h.

Referenced by do_preresolve(), openvpn_getaddrinfo(), and resolve_remote().

◆ GETADDR_MSG_VIRT_OUT

#define GETADDR_MSG_VIRT_OUT   (1u << 6)

Definition at line 44 of file resolve.h.

Referenced by man_kill(), and openvpn_getaddrinfo().

◆ GETADDR_PASSIVE

#define GETADDR_PASSIVE   (1u << 10)

◆ GETADDR_RANDOMIZE

#define GETADDR_RANDOMIZE   (1u << 9)

Definition at line 47 of file resolve.h.

Referenced by do_preresolve(), openvpn_getaddrinfo(), and sf2gaf().

◆ GETADDR_RESOLVE

◆ GETADDR_TRY_ONCE

#define GETADDR_TRY_ONCE   (1u << 7)

Definition at line 45 of file resolve.h.

Referenced by openvpn_getaddrinfo(), and resolve_remote().

◆ GETADDR_UPDATE_MANAGEMENT_STATE

#define GETADDR_UPDATE_MANAGEMENT_STATE   (1u << 8)

Definition at line 46 of file resolve.h.

Referenced by do_preresolve(), openvpn_getaddrinfo(), and resolve_remote().

◆ GETADDR_WARN_ON_SIGNAL

#define GETADDR_WARN_ON_SIGNAL   (1u << 5)

Function Documentation

◆ do_preresolve()

◆ get_cached_dns_entry()

int get_cached_dns_entry ( struct cached_dns_entry * dns_cache,
const char * hostname,
const char * servname,
int ai_family,
unsigned int resolve_flags,
struct addrinfo ** ai )

get_cached_dns_entry return 0 on success and -1 otherwise.

(like getaddrinfo())

Definition at line 506 of file resolve.c.

References cached_dns_entry::ai, cached_dns_entry::ai_family, cached_dns_entry::flags, GETADDR_CACHE_MASK, cached_dns_entry::hostname, cached_dns_entry::next, cached_dns_entry::servname, and streqnull().

Referenced by do_preresolve_host(), resolve_bind_local(), and resolve_remote().

◆ get_ip_addr()

in_addr_t get_ip_addr ( const char * ip_string,
msglvl_t msglevel,
bool * error )

Definition at line 469 of file resolve.c.

References getaddr(), GETADDR_FATAL, GETADDR_HOST_ORDER, and M_FATAL.

Referenced by add_option(), and dhcp_option_address_parse().

◆ get_ipv6_addr()

bool get_ipv6_addr ( const char * hostname,
struct in6_addr * network,
unsigned int * netbits,
msglvl_t msglevel )

Translate an IPv6 addr or hostname from string form to in6_addr.

Definition at line 489 of file resolve.c.

References get_addr_generic(), and GETADDR_RESOLVE.

Referenced by add_option(), dhcp_option_dns6_parse(), ifconfig_pool_read(), init_route_ipv6(), ipv6_addr_safe_hexplusbits(), option_iroute_ipv6(), and remove_iroutes_from_push_route_list().

◆ getaddr()

in_addr_t getaddr ( unsigned int flags,
const char * hostname,
int resolve_retry_seconds,
bool * succeeded,
struct signal_info * sig_info )

Translate an IPv4 addr or hostname from string form to in_addr_t.

In case of resolve error, it will try again for resolve_retry_seconds seconds.

Definition at line 442 of file resolve.c.

References get_addr_generic(), M_WARN, and status.

Referenced by add_client_nat_to_option_list(), add_host_route_array(), add_option(), get_adapter_ip_netmask(), get_ip_addr(), ifconfig_pool_read(), init_route(), init_route_list(), init_tun(), ip_addr_string_to_array(), man_kill(), option_iroute(), and remove_iroutes_from_push_route_list().

◆ ipv6_addr_safe_hexplusbits()

bool ipv6_addr_safe_hexplusbits ( const char * ipv6_prefix_spec)
inlinestatic

Definition at line 76 of file resolve.h.

References get_ipv6_addr(), and M_WARN.

Referenced by check_route6_option().

◆ openvpn_getaddrinfo()

◆ sf2gaf()

unsigned int sf2gaf ( const unsigned int getaddr_flags,
const unsigned int sockflags )

Convert sockflags/getaddr_flags into getaddr_flags.

Definition at line 42 of file resolve.c.

References GETADDR_RANDOMIZE, and SF_HOST_RANDOMIZE.

Referenced by resolve_remote().