gnunet-svn
[Top][All Lists]
Advanced

[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>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]