parseutil.h File Reference

Utility functions for parsing, base32(DNS variant) and base64 encoding and decoding, Hex, Time units, Escape codes. More...

Data Structures

struct  sldns_struct_lookup_table
 A general purpose lookup table. More...
 

Typedefs

typedef struct sldns_struct_lookup_table sldns_lookup_table
 

Functions

sldns_lookup_tablesldns_lookup_by_name (sldns_lookup_table table[], const char *name)
 Looks up the table entry by name, returns NULL if not found. More...
 
sldns_lookup_tablesldns_lookup_by_id (sldns_lookup_table table[], int id)
 Looks up the table entry by id, returns NULL if not found. More...
 
time_t sldns_mktime_from_utc (const struct tm *tm)
 Convert TM to seconds since epoch (midnight, January 1st, 1970). More...
 
struct tm * sldns_serial_arithmetics_gmtime_r (int32_t time, time_t now, struct tm *result)
 The function interprets time as the number of seconds since epoch with respect to now using serial arithmetics (rfc1982). More...
 
uint32_t sldns_str2period (const char *nptr, const char **endptr, int *overflow)
 converts a ttl value (like 5d2h) to a long. More...
 
int sldns_hexdigit_to_int (char ch)
 Returns the int value of the given (hex) digit. More...
 
size_t sldns_b64_ntop_calculate_size (size_t srcsize)
 calculates the size needed to store the result of b64_ntop
 
int sldns_b64_ntop (uint8_t const *src, size_t srclength, char *target, size_t targsize)
 
int sldns_b64url_ntop (uint8_t const *src, size_t srclength, char *target, size_t targsize)
 
size_t sldns_b64_pton_calculate_size (size_t srcsize)
 calculates the size needed to store the result of sldns_b64_pton
 
int sldns_b64_pton (char const *src, uint8_t *target, size_t targsize)
 
int sldns_b64url_pton (char const *src, size_t srcsize, uint8_t *target, size_t targsize)
 
int sldns_b64_contains_nonurl (char const *src, size_t srcsize)
 
size_t sldns_b32_ntop_calculate_size (size_t src_data_length)
 calculates the size needed to store the result of b32_ntop
 
size_t sldns_b32_ntop_calculate_size_no_padding (size_t src_data_length)
 
int sldns_b32_ntop (const uint8_t *src_data, size_t src_data_length, char *target_text_buffer, size_t target_text_buffer_size)
 
int sldns_b32_ntop_extended_hex (const uint8_t *src_data, size_t src_data_length, char *target_text_buffer, size_t target_text_buffer_size)
 
size_t sldns_b32_pton_calculate_size (size_t src_text_length)
 calculates the size needed to store the result of b32_pton
 
int sldns_b32_pton (const char *src_text, size_t src_text_length, uint8_t *target_data_buffer, size_t target_data_buffer_size)
 
int sldns_b32_pton_extended_hex (const char *src_text, size_t src_text_length, uint8_t *target_data_buffer, size_t target_data_buffer_size)
 
int sldns_parse_escape (uint8_t *ch_p, const char **str_p)
 
int sldns_parse_char (uint8_t *ch_p, const char **str_p)
 Parse one character, with escape codes,. More...
 

Detailed Description

Utility functions for parsing, base32(DNS variant) and base64 encoding and decoding, Hex, Time units, Escape codes.

Function Documentation

◆ sldns_lookup_by_name()

sldns_lookup_table* sldns_lookup_by_name ( sldns_lookup_table  table[],
const char *  name 
)

Looks up the table entry by name, returns NULL if not found.

Parameters
[in]tablethe lookup table to search in
[in]namewhat to search for
Returns
the item found

◆ sldns_lookup_by_id()

sldns_lookup_table* sldns_lookup_by_id ( sldns_lookup_table  table[],
int  id 
)

Looks up the table entry by id, returns NULL if not found.

Parameters
[in]tablethe lookup table to search in
[in]idwhat to search for
Returns
the item found

Referenced by algo_needs_reason(), analyze_rr(), error_response(), prime_root(), sldns_get_errorstr_parse(), sldns_wire2str_class_print(), sldns_wire2str_edns_dau_print(), sldns_wire2str_edns_dhu_print(), sldns_wire2str_edns_option_code_print(), sldns_wire2str_opcode_print(), sldns_wire2str_rcode_print(), and val_dsset_isusable().

◆ sldns_mktime_from_utc()

time_t sldns_mktime_from_utc ( const struct tm *  tm)

Convert TM to seconds since epoch (midnight, January 1st, 1970).

Like timegm(3), which is not always available.

Parameters
[in]tma struct tm* with the date
Returns
the seconds since epoch

◆ sldns_serial_arithmetics_gmtime_r()

struct tm* sldns_serial_arithmetics_gmtime_r ( int32_t  time,
time_t  now,
struct tm *  result 
)

The function interprets time as the number of seconds since epoch with respect to now using serial arithmetics (rfc1982).

That number of seconds is then converted to broken-out time information. This is especially useful when converting the inception and expiration fields of RRSIG records.

Parameters
[in]timenumber of seconds since epoch (midnight, January 1st, 1970) to be interpreted as a serial arithmetics number relative to now.
[in]nownumber of seconds since epoch (midnight, January 1st, 1970) to which the time value is compared to determine the final value.
[out]resultthe struct with the broken-out time information
Returns
result on success or NULL on error

◆ sldns_str2period()

uint32_t sldns_str2period ( const char *  nptr,
const char **  endptr,
int *  overflow 
)

converts a ttl value (like 5d2h) to a long.

Parameters
[in]nptrthe start of the string
[out]endptrpoints to the last char in case of error
[out]overflowreturns if the string causes integer overflow error, the number is too big, string of digits too long.
Returns
the convert duration value

Referenced by http_parse_ttl().

◆ sldns_hexdigit_to_int()

int sldns_hexdigit_to_int ( char  ch)

Returns the int value of the given (hex) digit.

Parameters
[in]chthe hex char to convert
Returns
the converted decimal value

◆ sldns_parse_char()

int sldns_parse_char ( uint8_t *  ch_p,
const char **  str_p 
)

Parse one character, with escape codes,.

Parameters
ch_pthe parsed character
str_pthe string. moved along for characters read.
Returns
0 on error

Parse one character, with escape codes,.