edns.h File Reference
`#include "config.h"`
`#include "status.h"`
`#include "wire/buffer.h"`
`#include <ldns/ldns.h>`

Go to the source code of this file.

## Data Structures

struct | edns_data_struct
struct | edns_rr_struct

## Macros

#define | OPT_LEN 9U /* length of the NSD EDNS response record minus 2 */
#define | OPT_RDATA 2 /* holds the rdata length comes after OPT_LEN */
#define | DNSSEC_OK_MASK 0x8000U /* do bit mask */
#define | EDNS_MAX_MESSAGE_LEN 4096

## Typedefs

typedef struct edns_data_struct | edns_data_type
typedef enum edns_status_enum | edns_status
typedef struct edns_rr_struct | edns_rr_type

## Enumerations

enum | edns_status_enum { EDNS_NOT_PRESENT , EDNS_OK , EDNS_ERROR }

## Functions

void | edns_init (edns_data_type *data, uint16_t max_length)
edns_rr_type * | edns_rr_create (void)
void | edns_rr_reset (edns_rr_type *err)
int | edns_rr_parse (edns_rr_type *err, buffer_type *buffer)
size_t | edns_rr_reserved_space (edns_rr_type *err)
void | edns_rr_cleanup (edns_rr_type *err)

## Macro Definition Documentation

## DNSSEC_OK_MASK

#define DNSSEC_OK_MASK 0x8000U /* do bit mask */

Definition at line 45 of file edns.h.

## EDNS_MAX_MESSAGE_LEN

#define EDNS_MAX_MESSAGE_LEN 4096

Definition at line 47 of file edns.h.

## OPT_LEN

#define OPT_LEN 9U /* length of the NSD EDNS response record minus 2 */

EDNS.

Definition at line 43 of file edns.h.

## OPT_RDATA

#define OPT_RDATA 2 /* holds the rdata length comes after OPT_LEN */

Definition at line 44 of file edns.h.

## Typedef Documentation

## edns_data_type

typedef struct edns_data_struct edns_data_type

EDNS data.

Definition at line 53 of file edns.h.

## edns_rr_type

typedef struct edns_rr_struct edns_rr_type

EDNS RR.

Definition at line 75 of file edns.h.

## edns_status

typedef enum edns_status_enum edns_status

Definition at line 69 of file edns.h.

## Enumeration Type Documentation

## edns_status_enum

enum edns_status_enum

EDNS status.

Enumerator
EDNS_NOT_PRESENT |
EDNS_OK |
EDNS_ERROR |

Definition at line 64 of file edns.h.

## Function Documentation

## edns_init()

void edns_init | ( | edns_data_type * | data,
|  | uint16_t | max_length
| ) |  |

extern

Initialize EDNS.

Parameters

  [in] | data | EDNS data.
  [in] | max_length | maximum length.

Initialize EDNS.

Definition at line 64 of file edns.c.

References edns_data_struct::error, and edns_data_struct::ok.

## edns_rr_cleanup()

void edns_rr_cleanup | ( | edns_rr_type * | err | ) |

extern

Definition at line 172 of file edns.c.

Referenced by query_cleanup().

## edns_rr_create()

edns_rr_type * edns_rr_create | ( | void |  | ) |

extern

Create new EDNS RR.

Parameters

  [in] | allocator | memory allocator.

Returns
  edns_rr_type* EDNS RR.

Create new EDNS RR.

Definition at line 50 of file edns.c.

References edns_rr_reset().

Referenced by query_create().

## edns_rr_parse()

int edns_rr_parse | ( | edns_rr_type * | err,
|  | buffer_type * | buffer
| ) |  |

extern

Parse EDNS OPT RR.

Parameters

  [in] | err | EDNS record.
  [in] | buffer | packet buffer.

Returns
  int 1 if EDNS and valid, 0 otherwise.

Parse EDNS OPT RR.

Definition at line 107 of file edns.c.

References buffer_available(), buffer_position(), buffer_read_u16(), buffer_read_u8(), buffer_set_position(), buffer_skip(), edns_rr_struct::dnssec_ok, DNSSEC_OK_MASK, EDNS_ERROR, EDNS_OK, edns_rr_struct::maxlen, OPT_LEN, OPT_RDATA, edns_rr_struct::position, and edns_rr_struct::status.

## edns_rr_reserved_space()

size_t edns_rr_reserved_space | ( | edns_rr_type * | err | ) |

extern

The amount of space to reserve in the response for the EDNS data.

Parameters

  [in] | err | EDNS record.

Returns
  size_t amount of space to reserve.

The amount of space to reserve in the response for the EDNS data.

Definition at line 162 of file edns.c.

References EDNS_NOT_PRESENT, OPT_LEN, OPT_RDATA, and edns_rr_struct::status.

Referenced by query_prepare().

## edns_rr_reset()

void edns_rr_reset | ( | edns_rr_type * | err | ) |

extern

Reset EDNS OPT RR.

Parameters

  [in] | err | EDNS record.

Reset EDNS OPT RR.

Definition at line 90 of file edns.c.

References edns_rr_struct::dnssec_ok, EDNS_NOT_PRESENT, edns_rr_struct::maxlen, edns_rr_struct::position, and edns_rr_struct::status.

Referenced by edns_rr_create(), and query_reset().