MySQL 8.4.0
Source Code Documentation
hostname_cache.h File Reference
#include "my_config.h"
#include <sys/types.h>
#include <list>
#include <memory>
#include "my_hostname.h"
#include "my_inttypes.h"
#include "mysql_com.h"
#include <netinet/in.h>

Go to the source code of this file.

Classes

struct  Host_errors
 
class  Host_entry
 An entry in the hostname hash table cache. More...
 

Macros

#define HOST_ENTRY_KEY_SIZE   INET6_ADDRSTRLEN
 Size of IP address string in the hash cache. More...
 
#define RC_OK   0
 
#define RC_BLOCKED_HOST   1
 
#define RC_LONG_HOSTNAME   2
 

Functions

int ip_to_hostname (struct sockaddr_storage *ip_storage, const char *ip_string, char **hostname, uint *connect_errors)
 Resolve IP-address to host name. More...
 
void inc_host_errors (const char *ip_string, Host_errors *errors)
 
void reset_host_connect_errors (const char *ip_string)
 
bool hostname_cache_init (uint size)
 
void hostname_cache_free ()
 
void hostname_cache_refresh (void)
 
uint hostname_cache_size ()
 
void hostname_cache_resize (uint size)
 
void hostname_cache_lock ()
 
void hostname_cache_unlock ()
 
std::list< std::unique_ptr< Host_entry > >::iterator hostname_cache_begin ()
 
std::list< std::unique_ptr< Host_entry > >::iterator hostname_cache_end ()
 

Macro Definition Documentation

◆ HOST_ENTRY_KEY_SIZE

#define HOST_ENTRY_KEY_SIZE   INET6_ADDRSTRLEN

Size of IP address string in the hash cache.

◆ RC_BLOCKED_HOST

#define RC_BLOCKED_HOST   1

◆ RC_LONG_HOSTNAME

#define RC_LONG_HOSTNAME   2

◆ RC_OK

#define RC_OK   0

Function Documentation

◆ hostname_cache_begin()

std::list< std::unique_ptr< Host_entry > >::iterator hostname_cache_begin ( )

◆ hostname_cache_end()

std::list< std::unique_ptr< Host_entry > >::iterator hostname_cache_end ( )

◆ hostname_cache_free()

void hostname_cache_free ( )

◆ hostname_cache_init()

bool hostname_cache_init ( uint  size)

◆ hostname_cache_lock()

void hostname_cache_lock ( )

◆ hostname_cache_refresh()

void hostname_cache_refresh ( void  )

◆ hostname_cache_resize()

void hostname_cache_resize ( uint  size)

◆ hostname_cache_size()

uint hostname_cache_size ( )

◆ hostname_cache_unlock()

void hostname_cache_unlock ( )

◆ inc_host_errors()

void inc_host_errors ( const char *  ip_string,
Host_errors errors 
)

◆ ip_to_hostname()

int ip_to_hostname ( struct sockaddr_storage *  ip_storage,
const char *  ip_string,
char **  hostname,
uint *  connect_errors 
)

Resolve IP-address to host name.

This function does the following things:

  • resolves IP-address;
  • employs Forward Confirmed Reverse DNS technique to validate IP-address;
  • returns host name if IP-address is validated;
  • set value to out-variable connect_errors – this variable represents the number of connection errors from the specified IP-address.
  • update the host_cache statistics

NOTE: connect_errors are counted (are supported) only for the clients where IP-address can be resolved and FCrDNS check is passed.

Parameters
[in]ip_storageIP address (sockaddr). Must be set.
[in]ip_stringIP address (string). Must be set.
[out]hostnameHostname if IP-address is valid.
[out]connect_errorsRepresents number of connection errors.
Returns
Error status
Return values
0Success
RC_BLOCKED_HOSTThe host is blocked.
RC_LONG_HOSTNAMEThe hostname is longer than HOSTNAME_LENGTH.

The function does not set/report MySQL server error in case of failure. It's caller's responsibility to handle failures of this function properly.

◆ reset_host_connect_errors()

void reset_host_connect_errors ( const char *  ip_string)