63 lines
1.7 KiB
C
63 lines
1.7 KiB
C
|
#ifndef __PACKET_H__
|
||
|
#define __PACKET_H__
|
||
|
|
||
|
#include "glist.h"
|
||
|
#include "header.h"
|
||
|
#include "rr.h"
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned char name[256];
|
||
|
uint16_t offset;
|
||
|
} PacketLabel;
|
||
|
|
||
|
typedef struct {
|
||
|
unsigned char rdata[8192];
|
||
|
|
||
|
int rdlength;
|
||
|
int rdread;
|
||
|
|
||
|
DNSHeader header;
|
||
|
|
||
|
GList *questions;
|
||
|
|
||
|
GList *answers;
|
||
|
|
||
|
GList *authority;
|
||
|
|
||
|
GList *additional;
|
||
|
|
||
|
GList *labels;
|
||
|
|
||
|
int answer_socket_type;
|
||
|
/* Las respuestas tienen:
|
||
|
answer_from
|
||
|
answer_socket_type
|
||
|
|
||
|
*/
|
||
|
|
||
|
} DNSPacket;
|
||
|
|
||
|
DNSPacket *dns_packet_create_request (const char *name, int type, int klass);
|
||
|
DNSPacket *dns_packet_create_response (int type, unsigned char *data, int size_data);
|
||
|
DNSPacket *dns_packet_clone_simple (DNSPacket *packet);
|
||
|
void dns_packet_compress_name (DNSPacket *packet, char *name);
|
||
|
void dns_packet_pack_name (DNSPacket *packet, const char *name);
|
||
|
void dns_packet_pack_data (DNSPacket *packet);
|
||
|
int dns_packet_get_data (DNSPacket *packet, unsigned char **data);
|
||
|
void dns_packet_free_simple (DNSPacket *packet);
|
||
|
void dns_packet_free_full (DNSPacket *packet);
|
||
|
void dns_header_pack_data (DNSHeader *header, DNSPacket *packet);
|
||
|
int dns_header_init_from_packet (DNSHeader *header, DNSPacket *packet);
|
||
|
void dns_packet_reset (DNSPacket *packet);
|
||
|
int dns_packet_expand_name (unsigned char *name, DNSPacket *packet, int *offset);
|
||
|
int dns_packet_expand_name_simple (unsigned char *name, unsigned char *buffer, int buffer_size);
|
||
|
|
||
|
void dns_rr_pack_generate_signature (DNSRR *signature, DNSPacket *packet);
|
||
|
|
||
|
void dns_packet_recount_items (DNSPacket *packet);
|
||
|
DNSRR **dns_packet_get_answers (DNSPacket *packet);
|
||
|
DNSRR **dns_packet_get_authority (DNSPacket *packet);
|
||
|
DNSRR **dns_packet_get_additional (DNSPacket *packet);
|
||
|
|
||
|
#endif /* __PACKET_H__ */
|