[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30211 - gnunet gnunet/src gnunet/src/conversation gnunet/s
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30211 - gnunet gnunet/src gnunet/src/conversation gnunet/src/gns gnunet/src/gnsrecord gnunet/src/include gnunet/src/namestore gnunet-gtk/src/namestore |
Date: |
Wed, 16 Oct 2013 13:34:10 +0200 |
Author: grothoff
Date: 2013-10-16 13:34:10 +0200 (Wed, 16 Oct 2013)
New Revision: 30211
Added:
gnunet/src/gnsrecord/
gnunet/src/gnsrecord/Makefile.am
gnunet/src/gnsrecord/gnsrecord.c
Modified:
gnunet-gtk/src/namestore/Makefile.am
gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
gnunet/configure.ac
gnunet/src/Makefile.am
gnunet/src/conversation/Makefile.am
gnunet/src/conversation/conversation_api.c
gnunet/src/conversation/gnunet-conversation.c
gnunet/src/gns/Makefile.am
gnunet/src/gns/gnunet-gns.c
gnunet/src/gns/gnunet-service-gns_resolver.c
gnunet/src/gns/gnunet-service-gns_shorten.c
gnunet/src/include/Makefile.am
gnunet/src/include/gnunet_namestore_service.h
gnunet/src/namestore/Makefile.am
gnunet/src/namestore/gnunet-namestore-fcfsd.c
gnunet/src/namestore/gnunet-namestore.c
gnunet/src/namestore/namestore_api_common.c
gnunet/src/namestore/plugin_namestore_postgres.c
gnunet/src/namestore/plugin_namestore_sqlite.c
Log:
-moving code to new libgnunetgnsrecord in preparation for addressing #3052
Modified: gnunet/configure.ac
===================================================================
--- gnunet/configure.ac 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/configure.ac 2013-10-16 11:34:10 UTC (rev 30211)
@@ -232,7 +232,7 @@
*** You need libgcrypt to build this program.
** This library is for example available at
*** ftp://ftp.gnupg.org/gcrypt/libgcrypt/
-*** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
+*** (at least version $NEED_LIBGCRYPT_VERSION (API $NEED_LIBGCRYPT_API)
*** is required.)
***]])
fi
@@ -296,10 +296,10 @@
LIBS="$LIBS $LIBGCRYPT_LIBS"
CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
AC_RUN_IFELSE(
- [AC_LANG_PROGRAM([#include <gcrypt.h>
+ [AC_LANG_PROGRAM([#include <gcrypt.h>
#include <stdio.h>], [[
gcry_md_hd_t mac;
-
+
unsigned char data[] = { 0xbf, 0x16, 0x6e, 0x46, 0x3a, 0x6c, 0xf3,
0x93, 0xa7, 0x72,
0x11, 0xa1, 0xdc, 0x0b, 0x07, 0xdb, 0x1a, 0x5e, 0xd9, 0xb9, 0x81,
0xbe,
0xea, 0xe4, 0x31, 0x5f, 0x24, 0xff, 0xfe, 0x50, 0x8a, 0xde };
@@ -310,33 +310,33 @@
0xd, 0xba, 0x17, 0x7d, 0xd3, 0x10, 0xb1, 0x37, 0x41, 0x91, 0x7d,
0xeb,
0x1, 0x4d, 0x71, 0xe8, 0x59, 0x71, 0x42, 0x8e, 0xd6, 0xf3, 0x29,
0x3b,
0x90, 0xf2, 0xd1, 0xaf, 0x65, 0x1e, 0xb3};
-
+
if (!gcry_check_version (GCRYPT_VERSION))
{
fprintf (stderr, "Version mismatch %s <-> %s \n", gcry_check_version
(NULL), GCRYPT_VERSION);
return 1;
}
-
+
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
-
+
if (gcry_md_open(&mac, GCRY_MD_SHA512, GCRY_MD_FLAG_HMAC) !=
GPG_ERR_NO_ERROR)
{
fprintf (stderr, "gcry_md_open error\n");
return 2;
}
-
+
gcry_md_setkey (mac, key, sizeof (key));
gcry_md_write (mac, data, sizeof (data));
-
+
if (memcmp(gcry_md_read (mac, 0), result, gcry_md_get_algo_dlen
(gcry_md_get_algo (mac))) != 0)
{
fprintf (stderr, "memcmp error\n");
return 3;
}
-
+
gcry_md_close (mac);
-
+
return 0;
]])],
[AC_MSG_RESULT([yes])],
@@ -425,7 +425,7 @@
fi
AC_CHECK_HEADER(idna.h,
AC_CHECK_LIB(idn, stringprep_check_version,
- [libidn=yes LIBS="${LIBS} -lidn"],
+ [libidn=yes LIBS="${LIBS} -lidn"],
AC_MSG_FAILURE([GNUnet requires libidn])),
AC_MSG_FAILURE([GNUnet requires libidn]))
fi
@@ -437,7 +437,7 @@
AC_CHECK_HEADERS([glpk.h],[glpk=true],[gplk=false])
# GLPK must support glpk_init_env, version >= 4.43
-AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
+AC_CHECK_LIB([glpk],[glp_init_env],,[gplk=false])
# GLPK must support atm MLP presolving, version >= 4.32
AC_CHECK_MEMBERS(glp_iocp.presolve,,[gplk=false],[[#include <glpk.h>]])
if test x$gplk = xfalse
@@ -901,7 +901,7 @@
AC_DEFINE([FRAMEWORK_BUILD], 1, [Build a Mac OS X Framework])
GN_INTLINCL='-I$(top_srcdir)/src/intlemu'
GN_LIBINTL='$(top_builddir)/src/intlemu/libintlemu.la -framework
CoreFoundation'
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$GN_INTLINCL])
fi
GN_LIB_LDFLAGS="-export-dynamic -no-undefined"
@@ -1257,7 +1257,7 @@
else
AC_MSG_CHECKING(whether to enable windows workarounds)
- AC_ARG_ENABLE([windows_workarounds],
+ AC_ARG_ENABLE([windows_workarounds],
[AS_HELP_STRING([--enable-windows_workarounds], [enable workarounds used
on Windows (only useful for test cases)])],
[enable_workarounds=${enableval}],
[enable_workarounds=no])
@@ -1273,10 +1273,10 @@
# gcov compilation
AC_MSG_CHECKING(whether to compile with support for code coverage analysis)
-AC_ARG_ENABLE([coverage],
+AC_ARG_ENABLE([coverage],
AS_HELP_STRING([--enable-coverage],
[compile the library with code coverage support]),
- [use_gcov=${enableval}],
+ [use_gcov=${enableval}],
[use_gcov=no])
AC_MSG_RESULT($use_gcov)
AM_CONDITIONAL([USE_COVERAGE], [test "x$use_gcov" = "xyes"])
@@ -1303,14 +1303,14 @@
AC_DEFINE_UNQUOTED(VCS_VERSION, ["svn-`svnversion -n`"], [repository svn
version])
fi
-AC_CONFIG_FILES([
+AC_CONFIG_FILES([
Makefile
contrib/Makefile
doc/Makefile
doc/man/Makefile
doc/doxygen/Makefile
m4/Makefile
-po/Makefile.in
+po/Makefile.in
src/Makefile
src/arm/Makefile
src/arm/arm.conf
@@ -1344,6 +1344,7 @@
src/gns/Makefile
src/gns/gns.conf
src/gns/nss/Makefile
+src/gnsrecord/Makefile
src/hello/Makefile
src/identity/Makefile
src/identity/identity.conf
@@ -1519,7 +1520,7 @@
After that, run (if necessary as 'root')
make install
-to install everything.
+to install everything.
Each GNUnet user should be added to the 'gnunet' group (may
require fresh login to come into effect):
@@ -1527,8 +1528,8 @@
(run the above command as root once for each of your users, replacing
"$USERNAME" with the respective login names). If you have a global IP
address, no further configuration is required.
-
-Optionally, download and compile gnunet-gtk to get a GUI for
+
+Optionally, download and compile gnunet-gtk to get a GUI for
file-sharing and configuration. This is particularly recommended
if your network setup is non-trivial, as gnunet-setup can be
used to test in the GUI if your network configuration is working.
Modified: gnunet/src/Makefile.am
===================================================================
--- gnunet/src/Makefile.am 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -70,6 +70,7 @@
set \
dv \
revocation \
+ gnsrecord \
namestore \
vpn \
gns \
@@ -79,4 +80,4 @@
exit \
pt \
integration-tests \
- $(EXP_DIR)
+ $(EXP_DIR)
Modified: gnunet/src/conversation/Makefile.am
===================================================================
--- gnunet/src/conversation/Makefile.am 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/conversation/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -17,7 +17,7 @@
libexecdir= $(prefix)/lib/gnunet/libexec/
libgnunetmicrophone_la_SOURCES = \
- microphone.c
+ microphone.c
libgnunetmicrophone_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la
libgnunetmicrophone_la_LDFLAGS = \
@@ -25,7 +25,7 @@
-version-info 0:0:0
libgnunetspeaker_la_SOURCES = \
- speaker.c
+ speaker.c
libgnunetspeaker_la_LIBADD = \
$(top_builddir)/src/util/libgnunetutil.la
libgnunetspeaker_la_LDFLAGS = \
@@ -34,12 +34,12 @@
libgnunetconversation_la_SOURCES = \
- conversation_api.c
+ conversation_api.c
libgnunetconversation_la_LIBADD = \
$(top_builddir)/src/gns/libgnunetgns.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
- $(top_builddir)/src/util/libgnunetutil.la
+ $(top_builddir)/src/util/libgnunetutil.la
libgnunetconversation_la_LDFLAGS = \
$(GNUNET_LDFLAGS) $(WINFLAGS) \
@@ -48,10 +48,10 @@
bin_PROGRAMS = \
gnunet-conversation-test \
- gnunet-conversation
+ gnunet-conversation
libexec_PROGRAMS = \
- gnunet-service-conversation
+ gnunet-service-conversation
if HAVE_PULSE
if HAVE_OPUS
@@ -64,7 +64,7 @@
check_PROGRAMS = \
- test_conversation_api
+ test_conversation_api
TESTS = $(check_PROGRAMS)
@@ -74,18 +74,18 @@
gnunet_helper_audio_record_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
-lpulse -lopus\
- $(INTLLIBS)
+ $(INTLLIBS)
gnunet_helper_audio_record_LDFLAGS = \
- $(GNUNET_LDFLAGS) $(WINFLAGS)
+ $(GNUNET_LDFLAGS) $(WINFLAGS)
gnunet_helper_audio_playback_SOURCES = \
gnunet-helper-audio-playback.c
gnunet_helper_audio_playback_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
-lpulse -lopus\
- $(INTLLIBS)
+ $(INTLLIBS)
gnunet_helper_audio_playback_LDFLAGS = \
- $(GNUNET_LDFLAGS) $(WINFLAGS)
+ $(GNUNET_LDFLAGS) $(WINFLAGS)
gnunet_service_conversation_SOURCES = \
gnunet-service-conversation.c
@@ -95,9 +95,9 @@
libgnunetmicrophone.la \
$(top_builddir)/src/mesh/libgnunetmesh.la \
$(top_builddir)/src/util/libgnunetutil.la \
- $(INTLLIBS)
+ $(INTLLIBS)
gnunet_service_conversation_LDFLAGS = \
- $(GNUNET_LDFLAGS) $(WINFLAGS)
+ $(GNUNET_LDFLAGS) $(WINFLAGS)
gnunet_conversation_SOURCES = \
gnunet-conversation.c
@@ -106,12 +106,13 @@
libgnunetspeaker.la \
libgnunetconversation.la \
$(top_builddir)/src/gns/libgnunetgns.la \
+ $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
$(top_builddir)/src/util/libgnunetutil.la \
- $(INTLLIBS)
+ $(INTLLIBS)
gnunet_conversation_LDFLAGS = \
- $(GNUNET_LDFLAGS) $(WINFLAGS)
+ $(GNUNET_LDFLAGS) $(WINFLAGS)
gnunet_conversation_test_SOURCES = \
gnunet-conversation-test.c
@@ -119,17 +120,17 @@
libgnunetmicrophone.la \
libgnunetspeaker.la \
$(top_builddir)/src/util/libgnunetutil.la \
- $(INTLLIBS)
+ $(INTLLIBS)
gnunet_conversation_test_LDFLAGS = \
- $(GNUNET_LDFLAGS) $(WINFLAGS)
+ $(GNUNET_LDFLAGS) $(WINFLAGS)
test_conversation_api_SOURCES = \
test_conversation_api.c
test_conversation_api_LDADD = \
libgnunetconversation.la \
- $(top_builddir)/src/util/libgnunetutil.la
+ $(top_builddir)/src/util/libgnunetutil.la
test_conversation_api_LDFLAGS = \
$(GNUNET_LDFLAGS) $(WINFLAGS) -export-dynamic
- pkgcfg_DATA = conversation.conf
+ pkgcfg_DATA = conversation.conf
Modified: gnunet/src/conversation/conversation_api.c
===================================================================
--- gnunet/src/conversation/conversation_api.c 2013-10-16 11:17:17 UTC (rev
30210)
+++ gnunet/src/conversation/conversation_api.c 2013-10-16 11:34:10 UTC (rev
30211)
@@ -27,6 +27,7 @@
*/
#include "platform.h"
#include "gnunet_conversation_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_gns_service.h"
#include "conversation.h"
Modified: gnunet/src/conversation/gnunet-conversation.c
===================================================================
--- gnunet/src/conversation/gnunet-conversation.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/conversation/gnunet-conversation.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -26,6 +26,7 @@
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_constants.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_conversation_service.h"
#include "gnunet_namestore_service.h"
Modified: gnunet/src/gns/Makefile.am
===================================================================
--- gnunet/src/gns/Makefile.am 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/gns/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -58,12 +58,12 @@
libexec_PROGRAMS = \
gnunet-service-gns \
$(DO_W32_HELPER) \
- gnunet-dns2gns
-# $(DO_PROXY)
+ gnunet-dns2gns
+# $(DO_PROXY)
bin_PROGRAMS = \
$(DO_W32_NSPTOOLS) \
- gnunet-gns
+ gnunet-gns
bin_SCRIPTS = gnunet-gns-proxy-setup-ca
@@ -74,6 +74,7 @@
gnunet-gns.c
gnunet_gns_LDADD = \
$(top_builddir)/src/gns/libgnunetgns.la \
+ $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
$(top_builddir)/src/util/libgnunetutil.la \
@@ -103,7 +104,7 @@
libgnunetgns.la
gnunet_gns_proxy_SOURCES = \
- gnunet-gns-proxy.c
+ gnunet-gns-proxy.c
gnunet_gns_proxy_LDADD = -lmicrohttpd -lcurl -lgnutls \
$(top_builddir)/src/gns/libgnunetgns.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
@@ -140,7 +141,7 @@
gnunet-service-gns.c \
gnunet-service-gns_resolver.c gnunet-service-gns_resolver.h \
gnunet-service-gns_shorten.c gnunet-service-gns_shorten.h \
- gnunet-service-gns_interceptor.c gnunet-service-gns_interceptor.h
+ gnunet-service-gns_interceptor.c gnunet-service-gns_interceptor.h
gnunet_service_gns_LDADD = \
-lm \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
@@ -206,9 +207,9 @@
test_gns_ns_lookup.sh \
test_gns_dht_lookup.sh\
test_gns_pseu_shorten.sh\
- test_gns_plus_lookup.sh\
- test_gns_zkey_lookup.sh\
- test_gns_cname_lookup.sh
+ test_gns_plus_lookup.sh\
+ test_gns_zkey_lookup.sh\
+ test_gns_cname_lookup.sh
if ENABLE_TEST_RUN
if HAVE_SQLITE
Modified: gnunet/src/gns/gnunet-gns.c
===================================================================
--- gnunet/src/gns/gnunet-gns.c 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/gns/gnunet-gns.c 2013-10-16 11:34:10 UTC (rev 30211)
@@ -26,6 +26,7 @@
#include <gnunet_util_lib.h>
#include <gnunet_dnsparser_lib.h>
#include <gnunet_identity_service.h>
+#include <gnunet_gnsrecord_lib.h>
#include <gnunet_namestore_service.h>
#include <gnunet_gns_service.h>
Modified: gnunet/src/gns/gnunet-service-gns_resolver.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns_resolver.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/gns/gnunet-service-gns_resolver.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -34,6 +34,7 @@
#include "gnunet_util_lib.h"
#include "gnunet_dnsstub_lib.h"
#include "gnunet_dht_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_namestore_service.h"
#include "gnunet_dns_service.h"
#include "gnunet_resolver_service.h"
@@ -853,7 +854,7 @@
continue;
}
rd[i - skip].data_size = buf_off - buf_start;
- rd[i - skip].data = &buf[buf_start];
+ rd[i - skip].data = &buf[buf_start];
break;
case GNUNET_DNSPARSER_TYPE_SOA:
buf_start = buf_off;
@@ -868,7 +869,7 @@
continue;
}
rd[i - skip].data_size = buf_off - buf_start;
- rd[i - skip].data = &buf[buf_start];
+ rd[i - skip].data = &buf[buf_start];
break;
case GNUNET_DNSPARSER_TYPE_MX:
buf_start = buf_off;
@@ -883,7 +884,7 @@
continue;
}
rd[i - skip].data_size = buf_off - buf_start;
- rd[i - skip].data = &buf[buf_start];
+ rd[i - skip].data = &buf[buf_start];
break;
case GNUNET_DNSPARSER_TYPE_SRV:
buf_start = buf_off;
@@ -898,7 +899,7 @@
continue;
}
rd[i - skip].data_size = buf_off - buf_start;
- rd[i - skip].data = &buf[buf_start];
+ rd[i - skip].data = &buf[buf_start];
break;
default:
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -1187,7 +1188,7 @@
GNUNET_break_op (0);
rh->proc (rh->proc_cls, 0, NULL);
GNS_resolver_lookup_cancel (rh);
- return;
+ return;
}
handle_gns_cname_result (rh,
cname);
@@ -1301,7 +1302,7 @@
rd_off++;
}
}
- GNUNET_free_non_null (cname);
+ GNUNET_free_non_null (cname);
}
break;
case GNUNET_DNSPARSER_TYPE_SOA:
@@ -1338,7 +1339,7 @@
}
}
if (NULL != soa)
- GNUNET_DNSPARSER_free_soa (soa);
+ GNUNET_DNSPARSER_free_soa (soa);
}
break;
case GNUNET_DNSPARSER_TYPE_MX:
@@ -1374,8 +1375,8 @@
}
}
if (NULL != mx)
- GNUNET_DNSPARSER_free_mx (mx);
- }
+ GNUNET_DNSPARSER_free_mx (mx);
+ }
break;
case GNUNET_DNSPARSER_TYPE_SRV:
{
@@ -1414,7 +1415,7 @@
}
}
if (NULL != srv)
- GNUNET_DNSPARSER_free_srv (srv);
+ GNUNET_DNSPARSER_free_srv (srv);
}
break;
case GNUNET_NAMESTORE_TYPE_PKEY:
@@ -1422,7 +1423,7 @@
if (NULL != rh->shorten_key)
{
struct GNUNET_CRYPTO_EcdsaPublicKey pub;
-
+
if (rd[i].data_size != sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))
{
GNUNET_break_op (0);
@@ -1610,7 +1611,7 @@
case GNUNET_DNSPARSER_TYPE_CNAME:
{
char *cname;
-
+
off = 0;
cname = GNUNET_DNSPARSER_parse_name (rd[i].data,
rd[i].data_size,
Modified: gnunet/src/gns/gnunet-service-gns_shorten.c
===================================================================
--- gnunet/src/gns/gnunet-service-gns_shorten.c 2013-10-16 11:17:17 UTC (rev
30210)
+++ gnunet/src/gns/gnunet-service-gns_shorten.c 2013-10-16 11:34:10 UTC (rev
30211)
@@ -27,6 +27,7 @@
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_dht_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_namestore_service.h"
#include "gnunet_resolver_service.h"
#include "gnunet_gns_service.h"
@@ -492,7 +493,7 @@
}
/* record does not yet exist, go into DHT to find PSEU record */
GNUNET_NAMESTORE_query_from_public_key (&gph->target_zone,
- GNUNET_GNS_TLD_PLUS,
+ GNUNET_GNS_TLD_PLUS,
&lookup_key);
gph->timeout_task = GNUNET_SCHEDULER_add_delayed (DHT_LOOKUP_TIMEOUT,
&handle_auth_discovery_timeout,
Index: gnunet/src/gnsrecord
===================================================================
--- gnunet/src/gnsrecord 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/gnsrecord 2013-10-16 11:34:10 UTC (rev 30211)
Property changes on: gnunet/src/gnsrecord
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,3 ##
+Makefile.in
+Makefile
+.deps
Added: gnunet/src/gnsrecord/Makefile.am
===================================================================
--- gnunet/src/gnsrecord/Makefile.am (rev 0)
+++ gnunet/src/gnsrecord/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -0,0 +1,39 @@
+AM_CPPFLAGS = -I$(top_srcdir)/src/include
+
+plugindir = $(libdir)/gnunet
+
+pkgcfgdir= $(pkgdatadir)/config.d/
+
+libexecdir= $(pkglibdir)/libexec/
+
+if MINGW
+ WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
+endif
+
+if USE_COVERAGE
+ AM_CFLAGS = --coverage -O0
+ XLIBS = -lgcov
+endif
+
+if ENABLE_TEST_RUN
+TESTS = \
+ $(check_PROGRAMS) \
+ $(check_SCRIPTS)
+endif
+
+lib_LTLIBRARIES = \
+ libgnunetgnsrecord.la
+
+libgnunetgnsrecord_la_SOURCES = \
+ gnsrecord.c
+libgnunetgnsrecord_la_LIBADD = \
+ $(top_builddir)/src/dns/libgnunetdnsparser.la \
+ $(top_builddir)/src/util/libgnunetutil.la \
+ $(GN_LIBINTL)
+libgnunetgnsrecord_la_LDFLAGS = \
+ $(GN_LIB_LDFLAGS) $(WINFLAGS) \
+ -version-info 0:0:0
+
+EXTRA_DIST = \
+ $(check_SCRIPTS)
+
Added: gnunet/src/gnsrecord/gnsrecord.c
===================================================================
--- gnunet/src/gnsrecord/gnsrecord.c (rev 0)
+++ gnunet/src/gnsrecord/gnsrecord.c 2013-10-16 11:34:10 UTC (rev 30211)
@@ -0,0 +1,696 @@
+/*
+ This file is part of GNUnet.
+ (C) 2009-2013 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 gnsrecord/gnsrecord.c
+ * @brief API to access GNS record data
+ * @author Martin Schanzenbach
+ * @author Matthias Wachs
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_constants.h"
+#include "gnunet_signatures.h"
+#include "gnunet_conversation_service.h"
+#include "gnunet_dnsparser_lib.h"
+#include "gnunet_gnsrecord_lib.h"
+#include "gnunet_tun_lib.h"
+
+
+#define LOG(kind,...) GNUNET_log_from (kind, "gnsrecord",__VA_ARGS__)
+
+
+/**
+ * Convert the 'value' of a record to a string.
+ *
+ * @param type type of the record
+ * @param data value in binary encoding
+ * @param data_size number of bytes in @a data
+ * @return NULL on error, otherwise human-readable representation of the value
+ */
+char *
+GNUNET_NAMESTORE_value_to_string (uint32_t type,
+ const void *data,
+ size_t data_size)
+{
+ const char *cdata;
+ char* result;
+ char tmp[INET6_ADDRSTRLEN];
+
+ switch (type)
+ {
+ case 0:
+ return NULL;
+ case GNUNET_DNSPARSER_TYPE_A:
+ if (data_size != sizeof (struct in_addr))
+ return NULL;
+ if (NULL == inet_ntop (AF_INET, data, tmp, sizeof (tmp)))
+ return NULL;
+ return GNUNET_strdup (tmp);
+ case GNUNET_DNSPARSER_TYPE_NS:
+ {
+ char *ns;
+ size_t off;
+
+ off = 0;
+ ns = GNUNET_DNSPARSER_parse_name (data,
+ data_size,
+ &off);
+ if ( (NULL == ns) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ return NULL;
+ }
+ return ns;
+ }
+ case GNUNET_DNSPARSER_TYPE_CNAME:
+ {
+ char *cname;
+ size_t off;
+
+ off = 0;
+ cname = GNUNET_DNSPARSER_parse_name (data,
+ data_size,
+ &off);
+ if ( (NULL == cname) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ GNUNET_free_non_null (cname);
+ return NULL;
+ }
+ return cname;
+ }
+ case GNUNET_DNSPARSER_TYPE_SOA:
+ {
+ struct GNUNET_DNSPARSER_SoaRecord *soa;
+ size_t off;
+
+ off = 0;
+ soa = GNUNET_DNSPARSER_parse_soa (data,
+ data_size,
+ &off);
+ if ( (NULL == soa) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ return NULL;
+ }
+ GNUNET_asprintf (&result,
+ "rname=%s mname=%s %lu,%lu,%lu,%lu,%lu",
+ soa->rname,
+ soa->mname,
+ soa->serial,
+ soa->refresh,
+ soa->retry,
+ soa->expire,
+ soa->minimum_ttl);
+ GNUNET_DNSPARSER_free_soa (soa);
+ return result;
+ }
+ case GNUNET_DNSPARSER_TYPE_PTR:
+ {
+ char *ptr;
+ size_t off;
+
+ off = 0;
+ ptr = GNUNET_DNSPARSER_parse_name (data,
+ data_size,
+ &off);
+ if ( (NULL == ptr) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ GNUNET_free_non_null (ptr);
+ return NULL;
+ }
+ return ptr;
+ }
+ case GNUNET_DNSPARSER_TYPE_MX:
+ {
+ struct GNUNET_DNSPARSER_MxRecord *mx;
+ size_t off;
+
+ off = 0;
+ mx = GNUNET_DNSPARSER_parse_mx (data,
+ data_size,
+ &off);
+ if ( (NULL == mx) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ GNUNET_free_non_null (mx);
+ return NULL;
+ }
+ GNUNET_asprintf (&result,
+ "%hu,%s",
+ mx->preference,
+ mx->mxhost);
+ GNUNET_DNSPARSER_free_mx (mx);
+ return result;
+ }
+ case GNUNET_DNSPARSER_TYPE_TXT:
+ return GNUNET_strndup (data, data_size);
+ case GNUNET_DNSPARSER_TYPE_AAAA:
+ if (data_size != sizeof (struct in6_addr))
+ return NULL;
+ if (NULL == inet_ntop (AF_INET6, data, tmp, sizeof (tmp)))
+ return NULL;
+ return GNUNET_strdup (tmp);
+ case GNUNET_NAMESTORE_TYPE_PKEY:
+ if (data_size != sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))
+ return NULL;
+ return GNUNET_CRYPTO_ecdsa_public_key_to_string (data);
+ case GNUNET_NAMESTORE_TYPE_PHONE:
+ {
+ const struct GNUNET_CONVERSATION_PhoneRecord *pr;
+ char *ret;
+ char *pkey;
+
+ if (data_size != sizeof (struct GNUNET_CONVERSATION_PhoneRecord))
+ return NULL;
+ pr = data;
+ if (0 != ntohl (pr->version))
+ return NULL;
+ pkey = GNUNET_CRYPTO_eddsa_public_key_to_string (&pr->peer.public_key);
+ GNUNET_asprintf (&ret,
+ "%u-%s",
+ ntohl (pr->line),
+ pkey);
+ GNUNET_free (pkey);
+ return ret;
+ }
+ case GNUNET_NAMESTORE_TYPE_PSEU:
+ return GNUNET_strndup (data, data_size);
+ case GNUNET_NAMESTORE_TYPE_LEHO:
+ return GNUNET_strndup (data, data_size);
+ case GNUNET_NAMESTORE_TYPE_VPN:
+ {
+ const struct GNUNET_TUN_GnsVpnRecord *vpn;
+ char* vpn_str;
+
+ cdata = data;
+ if ( (data_size <= sizeof (struct GNUNET_TUN_GnsVpnRecord)) ||
+ ('\0' != cdata[data_size - 1]) )
+ return NULL; /* malformed */
+ vpn = data;
+ if (0 == GNUNET_asprintf (&vpn_str, "%u %s %s",
+ (unsigned int) ntohs (vpn->proto),
+ (const char*) GNUNET_i2s_full (&vpn->peer),
+ (const char*) &vpn[1]))
+ {
+ GNUNET_free (vpn_str);
+ return NULL;
+ }
+ return vpn_str;
+ }
+ case GNUNET_NAMESTORE_TYPE_GNS2DNS:
+ {
+ char *ns;
+ size_t off;
+
+ off = 0;
+ ns = GNUNET_DNSPARSER_parse_name (data,
+ data_size,
+ &off);
+ if ( (NULL == ns) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ GNUNET_free_non_null (ns);
+ return NULL;
+ }
+ return ns;
+ }
+ case GNUNET_DNSPARSER_TYPE_SRV:
+ {
+ struct GNUNET_DNSPARSER_SrvRecord *srv;
+ size_t off;
+
+ off = 0;
+ srv = GNUNET_DNSPARSER_parse_srv ("+", /* FIXME: is this OK? */
+ data,
+ data_size,
+ &off);
+ if ( (NULL == srv) ||
+ (off != data_size) )
+ {
+ GNUNET_break_op (0);
+ return NULL;
+ }
+ GNUNET_asprintf (&result,
+ "%d %d %d _%s._%s.%s",
+ srv->priority,
+ srv->weight,
+ srv->port,
+ srv->service,
+ srv->proto,
+ srv->domain_name);
+ GNUNET_DNSPARSER_free_srv (srv);
+ return result;
+ }
+ case GNUNET_DNSPARSER_TYPE_TLSA:
+ {
+ const struct GNUNET_TUN_DnsTlsaRecord *tlsa;
+ char* tlsa_str;
+
+ cdata = data;
+ if ( (data_size <= sizeof (struct GNUNET_TUN_DnsTlsaRecord)) ||
+ ('\0' != cdata[data_size - 1]) )
+ return NULL; /* malformed */
+ tlsa = data;
+ if (0 == GNUNET_asprintf (&tlsa_str,
+ "%c %c %c %s",
+ tlsa->usage,
+ tlsa->selector,
+ tlsa->matching_type,
+ (const char *) &tlsa[1]))
+ {
+ GNUNET_free (tlsa_str);
+ return NULL;
+ }
+ return tlsa_str;
+ }
+ default:
+ GNUNET_break (0);
+ }
+ GNUNET_break (0); // not implemented
+ return NULL;
+}
+
+
+/**
+ * Convert human-readable version of a 'value' of a record to the binary
+ * representation.
+ *
+ * @param type type of the record
+ * @param s human-readable string
+ * @param data set to value in binary encoding (will be allocated)
+ * @param data_size set to number of bytes in @a data
+ * @return #GNUNET_OK on success
+ */
+int
+GNUNET_NAMESTORE_string_to_value (uint32_t type,
+ const char *s,
+ void **data,
+ size_t *data_size)
+{
+ struct in_addr value_a;
+ struct in6_addr value_aaaa;
+ struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
+ struct GNUNET_TUN_GnsVpnRecord *vpn;
+ struct GNUNET_TUN_DnsTlsaRecord *tlsa;
+ char s_peer[103 + 1];
+ char s_serv[253 + 1];
+ unsigned int proto;
+
+ if (NULL == s)
+ return GNUNET_SYSERR;
+ switch (type)
+ {
+ case 0:
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unsupported record type %d\n"),
+ (int) type);
+ return GNUNET_SYSERR;
+ case GNUNET_DNSPARSER_TYPE_A:
+ if (1 != inet_pton (AF_INET, s, &value_a))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse IPv4 address `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data = GNUNET_malloc (sizeof (struct in_addr));
+ memcpy (*data, &value_a, sizeof (value_a));
+ *data_size = sizeof (value_a);
+ return GNUNET_OK;
+ case GNUNET_DNSPARSER_TYPE_NS:
+ {
+ char nsbuf[256];
+ size_t off;
+
+ off = 0;
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_name (nsbuf,
+ sizeof (nsbuf),
+ &off,
+ s))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize NS record with value `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, nsbuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_CNAME:
+ {
+ char cnamebuf[256];
+ size_t off;
+
+ off = 0;
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_name (cnamebuf,
+ sizeof (cnamebuf),
+ &off,
+ s))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize CNAME record with value `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, cnamebuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_SOA:
+ {
+ struct GNUNET_DNSPARSER_SoaRecord soa;
+ char soabuf[540];
+ char soa_rname[253 + 1];
+ char soa_mname[253 + 1];
+ unsigned int soa_serial;
+ unsigned int soa_refresh;
+ unsigned int soa_retry;
+ unsigned int soa_expire;
+ unsigned int soa_min;
+ size_t off;
+
+ if (7 != SSCANF (s,
+ "rname=%253s mname=%253s %u,%u,%u,%u,%u",
+ soa_rname, soa_mname,
+ &soa_serial, &soa_refresh, &soa_retry, &soa_expire,
&soa_min))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse SOA record `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ soa.mname = soa_mname;
+ soa.rname = soa_rname;
+ soa.serial = (uint32_t) soa_serial;
+ soa.refresh =(uint32_t) soa_refresh;
+ soa.retry = (uint32_t) soa_retry;
+ soa.expire = (uint32_t) soa_expire;
+ soa.minimum_ttl = (uint32_t) soa_min;
+ off = 0;
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_soa (soabuf,
+ sizeof (soabuf),
+ &off,
+ &soa))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize SOA record with mname `%s' and rname
`%s'\n"),
+ soa_mname,
+ soa_rname);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, soabuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_PTR:
+ {
+ char ptrbuf[256];
+ size_t off;
+
+ off = 0;
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_name (ptrbuf,
+ sizeof (ptrbuf),
+ &off,
+ s))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize PTR record with value `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, ptrbuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_MX:
+ {
+ struct GNUNET_DNSPARSER_MxRecord mx;
+ char mxbuf[258];
+ char mxhost[253 + 1];
+ uint16_t mx_pref;
+ size_t off;
+
+ if (2 != SSCANF(s, "%hu,%253s", &mx_pref, mxhost))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse MX record `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ mx.preference = mx_pref;
+ mx.mxhost = mxhost;
+ off = 0;
+
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_mx (mxbuf,
+ sizeof (mxbuf),
+ &off,
+ &mx))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize MX record with hostname `%s'\n"),
+ mxhost);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, mxbuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_TXT:
+ *data = GNUNET_strdup (s);
+ *data_size = strlen (s);
+ return GNUNET_OK;
+ case GNUNET_DNSPARSER_TYPE_AAAA:
+ if (1 != inet_pton (AF_INET6, s, &value_aaaa))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse IPv6 address `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data = GNUNET_malloc (sizeof (struct in6_addr));
+ *data_size = sizeof (struct in6_addr);
+ memcpy (*data, &value_aaaa, sizeof (value_aaaa));
+ return GNUNET_OK;
+ case GNUNET_NAMESTORE_TYPE_PKEY:
+ if (GNUNET_OK !=
+ GNUNET_CRYPTO_ecdsa_public_key_from_string (s, strlen (s), &pkey))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse PKEY record `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPublicKey);
+ memcpy (*data, &pkey, sizeof (pkey));
+ *data_size = sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey);
+ return GNUNET_OK;
+ case GNUNET_NAMESTORE_TYPE_PHONE:
+ {
+ struct GNUNET_CONVERSATION_PhoneRecord *pr;
+ unsigned int line;
+ const char *dash;
+ struct GNUNET_PeerIdentity peer;
+
+ if ( (NULL == (dash = strchr (s, '-'))) ||
+ (1 != sscanf (s, "%u-", &line)) ||
+ (GNUNET_OK !=
+ GNUNET_CRYPTO_eddsa_public_key_from_string (dash + 1,
+ strlen (dash + 1),
+ &peer.public_key)) )
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse PHONE record `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ pr = GNUNET_new (struct GNUNET_CONVERSATION_PhoneRecord);
+ pr->version = htonl (0);
+ pr->line = htonl ((uint32_t) line);
+ pr->peer = peer;
+ *data = pr;
+ *data_size = sizeof (struct GNUNET_CONVERSATION_PhoneRecord);
+ return GNUNET_OK;
+ }
+ case GNUNET_NAMESTORE_TYPE_PSEU:
+ *data = GNUNET_strdup (s);
+ *data_size = strlen (s);
+ return GNUNET_OK;
+ case GNUNET_NAMESTORE_TYPE_LEHO:
+ *data = GNUNET_strdup (s);
+ *data_size = strlen (s);
+ return GNUNET_OK;
+ case GNUNET_NAMESTORE_TYPE_VPN:
+ if (3 != SSCANF (s,"%u %103s %253s",
+ &proto, s_peer, s_serv))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse VPN record string `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data_size = sizeof (struct GNUNET_TUN_GnsVpnRecord) + strlen (s_serv) + 1;
+ *data = vpn = GNUNET_malloc (*data_size);
+ if (GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string ((char*)
s_peer,
+ strlen
(s_peer),
+
&vpn->peer.public_key))
+ {
+ GNUNET_free (vpn);
+ *data_size = 0;
+ return GNUNET_SYSERR;
+ }
+ vpn->proto = htons ((uint16_t) proto);
+ strcpy ((char*)&vpn[1], s_serv);
+ return GNUNET_OK;
+ case GNUNET_NAMESTORE_TYPE_GNS2DNS:
+ {
+ char nsbuf[256];
+ size_t off;
+
+ off = 0;
+ if (GNUNET_OK !=
+ GNUNET_DNSPARSER_builder_add_name (nsbuf,
+ sizeof (nsbuf),
+ &off,
+ s))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to serialize GNS2DNS record with value `%s'\n"),
+ s);
+ return GNUNET_SYSERR;
+ }
+ *data_size = off;
+ *data = GNUNET_malloc (off);
+ memcpy (*data, nsbuf, off);
+ return GNUNET_OK;
+ }
+ case GNUNET_DNSPARSER_TYPE_TLSA:
+ *data_size = sizeof (struct GNUNET_TUN_DnsTlsaRecord) + strlen (s) - 6;
+ *data = tlsa = GNUNET_malloc (*data_size);
+ if (4 != SSCANF (s, "%c %c %c %s",
+ &tlsa->usage,
+ &tlsa->selector,
+ &tlsa->matching_type,
+ (char*)&tlsa[1]))
+ {
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unable to parse TLSA record string `%s'\n"),
+ s);
+ *data_size = 0;
+ GNUNET_free (tlsa);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_OK;
+ default:
+ LOG (GNUNET_ERROR_TYPE_ERROR,
+ _("Unsupported record type %d\n"),
+ (int) type);
+ return GNUNET_SYSERR;
+ }
+}
+
+
+/**
+ * Mapping of record type numbers to human-readable
+ * record type names.
+ */
+static struct {
+ const char *name;
+ uint32_t number;
+} name_map[] = {
+ { "A", GNUNET_DNSPARSER_TYPE_A },
+ { "NS", GNUNET_DNSPARSER_TYPE_NS },
+ { "CNAME", GNUNET_DNSPARSER_TYPE_CNAME },
+ { "SOA", GNUNET_DNSPARSER_TYPE_SOA },
+ { "PTR", GNUNET_DNSPARSER_TYPE_PTR },
+ { "MX", GNUNET_DNSPARSER_TYPE_MX },
+ { "TXT", GNUNET_DNSPARSER_TYPE_TXT },
+ { "AAAA", GNUNET_DNSPARSER_TYPE_AAAA },
+ { "PKEY", GNUNET_NAMESTORE_TYPE_PKEY },
+ { "PSEU", GNUNET_NAMESTORE_TYPE_PSEU },
+ { "LEHO", GNUNET_NAMESTORE_TYPE_LEHO },
+ { "VPN", GNUNET_NAMESTORE_TYPE_VPN },
+ { "GNS2DNS", GNUNET_NAMESTORE_TYPE_GNS2DNS },
+ { "PHONE", GNUNET_NAMESTORE_TYPE_PHONE },
+ { "TLSA", GNUNET_DNSPARSER_TYPE_TLSA },
+ { NULL, UINT32_MAX }
+};
+
+
+/**
+ * Convert a type name (i.e. "AAAA") to the corresponding number.
+ *
+ * @param dns_typename name to convert
+ * @return corresponding number, UINT32_MAX on error
+ */
+uint32_t
+GNUNET_NAMESTORE_typename_to_number (const char *dns_typename)
+{
+ unsigned int i;
+
+ i=0;
+ while ( (name_map[i].name != NULL) &&
+ (0 != strcasecmp (dns_typename, name_map[i].name)) )
+ i++;
+ return name_map[i].number;
+}
+
+
+/**
+ * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A")
+ *
+ * @param type number of a type to convert
+ * @return corresponding typestring, NULL on error
+ */
+const char *
+GNUNET_NAMESTORE_number_to_typename (uint32_t type)
+{
+ unsigned int i;
+
+ i=0;
+ while ( (name_map[i].name != NULL) &&
+ (type != name_map[i].number) )
+ i++;
+ return name_map[i].name;
+}
+
+
+
+/* end of namestore_common.c */
Modified: gnunet/src/include/Makefile.am
===================================================================
--- gnunet/src/include/Makefile.am 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/include/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -48,6 +48,7 @@
gnunet_fs_service.h \
gnunet_getopt_lib.h \
gnunet_gns_service.h \
+ gnunet_gnsrecord_lib.h \
gnunet_hello_lib.h \
gnunet_helper_lib.h \
gnunet_identity_service.h \
Modified: gnunet/src/include/gnunet_namestore_service.h
===================================================================
--- gnunet/src/include/gnunet_namestore_service.h 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/include/gnunet_namestore_service.h 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -1,4 +1,3 @@
-
/*
This file is part of GNUnet
(C) 2012, 2013 Christian Grothoff (and other contributing authors)
@@ -41,48 +40,8 @@
#endif
#endif
-/**
- * Record type indicating any record/'*'
- */
-#define GNUNET_NAMESTORE_TYPE_ANY 0
/**
- * Record type for GNS zone transfer ("PKEY").
- */
-#define GNUNET_NAMESTORE_TYPE_PKEY 65536
-
-/**
- * Record type for GNS zone transfer ("PSEU").
- */
-#define GNUNET_NAMESTORE_TYPE_PSEU 65537
-
-/**
- * Record type for GNS legacy hostnames ("LEHO").
- */
-#define GNUNET_NAMESTORE_TYPE_LEHO 65538
-
-/**
- * Record type for VPN resolution
- */
-#define GNUNET_NAMESTORE_TYPE_VPN 65539
-
-/**
- * Record type for delegation to DNS.
- */
-#define GNUNET_NAMESTORE_TYPE_GNS2DNS 65540
-
-/**
- * Record type for a social place.
- */
-#define GNUNET_NAMESTORE_TYPE_PLACE 65541
-
-/**
- * Record type for a phone (of CONVERSATION).
- */
-#define GNUNET_NAMESTORE_TYPE_PHONE 65542
-
-
-/**
* Entry in the queue.
*/
struct GNUNET_NAMESTORE_QueueEntry;
@@ -534,58 +493,6 @@
/**
- * Convert the binary value @a data of a record of
- * type @a type to a human-readable string.
- *
- * @param type type of the record
- * @param data value in binary encoding
- * @param data_size number of bytes in @a data
- * @return NULL on error, otherwise human-readable representation of the value
- */
-char *
-GNUNET_NAMESTORE_value_to_string (uint32_t type,
- const void *data,
- size_t data_size);
-
-
-/**
- * Convert human-readable version of the value @a s of a record
- * of type @a type to the respective binary representation.
- *
- * @param type type of the record
- * @param s human-readable string
- * @param data set to value in binary encoding (will be allocated)
- * @param data_size set to number of bytes in @a data
- * @return #GNUNET_OK on success
- */
-int
-GNUNET_NAMESTORE_string_to_value (uint32_t type,
- const char *s,
- void **data,
- size_t *data_size);
-
-
-/**
- * Convert a type name (i.e. "AAAA") to the corresponding number.
- *
- * @param dns_typename name to convert
- * @return corresponding number, UINT32_MAX on error
- */
-uint32_t
-GNUNET_NAMESTORE_typename_to_number (const char *dns_typename);
-
-
-/**
- * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A")
- *
- * @param type number of a type to convert
- * @return corresponding typestring, NULL on error
- */
-const char *
-GNUNET_NAMESTORE_number_to_typename (uint32_t type);
-
-
-/**
* Test if a given record is expired.
*
* @param rd record to test
Modified: gnunet/src/namestore/Makefile.am
===================================================================
--- gnunet/src/namestore/Makefile.am 2013-10-16 11:17:17 UTC (rev 30210)
+++ gnunet/src/namestore/Makefile.am 2013-10-16 11:34:10 UTC (rev 30211)
@@ -97,8 +97,9 @@
gnunet_namestore_SOURCES = \
gnunet-namestore.c
gnunet_namestore_LDADD = \
+ $(top_builddir)/src/identity/libgnunetidentity.la \
+ $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
$(top_builddir)/src/util/libgnunetutil.la \
- $(top_builddir)/src/identity/libgnunetidentity.la \
libgnunetnamestore.la \
$(GN_LIBINTL)
gnunet_namestore_DEPENDENCIES = \
@@ -110,9 +111,10 @@
gnunet_namestore_fcfsd_SOURCES = \
gnunet-namestore-fcfsd.c
gnunet_namestore_fcfsd_LDADD = -lmicrohttpd \
- $(top_builddir)/src/util/libgnunetutil.la \
+ $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
$(top_builddir)/src/identity/libgnunetidentity.la \
$(top_builddir)/src/namestore/libgnunetnamestore.la \
+ $(top_builddir)/src/util/libgnunetutil.la \
$(GN_LIBINTL)
gnunet_namestore_fcfsd_DEPENDENCIES = \
$(top_builddir)/src/util/libgnunetutil.la \
Modified: gnunet/src/namestore/gnunet-namestore-fcfsd.c
===================================================================
--- gnunet/src/namestore/gnunet-namestore-fcfsd.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/namestore/gnunet-namestore-fcfsd.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -34,6 +34,7 @@
#include <microhttpd.h>
#include "gnunet_util_lib.h"
#include "gnunet_identity_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_namestore_service.h"
/**
@@ -212,8 +213,8 @@
* Port we use for the HTTP server.
*/
static unsigned long long port;
-
+
/**
* Task run whenever HTTP server operations are pending.
*
@@ -674,7 +675,7 @@
return ret;
}
if (0 == strcmp (method, MHD_HTTP_METHOD_POST))
- {
+ {
request = *ptr;
if (NULL == request)
{
Modified: gnunet/src/namestore/gnunet-namestore.c
===================================================================
--- gnunet/src/namestore/gnunet-namestore.c 2013-10-16 11:17:17 UTC (rev
30210)
+++ gnunet/src/namestore/gnunet-namestore.c 2013-10-16 11:34:10 UTC (rev
30211)
@@ -30,6 +30,7 @@
#include <gnunet_util_lib.h>
#include <gnunet_dnsparser_lib.h>
#include <gnunet_identity_service.h>
+#include <gnunet_gnsrecord_lib.h>
#include <gnunet_namestore_service.h>
Modified: gnunet/src/namestore/namestore_api_common.c
===================================================================
--- gnunet/src/namestore/namestore_api_common.c 2013-10-16 11:17:17 UTC (rev
30210)
+++ gnunet/src/namestore/namestore_api_common.c 2013-10-16 11:34:10 UTC (rev
30211)
@@ -515,660 +515,6 @@
/**
- * Convert the 'value' of a record to a string.
- *
- * @param type type of the record
- * @param data value in binary encoding
- * @param data_size number of bytes in @a data
- * @return NULL on error, otherwise human-readable representation of the value
- */
-char *
-GNUNET_NAMESTORE_value_to_string (uint32_t type,
- const void *data,
- size_t data_size)
-{
- const char *cdata;
- char* result;
- char tmp[INET6_ADDRSTRLEN];
-
- switch (type)
- {
- case 0:
- return NULL;
- case GNUNET_DNSPARSER_TYPE_A:
- if (data_size != sizeof (struct in_addr))
- return NULL;
- if (NULL == inet_ntop (AF_INET, data, tmp, sizeof (tmp)))
- return NULL;
- return GNUNET_strdup (tmp);
- case GNUNET_DNSPARSER_TYPE_NS:
- {
- char *ns;
- size_t off;
-
- off = 0;
- ns = GNUNET_DNSPARSER_parse_name (data,
- data_size,
- &off);
- if ( (NULL == ns) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- return NULL;
- }
- return ns;
- }
- case GNUNET_DNSPARSER_TYPE_CNAME:
- {
- char *cname;
- size_t off;
-
- off = 0;
- cname = GNUNET_DNSPARSER_parse_name (data,
- data_size,
- &off);
- if ( (NULL == cname) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- GNUNET_free_non_null (cname);
- return NULL;
- }
- return cname;
- }
- case GNUNET_DNSPARSER_TYPE_SOA:
- {
- struct GNUNET_DNSPARSER_SoaRecord *soa;
- size_t off;
-
- off = 0;
- soa = GNUNET_DNSPARSER_parse_soa (data,
- data_size,
- &off);
- if ( (NULL == soa) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- return NULL;
- }
- GNUNET_asprintf (&result,
- "rname=%s mname=%s %lu,%lu,%lu,%lu,%lu",
- soa->rname,
- soa->mname,
- soa->serial,
- soa->refresh,
- soa->retry,
- soa->expire,
- soa->minimum_ttl);
- GNUNET_DNSPARSER_free_soa (soa);
- return result;
- }
- case GNUNET_DNSPARSER_TYPE_PTR:
- {
- char *ptr;
- size_t off;
-
- off = 0;
- ptr = GNUNET_DNSPARSER_parse_name (data,
- data_size,
- &off);
- if ( (NULL == ptr) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- GNUNET_free_non_null (ptr);
- return NULL;
- }
- return ptr;
- }
- case GNUNET_DNSPARSER_TYPE_MX:
- {
- struct GNUNET_DNSPARSER_MxRecord *mx;
- size_t off;
-
- off = 0;
- mx = GNUNET_DNSPARSER_parse_mx (data,
- data_size,
- &off);
- if ( (NULL == mx) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- GNUNET_free_non_null (mx);
- return NULL;
- }
- GNUNET_asprintf (&result,
- "%hu,%s",
- mx->preference,
- mx->mxhost);
- GNUNET_DNSPARSER_free_mx (mx);
- return result;
- }
- case GNUNET_DNSPARSER_TYPE_TXT:
- return GNUNET_strndup (data, data_size);
- case GNUNET_DNSPARSER_TYPE_AAAA:
- if (data_size != sizeof (struct in6_addr))
- return NULL;
- if (NULL == inet_ntop (AF_INET6, data, tmp, sizeof (tmp)))
- return NULL;
- return GNUNET_strdup (tmp);
- case GNUNET_NAMESTORE_TYPE_PKEY:
- if (data_size != sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey))
- return NULL;
- return GNUNET_CRYPTO_ecdsa_public_key_to_string (data);
- case GNUNET_NAMESTORE_TYPE_PHONE:
- {
- const struct GNUNET_CONVERSATION_PhoneRecord *pr;
- char *ret;
- char *pkey;
-
- if (data_size != sizeof (struct GNUNET_CONVERSATION_PhoneRecord))
- return NULL;
- pr = data;
- if (0 != ntohl (pr->version))
- return NULL;
- pkey = GNUNET_CRYPTO_eddsa_public_key_to_string (&pr->peer.public_key);
- GNUNET_asprintf (&ret,
- "%u-%s",
- ntohl (pr->line),
- pkey);
- GNUNET_free (pkey);
- return ret;
- }
- case GNUNET_NAMESTORE_TYPE_PSEU:
- return GNUNET_strndup (data, data_size);
- case GNUNET_NAMESTORE_TYPE_LEHO:
- return GNUNET_strndup (data, data_size);
- case GNUNET_NAMESTORE_TYPE_VPN:
- {
- const struct GNUNET_TUN_GnsVpnRecord *vpn;
- char* vpn_str;
-
- cdata = data;
- if ( (data_size <= sizeof (struct GNUNET_TUN_GnsVpnRecord)) ||
- ('\0' != cdata[data_size - 1]) )
- return NULL; /* malformed */
- vpn = data;
- if (0 == GNUNET_asprintf (&vpn_str, "%u %s %s",
- (unsigned int) ntohs (vpn->proto),
- (const char*) GNUNET_i2s_full (&vpn->peer),
- (const char*) &vpn[1]))
- {
- GNUNET_free (vpn_str);
- return NULL;
- }
- return vpn_str;
- }
- case GNUNET_NAMESTORE_TYPE_GNS2DNS:
- {
- char *ns;
- size_t off;
-
- off = 0;
- ns = GNUNET_DNSPARSER_parse_name (data,
- data_size,
- &off);
- if ( (NULL == ns) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- GNUNET_free_non_null (ns);
- return NULL;
- }
- return ns;
- }
- case GNUNET_DNSPARSER_TYPE_SRV:
- {
- struct GNUNET_DNSPARSER_SrvRecord *srv;
- size_t off;
-
- off = 0;
- srv = GNUNET_DNSPARSER_parse_srv ("+", /* FIXME: is this OK? */
- data,
- data_size,
- &off);
- if ( (NULL == srv) ||
- (off != data_size) )
- {
- GNUNET_break_op (0);
- return NULL;
- }
- GNUNET_asprintf (&result,
- "%d %d %d _%s._%s.%s",
- srv->priority,
- srv->weight,
- srv->port,
- srv->service,
- srv->proto,
- srv->domain_name);
- GNUNET_DNSPARSER_free_srv (srv);
- return result;
- }
- case GNUNET_DNSPARSER_TYPE_TLSA:
- {
- const struct GNUNET_TUN_DnsTlsaRecord *tlsa;
- char* tlsa_str;
-
- cdata = data;
- if ( (data_size <= sizeof (struct GNUNET_TUN_DnsTlsaRecord)) ||
- ('\0' != cdata[data_size - 1]) )
- return NULL; /* malformed */
- tlsa = data;
- if (0 == GNUNET_asprintf (&tlsa_str,
- "%c %c %c %s",
- tlsa->usage,
- tlsa->selector,
- tlsa->matching_type,
- (const char *) &tlsa[1]))
- {
- GNUNET_free (tlsa_str);
- return NULL;
- }
- return tlsa_str;
- }
- default:
- GNUNET_break (0);
- }
- GNUNET_break (0); // not implemented
- return NULL;
-}
-
-
-/**
- * Convert human-readable version of a 'value' of a record to the binary
- * representation.
- *
- * @param type type of the record
- * @param s human-readable string
- * @param data set to value in binary encoding (will be allocated)
- * @param data_size set to number of bytes in @a data
- * @return #GNUNET_OK on success
- */
-int
-GNUNET_NAMESTORE_string_to_value (uint32_t type,
- const char *s,
- void **data,
- size_t *data_size)
-{
- struct in_addr value_a;
- struct in6_addr value_aaaa;
- struct GNUNET_CRYPTO_EcdsaPublicKey pkey;
- struct GNUNET_TUN_GnsVpnRecord *vpn;
- struct GNUNET_TUN_DnsTlsaRecord *tlsa;
- char s_peer[103 + 1];
- char s_serv[253 + 1];
- unsigned int proto;
-
- if (NULL == s)
- return GNUNET_SYSERR;
- switch (type)
- {
- case 0:
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unsupported record type %d\n"),
- (int) type);
- return GNUNET_SYSERR;
- case GNUNET_DNSPARSER_TYPE_A:
- if (1 != inet_pton (AF_INET, s, &value_a))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse IPv4 address `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data = GNUNET_malloc (sizeof (struct in_addr));
- memcpy (*data, &value_a, sizeof (value_a));
- *data_size = sizeof (value_a);
- return GNUNET_OK;
- case GNUNET_DNSPARSER_TYPE_NS:
- {
- char nsbuf[256];
- size_t off;
-
- off = 0;
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_name (nsbuf,
- sizeof (nsbuf),
- &off,
- s))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize NS record with value `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, nsbuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_CNAME:
- {
- char cnamebuf[256];
- size_t off;
-
- off = 0;
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_name (cnamebuf,
- sizeof (cnamebuf),
- &off,
- s))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize CNAME record with value `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, cnamebuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_SOA:
- {
- struct GNUNET_DNSPARSER_SoaRecord soa;
- char soabuf[540];
- char soa_rname[253 + 1];
- char soa_mname[253 + 1];
- unsigned int soa_serial;
- unsigned int soa_refresh;
- unsigned int soa_retry;
- unsigned int soa_expire;
- unsigned int soa_min;
- size_t off;
-
- if (7 != SSCANF (s,
- "rname=%253s mname=%253s %u,%u,%u,%u,%u",
- soa_rname, soa_mname,
- &soa_serial, &soa_refresh, &soa_retry, &soa_expire,
&soa_min))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse SOA record `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- soa.mname = soa_mname;
- soa.rname = soa_rname;
- soa.serial = (uint32_t) soa_serial;
- soa.refresh =(uint32_t) soa_refresh;
- soa.retry = (uint32_t) soa_retry;
- soa.expire = (uint32_t) soa_expire;
- soa.minimum_ttl = (uint32_t) soa_min;
- off = 0;
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_soa (soabuf,
- sizeof (soabuf),
- &off,
- &soa))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize SOA record with mname `%s' and rname
`%s'\n"),
- soa_mname,
- soa_rname);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, soabuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_PTR:
- {
- char ptrbuf[256];
- size_t off;
-
- off = 0;
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_name (ptrbuf,
- sizeof (ptrbuf),
- &off,
- s))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize PTR record with value `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, ptrbuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_MX:
- {
- struct GNUNET_DNSPARSER_MxRecord mx;
- char mxbuf[258];
- char mxhost[253 + 1];
- uint16_t mx_pref;
- size_t off;
-
- if (2 != SSCANF(s, "%hu,%253s", &mx_pref, mxhost))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse MX record `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- mx.preference = mx_pref;
- mx.mxhost = mxhost;
- off = 0;
-
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_mx (mxbuf,
- sizeof (mxbuf),
- &off,
- &mx))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize MX record with hostname `%s'\n"),
- mxhost);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, mxbuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_TXT:
- *data = GNUNET_strdup (s);
- *data_size = strlen (s);
- return GNUNET_OK;
- case GNUNET_DNSPARSER_TYPE_AAAA:
- if (1 != inet_pton (AF_INET6, s, &value_aaaa))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse IPv6 address `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data = GNUNET_malloc (sizeof (struct in6_addr));
- *data_size = sizeof (struct in6_addr);
- memcpy (*data, &value_aaaa, sizeof (value_aaaa));
- return GNUNET_OK;
- case GNUNET_NAMESTORE_TYPE_PKEY:
- if (GNUNET_OK !=
- GNUNET_CRYPTO_ecdsa_public_key_from_string (s, strlen (s), &pkey))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse PKEY record `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPublicKey);
- memcpy (*data, &pkey, sizeof (pkey));
- *data_size = sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey);
- return GNUNET_OK;
- case GNUNET_NAMESTORE_TYPE_PHONE:
- {
- struct GNUNET_CONVERSATION_PhoneRecord *pr;
- unsigned int line;
- const char *dash;
- struct GNUNET_PeerIdentity peer;
-
- if ( (NULL == (dash = strchr (s, '-'))) ||
- (1 != sscanf (s, "%u-", &line)) ||
- (GNUNET_OK !=
- GNUNET_CRYPTO_eddsa_public_key_from_string (dash + 1,
- strlen (dash + 1),
- &peer.public_key)) )
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse PHONE record `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- pr = GNUNET_new (struct GNUNET_CONVERSATION_PhoneRecord);
- pr->version = htonl (0);
- pr->line = htonl ((uint32_t) line);
- pr->peer = peer;
- *data = pr;
- *data_size = sizeof (struct GNUNET_CONVERSATION_PhoneRecord);
- return GNUNET_OK;
- }
- case GNUNET_NAMESTORE_TYPE_PSEU:
- *data = GNUNET_strdup (s);
- *data_size = strlen (s);
- return GNUNET_OK;
- case GNUNET_NAMESTORE_TYPE_LEHO:
- *data = GNUNET_strdup (s);
- *data_size = strlen (s);
- return GNUNET_OK;
- case GNUNET_NAMESTORE_TYPE_VPN:
- if (3 != SSCANF (s,"%u %103s %253s",
- &proto, s_peer, s_serv))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse VPN record string `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data_size = sizeof (struct GNUNET_TUN_GnsVpnRecord) + strlen (s_serv) + 1;
- *data = vpn = GNUNET_malloc (*data_size);
- if (GNUNET_OK != GNUNET_CRYPTO_eddsa_public_key_from_string ((char*)
s_peer,
- strlen
(s_peer),
-
&vpn->peer.public_key))
- {
- GNUNET_free (vpn);
- *data_size = 0;
- return GNUNET_SYSERR;
- }
- vpn->proto = htons ((uint16_t) proto);
- strcpy ((char*)&vpn[1], s_serv);
- return GNUNET_OK;
- case GNUNET_NAMESTORE_TYPE_GNS2DNS:
- {
- char nsbuf[256];
- size_t off;
-
- off = 0;
- if (GNUNET_OK !=
- GNUNET_DNSPARSER_builder_add_name (nsbuf,
- sizeof (nsbuf),
- &off,
- s))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to serialize GNS2DNS record with value `%s'\n"),
- s);
- return GNUNET_SYSERR;
- }
- *data_size = off;
- *data = GNUNET_malloc (off);
- memcpy (*data, nsbuf, off);
- return GNUNET_OK;
- }
- case GNUNET_DNSPARSER_TYPE_TLSA:
- *data_size = sizeof (struct GNUNET_TUN_DnsTlsaRecord) + strlen (s) - 6;
- *data = tlsa = GNUNET_malloc (*data_size);
- if (4 != SSCANF (s, "%c %c %c %s",
- &tlsa->usage,
- &tlsa->selector,
- &tlsa->matching_type,
- (char*)&tlsa[1]))
- {
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unable to parse TLSA record string `%s'\n"),
- s);
- *data_size = 0;
- GNUNET_free (tlsa);
- return GNUNET_SYSERR;
- }
- return GNUNET_OK;
- default:
- LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Unsupported record type %d\n"),
- (int) type);
- return GNUNET_SYSERR;
- }
-}
-
-
-/**
- * Mapping of record type numbers to human-readable
- * record type names.
- */
-static struct {
- const char *name;
- uint32_t number;
-} name_map[] = {
- { "A", GNUNET_DNSPARSER_TYPE_A },
- { "NS", GNUNET_DNSPARSER_TYPE_NS },
- { "CNAME", GNUNET_DNSPARSER_TYPE_CNAME },
- { "SOA", GNUNET_DNSPARSER_TYPE_SOA },
- { "PTR", GNUNET_DNSPARSER_TYPE_PTR },
- { "MX", GNUNET_DNSPARSER_TYPE_MX },
- { "TXT", GNUNET_DNSPARSER_TYPE_TXT },
- { "AAAA", GNUNET_DNSPARSER_TYPE_AAAA },
- { "PKEY", GNUNET_NAMESTORE_TYPE_PKEY },
- { "PSEU", GNUNET_NAMESTORE_TYPE_PSEU },
- { "LEHO", GNUNET_NAMESTORE_TYPE_LEHO },
- { "VPN", GNUNET_NAMESTORE_TYPE_VPN },
- { "GNS2DNS", GNUNET_NAMESTORE_TYPE_GNS2DNS },
- { "PHONE", GNUNET_NAMESTORE_TYPE_PHONE },
- { "TLSA", GNUNET_DNSPARSER_TYPE_TLSA },
- { NULL, UINT32_MAX }
-};
-
-
-/**
- * Convert a type name (i.e. "AAAA") to the corresponding number.
- *
- * @param dns_typename name to convert
- * @return corresponding number, UINT32_MAX on error
- */
-uint32_t
-GNUNET_NAMESTORE_typename_to_number (const char *dns_typename)
-{
- unsigned int i;
-
- i=0;
- while ( (name_map[i].name != NULL) &&
- (0 != strcasecmp (dns_typename, name_map[i].name)) )
- i++;
- return name_map[i].number;
-}
-
-
-/**
- * Convert a type number (i.e. 1) to the corresponding type string (i.e. "A")
- *
- * @param type number of a type to convert
- * @return corresponding typestring, NULL on error
- */
-const char *
-GNUNET_NAMESTORE_number_to_typename (uint32_t type)
-{
- unsigned int i;
-
- i=0;
- while ( (name_map[i].name != NULL) &&
- (type != name_map[i].number) )
- i++;
- return name_map[i].name;
-}
-
-
-/**
* Test if a given record is expired.
*
* @return #GNUNET_YES if the record is expired,
Modified: gnunet/src/namestore/plugin_namestore_postgres.c
===================================================================
--- gnunet/src/namestore/plugin_namestore_postgres.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/namestore/plugin_namestore_postgres.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -26,6 +26,7 @@
#include "platform.h"
#include "gnunet_namestore_plugin.h"
#include "gnunet_namestore_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "gnunet_postgres_lib.h"
#include "namestore.h"
Modified: gnunet/src/namestore/plugin_namestore_sqlite.c
===================================================================
--- gnunet/src/namestore/plugin_namestore_sqlite.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet/src/namestore/plugin_namestore_sqlite.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -27,6 +27,7 @@
#include "platform.h"
#include "gnunet_namestore_plugin.h"
#include "gnunet_namestore_service.h"
+#include "gnunet_gnsrecord_lib.h"
#include "namestore.h"
#include <sqlite3.h>
Modified: gnunet-gtk/src/namestore/Makefile.am
===================================================================
--- gnunet-gtk/src/namestore/Makefile.am 2013-10-16 11:17:17 UTC (rev
30210)
+++ gnunet-gtk/src/namestore/Makefile.am 2013-10-16 11:34:10 UTC (rev
30211)
@@ -13,7 +13,7 @@
$(top_builddir)/src/lib/libgnunetgtk.la \
@GTK_LIBS@ @GNUNET_LIBS@ @GLADE_LIBS@ @QR_LIBS@ \
$(WINLIBS) \
- -lgnunetutil -lgnunetnamestore -lgnunetdnsparser \
+ -lgnunetutil -lgnunetgnsrecord -lgnunetnamestore -lgnunetdnsparser \
-lgnunetidentity \
$(INTLLIBS)
gnunet_namestore_gtk_CFLAGS = \
Modified: gnunet-gtk/src/namestore/gnunet-namestore-gtk.c
===================================================================
--- gnunet-gtk/src/namestore/gnunet-namestore-gtk.c 2013-10-16 11:17:17 UTC
(rev 30210)
+++ gnunet-gtk/src/namestore/gnunet-namestore-gtk.c 2013-10-16 11:34:10 UTC
(rev 30211)
@@ -25,6 +25,7 @@
*/
#include "gnunet_gtk.h"
#include "gnunet-namestore-gtk_edit.h"
+#include <gnunet/gnunet_gnsrecord_lib.h>
#include <gnunet/gnunet_gns_service.h>
#include <gnunet/gnunet_identity_service.h>
#include <gnunet/gnunet_namestore_service.h>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30211 - gnunet gnunet/src gnunet/src/conversation gnunet/src/gns gnunet/src/gnsrecord gnunet/src/include gnunet/src/namestore gnunet-gtk/src/namestore,
gnunet <=