/build/ldns-Ls6SRU/ldns-1.8.4/packet.c File Reference

Go to the source code of this file.

## Macros

#define | LDNS_EDNS_MASK_DO_BIT 0x8000
#define | LDNS_EDNS_MASK_UNASSIGNED (0xFFFF & ~LDNS_EDNS_MASK_DO_BIT)

## Functions

uint16_t | ldns_pkt_id (const ldns_pkt *packet)
| Read the packet id.
signed char | ldns_pkt_qr (const ldns_pkt *packet)
| Read the packet's qr bit.
signed char | ldns_pkt_aa (const ldns_pkt *packet)
| Read the packet's aa bit.
signed char | ldns_pkt_tc (const ldns_pkt *packet)
| Read the packet's tc bit.
signed char | ldns_pkt_rd (const ldns_pkt *packet)
| Read the packet's rd bit.
signed char | ldns_pkt_cd (const ldns_pkt *packet)
| Read the packet's cd bit.
signed char | ldns_pkt_ra (const ldns_pkt *packet)
| Read the packet's ra bit.
signed char | ldns_pkt_ad (const ldns_pkt *packet)
| Read the packet's ad bit.
ldns_pkt_opcode | ldns_pkt_get_opcode (const ldns_pkt *packet)
| Read the packet's code.
ldns_pkt_rcode | ldns_pkt_get_rcode (const ldns_pkt *packet)
| Return the packet's response code.
uint16_t | ldns_pkt_qdcount (const ldns_pkt *packet)
| Return the packet's qd count.
uint16_t | ldns_pkt_ancount (const ldns_pkt *packet)
| Return the packet's an count.
uint16_t | ldns_pkt_nscount (const ldns_pkt *packet)
| Return the packet's ns count.
uint16_t | ldns_pkt_arcount (const ldns_pkt *packet)
| Return the packet's ar count.
ldns_rr_list * | ldns_pkt_question (const ldns_pkt *packet)
| Return the packet's question section.
ldns_rr_list * | ldns_pkt_answer (const ldns_pkt *packet)
| Return the packet's answer section.
ldns_rr_list * | ldns_pkt_authority (const ldns_pkt *packet)
| Return the packet's authority section.
ldns_rr_list * | ldns_pkt_additional (const ldns_pkt *packet)
| Return the packet's additional section.
ldns_rr_list * | ldns_pkt_all (const ldns_pkt *packet)
| Return the packet's question, answer, authority and additional sections concatenated, in a new rr_list clone.
ldns_rr_list * | ldns_pkt_all_noquestion (const ldns_pkt *packet)
| Return the packet's answer, authority and additional sections concatenated, in a new rr_list clone.
size_t | ldns_pkt_size (const ldns_pkt *packet)
| Return the packet's size in bytes.
uint32_t | ldns_pkt_querytime (const ldns_pkt *packet)
| Return the packet's querytime.
ldns_rdf * | ldns_pkt_answerfrom (const ldns_pkt *packet)
| Return the packet's answerfrom.
struct timeval | ldns_pkt_timestamp (const ldns_pkt *packet)
| Return the packet's timestamp.
uint16_t | ldns_pkt_edns_udp_size (const ldns_pkt *packet)
| return the packet's edns udp size
uint8_t | ldns_pkt_edns_extended_rcode (const ldns_pkt *packet)
| return the packet's edns extended rcode
uint8_t | ldns_pkt_edns_version (const ldns_pkt *packet)
| return the packet's edns version
uint16_t | ldns_pkt_edns_z (const ldns_pkt *packet)
| return the packet's edns z value
signed char | ldns_pkt_edns_do (const ldns_pkt *packet)
| return the packet's edns do bit
void | ldns_pkt_set_edns_do (ldns_pkt *packet, signed char value)
| Set the packet's edns do bit.
uint16_t | ldns_pkt_edns_unassigned (const ldns_pkt *packet)
| return the packet's EDNS header bits that are unassigned.
void | ldns_pkt_set_edns_unassigned (ldns_pkt *packet, uint16_t value)
| Set the packet's EDNS header bits that are unassigned.
ldns_rdf * | ldns_pkt_edns_data (const ldns_pkt *packet)
| return the packet's EDNS data
ldns_rr_list * | ldns_pkt_rr_list_by_name (const ldns_pkt *packet, const ldns_rdf *ownername, ldns_pkt_section sec)
| return all the rr with a specific name from a packet.
ldns_rr_list * | ldns_pkt_rr_list_by_type (const ldns_pkt *packet, ldns_rr_type type, ldns_pkt_section sec)
| return all the rr with a specific type from a packet.
ldns_rr_list * | ldns_pkt_rr_list_by_name_and_type (const ldns_pkt *packet, const ldns_rdf *ownername, ldns_rr_type type, ldns_pkt_section sec)
| return all the rr with a specific type and type from a packet.
signed char | ldns_pkt_rr (const ldns_pkt *pkt, ldns_pkt_section sec, const ldns_rr *rr)
| check to see if an rr exist in the packet
uint16_t | ldns_pkt_section_count (const ldns_pkt *packet, ldns_pkt_section s)
| Return the number of RRs in the given section.
signed char | ldns_pkt_empty (ldns_pkt *p)
| check if a packet is empty
ldns_rr_list * | ldns_pkt_get_section_clone (const ldns_pkt *packet, ldns_pkt_section s)
| return all the rr_list's in the packet.
ldns_rr * | ldns_pkt_tsig (const ldns_pkt *pkt)
| Return the packet's tsig pseudo rr's.
void | ldns_pkt_set_id (ldns_pkt *packet, uint16_t id)
| Set the packet's id.
void | ldns_pkt_set_random_id (ldns_pkt *packet)
| Set the packet's id to a random value.
void | ldns_pkt_set_qr (ldns_pkt *packet, signed char qr)
| Set the packet's qr bit.
void | ldns_pkt_set_aa (ldns_pkt *packet, signed char aa)
| Set the packet's aa bit.
void | ldns_pkt_set_tc (ldns_pkt *packet, signed char tc)
| Set the packet's tc bit.
void | ldns_pkt_set_rd (ldns_pkt *packet, signed char rd)
| Set the packet's rd bit.
void | ldns_pkt_set_additional (ldns_pkt *p, ldns_rr_list *rr)
| directly set the additional section
void | ldns_pkt_set_question (ldns_pkt *p, ldns_rr_list *rr)
| directly set the question section
void | ldns_pkt_set_answer (ldns_pkt *p, ldns_rr_list *rr)
| directly set the answer section
void | ldns_pkt_set_authority (ldns_pkt *p, ldns_rr_list *rr)
| directly set the authority section
void | ldns_pkt_set_cd (ldns_pkt *packet, signed char cd)
| Set the packet's cd bit.
void | ldns_pkt_set_ra (ldns_pkt *packet, signed char ra)
| Set the packet's ra bit.
void | ldns_pkt_set_ad (ldns_pkt *packet, signed char ad)
| Set the packet's ad bit.
void | ldns_pkt_set_opcode (ldns_pkt *packet, ldns_pkt_opcode opcode)
| Set the packet's opcode.
void | ldns_pkt_set_rcode (ldns_pkt *packet, uint8_t rcode)
| Set the packet's response code.
void | ldns_pkt_set_qdcount (ldns_pkt *packet, uint16_t qdcount)
| Set the packet's qd count.
void | ldns_pkt_set_ancount (ldns_pkt *packet, uint16_t ancount)
| Set the packet's an count.
void | ldns_pkt_set_nscount (ldns_pkt *packet, uint16_t nscount)
| Set the packet's ns count.
void | ldns_pkt_set_arcount (ldns_pkt *packet, uint16_t arcount)
| Set the packet's arcount.
void | ldns_pkt_set_querytime (ldns_pkt *packet, uint32_t time)
| Set the packet's query time.
void | ldns_pkt_set_answerfrom (ldns_pkt *packet, ldns_rdf *answerfrom)
| Set the packet's answering server.
void | ldns_pkt_set_timestamp (ldns_pkt *packet, struct timeval timeval)
| Set the packet's timestamp.
void | ldns_pkt_set_size (ldns_pkt *packet, size_t s)
| Set the packet's size.
void | ldns_pkt_set_edns_udp_size (ldns_pkt *packet, uint16_t s)
| Set the packet's edns udp size.
void | ldns_pkt_set_edns_extended_rcode (ldns_pkt *packet, uint8_t c)
| Set the packet's edns extended rcode.
void | ldns_pkt_set_edns_version (ldns_pkt *packet, uint8_t v)
| Set the packet's edns version.
void | ldns_pkt_set_edns_z (ldns_pkt *packet, uint16_t z)
| Set the packet's edns z value.
void | ldns_pkt_set_edns_data (ldns_pkt *packet, ldns_rdf *data)
| Set the packet's EDNS data.
void | ldns_pkt_set_edns_option_list (ldns_pkt *packet, ldns_edns_option_list *list)
| Set the packet's structured EDNS data.
void | ldns_pkt_set_section_count (ldns_pkt *packet, ldns_pkt_section s, uint16_t count)
| Set a packet's section count to x.
void | ldns_pkt_set_tsig (ldns_pkt *pkt, ldns_rr *rr)
| Set the packet's tsig rr.
signed char | ldns_pkt_push_rr (ldns_pkt *packet, ldns_pkt_section section, ldns_rr *rr)
| push an rr on a packet
signed char | ldns_pkt_safe_push_rr (ldns_pkt *pkt, ldns_pkt_section sec, ldns_rr *rr)
| push an rr on a packet, provided the RR is not there.
signed char | ldns_pkt_push_rr_list (ldns_pkt *p, ldns_pkt_section s, ldns_rr_list *list)
| push a rr_list on a packet
signed char | ldns_pkt_safe_push_rr_list (ldns_pkt *p, ldns_pkt_section s, ldns_rr_list *list)
| push an rr_list to a packet, provided the RRs are not already there.
signed char | ldns_pkt_edns (const ldns_pkt *pkt)
| returns true if this packet needs and EDNS rr to be sent.
ldns_edns_option_list * | pkt_edns_data2edns_option_list (const ldns_rdf *edns_data)
ldns_edns_option_list * | ldns_pkt_edns_get_option_list (ldns_pkt *packet)
| Returns a list of structured EDNS options.
ldns_pkt * | ldns_pkt_new (void)
| allocates and initializes a ldns_pkt structure.
void | ldns_pkt_free (ldns_pkt *packet)
| frees the packet structure and all data that it contains.
signed char | ldns_pkt_set_flags (ldns_pkt *packet, uint16_t flags)
| sets the flags in a packet.
ldns_status | ldns_pkt_query_new_frm_str (ldns_pkt **p, const char *name, ldns_rr_type rr_type, ldns_rr_class rr_class, uint16_t flags)
| creates a query packet for the given name, type, class.
ldns_status | ldns_pkt_ixfr_request_new_frm_str (ldns_pkt **p, const char *name, ldns_rr_class rr_class, uint16_t flags, ldns_rr *soa)
| creates an IXFR request packet for the given name, class.
ldns_pkt * | ldns_pkt_query_new (ldns_rdf *rr_name, ldns_rr_type rr_type, ldns_rr_class rr_class, uint16_t flags)
| creates a packet with a query in it for the given name, type and class.
ldns_pkt * | ldns_pkt_ixfr_request_new (ldns_rdf *rr_name, ldns_rr_class rr_class, uint16_t flags, ldns_rr *soa)
| creates an IXFR request packet for the given name, type and class.
ldns_pkt_type | ldns_pkt_reply_type (const ldns_pkt *p)
| looks inside the packet to determine what kind of packet it is, AUTH, NXDOMAIN, REFERRAL, etc.
ldns_pkt * | ldns_pkt_clone (const ldns_pkt *pkt)
| clones the given packet, creating a fully allocated copy

## Variables

ldns_lookup_table | ldns_edns_flags []
| EDNS flags.

## Macro Definition Documentation

## LDNS_EDNS_MASK_DO_BIT

#define LDNS_EDNS_MASK_DO_BIT 0x8000

Definition at line 28 of file packet.c.

## LDNS_EDNS_MASK_UNASSIGNED

#define LDNS_EDNS_MASK_UNASSIGNED (0xFFFF & ~LDNS_EDNS_MASK_DO_BIT)

Definition at line 29 of file packet.c.

## Function Documentation

## ldns_pkt_id()

uint16_t ldns_pkt_id | ( | const ldns_pkt * | p | ) |

Read the packet id.

Parameters

  [in] | p | the packet

Returns
  the packet id

Definition at line 40 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_id.

## ldns_pkt_qr()

signed char ldns_pkt_qr | ( | const ldns_pkt * | p | ) |

Read the packet's qr bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 46 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_qr.

## ldns_pkt_aa()

signed char ldns_pkt_aa | ( | const ldns_pkt * | p | ) |

Read the packet's aa bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 52 of file packet.c.

References ldns_struct_hdr::_aa, and ldns_struct_pkt::_header.

## ldns_pkt_tc()

signed char ldns_pkt_tc | ( | const ldns_pkt * | p | ) |

Read the packet's tc bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 58 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_tc.

## ldns_pkt_rd()

signed char ldns_pkt_rd | ( | const ldns_pkt * | p | ) |

Read the packet's rd bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 64 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_rd.

## ldns_pkt_cd()

signed char ldns_pkt_cd | ( | const ldns_pkt * | p | ) |

Read the packet's cd bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 70 of file packet.c.

References ldns_struct_hdr::_cd, and ldns_struct_pkt::_header.

## ldns_pkt_ra()

signed char ldns_pkt_ra | ( | const ldns_pkt * | p | ) |

Read the packet's ra bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 76 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_ra.

## ldns_pkt_ad()

signed char ldns_pkt_ad | ( | const ldns_pkt * | p | ) |

Read the packet's ad bit.

Parameters

  [in] | p | the packet

Returns
  value of the bit

Definition at line 82 of file packet.c.

References ldns_struct_hdr::_ad, and ldns_struct_pkt::_header.

## ldns_pkt_get_opcode()

ldns_pkt_opcode ldns_pkt_get_opcode | ( | const ldns_pkt * | p | ) |

Read the packet's code.

Parameters

  [in] | p | the packet

Returns
  the opcode

Definition at line 88 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_opcode.

## ldns_pkt_get_rcode()

ldns_pkt_rcode ldns_pkt_get_rcode | ( | const ldns_pkt * | p | ) |

Return the packet's response code.

Parameters

  [in] | p | the packet

Returns
  the response code

Definition at line 94 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_rcode.

## ldns_pkt_qdcount()

uint16_t ldns_pkt_qdcount | ( | const ldns_pkt * | p | ) |

Return the packet's qd count.

Parameters

  [in] | p | the packet

Returns
  the qd count

Definition at line 100 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_qdcount.

## ldns_pkt_ancount()

uint16_t ldns_pkt_ancount | ( | const ldns_pkt * | p | ) |

Return the packet's an count.

Parameters

  [in] | p | the packet

Returns
  the an count

Definition at line 106 of file packet.c.

References ldns_struct_hdr::_ancount, and ldns_struct_pkt::_header.

## ldns_pkt_nscount()

uint16_t ldns_pkt_nscount | ( | const ldns_pkt * | p | ) |

Return the packet's ns count.

Parameters

  [in] | p | the packet

Returns
  the ns count

Definition at line 112 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_nscount.

## ldns_pkt_arcount()

uint16_t ldns_pkt_arcount | ( | const ldns_pkt * | p | ) |

Return the packet's ar count.

Parameters

  [in] | p | the packet

Returns
  the ar count

Definition at line 118 of file packet.c.

References ldns_struct_hdr::_arcount, and ldns_struct_pkt::_header.

## ldns_pkt_question()

ldns_rr_list * ldns_pkt_question | ( | const ldns_pkt * | p | ) |

Return the packet's question section.

Parameters

  [in] | p | the packet

Returns
  the section

Definition at line 124 of file packet.c.

References ldns_struct_pkt::_question.

## ldns_pkt_answer()

ldns_rr_list * ldns_pkt_answer | ( | const ldns_pkt * | p | ) |

Return the packet's answer section.

Parameters

  [in] | p | the packet

Returns
  the section

Definition at line 130 of file packet.c.

References ldns_struct_pkt::_answer.

## ldns_pkt_authority()

ldns_rr_list * ldns_pkt_authority | ( | const ldns_pkt * | p | ) |

Return the packet's authority section.

Parameters

  [in] | p | the packet

Returns
  the section

Definition at line 136 of file packet.c.

References ldns_struct_pkt::_authority.

## ldns_pkt_additional()

ldns_rr_list * ldns_pkt_additional | ( | const ldns_pkt * | p | ) |

Return the packet's additional section.

Parameters

  [in] | p | the packet

Returns
  the section

Definition at line 142 of file packet.c.

References ldns_struct_pkt::_additional.

## ldns_pkt_all()

ldns_rr_list * ldns_pkt_all | ( | const ldns_pkt * | p | ) |

Return the packet's question, answer, authority and additional sections concatenated, in a new rr_list clone.

Parameters

  [in] | p | the packet

Returns
  the rrs

Definition at line 149 of file packet.c.

References ldns_pkt_additional(), ldns_pkt_answer(), ldns_pkt_authority(), ldns_pkt_question(), ldns_rr_list_cat_clone(), and ldns_rr_list_deep_free().

## ldns_pkt_all_noquestion()

ldns_rr_list * ldns_pkt_all_noquestion | ( | const ldns_pkt * | p | ) |

Return the packet's answer, authority and additional sections concatenated, in a new rr_list clone.

Like ldns_pkt_all but without the questions.

Parameters

  [in] | p | the packet

Returns
  the rrs except the question rrs

Definition at line 168 of file packet.c.

References ldns_pkt_additional(), ldns_pkt_answer(), ldns_pkt_authority(), ldns_rr_list_cat_clone(), and ldns_rr_list_deep_free().

## ldns_pkt_size()

size_t ldns_pkt_size | ( | const ldns_pkt * | p | ) |

Return the packet's size in bytes.

Parameters

  [in] | p | the packet

Returns
  the size

Definition at line 183 of file packet.c.

References ldns_struct_pkt::_size.

## ldns_pkt_querytime()

uint32_t ldns_pkt_querytime | ( | const ldns_pkt * | p | ) |

Return the packet's querytime.

Parameters

  [in] | p | the packet

Returns
  the querytime

Definition at line 189 of file packet.c.

References ldns_struct_pkt::_querytime.

## ldns_pkt_answerfrom()

ldns_rdf * ldns_pkt_answerfrom | ( | const ldns_pkt * | p | ) |

Return the packet's answerfrom.

Parameters

  [in] | p | packet

Returns
  the name of the server

Definition at line 195 of file packet.c.

References ldns_struct_pkt::_answerfrom.

## ldns_pkt_timestamp()

struct timeval ldns_pkt_timestamp | ( | const ldns_pkt * | p | ) |

Return the packet's timestamp.

Parameters

  [in] | p | the packet

Returns
  the timestamp

Definition at line 201 of file packet.c.

References ldns_pkt_timestamp().

## ldns_pkt_edns_udp_size()

uint16_t ldns_pkt_edns_udp_size | ( | const ldns_pkt * | packet | ) |

return the packet's edns udp size

Parameters

  [in] | packet | the packet

Returns
  the size

Definition at line 207 of file packet.c.

References ldns_struct_pkt::_edns_udp_size.

## ldns_pkt_edns_extended_rcode()

uint8_t ldns_pkt_edns_extended_rcode | ( | const ldns_pkt * | packet | ) |

return the packet's edns extended rcode

Parameters

  [in] | packet | the packet

Returns
  the rcode

Definition at line 213 of file packet.c.

References ldns_struct_pkt::_edns_extended_rcode.

## ldns_pkt_edns_version()

uint8_t ldns_pkt_edns_version | ( | const ldns_pkt * | packet | ) |

return the packet's edns version

Parameters

  [in] | packet | the packet

Returns
  the version

Definition at line 219 of file packet.c.

References ldns_struct_pkt::_edns_version.

## ldns_pkt_edns_z()

uint16_t ldns_pkt_edns_z | ( | const ldns_pkt * | packet | ) |

return the packet's edns z value

Parameters

  [in] | packet | the packet

Returns
  the z value

Definition at line 225 of file packet.c.

References ldns_struct_pkt::_edns_z.

## ldns_pkt_edns_do()

signed char ldns_pkt_edns_do | ( | const ldns_pkt * | packet | ) |

return the packet's edns do bit

Parameters

  [in] | packet | the packet

Returns
  the bit's value

Definition at line 231 of file packet.c.

References ldns_struct_pkt::_edns_z, and LDNS_EDNS_MASK_DO_BIT.

## ldns_pkt_set_edns_do()

void ldns_pkt_set_edns_do | ( | ldns_pkt * | packet,
|  | signed char | value )

Set the packet's edns do bit.

Parameters

  [in] | packet | the packet
  [in] | value | the bit's new value

Definition at line 237 of file packet.c.

References ldns_struct_pkt::_edns_z, and LDNS_EDNS_MASK_DO_BIT.

## ldns_pkt_edns_unassigned()

uint16_t ldns_pkt_edns_unassigned | ( | const ldns_pkt * | packet | ) |

return the packet's EDNS header bits that are unassigned.

Definition at line 247 of file packet.c.

References ldns_struct_pkt::_edns_z, and LDNS_EDNS_MASK_UNASSIGNED.

## ldns_pkt_set_edns_unassigned()

void ldns_pkt_set_edns_unassigned | ( | ldns_pkt * | packet,
|  | uint16_t | value )

Set the packet's EDNS header bits that are unassigned.

Parameters

  [in] | packet | the packet
  [in] | value | the value

Definition at line 253 of file packet.c.

References ldns_struct_pkt::_edns_z, and LDNS_EDNS_MASK_UNASSIGNED.

## ldns_pkt_edns_data()

ldns_rdf * ldns_pkt_edns_data | ( | const ldns_pkt * | packet | ) |

return the packet's EDNS data

Parameters

  [in] | packet | the packet

Returns
  the data

Definition at line 260 of file packet.c.

References ldns_struct_pkt::_edns_data.

## ldns_pkt_rr_list_by_name()

ldns_rr_list * ldns_pkt_rr_list_by_name | ( | const ldns_pkt * | p,
|  | const ldns_rdf * | r,
|  | ldns_pkt_section | s )

return all the rr with a specific name from a packet.

Optionally specify from which section in the packet

Parameters

  [in] | p | the packet
  [in] | r | the name
  [in] | s | the packet's section

Returns
  a list with the rr's or NULL if none were found

Definition at line 267 of file packet.c.

References ldns_dname_compare(), ldns_pkt_get_section_clone(), ldns_rr_clone(), ldns_rr_list_deep_free(), ldns_rr_list_new(), ldns_rr_list_push_rr(), ldns_rr_list_rr(), ldns_rr_list_rr_count(), and ldns_rr_owner().

## ldns_pkt_rr_list_by_type()

ldns_rr_list * ldns_pkt_rr_list_by_type | ( | const ldns_pkt * | p,
|  | ldns_rr_type | t,
|  | ldns_pkt_section | s )

return all the rr with a specific type from a packet.

Optionally specify from which section in the packet

Parameters

  [in] | p | the packet
  [in] | t | the type
  [in] | s | the packet's section

Returns
  a list with the rr's or NULL if none were found

Definition at line 304 of file packet.c.

References ldns_pkt_get_section_clone(), ldns_rr_clone(), ldns_rr_get_type(), ldns_rr_list_deep_free(), ldns_rr_list_free(), ldns_rr_list_new(), ldns_rr_list_push_rr(), ldns_rr_list_rr(), and ldns_rr_list_rr_count().

## ldns_pkt_rr_list_by_name_and_type()

ldns_rr_list * ldns_pkt_rr_list_by_name_and_type | ( | const ldns_pkt * | packet,
|  | const ldns_rdf * | ownername,
|  | ldns_rr_type | type,
|  | ldns_pkt_section | sec )

return all the rr with a specific type and type from a packet.

Optionally specify from which section in the packet

Parameters

  [in] | packet | the packet
  [in] | ownername | the name
  [in] | type | the type
  [in] | sec | the packet's section

Returns
  a list with the rr's or NULL if none were found

Definition at line 340 of file packet.c.

References ldns_dname_compare(), ldns_pkt_get_section_clone(), ldns_rr_clone(), ldns_rr_get_type(), ldns_rr_list_deep_free(), ldns_rr_list_free(), ldns_rr_list_new(), ldns_rr_list_push_rr(), ldns_rr_list_rr(), ldns_rr_list_rr_count(), and ldns_rr_owner().

## ldns_pkt_rr()

signed char ldns_pkt_rr | ( | const ldns_pkt * | pkt,
|  | ldns_pkt_section | sec,
|  | const ldns_rr * | rr )

check to see if an rr exist in the packet

Parameters

  [in] | pkt | the packet to examine
  [in] | sec | in which section to look
  [in] | rr | the rr to look for

Definition at line 377 of file packet.c.

References ldns_pkt_additional(), ldns_pkt_answer(), ldns_pkt_authority(), ldns_pkt_question(), ldns_rr_list_contains_rr(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_ANY, LDNS_SECTION_ANY_NOQUESTION, LDNS_SECTION_AUTHORITY, and LDNS_SECTION_QUESTION.

## ldns_pkt_section_count()

uint16_t ldns_pkt_section_count | ( | const ldns_pkt * | p,
|  | ldns_pkt_section | s )

Return the number of RRs in the given section.

Returns the sum of all RRs when LDNS_SECTION_ANY is given. Returns the sum of all non-question RRs when LDNS_SECTION_ANY_NOQUESTION is given.

Parameters

  [in] | p | the packet
  [in] | s | the section

Returns
  the number of RRs in the given section

Definition at line 404 of file packet.c.

References ldns_pkt_ancount(), ldns_pkt_arcount(), ldns_pkt_nscount(), ldns_pkt_qdcount(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_ANY, LDNS_SECTION_ANY_NOQUESTION, LDNS_SECTION_AUTHORITY, and LDNS_SECTION_QUESTION.

## ldns_pkt_empty()

signed char ldns_pkt_empty | ( | ldns_pkt * | p | ) |

check if a packet is empty

Parameters

  [in] | p | packet

Returns
  true: empty, false: not empty

Definition at line 430 of file packet.c.

References ldns_pkt_section_count(), and LDNS_SECTION_ANY.

## ldns_pkt_get_section_clone()

ldns_rr_list * ldns_pkt_get_section_clone | ( | const ldns_pkt * | p,
|  | ldns_pkt_section | s )

return all the rr_list's in the packet.

Clone the lists, instead of returning pointers.

Parameters

  [in] | p | the packet to look in
  [in] | s | what section(s) to return

Returns
  ldns_rr_list with the rr's or NULL if none were found

Definition at line 444 of file packet.c.

References ldns_pkt_additional(), ldns_pkt_all(), ldns_pkt_all_noquestion(), ldns_pkt_answer(), ldns_pkt_authority(), ldns_pkt_question(), ldns_rr_list_clone(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_ANY, LDNS_SECTION_ANY_NOQUESTION, LDNS_SECTION_AUTHORITY, and LDNS_SECTION_QUESTION.

## ldns_pkt_tsig()

ldns_rr * ldns_pkt_tsig | ( | const ldns_pkt * | p | ) |

Return the packet's tsig pseudo rr's.

Parameters

  [in] | p | the packet

Returns
  the tsig rr

Definition at line 465 of file packet.c.

References ldns_struct_pkt::_tsig_rr.

## ldns_pkt_set_id()

void ldns_pkt_set_id | ( | ldns_pkt * | p,
|  | uint16_t | id )

Set the packet's id.

Parameters

  [in] | p | the packet
  [in] | id | the id to set

Definition at line 471 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_id.

## ldns_pkt_set_random_id()

void ldns_pkt_set_random_id | ( | ldns_pkt * | p | ) |

Set the packet's id to a random value.

Parameters

  [in] | p | the packet

Definition at line 477 of file packet.c.

References ldns_get_random(), and ldns_pkt_set_id().

## ldns_pkt_set_qr()

void ldns_pkt_set_qr | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's qr bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 485 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_qr.

## ldns_pkt_set_aa()

void ldns_pkt_set_aa | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's aa bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 491 of file packet.c.

References ldns_struct_hdr::_aa, and ldns_struct_pkt::_header.

## ldns_pkt_set_tc()

void ldns_pkt_set_tc | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's tc bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 497 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_tc.

## ldns_pkt_set_rd()

void ldns_pkt_set_rd | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's rd bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 503 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_rd.

## ldns_pkt_set_additional()

void ldns_pkt_set_additional | ( | ldns_pkt * | p,
|  | ldns_rr_list * | rr )

directly set the additional section

Parameters

  [in] | p | packet to operate on
  [in] | rr | rrlist to set

Definition at line 509 of file packet.c.

References ldns_struct_pkt::_additional.

## ldns_pkt_set_question()

void ldns_pkt_set_question | ( | ldns_pkt * | p,
|  | ldns_rr_list * | rr )

directly set the question section

Parameters

  [in] | p | packet to operate on
  [in] | rr | rrlist to set

Definition at line 515 of file packet.c.

References ldns_struct_pkt::_question.

## ldns_pkt_set_answer()

void ldns_pkt_set_answer | ( | ldns_pkt * | p,
|  | ldns_rr_list * | rr )

directly set the answer section

Parameters

  [in] | p | packet to operate on
  [in] | rr | rrlist to set

Definition at line 521 of file packet.c.

References ldns_struct_pkt::_answer.

## ldns_pkt_set_authority()

void ldns_pkt_set_authority | ( | ldns_pkt * | p,
|  | ldns_rr_list * | rr )

directly set the authority section

Parameters

  [in] | p | packet to operate on
  [in] | rr | rrlist to set

Definition at line 527 of file packet.c.

References ldns_struct_pkt::_authority.

## ldns_pkt_set_cd()

void ldns_pkt_set_cd | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's cd bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 533 of file packet.c.

References ldns_struct_hdr::_cd, and ldns_struct_pkt::_header.

## ldns_pkt_set_ra()

void ldns_pkt_set_ra | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's ra bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 539 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_ra.

## ldns_pkt_set_ad()

void ldns_pkt_set_ad | ( | ldns_pkt * | p,
|  | signed char | b )

Set the packet's ad bit.

Parameters

  [in] | p | the packet
  [in] | b | the value to set (boolean)

Definition at line 545 of file packet.c.

References ldns_struct_hdr::_ad, and ldns_struct_pkt::_header.

## ldns_pkt_set_opcode()

void ldns_pkt_set_opcode | ( | ldns_pkt * | p,
|  | ldns_pkt_opcode | c )

Set the packet's opcode.

Parameters

  [in] | p | the packet
  [in] | c | the opcode

Definition at line 551 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_opcode.

## ldns_pkt_set_rcode()

void ldns_pkt_set_rcode | ( | ldns_pkt * | p,
|  | uint8_t | c )

Set the packet's response code.

Parameters

  [in] | p | the packet
  [in] | c | the rcode

Definition at line 557 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_rcode.

## ldns_pkt_set_qdcount()

void ldns_pkt_set_qdcount | ( | ldns_pkt * | p,
|  | uint16_t | c )

Set the packet's qd count.

Parameters

  [in] | p | the packet
  [in] | c | the count

Definition at line 563 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_qdcount.

## ldns_pkt_set_ancount()

void ldns_pkt_set_ancount | ( | ldns_pkt * | p,
|  | uint16_t | c )

Set the packet's an count.

Parameters

  [in] | p | the packet
  [in] | c | the count

Definition at line 569 of file packet.c.

References ldns_struct_hdr::_ancount, and ldns_struct_pkt::_header.

## ldns_pkt_set_nscount()

void ldns_pkt_set_nscount | ( | ldns_pkt * | p,
|  | uint16_t | c )

Set the packet's ns count.

Parameters

  [in] | p | the packet
  [in] | c | the count

Definition at line 575 of file packet.c.

References ldns_struct_pkt::_header, and ldns_struct_hdr::_nscount.

## ldns_pkt_set_arcount()

void ldns_pkt_set_arcount | ( | ldns_pkt * | p,
|  | uint16_t | c )

Set the packet's arcount.

Parameters

  [in] | p | the packet
  [in] | c | the count

Definition at line 581 of file packet.c.

References ldns_struct_hdr::_arcount, and ldns_struct_pkt::_header.

## ldns_pkt_set_querytime()

void ldns_pkt_set_querytime | ( | ldns_pkt * | p,
|  | uint32_t | t )

Set the packet's query time.

Parameters

  [in] | p | the packet
  [in] | t | the querytime in msec

Definition at line 587 of file packet.c.

References ldns_struct_pkt::_querytime.

## ldns_pkt_set_answerfrom()

void ldns_pkt_set_answerfrom | ( | ldns_pkt * | p,
|  | ldns_rdf * | r )

Set the packet's answering server.

Parameters

  [in] | p | the packet
  [in] | r | the address

Definition at line 593 of file packet.c.

References ldns_struct_pkt::_answerfrom.

## ldns_pkt_set_timestamp()

void ldns_pkt_set_timestamp | ( | ldns_pkt * | p,
|  | struct timeval | timeval )

Set the packet's timestamp.

Parameters

  [in] | p | the packet
  [in] | timeval | the timestamp

Definition at line 599 of file packet.c.

References ldns_struct_pkt::timestamp.

## ldns_pkt_set_size()

void ldns_pkt_set_size | ( | ldns_pkt * | p,
|  | size_t | s )

Set the packet's size.

Parameters

  [in] | p | the packet
  [in] | s | the size

Definition at line 606 of file packet.c.

References ldns_struct_pkt::_size.

## ldns_pkt_set_edns_udp_size()

void ldns_pkt_set_edns_udp_size | ( | ldns_pkt * | packet,
|  | uint16_t | s )

Set the packet's edns udp size.

Parameters

  [in] | packet | the packet
  [in] | s | the size

Definition at line 612 of file packet.c.

References ldns_struct_pkt::_edns_udp_size.

## ldns_pkt_set_edns_extended_rcode()

void ldns_pkt_set_edns_extended_rcode | ( | ldns_pkt * | packet,
|  | uint8_t | c )

Set the packet's edns extended rcode.

Parameters

  [in] | packet | the packet
  [in] | c | the code

Definition at line 618 of file packet.c.

References ldns_struct_pkt::_edns_extended_rcode.

## ldns_pkt_set_edns_version()

void ldns_pkt_set_edns_version | ( | ldns_pkt * | packet,
|  | uint8_t | v )

Set the packet's edns version.

Parameters

  [in] | packet | the packet
  [in] | v | the version

Definition at line 624 of file packet.c.

References ldns_struct_pkt::_edns_version.

## ldns_pkt_set_edns_z()

void ldns_pkt_set_edns_z | ( | ldns_pkt * | packet,
|  | uint16_t | z )

Set the packet's edns z value.

Parameters

  [in] | packet | the packet
  [in] | z | the value

Definition at line 630 of file packet.c.

References ldns_struct_pkt::_edns_z.

## ldns_pkt_set_edns_data()

void ldns_pkt_set_edns_data | ( | ldns_pkt * | packet,
|  | ldns_rdf * | data )

Set the packet's EDNS data.

Parameters

  [in] | packet | the packet
  [in] | data | the data

Definition at line 636 of file packet.c.

References ldns_struct_pkt::_edns_data.

## ldns_pkt_set_edns_option_list()

void ldns_pkt_set_edns_option_list | ( | ldns_pkt * | packet,
|  | ldns_edns_option_list * | list )

Set the packet's structured EDNS data.

Once an edns_option_list is set (or get), the option list will be used for converting into wireformat.

Parameters

  [in] | packet | the packet
  [in] | list | the options list that will create the data

Definition at line 642 of file packet.c.

References ldns_struct_pkt::_edns_list, and ldns_edns_option_list_deep_free().

## ldns_pkt_set_section_count()

void ldns_pkt_set_section_count | ( | ldns_pkt * | p,
|  | ldns_pkt_section | s,
|  | uint16_t | x )

Set a packet's section count to x.

Parameters

  [in] | p | the packet
  [in] | s | the section
  [in] | x | the section count

Definition at line 651 of file packet.c.

References ldns_pkt_set_ancount(), ldns_pkt_set_arcount(), ldns_pkt_set_nscount(), ldns_pkt_set_qdcount(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_ANY, LDNS_SECTION_ANY_NOQUESTION, LDNS_SECTION_AUTHORITY, and LDNS_SECTION_QUESTION.

## ldns_pkt_set_tsig()

void ldns_pkt_set_tsig | ( | ldns_pkt * | p,
|  | ldns_rr * | t )

Set the packet's tsig rr.

Parameters

  [in] | p | the packet
  [in] | t | the tsig rr

Definition at line 672 of file packet.c.

References ldns_struct_pkt::_tsig_rr.

## ldns_pkt_push_rr()

signed char ldns_pkt_push_rr | ( | ldns_pkt * | packet,
|  | ldns_pkt_section | section,
|  | ldns_rr * | rr )

push an rr on a packet

Parameters

  [in] | packet | packet to operate on
  [in] | section | where to put it
  [in] | rr | rr to push

Returns
  a boolean which is true when the rr was added

Definition at line 678 of file packet.c.

References ldns_pkt_additional(), ldns_pkt_ancount(), ldns_pkt_answer(), ldns_pkt_arcount(), ldns_pkt_authority(), ldns_pkt_nscount(), ldns_pkt_qdcount(), ldns_pkt_question(), ldns_pkt_set_ancount(), ldns_pkt_set_arcount(), ldns_pkt_set_nscount(), ldns_pkt_set_qdcount(), ldns_rr_list_push_rr(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_ANY, LDNS_SECTION_ANY_NOQUESTION, LDNS_SECTION_AUTHORITY, and LDNS_SECTION_QUESTION.

## ldns_pkt_safe_push_rr()

signed char ldns_pkt_safe_push_rr | ( | ldns_pkt * | pkt,
|  | ldns_pkt_section | sec,
|  | ldns_rr * | rr )

push an rr on a packet, provided the RR is not there.

Parameters

  [in] | pkt | packet to operate on
  [in] | sec | where to put it
  [in] | rr | rr to push

Returns
  a boolean which is true when the rr was added

Definition at line 714 of file packet.c.

References ldns_pkt_push_rr(), and ldns_pkt_rr().

## ldns_pkt_push_rr_list()

signed char ldns_pkt_push_rr_list | ( | ldns_pkt * | packet,
|  | ldns_pkt_section | section,
|  | ldns_rr_list * | list )

push a rr_list on a packet

Parameters

  [in] | packet | packet to operate on
  [in] | section | where to put it
  [in] | list | the rr_list to push

Returns
  a boolean which is true when the rr was added

Definition at line 726 of file packet.c.

References ldns_pkt_push_rr(), ldns_rr_list_rr(), and ldns_rr_list_rr_count().

## ldns_pkt_safe_push_rr_list()

signed char ldns_pkt_safe_push_rr_list | ( | ldns_pkt * | pkt,
|  | ldns_pkt_section | sec,
|  | ldns_rr_list * | list )

push an rr_list to a packet, provided the RRs are not already there.

Parameters

  [in] | pkt | packet to operate on
  [in] | sec | where to put it
  [in] | list | the rr_list to push

Returns
  a boolean which is true when the rr was added

Definition at line 738 of file packet.c.

References ldns_pkt_safe_push_rr(), ldns_rr_list_rr(), and ldns_rr_list_rr_count().

## ldns_pkt_edns()

signed char ldns_pkt_edns | ( | const ldns_pkt * | packet | ) |

returns true if this packet needs and EDNS rr to be sent.

At the moment the only reason is an expected packet size larger than 512 bytes, but for instance dnssec would be a good reason too.

Parameters

  [in] | packet | the packet to check

Returns
  true if packet needs edns rr

Definition at line 750 of file packet.c.

References ldns_struct_pkt::_edns_list, ldns_struct_pkt::_edns_present, ldns_pkt_edns_data(), ldns_pkt_edns_do(), ldns_pkt_edns_extended_rcode(), and ldns_pkt_edns_udp_size().

## pkt_edns_data2edns_option_list()

ldns_edns_option_list * pkt_edns_data2edns_option_list | ( | const ldns_rdf * | edns_data | ) |

Definition at line 764 of file packet.c.

References ldns_edns_new(), ldns_edns_option_list_deep_free(), ldns_edns_option_list_new(), ldns_edns_option_list_push(), ldns_rdf_data(), ldns_rdf_size(), and LDNS_XMALLOC.

## ldns_pkt_edns_get_option_list()

ldns_edns_option_list * ldns_pkt_edns_get_option_list | ( | ldns_pkt * | packet | ) |

Returns a list of structured EDNS options.

The list will be automatically freed when the packet is freed. The option list can be manipulated and will be used when converting the packet to wireformat with ldns_pkt2wire.

Parameters

  [in] | packet | the packet which contains the EDNS data

Returns
  the list of EDNS options

Definition at line 823 of file packet.c.

References ldns_struct_pkt::_edns_list, ldns_pkt_edns_data(), and pkt_edns_data2edns_option_list().

## ldns_pkt_new()

ldns_pkt * ldns_pkt_new | ( | void |  | ) |

allocates and initializes a ldns_pkt structure.

Returns
  pointer to the new packet

Definition at line 843 of file packet.c.

References ldns_struct_pkt::_additional, ldns_struct_pkt::_answer, ldns_struct_pkt::_authority, ldns_struct_pkt::_edns_list, ldns_struct_pkt::_edns_present, ldns_struct_pkt::_header, ldns_struct_pkt::_question, LDNS_FREE, LDNS_MALLOC, LDNS_PACKET_QUERY, ldns_pkt_set_aa(), ldns_pkt_set_ad(), ldns_pkt_set_answerfrom(), ldns_pkt_set_cd(), ldns_pkt_set_edns_data(), ldns_pkt_set_edns_extended_rcode(), ldns_pkt_set_edns_udp_size(), ldns_pkt_set_edns_version(), ldns_pkt_set_edns_z(), ldns_pkt_set_id(), ldns_pkt_set_opcode(), ldns_pkt_set_qr(), ldns_pkt_set_querytime(), ldns_pkt_set_ra(), ldns_pkt_set_rcode(), ldns_pkt_set_rd(), ldns_pkt_set_section_count(), ldns_pkt_set_size(), ldns_pkt_set_tc(), ldns_pkt_set_tsig(), ldns_rr_list_new(), LDNS_SECTION_ADDITIONAL, LDNS_SECTION_ANSWER, LDNS_SECTION_AUTHORITY, LDNS_SECTION_QUESTION, and ldns_struct_pkt::timestamp.

## ldns_pkt_free()

void ldns_pkt_free | ( | ldns_pkt * | packet | ) |

frees the packet structure and all data that it contains.

Parameters

  [in] | packet | The packet structure to free

Returns
  void

Definition at line 897 of file packet.c.

References ldns_struct_pkt::_additional, ldns_struct_pkt::_answer, ldns_struct_pkt::_answerfrom, ldns_struct_pkt::_authority, ldns_struct_pkt::_edns_data, ldns_struct_pkt::_edns_list, ldns_struct_pkt::_header, ldns_struct_pkt::_question, ldns_struct_pkt::_tsig_rr, ldns_edns_option_list_deep_free(), LDNS_FREE, ldns_rdf_deep_free(), ldns_rr_free(), and ldns_rr_list_deep_free().

## ldns_pkt_set_flags()

signed char ldns_pkt_set_flags | ( | ldns_pkt * | pkt,
|  | uint16_t | flags )

sets the flags in a packet.

Parameters

  [in] | pkt | the packet to operate on
  [in] | flags | ORed values: LDNS_QR| LDNS_AR for instance

Returns
  true on success otherwise false

Definition at line 914 of file packet.c.

References LDNS_AA, LDNS_AD, LDNS_CD, ldns_pkt_set_aa(), ldns_pkt_set_ad(), ldns_pkt_set_cd(), ldns_pkt_set_qr(), ldns_pkt_set_ra(), ldns_pkt_set_rd(), ldns_pkt_set_tc(), LDNS_QR, LDNS_RA, LDNS_RD, and LDNS_TC.

## ldns_pkt_query_new_frm_str()

ldns_status ldns_pkt_query_new_frm_str | ( | ldns_pkt ** | p,
|  | const char * | rr_name,
|  | ldns_rr_type | rr_type,
|  | ldns_rr_class | rr_class,
|  | uint16_t | flags )

creates a query packet for the given name, type, class.

Parameters

  [out] | p | the packet to be returned
  [in] | rr_name | the name to query for (as string)
  [in] | rr_type | the type to query for
  [in] | rr_class | the class to query for
  [in] | flags | packet flags

Returns
  LDNS_STATUS_OK or a ldns_status mesg with the error

Definition at line 1083 of file packet.c.

## ldns_pkt_ixfr_request_new_frm_str()

ldns_status ldns_pkt_ixfr_request_new_frm_str | ( | ldns_pkt ** | p,
|  | const char * | rr_name,
|  | ldns_rr_class | rr_class,
|  | uint16_t | flags,
|  | ldns_rr * | soa )

creates an IXFR request packet for the given name, class.

adds the SOA record to the authority section.

Parameters

  [out] | p | the packet to be returned
  [in] | rr_name | the name to query for (as string)
  [in] | rr_class | the class to query for
  [in] | flags | packet flags
  [in] | soa | soa record to be added to the authority section (not copied).

Returns
  LDNS_STATUS_OK or a ldns_status mesg with the error

Definition at line 1091 of file packet.c.

References ldns_rdf_free(), LDNS_RR_TYPE_IXFR, LDNS_STATUS_OK, and ldns_str2rdf_dname().

## ldns_pkt_query_new()

ldns_pkt * ldns_pkt_query_new | ( | ldns_rdf * | rr_name,
|  | ldns_rr_type | rr_type,
|  | ldns_rr_class | rr_class,
|  | uint16_t | flags )

creates a packet with a query in it for the given name, type and class.

Parameters

  [in] | rr_name | the name to query for (not copied). The returned packet will take ownership of rr_name, so the caller should not free it.
  [in] | rr_type | the type to query for
  [in] | rr_class | the class to query for
  [in] | flags | packet flags

Returns
  ldns_pkt* a pointer to the new pkt

Definition at line 1150 of file packet.c.

## ldns_pkt_ixfr_request_new()

ldns_pkt * ldns_pkt_ixfr_request_new | ( | ldns_rdf * | rr_name,
|  | ldns_rr_class | rr_class,
|  | uint16_t | flags,
|  | ldns_rr * | soa )

creates an IXFR request packet for the given name, type and class.

adds the SOA record to the authority section.

Parameters

  [in] | rr_name | the name to query for (not copied). The returned packet will take ownership of rr_name, so the caller should not free it.
  [in] | rr_class | the class to query for
  [in] | flags | packet flags
  [in] | soa | soa record to be added to the authority section (not copied).

Returns
  ldns_pkt* a pointer to the new pkt

Definition at line 1158 of file packet.c.

References LDNS_RR_TYPE_IXFR.

## ldns_pkt_reply_type()

ldns_pkt_type ldns_pkt_reply_type | ( | const ldns_pkt * | p | ) |

looks inside the packet to determine what kind of packet it is, AUTH, NXDOMAIN, REFERRAL, etc.

Parameters

  [in] | p | the packet to examine

Returns
  the type of packet

Definition at line 1170 of file packet.c.

References LDNS_PACKET_ANSWER, LDNS_PACKET_NODATA, LDNS_PACKET_NXDOMAIN, LDNS_PACKET_REFERRAL, LDNS_PACKET_UNKNOWN, ldns_pkt_ancount(), ldns_pkt_arcount(), ldns_pkt_get_rcode(), ldns_pkt_nscount(), ldns_pkt_rr_list_by_type(), LDNS_RCODE_NXDOMAIN, ldns_rr_list_deep_free(), LDNS_RR_TYPE_NS, LDNS_RR_TYPE_SOA, and LDNS_SECTION_AUTHORITY.

## ldns_pkt_clone()

ldns_pkt * ldns_pkt_clone | ( | const ldns_pkt * | pkt | ) |

clones the given packet, creating a fully allocated copy

Parameters

  [in] | pkt | the packet to clone

Returns
  ldns_pkt* pointer to the new packet

Definition at line 1216 of file packet.c.

References ldns_struct_pkt::_additional, ldns_struct_pkt::_answer, ldns_struct_pkt::_authority, ldns_struct_pkt::_edns_list, ldns_struct_pkt::_edns_present, ldns_struct_pkt::_question, ldns_edns_option_list_clone(), ldns_pkt_aa(), ldns_pkt_ad(), ldns_pkt_additional(), ldns_pkt_ancount(), ldns_pkt_answer(), ldns_pkt_answerfrom(), ldns_pkt_arcount(), ldns_pkt_authority(), ldns_pkt_cd(), ldns_pkt_edns_data(), ldns_pkt_edns_do(), ldns_pkt_edns_extended_rcode(), ldns_pkt_edns_udp_size(), ldns_pkt_edns_version(), ldns_pkt_edns_z(), ldns_pkt_get_opcode(), ldns_pkt_get_rcode(), ldns_pkt_id(), ldns_pkt_new(), ldns_pkt_nscount(), ldns_pkt_qdcount(), ldns_pkt_qr(), ldns_pkt_querytime(), ldns_pkt_question(), ldns_pkt_ra(), ldns_pkt_rd(), ldns_pkt_set_aa(), ldns_pkt_set_ad(), ldns_pkt_set_ancount(), ldns_pkt_set_answerfrom(), ldns_pkt_set_arcount(), ldns_pkt_set_cd(), ldns_pkt_set_edns_data(), ldns_pkt_set_edns_do(), ldns_pkt_set_edns_extended_rcode(), ldns_pkt_set_edns_option_list(), ldns_pkt_set_edns_udp_size(), ldns_pkt_set_edns_version(), ldns_pkt_set_edns_z(), ldns_pkt_set_id(), ldns_pkt_set_nscount(), ldns_pkt_set_opcode(), ldns_pkt_set_qdcount(), ldns_pkt_set_qr(), ldns_pkt_set_querytime(), ldns_pkt_set_ra(), ldns_pkt_set_rcode(), ldns_pkt_set_rd(), ldns_pkt_set_size(), ldns_pkt_set_tc(), ldns_pkt_set_timestamp(), ldns_pkt_set_tsig(), ldns_pkt_size(), ldns_pkt_tc(), ldns_pkt_timestamp(), ldns_pkt_tsig(), ldns_rdf_clone(), ldns_rr_clone(), ldns_rr_list_clone(), and ldns_rr_list_deep_free().

## Variable Documentation

## ldns_edns_flags

ldns_lookup_table ldns_edns_flags[]

Initial value:
= {
{ 3600, "do"},
{ 0, NULL}
}

EDNS flags.

Definition at line 33 of file packet.c.