void
new_ip6addr(char* buf, struct answer_packet* pkt) {
memcpy(buf, (int[]){htons(0x1234)}, 2);
- memcpy(buf+2, &pkt->service_descriptor, 6);
- memcpy(buf+8, &pkt->peer, 8);
+ memcpy(buf+2, &pkt->service_descr.service_descriptor, 6);
+ memcpy(buf+8, &pkt->service_descr.peer, 8);
}
/*}}}*/
GNUNET_DNS_ANSWER_TYPE_REV
};
+struct GNUNET_vpn_service_descriptor {
+ GNUNET_HashCode peer GNUNET_PACKED;
+ GNUNET_HashCode service_descriptor GNUNET_PACKED;
+ uint64_t ports GNUNET_PACKED;
+ uint32_t service_type GNUNET_PACKED;
+};
+
struct answer_packet {
struct GNUNET_MessageHeader hdr;
enum GNUNET_DNS_ANSWER_Subtype subtype GNUNET_PACKED;
unsigned dst_port:16 GNUNET_PACKED;
/* Only sensible when subtype == GNUNET_DNS_ANSWER_TYPE_SERVICE */
- GNUNET_HashCode peer;
- GNUNET_HashCode service_descriptor;
- uint64_t ports;
- uint32_t service_type;
+ struct GNUNET_vpn_service_descriptor service_descr;
/* The offsett in octets from the beginning of the struct to the field
* in data where the IP-Address has to go. */
GNUNET_CRYPTO_hash(&rec->peer,
sizeof(struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
- &answer->pkt.peer);
+ &answer->pkt.service_descr.peer);
- memcpy(&answer->pkt.service_descriptor,
+ memcpy(&answer->pkt.service_descr.service_descriptor,
&rec->service_descriptor,
sizeof(GNUNET_HashCode));
- memcpy(&answer->pkt.service_type,
+ memcpy(&answer->pkt.service_descr.service_type,
&rec->service_type,
- sizeof(answer->pkt.service_type));
- memcpy(&answer->pkt.ports, &rec->ports, sizeof(answer->pkt.ports));
+ sizeof(answer->pkt.service_descr.service_type));
+ memcpy(&answer->pkt.service_descr.ports, &rec->ports, sizeof(answer->pkt.service_descr.ports));
answer->pkt.from = query_states[id].remote_ip;