+
+/**
+ * Record type used to box up SRV and TLSA records. For example, a
+ * TLSA record for "_https._tcp.foo.gnu" will be stored under
+ * "foo.gnu" as a BOX record with service 443 (https) and protocol 6
+ * (tcp) and record_type "TLSA". When a BOX record is received, GNS
+ * unboxes it if the name contained "_SERVICE._PROTO", otherwise GNS
+ * leaves it untouched. This is done to ensure that TLSA (and SRV)
+ * records do not require a separate network request, thus making TLSA
+ * records inseparable from the "main" A/AAAA/VPN/etc. records.
+ */
+struct GNUNET_GNSRECORD_BoxRecord
+{
+
+ /**
+ * Protocol of the boxed record (6 = TCP, 17 = UDP, etc.).
+ * Yes, in IP protocols are usually limited to 8 bits. In NBO.
+ */
+ uint16_t protocol GNUNET_PACKED;
+
+ /**
+ * Service of the boxed record (aka port number), in NBO.
+ */
+ uint16_t service GNUNET_PACKED;
+
+ /**
+ * GNS record type of the boxed record. In NBO.
+ */
+ uint32_t record_type GNUNET_PACKED;
+
+ /* followed by the 'original' record */
+
+};
+
+/**
+ * Record type used internally to keep track of reverse mappings into a
+ * namespace.
+ * The record contains data related to PKEY delegations from other namespaces to
+ * the namespace the record belongs to.
+ * It is exclusively found under the label ``+''.
+ */
+struct GNUNET_GNSRECORD_ReverseRecord
+{
+ /**
+ * The public key of the namespace the is delegating to our namespace
+ */
+ struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
+
+ /**
+ * The expiration time of the delegation
+ */
+ struct GNUNET_TIME_Absolute expiration;
+
+ /* followed by the name the delegator uses to refer to our namespace */
+};
+