X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fblock_dns.h;h=4c2f1a3f34100b42d7c4e2b0a12131f558fe4e6f;hb=a6fb0db57f2a70a05bdb6ef7ccf69a044268dee6;hp=d8f3fa50ec18b5d907c944fcdc0c1a7a6c22f3ae;hpb=8d058446a4a288d87f58a021622ecad6371519cb;p=oweals%2Fgnunet.git diff --git a/src/include/block_dns.h b/src/include/block_dns.h index d8f3fa50e..4c2f1a3f3 100644 --- a/src/include/block_dns.h +++ b/src/include/block_dns.h @@ -1,49 +1,87 @@ +/* + This file is part of GNUnet. + (C) 2009 Christian Grothoff (and other contributing authors) + + GNUnet is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GNUnet is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/** + * @file include/block_dns.h + * @author Philipp Toelke + */ #ifndef _GNVPN_BLOCKDNS_H_ #define _GNVPN_BLOCKDNS_H_ #include "gnunet_common.h" +#include "gnunet_crypto_lib.h" /** - * Bitmask describing what ip-services are supported by services - * It is 2 bytes long + * Bitmask describing what IP-protocols are supported by the service */ -struct GNUNET_ipservices { - unsigned UDP:1 GNUNET_PACKED; - unsigned TCP:1 GNUNET_PACKED; - unsigned RESERVED:14 GNUNET_PACKED; +enum GNUNET_DNS_ServiceTypes +{ + GNUNET_DNS_SERVICE_TYPE_UDP = 1, + GNUNET_DNS_SERVICE_TYPE_TCP = 2 }; +GNUNET_NETWORK_STRUCT_BEGIN + /** * This is the structure describing an dns-record such as www.gnunet. */ struct GNUNET_DNS_Record { + /** + * Signature of the peer affirming that he is offering the service. + */ + struct GNUNET_CRYPTO_RsaSignature signature; + + /** + * Beginning of signed portion of the record, signs everything until + * the end of the struct. + */ + struct GNUNET_CRYPTO_RsaSignaturePurpose purpose; + /** * The peer providing this service */ - struct GNUNET_PeerIdentity peer; + struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded peer; /** * The descriptor for the service * (a peer may provide more than one service) */ - GNUNET_HashCode service_descriptor; + GNUNET_HashCode service_descriptor GNUNET_PACKED; /** - * What connection-types (UDP, TCP, ...) are supported by the service + * When does this record expire? */ - struct GNUNET_ipservices connectiontypes; + struct GNUNET_TIME_AbsoluteNBO expiration_time; /** - * The length of the name of the service + * Four TCP and UDP-Ports that are used by this service, big endian format */ - unsigned char namelen; + uint64_t ports GNUNET_PACKED; /** - * The name of the service - * This is namelen bytes + * What connection-types (UDP, TCP, ...) are supported by the service. + * Contains an 'enum GNUNET_DNS_ServiceTypes' in big endian format. */ - char name[1]; + uint32_t service_type GNUNET_PACKED; }; +GNUNET_NETWORK_STRUCT_END #endif