1 #ifndef GN_DNS_SERVICE_P_H
2 #define GN_DNS_SERVICE_P_H
4 #include "gnunet_common.h"
7 struct GNUNET_MessageHeader hdr;
10 * The IP-Address this query was originally sent to
12 unsigned orig_to:32 GNUNET_PACKED;
14 * The IP-Address this query was originally sent from
16 unsigned orig_from:32 GNUNET_PACKED;
18 * The UDP-Portthis query was originally sent from
20 unsigned src_port:16 GNUNET_PACKED;
22 unsigned char data[1]; /* The DNS-Packet */
25 struct query_packet_list {
26 struct query_packet_list* next GNUNET_PACKED;
27 struct query_packet_list* prev GNUNET_PACKED;
28 struct query_packet pkt;
31 enum GNUNET_DNS_ANSWER_Subtype {
33 * Answers of this type contain a dns-packet that just has to be transmitted
35 GNUNET_DNS_ANSWER_TYPE_IP,
38 * Answers of this type contain an incomplete dns-packet. The IP-Address
39 * is all 0s. The addroffset points to it.
41 GNUNET_DNS_ANSWER_TYPE_SERVICE,
44 * Answers of this type contain an incomplete dns-packet as answer to a
45 * PTR-Query. The resolved name is not allocated. The addroffset points to it.
47 GNUNET_DNS_ANSWER_TYPE_REV,
50 * Answers of this type contains an IP6-Address but traffic to this IP should
51 * be routed through the GNUNet.
53 GNUNET_DNS_ANSWER_TYPE_REMOTE_AAAA,
56 * Answers of this type contains an IP4-Address but traffic to this IP should
57 * be routed through the GNUNet.
59 GNUNET_DNS_ANSWER_TYPE_REMOTE_A
62 struct GNUNET_vpn_service_descriptor {
63 GNUNET_HashCode peer GNUNET_PACKED;
64 GNUNET_HashCode service_descriptor GNUNET_PACKED;
65 uint64_t ports GNUNET_PACKED;
66 uint32_t service_type GNUNET_PACKED;
69 struct answer_packet {
71 struct GNUNET_MessageHeader hdr;
72 enum GNUNET_DNS_ANSWER_Subtype subtype GNUNET_PACKED;
74 unsigned from:32 GNUNET_PACKED;
75 unsigned to:32 GNUNET_PACKED;
76 unsigned dst_port:16 GNUNET_PACKED;
79 /* Data for GNUNET_DNS_ANSWER_TYPE_SERVICE */
80 struct GNUNET_vpn_service_descriptor service_descr;
83 /* Data for GNUNET_DNS_ANSWER_TYPE_REV */
84 /* The offsett in octets from the beginning of the struct to the field
85 * in data where the IP-Address has to go. */
86 uint16_t addroffset GNUNET_PACKED;
89 /* Data for GNUNET_DNS_ANSWER_TYPE_REMOTE */
92 unsigned char addr[16];
95 unsigned char data[1];
98 struct answer_packet_list {
99 struct answer_packet_list* next GNUNET_PACKED;
100 struct answer_packet_list* prev GNUNET_PACKED;
101 struct answer_packet pkt;