remove CYGWIN codeblocks, drop vendored Windows openvpn, drop win32 specific files.
authorng0 <ng0@n0.is>
Tue, 10 Sep 2019 16:59:32 +0000 (16:59 +0000)
committerng0 <ng0@n0.is>
Tue, 10 Sep 2019 16:59:32 +0000 (16:59 +0000)
configures and builds okay.
testsuite wasn't checked, will be checked.

diff including the plibc removal is now around 14370 lines of code less.

118 files changed:
ChangeLog
configure.ac
contrib/3rdparty/Windows/openvpn-tap32/COPYING [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/INSTALL [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat [deleted file]
contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys [deleted file]
contrib/Makefile.am
po/POTFILES.in
po/de.po
po/es.po
po/fr.po
po/it.po
po/sv.po
po/vi.po
po/zh_CN.po
src/arm/Makefile.am
src/ats-tests/Makefile.am
src/ats-tool/Makefile.am
src/ats/Makefile.am
src/auction/Makefile.am
src/block/Makefile.am
src/cadet/Makefile.am
src/consensus/Makefile.am
src/conversation/Makefile.am
src/conversation/gnunet_gst_def.h
src/core/Makefile.am
src/datacache/Makefile.am
src/datastore/Makefile.am
src/dht/Makefile.am
src/dns/Makefile.am
src/exit/Makefile.am
src/exit/gnunet-helper-exit-windows.c [deleted file]
src/fragmentation/Makefile.am
src/fs/Makefile.am
src/gns/Makefile.am
src/gns/gns-helper-service-w32.conf [deleted file]
src/gns/gnunet-gns-helper-service-w32.c [deleted file]
src/gns/nss/Makefile.am
src/gns/w32nsp-install.c [deleted file]
src/gns/w32nsp-resolve.c [deleted file]
src/gns/w32nsp-uninstall.c [deleted file]
src/gns/w32nsp.c [deleted file]
src/gns/w32nsp.def [deleted file]
src/gnsrecord/Makefile.am
src/hello/Makefile.am
src/identity/Makefile.am
src/include/Makefile.am
src/include/gnunet_common.h
src/include/tap-windows.h [deleted file]
src/include/winproc.h [deleted file]
src/integration-tests/Makefile.am
src/my/Makefile.am
src/mysql/Makefile.am
src/namecache/Makefile.am
src/namestore/Makefile.am
src/nat/Makefile.am
src/nat/gnunet-helper-nat-client-windows.c [deleted file]
src/nat/gnunet-helper-nat-server-windows.c [deleted file]
src/nse/Makefile.am
src/nt/Makefile.am
src/peerinfo-tool/Makefile.am
src/peerinfo/Makefile.am
src/peerstore/Makefile.am
src/pq/Makefile.am
src/pt/Makefile.am
src/pt/test_gnunet_vpn.c
src/reclaim-attribute/Makefile.am
src/reclaim/Makefile.am
src/regex/Makefile.am
src/rest/Makefile.am
src/revocation/Makefile.am
src/rps/Makefile.am
src/scalarproduct/Makefile.am
src/secretsharing/Makefile.am
src/set/Makefile.am
src/sq/Makefile.am
src/statistics/Makefile.am
src/template/Makefile.am
src/testbed-logger/Makefile.am
src/testbed/Makefile.am
src/testbed/gnunet-service-testbed_cpustatus.c
src/testbed/test_testbed_api_testbed_run.c
src/testing/Makefile.am
src/transport/Makefile.am
src/transport/gnunet-helper-transport-bluetooth.c
src/transport/plugin_transport_udp.c
src/transport/plugin_transport_wlan.h
src/transport/tcp_service_legacy.c
src/util/Makefile.am
src/util/disk.c
src/util/dnsstub.c
src/util/gnunet-timeout-w32.c [deleted file]
src/util/network.c
src/util/os_installation.c
src/util/os_network.c
src/util/os_priority.c
src/util/scheduler.c
src/util/service.c
src/util/strings.c
src/util/test_common_logging_runtime_loglevels.c
src/util/test_configuration.c
src/util/test_getopt.c
src/util/test_resolver_api.c
src/util/test_scheduler.c
src/util/test_service.c
src/util/test_strings.c
src/util/w32cat.c [deleted file]
src/util/win.c [deleted file]
src/util/winproc.c [deleted file]
src/vpn/Makefile.am
src/vpn/gnunet-helper-vpn-windows.c [deleted file]
src/zonemaster/Makefile.am

index 07ae626cb23f78806049f447dd474a85b28821ca..4c0c8f59a622e6faa250c633adaaad7baf9536e0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-Mon Sep 9 00:00:00 UTC 2019
+Mon Sep 10 00:00:00 UTC 2019
   Drop win32 and mingw support after discussion with
   Christian. It has been unmaintained in out code base
   for years and there are no known users.
index 16a4cf686866c1ef721747fe3aaee7dd5a1b3649..59d236d4fcf193f519272de8323c8bcfe8052e29 100644 (file)
@@ -175,34 +175,6 @@ AS_CASE(["$host_os"],
      DLLDIR=lib
      UNIXONLY="#"
   ],
-  [*cygwin*],[
-     AC_DEFINE_UNQUOTED(CYGWIN,1,[This is a Cygwin system])
-     AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
-     AC_CHECK_LIB(intl, gettext)
-     CFLAGS="-mms-bitfields $CFLAGS"
-     build_target="cygwin"
-     LIBPREFIX=lib
-     DLLDIR=bin
-     AC_PROG_CXX
-     UNIXONLY=""
-  ],
-  [*mingw*],[
-     AC_DEFINE_UNQUOTED(MINGW,1,[This is a MinGW system])
-     AC_DEFINE_UNQUOTED(WINDOWS,1,[This is a Windows system])
-     AC_DEFINE_UNQUOTED(_WIN32,1,[This is a Windows system])
-     AC_CHECK_LIB(intl, gettext)
-     LDFLAGS="$LDFLAGS -Wl,--export-all-symbols"
-     LIBS="$LIBS -lws2_32 -lgnurx -lole32"
-     CFLAGS="-mms-bitfields $CFLAGS"
-     CPPFLAGS="-D_WIN32_WINNT=0x0501 -DHAVE_STAT64=1 -D__USE_MINGW_ANSI_STDIO=1 $CPPFLAGS"
-     build_target="mingw"
-     AC_PROG_CXX
-     LIBPREFIX=lib
-     DLLDIR=bin
-     UNIXONLY=""
-     funcstocheck=""
-     native_srcdir=$(cd $srcdir; pwd -W)
-  ],
   [gnu*],[
      AC_DEFINE_UNQUOTED(GNU,1,[This is a GNU system])
      build_target="gnu"
@@ -223,8 +195,6 @@ AC_SUBST(UNIXONLY)
 
 AC_MSG_CHECKING([for build target])
 AM_CONDITIONAL(DARWIN,  test "$build_target" = "darwin")
-AM_CONDITIONAL(CYGWIN,  test "$build_target" = "cygwin")
-AM_CONDITIONAL(MINGW,   test "$build_target" = "mingw")
 AM_CONDITIONAL(SOLARIS, test "$build_target" = "solaris")
 AM_CONDITIONAL(XFREEBSD, test "$build_target" = "freebsd")
 AM_CONDITIONAL(OPENBSD, test "$build_target" = "openbsd")
@@ -289,7 +259,7 @@ AS_IF([test x"$VAR_IP6TABLES_BINARY" = x"false"],
      [VAR_IP6TABLES_BINARY="/sbin/ip6tables"],
      [AS_IF([test -x "/usr/sbin/ip6tables"],
         [VAR_IP6TABLES_BINARY="/usr/sbin/ip6tables"])])])
-       
+
 
 AS_IF([test x"$VAR_IP6TABLES_BINARY" != x"false"],
   [AC_DEFINE_UNQUOTED([IP6TABLES], "$VAR_IP6TABLES_BINARY", [Path to ip6tables])],
@@ -364,13 +334,6 @@ AC_CHECK_LIB(anl,
 AM_CONDITIONAL(HAVE_GETADDRINFO_A,
                [test "$have_addrinfo_a" = 1])
 
-# tests only run on Windows
-AS_IF([test "x$build_target" = "xmingw"],
-      [AC_CHECK_LIB(gnurx,
-                    regexec,
-                    [],
-                    [AC_MSG_ERROR([GNUnet requires libgnurx on Windows])])])
-
 # libgcrypt
 gcrypt=0
 NEED_LIBGCRYPT_API=1
@@ -1185,9 +1148,6 @@ CPPFLAGS=$SAVE_CPPFLAGS
 AC_CHECK_TYPES([sigset_t, off_t], [], [], [#include <sys/types.h>])
 AC_CHECK_TYPES([size_t], [], [], [#include <stdio.h>])
 
-AS_IF([test "$build_target" = "mingw"]
- [CYGWIN_MYSQL_MAGIC="#include <mysql/my_global.h>"])
-
 # test for mysql
 mysql=false
 mysqlfail=false
@@ -1202,7 +1162,7 @@ AC_ARG_WITH(mysql,
      [yes|""],[
       AC_CHECK_HEADERS(mysql/mysql.h,
        AC_CHECK_LIB(mysqlclient, mysql_init,
-       mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
+       mysql=true), [], [])
      ],[
       LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql $LDFLAGS $ZLIBS"
       CPPFLAGS="-I$with_mysql/include $CPPFLAGS"
@@ -1211,7 +1171,7 @@ AC_ARG_WITH(mysql,
         MYSQL_LDFLAGS="-L$with_mysql/lib -L$with_mysql/lib/mysql"
         MYSQL_CPPFLAGS="-I$with_mysql/include"
 
-        mysql=true), [], [$CYGWIN_MYSQL_MAGIC])
+        mysql=true), [], [])
      ])
   ],
   [AC_MSG_RESULT([--with-mysql not specified])
@@ -1228,7 +1188,7 @@ AC_ARG_WITH(mysql,
       MYSQL_LDFLAGS="-L$MYSQL_LIBDIR"
       mysql=true
 
-     , [], [$CYGWIN_MYSQL_MAGIC])])
+     , [], [])])
   ])
 
 AC_SUBST(MYSQL_LDFLAGS)
@@ -1240,7 +1200,7 @@ AS_IF([test "$mysql" = "true" -a "x$enable_mysql_version_check" = "xyes"],
  [
   AC_MSG_CHECKING(mysql version)
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-    [[$CYGWIN_MYSQL_MAGIC
+    [[
       #include <mysql/mysql.h>]],
     [[
       #if (MYSQL_VERSION_ID < 40100)
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/COPYING b/contrib/3rdparty/Windows/openvpn-tap32/COPYING
deleted file mode 100644 (file)
index 3912109..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program 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 2 of the License, or
-    (at your option) any later version.
-
-    This program 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 this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/INSTALL b/contrib/3rdparty/Windows/openvpn-tap32/INSTALL
deleted file mode 100644 (file)
index 8e02c18..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-You need devcon.exe or equivalent functionality to install the openvpn-signed driver included in tap-win32-signed.zip.\r
-This version of tap32 works with gnunet-vpn-helper-windows and can be loaded/installed by it. \r
-\r
-Additional information is included in OemWin2k.inf which is included in the driver archives.
\ No newline at end of file
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip b/contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip
deleted file mode 100644 (file)
index e134732..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip and /dev/null differ
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip b/contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip
deleted file mode 100644 (file)
index 9ffc0b4..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip and /dev/null differ
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf
deleted file mode 100644 (file)
index 167e30f..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-; ****************************************************************************\r
-; * Copyright (C) 2002-2010 OpenVPN Technologies, Inc.                            *\r
-; *  This program is free software; you can redistribute it and/or modify    *\r
-; *  it under the terms of the GNU General Public License version 2          *\r
-; *  as published by the Free Software Foundation.                           *\r
-; ****************************************************************************\r
-\r
-; SYNTAX CHECKER\r
-; cd \WINDDK\3790\tools\chkinf\r
-; chkinf c:\src\openvpn\tap-win32\i386\oemwin2k.inf\r
-; OUTPUT -> file:///c:/WINDDK/3790/tools/chkinf/htm/c%23+src+openvpn+tap-win32+i386+__OemWin2k.htm\r
-\r
-; INSTALL/REMOVE DRIVER\r
-;   tapinstall install OemWin2k.inf TAP0901\r
-;   tapinstall update OemWin2k.inf TAP0901\r
-;   tapinstall remove TAP0901\r
-\r
-;*********************************************************\r
-; Note to Developers:\r
-;\r
-; If you are bundling the TAP-Windows driver with your app,\r
-; you should try to rename it in such a way that it will\r
-; not collide with other instances of TAP-Windows defined\r
-; by other apps.  Multiple versions of the TAP-Windows\r
-; driver, each installed by different apps, can coexist\r
-; on the same machine if you follow these guidelines.\r
-; NOTE: these instructions assume you are editing the\r
-; generated OemWin2k.inf file, not the source\r
-; OemWin2k.inf.in file which is preprocessed by winconfig\r
-; and uses macro definitions from settings.in.\r
-;\r
-; (1) Rename all tapXXXX instances in this file to\r
-;     something different (use at least 5 characters\r
-;     for this name!)\r
-; (2) Change the "!define TAP" definition in openvpn.nsi\r
-;     to match what you changed tapXXXX to.\r
-; (3) Change TARGETNAME in SOURCES to match what you\r
-;     changed tapXXXX to.\r
-; (4) Change TAP_COMPONENT_ID in common.h to match what\r
-;     you changed tapXXXX to.\r
-; (5) Change SZDEPENDENCIES in service.h to match what\r
-;     you changed tapXXXX to.\r
-; (6) Change DeviceDescription and Provider strings.\r
-; (7) Change PRODUCT_TAP_WIN_DEVICE_DESCRIPTION in constants.h to what you\r
-;     set DeviceDescription to.\r
-;\r
-;*********************************************************\r
-\r
-[Version]\r
-   Signature = "$Windows NT$"\r
-   CatalogFile = tap0901.cat\r
-   ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}\r
-   Provider = %Provider%\r
-   Class = Net\r
-\r
-; This version number should match the version\r
-; number given in SOURCES.\r
-   DriverVer=07/02/2012,9.00.00.9\r
-\r
-[Strings]\r
-   DeviceDescription = "TAP-Windows Adapter V9"\r
-   Provider = "TAP-Windows Provider V9"\r
-\r
-;----------------------------------------------------------------\r
-;                      Manufacturer + Product Section (Done)\r
-;----------------------------------------------------------------\r
-[Manufacturer]\r
-   %Provider% = tap0901\r
-\r
-[tap0901]\r
-   %DeviceDescription% = tap0901.ndi, tap0901\r
-\r
-;---------------------------------------------------------------\r
-;                             Driver Section (Done)\r
-;---------------------------------------------------------------\r
-\r
-;----------------- Characteristics ------------\r
-;    NCF_PHYSICAL = 0x04\r
-;    NCF_VIRTUAL = 0x01\r
-;    NCF_SOFTWARE_ENUMERATED = 0x02\r
-;    NCF_HIDDEN = 0x08\r
-;    NCF_NO_SERVICE = 0x10\r
-;    NCF_HAS_UI = 0x80\r
-;----------------- Characteristics ------------\r
-\r
-[tap0901.ndi]\r
-   CopyFiles       = tap0901.driver, tap0901.files\r
-   AddReg          = tap0901.reg\r
-   AddReg          = tap0901.params.reg\r
-   Characteristics = 0x81\r
-\r
-[tap0901.ndi.Services]\r
-   AddService = tap0901,        2, tap0901.service\r
-\r
-[tap0901.reg]\r
-   HKR, Ndi,            Service,      0, "tap0901"\r
-   HKR, Ndi\Interfaces, UpperRange,   0, "ndis5"\r
-   HKR, Ndi\Interfaces, LowerRange,   0, "ethernet"\r
-   HKR, ,               Manufacturer, 0, "%Provider%"\r
-   HKR, ,               ProductName,  0, "%DeviceDescription%"\r
-\r
-[tap0901.params.reg]\r
-   HKR, Ndi\params\MTU,                  ParamDesc, 0, "MTU"\r
-   HKR, Ndi\params\MTU,                  Type,      0, "int"\r
-   HKR, Ndi\params\MTU,                  Default,   0, "1500"\r
-   HKR, Ndi\params\MTU,                  Optional,  0, "0"\r
-   HKR, Ndi\params\MTU,                  Min,       0, "100"\r
-   HKR, Ndi\params\MTU,                  Max,       0, "1500"\r
-   HKR, Ndi\params\MTU,                  Step,      0, "1"\r
-   HKR, Ndi\params\MediaStatus,          ParamDesc, 0, "Media Status"\r
-   HKR, Ndi\params\MediaStatus,          Type,      0, "enum"\r
-   HKR, Ndi\params\MediaStatus,          Default,   0, "0"\r
-   HKR, Ndi\params\MediaStatus,          Optional,  0, "0"\r
-   HKR, Ndi\params\MediaStatus\enum,     "0",       0, "Application Controlled"\r
-   HKR, Ndi\params\MediaStatus\enum,     "1",       0, "Always Connected"\r
-   HKR, Ndi\params\MAC,                  ParamDesc, 0, "MAC Address"\r
-   HKR, Ndi\params\MAC,                  Type,      0, "edit"\r
-   HKR, Ndi\params\MAC,                  Optional,  0, "1"\r
-   HKR, Ndi\params\AllowNonAdmin,        ParamDesc, 0, "Non-Admin Access"\r
-   HKR, Ndi\params\AllowNonAdmin,        Type,      0, "enum"\r
-   HKR, Ndi\params\AllowNonAdmin,        Default,   0, "1"\r
-   HKR, Ndi\params\AllowNonAdmin,        Optional,  0, "0"\r
-   HKR, Ndi\params\AllowNonAdmin\enum,   "0",       0, "Not Allowed"\r
-   HKR, Ndi\params\AllowNonAdmin\enum,   "1",       0, "Allowed"\r
-\r
-;----------------------------------------------------------------\r
-;                             Service Section\r
-;----------------------------------------------------------------\r
-\r
-;---------- Service Type -------------\r
-;    SERVICE_KERNEL_DRIVER     = 0x01\r
-;    SERVICE_WIN32_OWN_PROCESS = 0x10\r
-;---------- Service Type -------------\r
-\r
-;---------- Start Mode ---------------\r
-;    SERVICE_BOOT_START   = 0x0\r
-;    SERVICE_SYSTEM_START = 0x1\r
-;    SERVICE_AUTO_START   = 0x2\r
-;    SERVICE_DEMAND_START = 0x3\r
-;    SERVICE_DISABLED     = 0x4\r
-;---------- Start Mode ---------------\r
-\r
-[tap0901.service]\r
-   DisplayName = %DeviceDescription%\r
-   ServiceType = 1\r
-   StartType = 3\r
-   ErrorControl = 1\r
-   LoadOrderGroup = NDIS\r
-   ServiceBinary = %12%\tap0901.sys\r
-\r
-;-----------------------------------------------------------------\r
-;                                File Installation\r
-;-----------------------------------------------------------------\r
-\r
-;----------------- Copy Flags ------------\r
-;    COPYFLG_NOSKIP = 0x02\r
-;    COPYFLG_NOVERSIONCHECK = 0x04\r
-;----------------- Copy Flags ------------\r
-\r
-; SourceDisksNames\r
-; diskid = description[, [tagfile] [, <unused>, subdir]]\r
-; 1 = "Intel Driver Disk 1",e100bex.sys,,\r
-\r
-[SourceDisksNames]\r
-   1 = %DeviceDescription%, tap0901.sys\r
-\r
-; SourceDisksFiles\r
-; filename_on_source = diskID[, [subdir][, size]]\r
-; e100bex.sys = 1,, ; on distribution disk 1\r
-\r
-[SourceDisksFiles]\r
-tap0901.sys = 1\r
-\r
-[DestinationDirs]\r
-   tap0901.files  = 11\r
-   tap0901.driver = 12\r
-\r
-[tap0901.files]\r
-;   TapPanel.cpl,,,6   ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-;   cipsrvr.exe,,,6     ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-\r
-[tap0901.driver]\r
-   tap0901.sys,,,6     ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-\r
-;---------------------------------------------------------------\r
-;                                      End\r
-;---------------------------------------------------------------\r
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat
deleted file mode 100644 (file)
index a6772f9..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat and /dev/null differ
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys
deleted file mode 100644 (file)
index 3ecf239..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys and /dev/null differ
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf
deleted file mode 100644 (file)
index 9b1676a..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-; ****************************************************************************\r
-; * Copyright (C) 2002-2010 OpenVPN Technologies, Inc.                            *\r
-; *  This program is free software; you can redistribute it and/or modify    *\r
-; *  it under the terms of the GNU General Public License version 2          *\r
-; *  as published by the Free Software Foundation.                           *\r
-; ****************************************************************************\r
-\r
-; SYNTAX CHECKER\r
-; cd \WINDDK\3790\tools\chkinf\r
-; chkinf c:\src\openvpn\tap-win32\i386\oemwin2k.inf\r
-; OUTPUT -> file:///c:/WINDDK/3790/tools/chkinf/htm/c%23+src+openvpn+tap-win32+i386+__OemWin2k.htm\r
-\r
-; INSTALL/REMOVE DRIVER\r
-;   tapinstall install OemWin2k.inf TAP0901\r
-;   tapinstall update OemWin2k.inf TAP0901\r
-;   tapinstall remove TAP0901\r
-\r
-;*********************************************************\r
-; Note to Developers:\r
-;\r
-; If you are bundling the TAP-Windows driver with your app,\r
-; you should try to rename it in such a way that it will\r
-; not collide with other instances of TAP-Windows defined\r
-; by other apps.  Multiple versions of the TAP-Windows\r
-; driver, each installed by different apps, can coexist\r
-; on the same machine if you follow these guidelines.\r
-; NOTE: these instructions assume you are editing the\r
-; generated OemWin2k.inf file, not the source\r
-; OemWin2k.inf.in file which is preprocessed by winconfig\r
-; and uses macro definitions from settings.in.\r
-;\r
-; (1) Rename all tapXXXX instances in this file to\r
-;     something different (use at least 5 characters\r
-;     for this name!)\r
-; (2) Change the "!define TAP" definition in openvpn.nsi\r
-;     to match what you changed tapXXXX to.\r
-; (3) Change TARGETNAME in SOURCES to match what you\r
-;     changed tapXXXX to.\r
-; (4) Change TAP_COMPONENT_ID in common.h to match what\r
-;     you changed tapXXXX to.\r
-; (5) Change SZDEPENDENCIES in service.h to match what\r
-;     you changed tapXXXX to.\r
-; (6) Change DeviceDescription and Provider strings.\r
-; (7) Change PRODUCT_TAP_WIN_DEVICE_DESCRIPTION in constants.h to what you\r
-;     set DeviceDescription to.\r
-;\r
-;*********************************************************\r
-\r
-[Version]\r
-   Signature = "$Windows NT$"\r
-   CatalogFile = tap0901.cat\r
-   ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}\r
-   Provider = %Provider%\r
-   Class = Net\r
-\r
-; This version number should match the version\r
-; number given in SOURCES.\r
-   DriverVer=07/02/2012,9.00.00.9\r
-\r
-[Strings]\r
-   DeviceDescription = "TAP-Windows Adapter V9"\r
-   Provider = "TAP-Windows Provider V9"\r
-\r
-;----------------------------------------------------------------\r
-;                      Manufacturer + Product Section (Done)\r
-;----------------------------------------------------------------\r
-[Manufacturer]\r
-   %Provider% = tap0901, NTamd64\r
-\r
-[tap0901.NTamd64]\r
-   %DeviceDescription% = tap0901.ndi, tap0901\r
-\r
-;---------------------------------------------------------------\r
-;                             Driver Section (Done)\r
-;---------------------------------------------------------------\r
-\r
-;----------------- Characteristics ------------\r
-;    NCF_PHYSICAL = 0x04\r
-;    NCF_VIRTUAL = 0x01\r
-;    NCF_SOFTWARE_ENUMERATED = 0x02\r
-;    NCF_HIDDEN = 0x08\r
-;    NCF_NO_SERVICE = 0x10\r
-;    NCF_HAS_UI = 0x80\r
-;----------------- Characteristics ------------\r
-\r
-[tap0901.ndi]\r
-   CopyFiles       = tap0901.driver, tap0901.files\r
-   AddReg          = tap0901.reg\r
-   AddReg          = tap0901.params.reg\r
-   Characteristics = 0x81\r
-\r
-[tap0901.ndi.Services]\r
-   AddService = tap0901,        2, tap0901.service\r
-\r
-[tap0901.reg]\r
-   HKR, Ndi,            Service,      0, "tap0901"\r
-   HKR, Ndi\Interfaces, UpperRange,   0, "ndis5"\r
-   HKR, Ndi\Interfaces, LowerRange,   0, "ethernet"\r
-   HKR, ,               Manufacturer, 0, "%Provider%"\r
-   HKR, ,               ProductName,  0, "%DeviceDescription%"\r
-\r
-[tap0901.params.reg]\r
-   HKR, Ndi\params\MTU,                  ParamDesc, 0, "MTU"\r
-   HKR, Ndi\params\MTU,                  Type,      0, "int"\r
-   HKR, Ndi\params\MTU,                  Default,   0, "1500"\r
-   HKR, Ndi\params\MTU,                  Optional,  0, "0"\r
-   HKR, Ndi\params\MTU,                  Min,       0, "100"\r
-   HKR, Ndi\params\MTU,                  Max,       0, "1500"\r
-   HKR, Ndi\params\MTU,                  Step,      0, "1"\r
-   HKR, Ndi\params\MediaStatus,          ParamDesc, 0, "Media Status"\r
-   HKR, Ndi\params\MediaStatus,          Type,      0, "enum"\r
-   HKR, Ndi\params\MediaStatus,          Default,   0, "0"\r
-   HKR, Ndi\params\MediaStatus,          Optional,  0, "0"\r
-   HKR, Ndi\params\MediaStatus\enum,     "0",       0, "Application Controlled"\r
-   HKR, Ndi\params\MediaStatus\enum,     "1",       0, "Always Connected"\r
-   HKR, Ndi\params\MAC,                  ParamDesc, 0, "MAC Address"\r
-   HKR, Ndi\params\MAC,                  Type,      0, "edit"\r
-   HKR, Ndi\params\MAC,                  Optional,  0, "1"\r
-   HKR, Ndi\params\AllowNonAdmin,        ParamDesc, 0, "Non-Admin Access"\r
-   HKR, Ndi\params\AllowNonAdmin,        Type,      0, "enum"\r
-   HKR, Ndi\params\AllowNonAdmin,        Default,   0, "1"\r
-   HKR, Ndi\params\AllowNonAdmin,        Optional,  0, "0"\r
-   HKR, Ndi\params\AllowNonAdmin\enum,   "0",       0, "Not Allowed"\r
-   HKR, Ndi\params\AllowNonAdmin\enum,   "1",       0, "Allowed"\r
-\r
-;----------------------------------------------------------------\r
-;                             Service Section\r
-;----------------------------------------------------------------\r
-\r
-;---------- Service Type -------------\r
-;    SERVICE_KERNEL_DRIVER     = 0x01\r
-;    SERVICE_WIN32_OWN_PROCESS = 0x10\r
-;---------- Service Type -------------\r
-\r
-;---------- Start Mode ---------------\r
-;    SERVICE_BOOT_START   = 0x0\r
-;    SERVICE_SYSTEM_START = 0x1\r
-;    SERVICE_AUTO_START   = 0x2\r
-;    SERVICE_DEMAND_START = 0x3\r
-;    SERVICE_DISABLED     = 0x4\r
-;---------- Start Mode ---------------\r
-\r
-[tap0901.service]\r
-   DisplayName = %DeviceDescription%\r
-   ServiceType = 1\r
-   StartType = 3\r
-   ErrorControl = 1\r
-   LoadOrderGroup = NDIS\r
-   ServiceBinary = %12%\tap0901.sys\r
-\r
-;-----------------------------------------------------------------\r
-;                                File Installation\r
-;-----------------------------------------------------------------\r
-\r
-;----------------- Copy Flags ------------\r
-;    COPYFLG_NOSKIP = 0x02\r
-;    COPYFLG_NOVERSIONCHECK = 0x04\r
-;----------------- Copy Flags ------------\r
-\r
-; SourceDisksNames\r
-; diskid = description[, [tagfile] [, <unused>, subdir]]\r
-; 1 = "Intel Driver Disk 1",e100bex.sys,,\r
-\r
-[SourceDisksNames]\r
-   1 = %DeviceDescription%, tap0901.sys\r
-\r
-; SourceDisksFiles\r
-; filename_on_source = diskID[, [subdir][, size]]\r
-; e100bex.sys = 1,, ; on distribution disk 1\r
-\r
-[SourceDisksFiles]\r
-tap0901.sys = 1\r
-\r
-[DestinationDirs]\r
-   tap0901.files  = 11\r
-   tap0901.driver = 12\r
-\r
-[tap0901.files]\r
-;   TapPanel.cpl,,,6   ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-;   cipsrvr.exe,,,6     ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-\r
-[tap0901.driver]\r
-   tap0901.sys,,,6     ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK\r
-\r
-;---------------------------------------------------------------\r
-;                                      End\r
-;---------------------------------------------------------------\r
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat
deleted file mode 100644 (file)
index 1cac5f5..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat and /dev/null differ
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys
deleted file mode 100644 (file)
index 566e168..0000000
Binary files a/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys and /dev/null differ
index 676f5384315385d4653ffd8c264fb526c7463641..61cb5b714aaca74f11826e60bb423f058650d7db 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include
 
-tap32dir = $(pkgdatadir)/openvpn-tap32/tapw32/
-
-tap64dir = $(pkgdatadir)/openvpn-tap32/tapw64/
-
 SUBDIRS = scripts hellos services
 
 dist_pkgdata_DATA = \
@@ -17,18 +13,6 @@ dist_pkgdata_DATA = \
  branding/logo/gnunet-logo-color.png \
  testing_hostkeys.ecc
 
-if MINGW
-tap32_DATA = \
- 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys \
- 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat \
- 3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf
-
-tap64_DATA = \
- 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys \
- 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat \
- 3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf
-endif
-
 INITD_FILES = \
  services/openrc/gnunet.initd \
  services/systemd/gnunet.service
@@ -44,15 +28,6 @@ EXTRA_DIST = \
  conf/wireshark/wireshark.lua \
  packages/nix/default.nix \
  packages/nix/gnunet-dev.nix \
- 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys \
- 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat \
- 3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf \
- 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys \
- 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat \
- 3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf \
- 3rdparty/Windows/openvpn-tap32/INSTALL \
- 3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip \
- 3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip \
  $(INITD_FILES)
 
 check_PROGRAMS = \
index a3400089923ec5f1f4b12b4cd09d4939c074922d..1d26ce34070463d8222945101c544aa66ecdc6c0 100644 (file)
@@ -130,7 +130,6 @@ src/dns/gnunet-service-dns.c
 src/dns/gnunet-zonewalk.c
 src/dns/plugin_block_dns.c
 src/exit/gnunet-daemon-exit.c
-src/exit/gnunet-helper-exit-windows.c
 src/exit/gnunet-helper-exit.c
 src/fragmentation/defragmentation.c
 src/fragmentation/fragmentation.c
@@ -177,7 +176,6 @@ src/gns/gns_tld_api.c
 src/gns/gnunet-bcd.c
 src/gns/gnunet-dns2gns.c
 src/gns/gnunet-gns-benchmark.c
-src/gns/gnunet-gns-helper-service-w32.c
 src/gns/gnunet-gns-import.c
 src/gns/gnunet-gns-proxy.c
 src/gns/gnunet-gns.c
@@ -189,10 +187,6 @@ src/gns/nss/nss_gns_query.c
 src/gns/plugin_block_gns.c
 src/gns/plugin_gnsrecord_gns.c
 src/gns/plugin_rest_gns.c
-src/gns/w32nsp-install.c
-src/gns/w32nsp-resolve.c
-src/gns/w32nsp-uninstall.c
-src/gns/w32nsp.c
 src/gnsrecord/gnsrecord.c
 src/gnsrecord/gnsrecord_crypto.c
 src/gnsrecord/gnsrecord_misc.c
@@ -243,9 +237,7 @@ src/nat-auto/gnunet-service-nat-auto.c
 src/nat-auto/gnunet-service-nat-auto_legacy.c
 src/nat-auto/nat_auto_api.c
 src/nat-auto/nat_auto_api_test.c
-src/nat/gnunet-helper-nat-client-windows.c
 src/nat/gnunet-helper-nat-client.c
-src/nat/gnunet-helper-nat-server-windows.c
 src/nat/gnunet-helper-nat-server.c
 src/nat/gnunet-nat.c
 src/nat/gnunet-service-nat.c
@@ -480,12 +472,10 @@ src/util/getopt_helpers.c
 src/util/gnunet-config-diff.c
 src/util/gnunet-config.c
 src/util/gnunet-ecc.c
-src/util/gnunet-helper-w32-console.c
 src/util/gnunet-qr.c
 src/util/gnunet-resolver.c
 src/util/gnunet-scrypt.c
 src/util/gnunet-service-resolver.c
-src/util/gnunet-timeout-w32.c
 src/util/gnunet-timeout.c
 src/util/gnunet-uri.c
 src/util/helper.c
@@ -512,10 +502,6 @@ src/util/speedup.c
 src/util/strings.c
 src/util/time.c
 src/util/tun.c
-src/util/w32cat.c
-src/util/win.c
-src/util/winproc.c
-src/vpn/gnunet-helper-vpn-windows.c
 src/vpn/gnunet-helper-vpn.c
 src/vpn/gnunet-service-vpn.c
 src/vpn/gnunet-vpn.c
index cd04512152b2ee795cfb791379f9f7249470e446..948c9c4f5ba258e98e1f58d0f764fea4623e9d50 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -10,97 +10,97 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2015-03-08 16:16+0100\n"
 "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
-"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.7.4\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, fuzzy, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, fuzzy, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 msgid "We disconnected from ARM before we could send a request"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 msgid "Unknown request status"
 msgstr "Unbekannter Anfragestatus"
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "%s wurde gestoppt"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 #, fuzzy
 msgid "is starting"
 msgstr "%s startet"
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "%s wird gestoppt"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 #, fuzzy
 msgid "is starting already"
 msgstr "%s ist bereits gestartet"
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "%s wird bereits gestoppt"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 #, fuzzy
 msgid "is started already"
 msgstr "%s ist bereits gestartet"
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "%s ist bereits gestoppt"
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 msgid "service is not known to ARM"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "%s-Dienst konnte nicht gestartet werden"
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "Unbekannter Anfragestatus"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr "Schwerwiegender Fehler bei der Initialisierung der ARM-API.\n"
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr "ARM-Dienst konnte nicht gestartet werden: %s\n"
@@ -115,118 +115,119 @@ msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
 msgid "Failed to stop the ARM service: %s\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, fuzzy, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, fuzzy, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, fuzzy, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, fuzzy, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr "Fehler bei der Kommunikation mit ARM. Läuft ARM nicht?\n"
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 msgid "Running services:\n"
 msgstr "Laufende Dienste:\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr "%s wurde gestoppt.\n"
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, c-format
 msgid "Starting %s...\n"
 msgstr "%s wird gestartet …\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr "%s wird gestoppt …\n"
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, fuzzy, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr "`%s': unbekannter Dienst: %s\n"
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 msgid "stop all GNUnet services"
 msgstr "Alle GNUnet-Dienste stoppen"
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr "Einen bestimmten Dienst starten"
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr "Einen bestimmten Dienst stoppen"
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 msgid "start all GNUnet default services"
 msgstr "Alle Standard-GNUnet-Dienste starten"
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 msgid "stop and start all GNUnet default services"
 msgstr "Alle Standard-GNUnet-Dienste stoppen und starten"
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr "Konfigurationsdatei und Verzeichnis beim Beenden löschen"
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr "ARM-Aktivitäten überwachen"
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr "Keine Statusmeldungen ausgeben"
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 msgid "list currently running services"
 msgstr "Alle derzeit laufenden Dienste auflisten"
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -235,30 +236,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -266,7 +273,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -274,7 +282,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "»%s« konnte nicht aufgelöst werden: %s\n"
@@ -282,7 +291,8 @@ msgstr "»%s« konnte nicht aufgelöst werden: %s\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
@@ -353,159 +363,25 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-msgid "print logging"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, fuzzy, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, fuzzy, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, fuzzy, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2699
-#, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
-msgstr ""
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
+msgstr "Protokollierung stoppen\n"
 
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr " gconfig\tGTK Konfiguration\n"
+msgid "Start logging `%s'\n"
+msgstr "Collection `%s' begonnen.\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, fuzzy, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr "Protokollierung stoppen\n"
-
-#: src/ats-tests/ats-testing-log.c:892
-#, fuzzy, c-format
-msgid "Start logging `%s'\n"
-msgstr "Collection `%s' begonnen.\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -513,6 +389,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr ""
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -630,6 +517,131 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
+msgid ""
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3306
+msgid "print logging"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
+msgstr ""
+
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, fuzzy, c-format
+msgid "Failed to initialize solver `%s'!\n"
+msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:304
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:359
+#, c-format
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1870
+#, fuzzy, c-format
+msgid "Adding address for peer `%s' multiple times\n"
+msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
+
+#: src/ats/plugin_ats_mlp.c:1914
+#, fuzzy, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
+msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
+
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
+
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
+msgid ""
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr " gconfig\tGTK Konfiguration\n"
+
 #: src/auction/gnunet-auction-create.c:163
 msgid "description of the item to be sold"
 msgstr ""
@@ -667,7 +679,7 @@ msgstr ""
 
 #: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
 #: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
 msgid "help text"
 msgstr "Hilfetext"
 
@@ -680,40 +692,40 @@ msgstr "Ungültige Antwort auf `%s'.\n"
 msgid "Extra arguments are not applicable in combination with this option.\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/cadet/gnunet-cadet.c:795
 #, fuzzy, c-format
 msgid "Invalid target `%s'\n"
 msgstr "Ungültiger Parameter: `%s'\n"
 
-#: src/cadet/gnunet-cadet.c:829
+#: src/cadet/gnunet-cadet.c:832
 #, fuzzy
 msgid "No action requested\n"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/cadet/gnunet-cadet.c:854
+#: src/cadet/gnunet-cadet.c:857
 #, fuzzy
 msgid "Provide information about a particular connection"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
-#: src/cadet/gnunet-cadet.c:858
+#: src/cadet/gnunet-cadet.c:861
 msgid "Activate echo mode"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
+#: src/cadet/gnunet-cadet.c:866
 msgid "Listen for connections using a shared secret among sender and recipient"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
+#: src/cadet/gnunet-cadet.c:871
 #, fuzzy
 msgid "Provide information about a patricular peer"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
-#: src/cadet/gnunet-cadet.c:872
+#: src/cadet/gnunet-cadet.c:875
 #, fuzzy
 msgid "Provide information about all peers"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
-#: src/cadet/gnunet-cadet.c:876
+#: src/cadet/gnunet-cadet.c:879
 #, fuzzy
 msgid "Provide information about all tunnels"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
@@ -761,6 +773,28 @@ msgstr "Ausführlicherer Modus (empfangene Werte ausgeben)"
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1018,30 +1052,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr "Fehler beim Lesen aus STDIN: %d %s\n"
@@ -1166,7 +1178,7 @@ msgstr "ogg_stream_init() fehlgeschlagen.\n"
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr "UDP-Sockets können nicht geöffnet werden\n"
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, fuzzy, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n"
@@ -1190,49 +1202,49 @@ msgstr ""
 msgid "Could not start playback audio helper.\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr "# verbundener Freunde"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 #, fuzzy
 msgid "key received"
 msgstr "# empfangene Ergebnisse"
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 #, fuzzy
 msgid "connection established"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "# verbundener Freunde"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "Unbekannter Fehler"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, fuzzy, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr "%24s: %-17s %4s   (%u Verbindungen insgesamt)\n"
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr "Ungültiges Befehlszeilenargument »%s«\n"
@@ -1242,231 +1254,231 @@ msgstr "Ungültiges Befehlszeilenargument »%s«\n"
 msgid "Failed to connect to CORE service!\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 msgid "provide information about all current connections (continuously)"
 msgstr ""
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 msgid "Print information about connected peers."
 msgstr "Informationen über verbundene Knoten ausgeben."
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 #, fuzzy
 msgid "# send requests dropped (disconnected)"
 msgstr "# gap Anfragen verworfen: Kollision in RT"
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, fuzzy, c-format
 msgid "# bytes of messages of type %u received"
 msgstr "# Bytes Rauschen empfangen"
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 msgid "# messages discarded (session disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, fuzzy, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr "# Bytes Rauschen empfangen"
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "Dienst »%s« wird neu gestartet.\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr "# Bytes verschlüsselt"
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr "# Bytes entschlüsselt"
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 msgid "# PAYLOAD dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 #, fuzzy
 msgid "# PING messages transmitted"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 #, fuzzy
 msgid "# duplicate ephemeral keys ignored"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 #, fuzzy
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 #, fuzzy
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 #, fuzzy
 msgid "# PING messages received"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 #, fuzzy
 msgid "# PING messages dropped (out of order)"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 #, fuzzy
 msgid "# PONG messages created"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 msgid "# sessions terminated by timeout"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 #, fuzzy
 msgid "# keepalive messages sent"
 msgstr "# Klartext PING Nachrichten gesendet"
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 #, fuzzy
 msgid "# PONG messages received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 msgid "# PONG messages dropped (connection down)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 #, fuzzy
 msgid "# PONG messages dropped (out of order)"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 #, fuzzy
 msgid "# PONG messages decrypted"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 #, fuzzy
 msgid "# session keys confirmed via PONG"
 msgstr "# Knotenankündigungen empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 #, fuzzy
 msgid "# timeouts prevented via PONG"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 #, fuzzy
 msgid "# rekey operations confirmed via PONG"
 msgstr "# Knotenankündigungen empfangen"
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 msgid "# DATA message dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 msgid "# sessions terminated by key expiration"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 #, fuzzy
 msgid "# bytes dropped (duplicates)"
 msgstr "# Bytes verworfen von TCP (ausgehend)"
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 #, fuzzy
 msgid "# bytes dropped (out of sequence)"
 msgstr "# Bytes verworfen von TCP (ausgehend)"
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 #, fuzzy
 msgid "# bytes dropped (ancient message)"
 msgstr "# Bytes verworfen von TCP (ausgehend)"
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 #, fuzzy
 msgid "# bytes of payload decrypted"
 msgstr "# Bytes entschlüsselt"
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 msgid "# peers connected"
 msgstr "# verbundener Knoten"
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 #, fuzzy
 msgid "# type map refreshes sent"
 msgstr "# p2p Trace-Antworten gesendet"
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 #, fuzzy
 msgid "# outdated typemap confirmations received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 #, fuzzy
 msgid "# valid typemap confirmations received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 #, fuzzy
 msgid "# type maps received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1475,7 +1487,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, fuzzy, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr "`%s': unbekannter Dienst: %s\n"
@@ -1575,29 +1587,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr "GNUnet Netzwerk Topologie tracen."
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, fuzzy, c-format
 msgid "Failed to connect to GNS\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, fuzzy, c-format
 msgid "Failed to connect to namestore\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/credential/plugin_rest_credential.c:1128
-#, fuzzy
-msgid "GNS REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 msgid "# bytes stored"
@@ -1641,19 +1648,21 @@ msgstr ""
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1663,6 +1672,7 @@ msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n"
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -1957,7 +1967,7 @@ msgstr "Heap-Datenbank läuft\n"
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -1972,21 +1982,23 @@ msgstr "Anzahl der Werte"
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr "MySQL-Datenbank läuft\n"
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 #, fuzzy
 msgid "Failed to drop table from database.\n"
 msgstr "Fehler beim Binden an UDP Port %d.\n"
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr "PostgreSQL-Datenbank läuft\n"
 
@@ -2002,6 +2014,8 @@ msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
@@ -2023,7 +2037,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 msgid "Sqlite database running\n"
 msgstr "Sqlite-Datenbank läuft\n"
 
@@ -2093,53 +2108,6 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-#, fuzzy
-msgid "number of peers to start"
-msgstr "Anzahl an Durchläufen"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:1009
-msgid "Measure quality and performance of the DHT service."
-msgstr ""
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2266,102 +2234,102 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 #, fuzzy
 msgid "# Peer selection failed"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 #, fuzzy
 msgid "# Expired PUTs discarded"
 msgstr "# verworfener Nachrichten"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 #, fuzzy
 msgid "# Expired results discarded"
 msgstr "# verworfener Nachrichten"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Bytes empfangen über TCP"
@@ -2395,15 +2363,62 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 #, fuzzy
 msgid "# DHT requests combined"
 msgstr "# dht Anfragen weitergeleitet"
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+#, fuzzy
+msgid "number of peers to start"
+msgstr "Anzahl an Durchläufen"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+msgid "Measure quality and performance of the DHT service."
+msgstr ""
+
 #: src/dht/plugin_block_dht.c:189
 #, fuzzy, c-format
 msgid "Block not of type %u\n"
@@ -2479,15 +2494,20 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
 msgstr ""
 
+#: src/dv/gnunet-dv.c:175
+#, fuzzy
+msgid "Print information about DV state"
+msgstr "Informationen über andere GNUnet Knoten ausgeben."
+
 #: src/exit/gnunet-daemon-exit.c:960
 #, fuzzy
 msgid "# TCP packets sent via TUN"
@@ -2498,204 +2518,204 @@ msgstr "# Bytes gesendet über TCP"
 msgid "# ICMP packets sent via TUN"
 msgstr "# Bytes gesendet über TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 #, fuzzy
 msgid "# UDP packets sent via TUN"
 msgstr "# Bytes gesendet über TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 #, fuzzy
 msgid "# Bytes received from CADET"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 #, fuzzy
 msgid "# UDP IP-exit requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 #, fuzzy
 msgid "# UDP service requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 #, fuzzy
 msgid "# TCP service creation requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 #, fuzzy
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 #, fuzzy
 msgid "# TCP DATA requests dropped (no session)"
 msgstr "# gap Anfragen verworfen: Kollision in RT"
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 #, fuzzy
 msgid "# TCP data requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 #, fuzzy
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 #, fuzzy
 msgid "# ICMP service requests received via cadet"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr "# Bytes des Typs %d übertragen"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 #, fuzzy
 msgid "# Packets received from TUN"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 #, fuzzy
 msgid "# Bytes received from TUN"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr "IPv4-Paketoptionen empfangen, werden ignoriert.\n"
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr "Option »%s« für Domain »%s« ist nicht korrekt formatiert!\n"
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr "Muss eine Zahl sein"
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -2940,67 +2960,62 @@ msgstr ""
 "\n"
 "Fehler beim Uploaden der Datei: %s\n"
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, fuzzy, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr "Indizieren der Datei `%s' schlug fehl.  Versuch Datei einzufügen...\n"
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr "Anfrage an den Transportdienst konnte nicht gestellt werden\n"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr ""
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr "Dateiname zu lang"
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 #, fuzzy
 msgid "could not connect to `fs' service"
 msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, fuzzy, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, fuzzy, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, fuzzy, c-format
 msgid "Recursive upload failed: %s"
 msgstr ""
 "\n"
 "Fehler beim Uploaden der Datei: %s\n"
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 #, fuzzy
 msgid "needs to be an actual file"
 msgstr "`%s' ist keine normale Datei.\n"
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr "Verbindung fehlgeschlagen: %s\n"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -3074,152 +3089,152 @@ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
 msgid "Failed to compute hash of file."
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden."
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, fuzzy, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 #, fuzzy
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 #, fuzzy
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 #, fuzzy
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr "Ungültige URL `%s' (muss mit `%s' beginnen)\n"
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "Ungültiges Argument »%s«\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr ""
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr "Keine Schlüsselwörter angegeben!\n"
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, fuzzy, c-format
 msgid "Failed to load state: %s\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, fuzzy, c-format
 msgid "Failed to save state to file %s\n"
 msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, c-format
 msgid "Publishing `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, fuzzy, c-format
 msgid "Failed to run `%s'\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, fuzzy, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr "Sie dürfen nur eine Datei zum Deindizieren angeben.\n"
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr "Gewünschten Grad LEVEL an Sender-Anonymität festlegen"
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr "Die Priorität des Inhalts angeben"
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr ""
 
@@ -3290,7 +3305,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr "Dateien aus dem GNUnet herunterladen."
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr ""
@@ -3314,12 +3329,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, fuzzy, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr "Den Grad LEVEL der gewünschten Empfänger-Anonymität setzen"
 
@@ -3327,7 +3342,7 @@ msgstr "Den Grad LEVEL der gewünschten Empfänger-Anonymität setzen"
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr ""
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3353,15 +3368,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-#, fuzzy
-msgid "Special file-sharing operations"
-msgstr "Alle Optionen anzeigen"
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3378,6 +3384,15 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+#, fuzzy
+msgid "Special file-sharing operations"
+msgstr "Alle Optionen anzeigen"
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3469,7 +3484,7 @@ msgstr ""
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "=\tFehler beim Lesen des Verzeichnisses.\n"
 
 #: src/fs/gnunet-publish.c:715
@@ -3509,15 +3524,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n"
 
-#: src/fs/gnunet-publish.c:911
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3590,33 +3601,33 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, fuzzy, c-format
 msgid "Error searching: %s.\n"
 msgstr "Fehler beim Verlassen der DHT.\n"
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 msgid "Could not create keyword URI from arguments.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 #, fuzzy
 msgid "Could not start searching.\n"
 msgstr "Fehler beim Starten der Collection.\n"
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr ""
 
@@ -3656,18 +3667,18 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "GNUnet Konfiguration"
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, fuzzy, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 #, fuzzy
 msgid "# replies received via cadet"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 #, fuzzy
 msgid "# replies received via cadet dropped"
 msgstr "# Bytes empfangen über TCP"
@@ -3850,113 +3861,113 @@ msgstr "# dht Anfragen weitergeleitet"
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 #, fuzzy
 msgid "# Pending requests created"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 #, fuzzy
 msgid "# Pending requests active"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 #, fuzzy
 msgid "# replies received and matched"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 #, fuzzy
 msgid "# irrelevant replies discarded"
 msgstr "# verworfener Nachrichten"
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 #, fuzzy
 msgid "# storage requests dropped due to high load"
 msgstr "# Knotenankündigungen empfangen"
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 #, fuzzy
 msgid "# Replies received from DHT"
 msgstr "# Bytes empfangen über HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 #, fuzzy
 msgid "# Replies received from CADET"
 msgstr "# Bytes empfangen über HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 #, fuzzy
 msgid "# GAP PUT messages received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
@@ -3996,7 +4007,7 @@ msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n"
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -4028,39 +4039,39 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, fuzzy, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n"
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, fuzzy, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr "Unbekannte Anfrageart %d empfangen bei %s:%d\n"
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 #, fuzzy
 msgid "No DNS server specified!\n"
 msgstr "Keine Schlüsselwörter angegeben!\n"
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -4076,39 +4087,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "»%s« ist keine gültige IP-Adresse.\n"
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-#, fuzzy
-msgid "Specify the type of the record to lookup"
-msgstr "Die Priorität des Inhalts angeben"
-
-#: src/gns/gnunet-gns.c:272
-#, fuzzy
-msgid "Specify a timeout for the lookup"
-msgstr "Die Priorität des Inhalts angeben"
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-#, fuzzy
-msgid "GNUnet GNS resolver tool"
-msgstr "GNUnet Netzwerk Topologie tracen."
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -4128,122 +4106,145 @@ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr "»%s« schlug fehl bei %s:%d mit dem Fehler: »%s«.\n"
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, fuzzy, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, fuzzy, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, fuzzy, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, fuzzy, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, fuzzy, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, fuzzy, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, fuzzy, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "SQLite Datenbank konnte nicht initialisiert werden: %s.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, fuzzy, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 #, fuzzy
 msgid "Failed to pass client to MHD\n"
 msgstr "Fehler beim Starten der Collection.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, c-format
 msgid "Unsupported socks version %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, fuzzy, c-format
 msgid "Unsupported socks command %d\n"
 msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, fuzzy, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+#, fuzzy
+msgid "Specify the type of the record to lookup"
+msgstr "Die Priorität des Inhalts angeben"
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+#, fuzzy
+msgid "GNUnet GNS resolver tool"
+msgstr "GNUnet Netzwerk Topologie tracen."
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4255,8 +4256,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 #, fuzzy
 msgid "Could not connect to DHT!\n"
 msgstr "Verbindung zu gnunetd konnte nicht hergestellt werden.\n"
@@ -4350,82 +4351,72 @@ msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/gns/plugin_rest_gns.c:442
-#, fuzzy
-msgid "Gns REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, fuzzy, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, fuzzy, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, fuzzy, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, fuzzy, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, fuzzy, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, fuzzy, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4467,261 +4458,261 @@ msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 #, fuzzy
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n"
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr ""
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, fuzzy, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr "Kommando `%s' wurde nicht gefunden!\n"
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, fuzzy, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 #, fuzzy
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr "# Hellos per HTTP heruntergeladen"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, fuzzy, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr "Ungültige `%s' Nachricht von Knoten `%s' empfangen.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 #, fuzzy
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr "# Hellos per HTTP heruntergeladen"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, fuzzy, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, fuzzy, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 #, fuzzy
 msgid "# active connections"
 msgstr "GNUnet Konfiguration"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, fuzzy, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, fuzzy, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr "Fehler beim Löschen des Pseudonyms `%s' (existiert nicht?).\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, fuzzy, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr ""
 "`%s' konnte nicht aufgelöst werden, um unsere IP-Adresse zu ermitteln: %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, fuzzy, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr ""
 "Datei `%s' konnte nicht zu `%s' umbenannt werden: Datei existiert bereits\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, fuzzy, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 #, fuzzy
 msgid "bytes in hostlist"
 msgstr "# bytes in der Datenbank"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, fuzzy, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, fuzzy, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr ""
 
@@ -4733,181 +4724,171 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 #, fuzzy
 msgid "hostlist requests processed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 #, fuzzy
 msgid "# hostlist advertisements send"
 msgstr "# Bekanntmachungen von anderen übertragen"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 #, fuzzy
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr "Auf die Namespace Informationen konnte nicht zugegriffen werden.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, fuzzy, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr "Ungültige Parameter. Abbruch.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, fuzzy, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "»%s« ist keine gültige IP-Adresse.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "»%s« ist keine gültige IP-Adresse.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, fuzzy, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, fuzzy, c-format
 msgid "Failed to create ego: %s\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, fuzzy, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-#, fuzzy
-msgid "reduce output"
-msgstr "Ausführliche Ausgabe"
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-msgid "display private keys as well"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, fuzzy, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, fuzzy, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, fuzzy, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, fuzzy, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/identity/plugin_rest_identity.c:1311
-msgid "Identity REST API initialized\n"
-msgstr ""
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Datei wurde als `%s' gespeichert.\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, fuzzy, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr "»%s« schlug bei %s:%d mit dem Fehler %s fehl\n"
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr "Versuchen, Datei »%s« für MySQL-Konfiguration zu verwenden.\n"
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, fuzzy, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
@@ -4917,7 +4898,7 @@ msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
 msgid "No records found for `%s'"
 msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -4937,16 +4918,16 @@ msgstr "Ungültiger Parameter: `%s'\n"
 msgid "You must specify a name\n"
 msgstr "Sie müssen einen Empfänger angeben!\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
 #: src/namecache/gnunet-namecache.c:238
 #, fuzzy
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr "Die Priorität des Inhalts angeben"
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 #, fuzzy
 msgid "GNUnet zone manipulation tool"
 msgstr "GNUnet Konfiguration"
@@ -4962,8 +4943,8 @@ msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
 #: src/namecache/plugin_namecache_flat.c:121
 #: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
 #: src/peerstore/plugin_peerstore_flat.c:379
 #: src/peerstore/plugin_peerstore_flat.c:538
 #, fuzzy, c-format
@@ -4971,13 +4952,14 @@ msgid "Unable to initialize file: %s.\n"
 msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
 
 #: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
+#: src/namestore/plugin_namestore_heap.c:159
 #: src/peerstore/plugin_peerstore_flat.c:394
 #, fuzzy, c-format
 msgid "Unable to get filesize: %s.\n"
 msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
 
 #: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
 #: src/peerstore/plugin_peerstore_flat.c:406
 #, fuzzy, c-format
 msgid "Unable to read file: %s.\n"
@@ -4996,323 +4978,296 @@ msgstr "Sqlite-Datenbank läuft\n"
 msgid "Failed to setup database at `%s'\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, fuzzy, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, fuzzy, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, fuzzy, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, fuzzy, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
+#, fuzzy
+msgid "Failed to start HTTP server\n"
+msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
+#, fuzzy
+msgid "Failed to connect to identity\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr ""
+
+#: src/namestore/gnunet-namestore.c:341
 #, c-format
 msgid "Adding record failed: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Dateiformat fehlerhaft (kein GNUnet Verzeichnis?)\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, fuzzy, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr "Unbekannte Operation `%s'\n"
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, fuzzy, c-format
 msgid "Unsupported type `%s'\n"
 msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, fuzzy, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr "%s: Symbolwert `%s' ist ungültig für %s\n"
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, fuzzy, c-format
 msgid "Invalid time format `%s'\n"
 msgstr "Ungültiger Parameter: `%s'\n"
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Ungültiger Parameter: `%s'\n"
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, fuzzy, c-format
 msgid "Invalid nick `%s'\n"
 msgstr "Ungültiger Parameter: `%s'\n"
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, c-format
 msgid "No default ego configured in identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, fuzzy, c-format
 msgid "Cannot connect to identity service\n"
 msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, fuzzy, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Unbekannter Befehl »%s«\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "Ungültiges Format für IP: »%s«\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 msgid "set the desired nick name for the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 msgid "monitor changes in the namestore"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 msgid "determine our name for the given PKEY"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 msgid "name of the ego controlling the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, fuzzy, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, fuzzy, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, fuzzy, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, fuzzy, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-#, fuzzy
-msgid "Failed to start HTTP server\n"
-msgstr "Fehler beim Senden einer `%s' Anfrage an den SMTP Server.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-#, fuzzy
-msgid "Failed to connect to identity\n"
-msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
+#: src/namestore/plugin_namestore_heap.c:778
 #, fuzzy
-msgid "Flat file database running\n"
+msgid "heap file database running\n"
 msgstr "Sqlite-Datenbank läuft\n"
 
-#: src/namestore/plugin_rest_namestore.c:919
-#, fuzzy
-msgid "Namestore REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
-
 #: src/nat-auto/gnunet-nat-auto.c:193
 #, fuzzy
 msgid "Suggested configuration changes:\n"
@@ -5355,7 +5310,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr ""
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 #, fuzzy
 msgid "Failed to connect to `gnunet-nat-server'\n"
@@ -5394,39 +5349,39 @@ msgstr ""
 msgid "Detected external IP `%s'\n"
 msgstr "Ungültiger RPC `%s' empfangen.\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 #, fuzzy
 msgid "upnpc not found\n"
 msgstr "Kommando `%s' wurde nicht gefunden!\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5547,43 +5502,43 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 #, fuzzy
 msgid "Connection reversal request failed\n"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, fuzzy, c-format
 msgid "Failed to start %s\n"
 msgstr "Fehler beim Starten der Collection.\n"
@@ -5598,10 +5553,6 @@ msgstr "Kommando `%s' wurde nicht gefunden!\n"
 msgid "`upnpc' command not found\n"
 msgstr "Kommando `%s' wurde nicht gefunden!\n"
 
-#: src/nse/gnunet-nse.c:123
-msgid "Show network size estimates from NSE service."
-msgstr ""
-
 #: src/nse/gnunet-nse-profiler.c:849
 msgid "limit to the number of connections to NSE services, 0 for none"
 msgstr ""
@@ -5626,68 +5577,15 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr ""
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
-msgid "Value is too large.\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, fuzzy, c-format
-msgid "Removing expired address of transport `%s'\n"
-msgstr "Verfügbare(r) Transport(e): %s\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:313
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
-msgstr "Datei wurde als `%s' gespeichert.\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr "Datei wurde als `%s' gespeichert.\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:492
-#, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
-msgstr ""
-"Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. "
-"Die Datei wurde entfernt.\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:658
-#, fuzzy, c-format
-msgid "Scanning directory `%s'\n"
-msgstr "==> Verzeichnis `%s':\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:666
-#, fuzzy, c-format
-msgid "Still no peers found in `%s'!\n"
-msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
-#, fuzzy, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr "==> Verzeichnis `%s':\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
+#: src/nse/gnunet-nse.c:122
+msgid "Show network size estimates from NSE service."
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
+msgid "Value is too large.\n"
 msgstr ""
 
-#: src/peerinfo/peerinfo_api.c:220
-#, fuzzy
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n"
-
 #: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, fuzzy, c-format
 msgid "%sPeer `%s'\n"
@@ -5699,7 +5597,7 @@ msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, fuzzy, c-format
 msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
@@ -5748,65 +5646,118 @@ msgstr ""
 msgid "dump hello to file"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:873
-msgid "also output HELLO uri(s)"
+#: src/peerinfo-tool/gnunet-peerinfo.c:873
+msgid "also output HELLO uri(s)"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:879
+msgid "add given HELLO uri to the database"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:897
+#, fuzzy
+msgid "Print information about peers."
+msgstr "Informationen über andere GNUnet Knoten ausgeben."
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
+#: src/transport/gnunet-service-transport_plugins.c:168
+#, fuzzy, c-format
+msgid "Starting transport plugins `%s'\n"
+msgstr "Teste Transport(e) %s\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
+#: src/transport/gnunet-service-transport_plugins.c:173
+#, fuzzy, c-format
+msgid "Loading `%s' transport plugin\n"
+msgstr "Teste Transport(e) %s\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
+#: src/transport/gnunet-service-transport_plugins.c:208
+#, fuzzy, c-format
+msgid "Failed to load transport plugin for `%s'\n"
+msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, fuzzy, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr "Verfügbare(r) Transport(e): %s\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr "Datei wurde als `%s' gespeichert.\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr "Datei wurde als `%s' gespeichert.\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:879
-msgid "add given HELLO uri to the database"
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
 msgstr ""
+"Die Datei »%s« im Verzeichnis »%s« entspricht nicht der Namenskonvention. "
+"Die Datei wurde entfernt.\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:897
-#, fuzzy
-msgid "Print information about peers."
-msgstr "Informationen über andere GNUnet Knoten ausgeben."
-
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
-#: src/transport/gnunet-service-transport_plugins.c:168
+#: src/peerinfo/gnunet-service-peerinfo.c:659
 #, fuzzy, c-format
-msgid "Starting transport plugins `%s'\n"
-msgstr "Teste Transport(e) %s\n"
+msgid "Scanning directory `%s'\n"
+msgstr "==> Verzeichnis `%s':\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
-#: src/transport/gnunet-service-transport_plugins.c:173
+#: src/peerinfo/gnunet-service-peerinfo.c:667
 #, fuzzy, c-format
-msgid "Loading `%s' transport plugin\n"
-msgstr "Teste Transport(e) %s\n"
+msgid "Still no peers found in `%s'!\n"
+msgstr "Dienst `%s' konnte nicht ordentlich entladen werden!\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
-#: src/transport/gnunet-service-transport_plugins.c:208
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
 #, fuzzy, c-format
-msgid "Failed to load transport plugin for `%s'\n"
-msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
+msgid "Cleaning up directory `%s'\n"
+msgstr "==> Verzeichnis `%s':\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
+
+#: src/peerinfo/peerinfo_api.c:220
 #, fuzzy
-msgid "Peerinfo REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
+msgid "Failed to receive response from `PEERINFO' service."
+msgstr "Fehler beim Empfangen der Antwort von gnunetd auf die `%s' Nachricht\n"
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 #, fuzzy
 msgid "Received a malformed response from service."
 msgstr "Beschädigte Antwort auf `%s' von Knoten `%s' empfangen.\n"
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5814,6 +5765,8 @@ msgid ""
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5830,6 +5783,114 @@ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Fehler beim Speichern der Konfiguration!"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "Ungültiges Argument »%s«\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, fuzzy, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+#, fuzzy
+msgid "SQLite database running\n"
+msgstr "SQL Datenbank beschädigt, Ergebnis wird ignoriert.\n"
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr ""
@@ -5881,96 +5942,74 @@ msgstr "# Bytes empfangen über TCP"
 msgid "# DNS replies dropped (too late?)"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr ""
 "Es konnte keine Verbindung mit dem %s-Dienst hergestellt werden. Abbruch\n"
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, fuzzy, c-format
 msgid "Ego is required\n"
 msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, fuzzy, c-format
 msgid "Requesting party key is required!\n"
 msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-msgid "The EGO to use"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-#, fuzzy
-msgid "OpenID Connect REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-#, fuzzy
-msgid "Identity Provider REST API initialized\n"
-msgstr " Verbindung fehlgeschlagen\n"
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
@@ -6059,21 +6098,50 @@ msgstr ""
 msgid "Search string `%s' is too long!\n"
 msgstr "Dienst »%s« läuft nicht\n"
 
-#: src/rest/gnunet-rest-server.c:1039
+#: src/rest-plugins/plugin_rest_copying.c:209
 #, fuzzy
-msgid "GNUnet REST server"
-msgstr "GNUnet Netzwerk Topologie tracen."
+msgid "COPYING REST API initialized\n"
+msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/rest/plugin_rest_config.c:265
+#: src/rest-plugins/plugin_rest_credential.c:1128
 #, fuzzy
-msgid "CONFIG REST API initialized\n"
+msgid "GNS REST API initialized\n"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/rest/plugin_rest_copying.c:209
+#: src/rest-plugins/plugin_rest_gns.c:452
 #, fuzzy
-msgid "COPYING REST API initialized\n"
+msgid "Gns REST API initialized\n"
+msgstr " Verbindung fehlgeschlagen\n"
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+msgid "Identity REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+#, fuzzy
+msgid "Namestore REST API initialized\n"
+msgstr " Verbindung fehlgeschlagen\n"
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+#, fuzzy
+msgid "Identity Provider REST API initialized\n"
+msgstr " Verbindung fehlgeschlagen\n"
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+#, fuzzy
+msgid "Peerinfo REST API initialized\n"
 msgstr " Verbindung fehlgeschlagen\n"
 
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:944
+#, fuzzy
+msgid "GNUnet REST server"
+msgstr "GNUnet Netzwerk Topologie tracen."
+
 #: src/revocation/gnunet-revocation.c:129
 #, c-format
 msgid "Key `%s' is valid\n"
@@ -6120,58 +6188,58 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr "Kommando `%s' wurde nicht gefunden!\n"
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, c-format
 msgid "Public key `%s' malformed\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 msgid "No filename to store revocation certificate given.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, fuzzy, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 #, fuzzy
 msgid "No action specified. Nothing to do.\n"
 msgstr "Keine Kommandos angegeben.\n"
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -6203,40 +6271,40 @@ msgstr "# Klartext PONG Nachrichten empfangen"
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 #, fuzzy
 msgid "Could not open revocation database file!"
 msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 msgid "timeout for the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "Anzahl an Durchläufen"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 msgid "Measure quality and performance of the RPS service."
 msgstr ""
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 #, fuzzy
 msgid "You must specify at least one message ID to check!\n"
@@ -6292,10 +6360,10 @@ msgstr ""
 msgid "Calculate the Vectorproduct with a GNUnet peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
 #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
 #, fuzzy
 msgid "Connect to CADET failed\n"
 msgstr " Verbindung fehlgeschlagen\n"
@@ -6320,30 +6388,30 @@ msgstr ""
 msgid "also profile decryption"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
+#: src/set/gnunet-service-set.c:2005
 #, fuzzy
 msgid "Could not connect to CADET service\n"
 msgstr "Verbindung zum %s-Dienst ist fehlgeschlagen!\n"
 
-#: src/set/gnunet-set-ibf-profiler.c:267
+#: src/set/gnunet-set-ibf-profiler.c:252
 #, fuzzy
 msgid "number of element in set A-B"
 msgstr "Anzahl an Durchläufen"
 
-#: src/set/gnunet-set-ibf-profiler.c:273
+#: src/set/gnunet-set-ibf-profiler.c:258
 #, fuzzy
 msgid "number of element in set B-A"
 msgstr "Anzahl an Durchläufen"
 
-#: src/set/gnunet-set-ibf-profiler.c:280
+#: src/set/gnunet-set-ibf-profiler.c:264
 msgid "number of common elements in A and B"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
+#: src/set/gnunet-set-ibf-profiler.c:270
 msgid "hash num"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:292
+#: src/set/gnunet-set-ibf-profiler.c:276
 msgid "ibf size"
 msgstr ""
 
@@ -6367,6 +6435,131 @@ msgstr ""
 msgid "element size"
 msgstr ""
 
+#: src/social/gnunet-social.c:1166
+#, fuzzy
+msgid "--place missing or invalid.\n"
+msgstr "Ungültige Antwort auf `%s'.\n"
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
+msgstr ""
+
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
+msgstr ""
+
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
+msgstr ""
+
+#: src/social/gnunet-social.c:1304
+#, fuzzy
+msgid "name or public key of ego"
+msgstr "Ungültiger Parameter: `%s'\n"
+
+#: src/social/gnunet-social.c:1309
+msgid "wait for incoming messages"
+msgstr ""
+
+#: src/social/gnunet-social.c:1315
+msgid "GNS name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
+msgstr ""
+
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
+msgstr ""
+
+#: src/social/gnunet-social.c:1333
+msgid "method name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "Anzahl an Durchläufen"
+
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
+msgstr ""
+
 #: src/sq/sq.c:54
 #, c-format
 msgid "Failure to bind %u-th SQL parameter\n"
@@ -6392,93 +6585,93 @@ msgstr "Dateien aus dem GNUnet herunterladen."
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr "Dateien aus dem GNUnet herunterladen."
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 #, fuzzy
 msgid "Failed to obtain statistics.\n"
 msgstr "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, fuzzy, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, fuzzy, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr "`%s' Dienst konnte nicht initialisiert werden.\n"
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "Ungültiges Argument »%s«\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr "Statistiken der GNUnet-Aktivitäten ausgeben."
 
@@ -6530,7 +6723,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n"
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6569,7 +6762,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6639,30 +6832,30 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:118
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr ""
-"Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
-"verbleiben)...\n"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:241
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Ungültige Antwort auf `%s'.\n"
-
-#: src/testbed/gnunet-testbed-profiler.c:287
+#: src/testbed/gnunet-testbed-profiler.c:289
 msgid "tolerate COUNT number of continious timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:291
+#: src/testbed/gnunet-testbed-profiler.c:294
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/testbed_api.c:400
+#: src/testbed/gnunet_testbed_mpi_spawn.c:118
+#, fuzzy
+msgid "Waiting for child to exit.\n"
+msgstr ""
+"Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
+"verbleiben)...\n"
+
+#: src/testbed/gnunet_testbed_mpi_spawn.c:241
+#, fuzzy, c-format
+msgid "Spawning process `%s'\n"
+msgstr "Ungültige Antwort auf `%s'.\n"
+
+#: src/testbed/testbed_api.c:410
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr "`%s' an `%s' schlug fehl bei %s:%d mit dem Fehler: %s\n"
@@ -6682,7 +6875,7 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6838,47 +7031,47 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Datei wurde als `%s' gespeichert.\n"
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "»%s« konnte nicht gestartet werden: %s\n"
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
@@ -6893,142 +7086,142 @@ msgstr "Syntaxfehler in Topologieangabe, überspringe Bytes `%s'.\n"
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 #, fuzzy
 msgid "# connect requests issued to ATS"
 msgstr "# geschlossener Verbindungen (HANGUP gesendet)"
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 #, fuzzy
 msgid "# HELLO messages gossipped"
 msgstr "# ausgehender Nachrichten verworfen"
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 msgid "# friends connected"
 msgstr "# verbundener Freunde"
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, fuzzy, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr " gconfig\tGTK Konfiguration\n"
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 msgid "# friends in configuration"
 msgstr "# Freunde in Konfiguration"
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 msgid "# HELLO messages received"
 msgstr "# HELLO-Meldungen empfangen"
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 #, fuzzy
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr "Maximale Anzahl der Verbindungen ist %u\n"
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr "Pfad zu »%s« kann nicht erstellt werden\n"
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 msgid "# bytes payload discarded due to not connected peer"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 msgid "# bytes total received"
 msgstr "# Bytes insgesamt empfangen"
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 msgid "# bytes payload received"
 msgstr "# Bytes Nutzdaten empfangen"
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, fuzzy, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -7038,202 +7231,202 @@ msgstr ""
 msgid "# session creation failed"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 msgid "# DISCONNECT messages sent"
 msgstr "# DISCONNECT-Meldungen empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 #, fuzzy
 msgid "# bytes in message queue for other peers"
 msgstr "# Bytes ausgehender Nachrichten verworfen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 #, fuzzy
 msgid "# messages transmitted to other peers"
 msgstr "# Bytes des Typs %d übertragen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 msgid "# transmission failures for messages to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 msgid "# messages discarded due to lack of neighbour record"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 #, fuzzy
 msgid "# bandwidth quota violations by other peers"
 msgstr "Verfolgt die Bandbreitennutzung von gnunetd"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "# DISCONNECT-Meldungen empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "Fehler beim Senden der `%s' Nachricht an gnunetd\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 #, fuzzy
 msgid "# SYN_ACK messages sent"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 #, fuzzy
 msgid "# SYN messages received"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 #, fuzzy
 msgid "# SYN_ACK messages received"
 msgstr "# SESSION_ACK-Meldungen empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 #, fuzzy
 msgid "# ACK messages received"
 msgstr "# CONNECT_ACK-Meldungen empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 #, fuzzy
 msgid "# unexpected ACK messages"
 msgstr "# verschlüsselter PONG Nachrichten gesendet"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 #, fuzzy
 msgid "# quota messages ignored (malformed)"
 msgstr "# gap Anfragen verworfen: Kollision in RT"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 #, fuzzy
 msgid "# QUOTA messages received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 #, fuzzy
 msgid "# DISCONNECT messages received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 msgid "# disconnected from peer upon explicit request"
 msgstr ""
 
@@ -7268,7 +7461,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 #, fuzzy
 msgid "# validations running"
 msgstr "Sqlite-Datenbank läuft\n"
@@ -7295,268 +7488,270 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 #, fuzzy
 msgid "# PING message for different peer received"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr "PONG-Signatur für Knoten »%s« konnte nicht erstellt werden\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 msgid "# HELLOs given to peerinfo"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+#, fuzzy
+msgid "receive data from peer"
+msgstr "# Bytes des Typs %d empfangen"
+
+#: src/transport/gnunet-transport-profiler.c:626
+msgid "iterations"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:631
+#, fuzzy
+msgid "number of messages to send"
+msgstr "Anzahl an Durchläufen"
+
+#: src/transport/gnunet-transport-profiler.c:636
+msgid "message size to use"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+msgid "Direct access to transport service."
+msgstr "Direkter Zugriff auf den Transportdienst"
+
+#: src/transport/gnunet-transport.c:413
 #, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, fuzzy, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, fuzzy, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr "Adresse des Knotens `%s' konnte nicht ermittelt werden.\n"
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, c-format
 msgid "Transmitting %u bytes\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr "%24s: %-17s %4s   (%u Verbindungen insgesamt)\n"
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 msgid "Connected to"
 msgstr "Verbunden mit"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 msgid "Disconnected from"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, fuzzy, c-format
 msgid "Received %u bytes\n"
 msgstr "Dateien aus dem GNUnet herunterladen."
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr "Knoten »%s«: %s %s\n"
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 msgid "Failed to connect to transport service\n"
 msgstr "Verbindung zum Transportdienst konnte nicht hergestellt werden\n"
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 #, fuzzy
 msgid "print information for all peers (instead of only connected peers)"
 msgstr "Informationen über verbundene Knoten ausgeben."
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 msgid "disconnect from a peer"
 msgstr "Verbindung zu einem Knoten trennen"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 msgid "provide information about all current connections (once)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 msgid "do not resolve hostnames"
 msgstr "Keine Rechnernamen auflösen"
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-msgid "Direct access to transport service."
-msgstr "Direkter Zugriff auf den Transportdienst"
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-#, fuzzy
-msgid "receive data from peer"
-msgstr "# Bytes des Typs %d empfangen"
-
-#: src/transport/gnunet-transport-profiler.c:586
-msgid "iterations"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "Anzahl an Durchläufen"
-
-#: src/transport/gnunet-transport-profiler.c:596
-msgid "message size to use"
-msgstr ""
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, fuzzy, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr "Collection `%s' begonnen.\n"
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, fuzzy, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr "GNUnet wurde erfolgreich heruntergefahren.\n"
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, fuzzy, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr "Maximale Anzahl der Verbindungen ist %u\n"
@@ -7605,6 +7800,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7707,117 +7903,128 @@ msgstr "# Bytes gesendet über SMTP"
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr "# Bytes verworfen von SMTP (ausgehend)"
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 msgid "# TCP sessions active"
 msgstr "# aktive TCP-Sitzungen"
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 msgid "# bytes currently in TCP buffers"
 msgstr "# Bytes derzeit in TCP-Puffern"
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr "# Bytes verworfen von TCP (unterbrochen)"
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 msgid "# bytes discarded by TCP (timeout)"
 msgstr "# Bytes verworfen von TCP (Zeitüberschreitung)"
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 msgid "# bytes transmitted via TCP"
 msgstr "# Bytes über TCP übertragen"
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 #, fuzzy
 msgid "# TCP WELCOME messages received"
 msgstr "# verschlüsselter PONG Nachrichten empfangen"
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 #, fuzzy
 msgid "# TCP server connect events"
 msgstr "# verbundener Knoten"
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 msgid "Failed to start service.\n"
 msgstr "Fehler beim Starten des Dienstes.\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr "TCP-Transportdienst wartet auf Port %llu\n"
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-#, fuzzy
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr "# Bytes empfangen über TCP"
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, fuzzy, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7838,6 +8045,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "UDP-Sockets können nicht geöffnet werden\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7847,15 +8055,19 @@ msgstr "UDP-Sockets können nicht geöffnet werden\n"
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "»%s« ist keine gültige IP-Adresse.\n"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "»%s« ist keine gültige IP-Adresse.\n"
@@ -7865,6 +8077,21 @@ msgstr "»%s« ist keine gültige IP-Adresse.\n"
 msgid "Failed to create UDP network sockets\n"
 msgstr "UDP-Sockets können nicht geöffnet werden\n"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+#, fuzzy
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr "# Bytes empfangen über TCP"
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, fuzzy, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr "Der Transportdienst auf Port %d konnte nicht gestartet werden.\n"
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -7941,6 +8168,55 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr "# Sitzungsschlüssel akzeptiert"
 
+#: src/transport/plugin_transport_xt.c:4010
+#, fuzzy, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+
+#: src/transport/plugin_transport_xt.c:4014
+#, fuzzy
+msgid "XT transport not listening on any port (client only)\n"
+msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+
+#: src/transport/plugin_transport_xt.c:4018
+#, fuzzy, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# aktive TCP-Sitzungen"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "UDP-Sockets können nicht geöffnet werden\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "UDP-Sockets können nicht geöffnet werden\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "UDP-Sockets können nicht geöffnet werden\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, c-format
 msgid "Access denied to `%s'\n"
@@ -7951,17 +8227,17 @@ msgstr "Zugriff verweigert auf »%s«\n"
 msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "`%s' fehlgeschlagen für Laufwerk %s: %u\n"
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "`%s' schlug fehl für Port %d: %s. Läuft gnunetd bereits?\n"
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "%s schlug fehl, Nachrichten Typ %d ist bereits in Verwendung.\n"
@@ -7973,7 +8249,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -7983,27 +8259,27 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8018,45 +8294,44 @@ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Dienst »%s« läuft auf %s\n"
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, fuzzy, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n"
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Benutzer/Gruppe kann nicht zu »%s« geändert werden: %s\n"
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "GNUnet Konfiguration"
@@ -8066,7 +8341,7 @@ msgstr "GNUnet Konfiguration"
 msgid "Could not access configuration file `%s'\n"
 msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n"
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -8099,69 +8374,69 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "WARNUNG"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "FEHLER"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr "Unbekannte Adresse"
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr "Ungültige Adresse"
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 "Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis "
 "angeben, in dem FS Daten gespeichert werden.\n"
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8210,26 +8485,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, fuzzy, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, fuzzy, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, fuzzy, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, fuzzy, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
@@ -8264,7 +8539,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr "Anwendung `%s' konnte nicht initialisiert werden.\n"
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr ""
@@ -8280,7 +8555,7 @@ msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: %s\n"
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, fuzzy, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
@@ -8290,7 +8565,7 @@ msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr ""
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr ""
@@ -8315,7 +8590,7 @@ msgstr "HTTP Anfrage konnte nicht an Host `%s' gesendet werden: %s\n"
 msgid "Sent DNS request to %s\n"
 msgstr ""
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: Option »%s« ist mehrdeutig\n"
@@ -8325,71 +8600,66 @@ msgstr "%s: Option »%s« ist mehrdeutig\n"
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr "%s: Option »--%s« erlaubt kein Argument\n"
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr "%s: Option »%c%s« erlaubt kein Argument\n"
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: Option »%s« benötigt ein Argument\n"
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: unbekannte Option »--%s«\n"
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: unbekannte Option »%c%s«\n"
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: unerlaubte Option -- %c\n"
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ungültige Option -- %c\n"
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: Option benötigt ein Argument -- %c\n"
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: Option »-W %s« ist mehrdeutig\n"
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr "%s: Option »-W %s« erlaubt kein Argument\n"
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, fuzzy, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr "Verwenden Sie --help, um eine Liste der Optionen zu erhalten.\n"
 
-#: src/util/getopt.c:987
-#, fuzzy, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n"
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, fuzzy, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr "Unbekannte Operation `%s'\n"
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr ""
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8397,109 +8667,105 @@ msgstr ""
 "Argumente, die für lange Optionen zwingend sind, sind auch für kurze "
 "Optionen zwingend.\n"
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr ""
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr ""
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr ""
 "Einen Wert aus der Konfigurationsdatei auf der Standardausgabe ausgeben"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n"
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n"
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, fuzzy, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr "Sie müssen eine relative Zeit zu der Option »%s« übergeben.\n"
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, fuzzy, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr "Sie müssen für die Option »%s« zusätzlich eine Zahl angeben.\n"
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, fuzzy, c-format
 msgid "%s or %s argument is required\n"
 msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 #, fuzzy
 msgid "print available configuration sections"
 msgstr "GNUnet Konfiguration"
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 msgid "Manipulate GNUnet configuration files"
 msgstr "GNUnet-Konfigurationsdateien bearbeiten"
 
@@ -8508,17 +8774,17 @@ msgstr "GNUnet-Konfigurationsdateien bearbeiten"
 msgid "Failed to open `%s': %s\n"
 msgstr "»%s« kann nicht geöffnet werden: %s\n"
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, c-format
 msgid ""
 "\n"
@@ -8527,7 +8793,7 @@ msgstr ""
 "\n"
 "Schreiben in »%s« nicht möglich: %s\n"
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, c-format
 msgid ""
 "\n"
@@ -8536,91 +8802,64 @@ msgstr ""
 "\n"
 "Abgeschlossen!\n"
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr "Kommando `%s' wurde nicht gefunden!\n"
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, fuzzy, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 msgid "Manipulate GNUnet private ECC key files"
 msgstr ""
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr "URL beginnt nicht mit »%s«\n"
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8629,41 +8868,56 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, fuzzy, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr "Das Parsen des Hello von `%s' schlug fehl.\n"
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 msgid "Manipulate GNUnet proof of work files"
 msgstr ""
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr "URL beginnt nicht mit »%s«\n"
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8682,12 +8936,12 @@ msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
 msgid "Error writing to `%s': %s\n"
 msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8700,22 +8954,22 @@ msgid ""
 "variable.\n"
 msgstr ""
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, fuzzy, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr "Knoten `%s' konnte nicht in der Routing Tabelle gefunden werden!\n"
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr ""
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8741,17 +8995,17 @@ msgstr "`%s' fehlgeschlagen für die Bibliothek `%s'. Ort: %s:%d. Fehler: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, fuzzy, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "GNUnet Konfiguration"
@@ -8797,16 +9051,16 @@ msgstr "Standarddienst »%s« ist nicht korrekt eingerichtet!\n"
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8814,12 +9068,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr "Aufruf von `%s' gibt %d zurück.\n"
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8828,233 +9082,233 @@ msgstr ""
 msgid "b"
 msgstr "b"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr "µs"
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr ""
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr "0 ms"
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "ms"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "s"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "m"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "h"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 msgid "day"
 msgstr "Tag"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 msgid "days"
 msgstr "Tage"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr ""
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr "IPv6-Adresse beginnt nicht mit »[«\n"
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr "IPv6-Adresse enthält kein »:« zur Abtrennung der Portnummer\n"
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr "IPv6-Adresse enthält kein »]« vor »:« zur Abtrennung der Portnummer\n"
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr "IPv6-Adresse enthält keine gültige Portnummer nach dem letzten »:«\n"
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, fuzzy, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr "Ungültige Antwort auf `%s' von `%s'\n"
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr "Port außerhalb des Bereichs\n"
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr "Ungültiges Format für IP: »%s«\n"
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr "Ungültige Netzwerk-Notation ('/%d ist nicht gültig in IPv4 CIDR)."
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, fuzzy, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "Ungültiges Format für IP: `%s'\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr "Ungültige Netzwerk-Notation (endet nicht mit »;«: »%s«)\n"
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, fuzzy, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr "Falsches Format `%s' für Netzmaske: %s\n"
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, fuzzy, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr "Falsches Format `%s' für Netzwerk: %s\n"
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 msgid "# Active channels"
 msgstr "# aktive Kanäle"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 #, fuzzy
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr "# Bytes verworfen von TCP (ausgehend)"
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 #, fuzzy
 msgid "# ICMP packets received from cadet"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 #, fuzzy
 msgid "# UDP packets received from cadet"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 #, fuzzy
 msgid "# TCP packets received from cadet"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 #, fuzzy
 msgid "# Packets dropped (channel not yet online)"
 msgstr "# Bytes verworfen von TCP (ausgehend)"
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 #, fuzzy
 msgid "# Packets received from TUN interface"
 msgstr ""
 "Die Formatüberprüfung des Pakets, das von %s:%d (UDP6) empfangen wurde, "
 "schlug fehl."
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 #, fuzzy
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr "Die öffentliche IPv6-Adresse konnte nicht ermittelt werden!\n"
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 msgid "# Active destinations"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 msgid "Must specify valid IPv6 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 msgid "Must specify valid IPv4 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -9123,64 +9377,64 @@ msgstr "Dienst wird über UDP angeboten"
 msgid "Setup tunnels via VPN."
 msgstr "Tunnel über VPN einrichten."
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 #, fuzzy
 msgid "Failed to connect to the namestore!\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "`%s' schlug fehl bei %s:%d mit dem Fehler: `%s'.\n"
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, fuzzy, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr "Protokollverletzung auf Socket. Kommando erwartet.\n"
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, fuzzy, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n"
 
 #, fuzzy
-#~ msgid "XT transport listening on port %llu\n"
-#~ msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
 
 #, fuzzy
-#~ msgid "XT transport not listening on any port (client only)\n"
-#~ msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "»%s« ist keine gültige IP-Adresse.\n"
 
 #, fuzzy
-#~ msgid "XT transport advertises itself as being on port %llu\n"
-#~ msgstr "TCP-Transportdienst wartet auf Port %llu\n"
+#~ msgid "Specify a timeout for the lookup"
+#~ msgstr "Die Priorität des Inhalts angeben"
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr "# aktive TCP-Sitzungen"
+#~ msgid "Unable to parse CAA record string `%s'\n"
+#~ msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
 #, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "UDP-Sockets können nicht geöffnet werden\n"
+#~ msgid "reduce output"
+#~ msgstr "Ausführliche Ausgabe"
 
 #, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "UDP-Sockets können nicht geöffnet werden\n"
+#~ msgid "OpenID Connect REST API initialized\n"
+#~ msgstr " Verbindung fehlgeschlagen\n"
 
 #, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
-#~ msgstr "UDP-Sockets können nicht geöffnet werden\n"
+#~ msgid "CONFIG REST API initialized\n"
+#~ msgstr " Verbindung fehlgeschlagen\n"
 
 #, fuzzy
-#~ msgid "Print information about DV state"
-#~ msgstr "Informationen über andere GNUnet Knoten ausgeben."
+#~ msgid "Option `%s' can't be used with other options.\n"
+#~ msgstr "Die Option »%s« ergibt keinen Sinn ohne die Option »%s«.\n"
 
 #, fuzzy
 #~ msgid "Invalid tunnel owner `%s'\n"
@@ -9190,99 +9444,6 @@ msgstr "`%s' schlug bei Datei `%s' fehl. Ort: %s:%d. Fehler: %s\n"
 #~ msgid "Provide information about a particular tunnel"
 #~ msgstr "Informationen über andere GNUnet Knoten ausgeben."
 
-#, fuzzy
-#~ msgid "Failed to store membership information!\n"
-#~ msgstr "Fehler beim Speichern der Konfiguration!"
-
-#, fuzzy
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "Ungültiges Argument »%s«\n"
-
-#, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to get fragment!\n"
-#~ msgstr ""
-#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-
-#, fuzzy
-#~ msgid "Failed to get message!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to get message fragment!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr ""
-#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr ""
-#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
-
-#, fuzzy
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to begin synchronizing state!\n"
-#~ msgstr ""
-#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-
-#, fuzzy
-#~ msgid "Failed to end synchronizing state!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "Zustellung der Nachricht `%s' fehlgeschlagen.\n"
-
-#, fuzzy
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr ""
-#~ "Statistiken über den Netzwerkverkehr konnten nicht ermittelt werden.\n"
-
-#, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
-#~ msgstr "SQLite-Datenbank konnte nicht initialisiert werden: %s.\n"
-
-#, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
-#~ msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
-
-#, fuzzy
-#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
-#~ msgstr "`%s' schlug bei %s:%d mit dem Fehler %s fehl\n"
-
-#, fuzzy
-#~ msgid "SQLite database running\n"
-#~ msgstr "SQL Datenbank beschädigt, Ergebnis wird ignoriert.\n"
-
-#, fuzzy
-#~ msgid "--place missing or invalid.\n"
-#~ msgstr "Ungültige Antwort auf `%s'.\n"
-
-#, fuzzy
-#~ msgid "name or public key of ego"
-#~ msgstr "Ungültiger Parameter: `%s'\n"
-
-#, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "Anzahl an Durchläufen"
-
 #, fuzzy
 #~ msgid "Could not resolve `%s' (%s): %s\n"
 #~ msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
index bd677595b64027741ed10986eaeb6f01fc7ae1f8..e1dd584c8f5110ea201ab433f58823078be1aafe 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -8,72 +8,72 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.9.5a\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2013-02-23 17:50+0100\n"
 "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
-"Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr "Se produjo un fallo al eliminar el directorio «servicehome» %s.\n"
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 #, fuzzy
 msgid "Message was sent successfully"
 msgstr "El almacén de nombres añadió el registro satisfactoriamente"
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 #, fuzzy
 msgid "We disconnected from ARM before we could send a request"
 msgstr "# desconexiones del par debido a una petición explícita"
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 #, fuzzy
 msgid "Unknown request status"
 msgstr "Usuario desconocido «%s»\n"
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "# elementos almacenados"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 #, fuzzy
 msgid "is starting"
 msgstr "'%s' comenzando\n"
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "# elementos almacenados"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 #, fuzzy
 msgid "is starting already"
 msgstr "'%s' comenzando\n"
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "'%s' comenzando\n"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 #, fuzzy
 msgid "is started already"
 msgstr "'%s' comenzando\n"
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "'%s' comenzando\n"
@@ -81,32 +81,32 @@ msgstr "'%s' comenzando\n"
 # Miguel: ¿Debería cambiar las siglas de ARM?
 # De momento las he mantenido con una traducción en
 # otro mensaje.
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 #, fuzzy
 msgid "service is not known to ARM"
 msgstr "El servicio «%s» es desconocido para el ARM.\n"
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "El proceso del servicio no devolvió un estado\n"
 
 # Miguel: ¿Es mejor «ya que» que «porque» o «debido al apagado»?
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 #, fuzzy
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr "Petición ignorada porque el ARM se está apagando.\n"
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "Código de respuesta del ARM desconocido.\n"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr "Error fatal al inicializar la API del ARM.\n"
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, fuzzy, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
@@ -121,120 +121,121 @@ msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
 msgid "Failed to stop the ARM service: %s\n"
 msgstr "Fichero almacenado en '%s'.\n"
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, fuzzy, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, fuzzy, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr "Se produjo un fallo al enviar una petición al servicio de transporte\n"
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, fuzzy, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr "Se produjo un fallo al escribir «%s»: %s\n"
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, fuzzy, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr "Error al comunicar con el ARM. ¿Está el ARM ejecutándose?\n"
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 msgid "Running services:\n"
 msgstr "Servicios en ejecución:\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr "Ahora solo monitorizando, pulsa CTRL-C para parar.\n"
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr "%s detenido.\n"
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, fuzzy, c-format
 msgid "Starting %s...\n"
 msgstr "Iniciando descarga «%s».\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr "Deteniendo %s...\n"
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, fuzzy, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr "Solicitando incio del servicio «%s».\n"
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 msgid "stop all GNUnet services"
 msgstr "detiene todos los servicios de GNUnet"
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr "inicia un servicio particular"
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr "detiene un servicio particular"
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 msgid "start all GNUnet default services"
 msgstr "inicia todos los servicios predeterminados de GNUnet"
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 msgid "stop and start all GNUnet default services"
 msgstr "detiene e inicia todos los servicios predeterminados de GNUnet"
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr "borrar el directorio y el fichero de configuración al salir"
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr "monitoriza actividades de ARM"
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr "no imprime mensajes de estado"
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr "sale con estado de error si la operación no termina despues del DELAY"
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 msgid "list currently running services"
 msgstr "lista de servicios actualmente en ejecución"
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr "no permite heredar la salida estándar a «gnunet-service-arm»"
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr "no permite heredar la salida de error estándar a «gnunet-service-arm»"
 
 # Miguel: ARM se mantiene en todo el texto, aquí está la traducción.
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 "Servicios de control y el Gestor de Reinicio Automático (ARM en inglés)"
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -245,10 +246,13 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
@@ -256,32 +260,36 @@ msgstr ""
 "configuración!\n"
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 "La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n"
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr "Usando «%s» en su defecto\n"
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
 "domain socket: %s\n"
 msgstr ""
-"Deshabilitando el soporte de dominio de «sockets» UNIX para el servicio "
-"«%s», no se pudo crear un «socket» UNIX: %s\n"
+"Deshabilitando el soporte de dominio de «sockets» UNIX para el servicio «%"
+"s», no se pudo crear un «socket» UNIX: %s\n"
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -291,7 +299,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Se produjo un fallo al resolver «%s»: %s\n"
@@ -299,7 +308,8 @@ msgstr "Se produjo un fallo al resolver «%s»: %s\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "No se encontró la dirección %s para «%s».\n"
@@ -377,180 +387,25 @@ msgstr "El servicio «%s» finalizó con estado %s/%d, se reiniciará en %llu ms
 msgid "Initiating shutdown as requested by client.\n"
 msgstr "Iniciando apagado bajo petición del cliente.\n"
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-#, fuzzy
-msgid "solver to use"
-msgstr "valor a establecer"
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr "experimento para usar"
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-#, fuzzy
-msgid "print logging"
-msgstr "Iniciando descarga «%s».\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr "guarda protocolo al fichero en disco"
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr "deshabilita normalización"
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, fuzzy, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr "¡No se puede inicializar el resolvedor!\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, fuzzy, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-# Miguel: "Inbound" lo he traducido como entrada en todo el texto.
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, fuzzy, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr "La cuota de entrada configurada para la red «%s» es %llu\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, fuzzy, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/plugin_ats2_common.c:90
-#, fuzzy, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, fuzzy, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, fuzzy, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "Se produjo un fallo al cargar la configuración de %s\n"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, fuzzy, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
-"de banda predeterminado %llu\n"
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, fuzzy, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
 msgstr ""
-"No hay configuración de cuota de entrada para la red '%s', asignando el "
-"ancho de banda predeterminado (%llu)\n"
 
-# Miguel: "Outbound" lo he traducido como salida en todo el texto.
-#: src/ats/plugin_ats_mlp.c:2690
-#, fuzzy, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
-
-# Miguel: "Outbound" lo he traducido como salida en todo el texto.
-#: src/ats/plugin_ats_mlp.c:2699
-#, fuzzy, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
-msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
-
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr "Se produjo un fallo al cargar la configuración de %s\n"
+msgid "Start logging `%s'\n"
+msgstr "Iniciando descarga «%s».\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, fuzzy, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr "Fallo al conectar a gnunetd.\n"
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr ""
-
-#: src/ats-tests/ats-testing-log.c:892
-#, fuzzy, c-format
-msgid "Start logging `%s'\n"
-msgstr "Iniciando descarga «%s».\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -558,6 +413,18 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+#, fuzzy
+msgid "solver to use"
+msgstr "valor a establecer"
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr "experimento para usar"
+
 # Miguel: ¿Como podría traducir "resolutions" y "resolve"?
 # Son difíciles de no calcar, puesto que no conozco como expresar
 # el concepto de obtener una dirección a partir de un nombre
@@ -692,6 +559,151 @@ msgstr "salida prolija (incluye las propiedades de direcciones del ATS)"
 msgid "Print information about ATS state"
 msgstr "Imprime información acerca del estado del ATS"
 
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
+msgid ""
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:3306
+#, fuzzy
+msgid "print logging"
+msgstr "Iniciando descarga «%s».\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
+msgstr "guarda protocolo al fichero en disco"
+
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
+msgstr "deshabilita normalización"
+
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, fuzzy, c-format
+msgid "Failed to initialize solver `%s'!\n"
+msgstr "¡No se puede inicializar el resolvedor!\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:304
+#, fuzzy, c-format
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
+msgstr ""
+"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+# Miguel: "Inbound" lo he traducido como entrada en todo el texto.
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, fuzzy, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
+msgstr "La cuota de entrada configurada para la red «%s» es %llu\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:359
+#, fuzzy, c-format
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
+msgstr ""
+"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/plugin_ats2_common.c:90
+#, fuzzy, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+"No se pudieron cargar las cuotas para la red «%s»:  «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1870
+#, fuzzy, c-format
+msgid "Adding address for peer `%s' multiple times\n"
+msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
+
+#: src/ats/plugin_ats_mlp.c:1914
+#, fuzzy, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
+msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
+
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "Se produjo un fallo al cargar la configuración de %s\n"
+
+#: src/ats/plugin_ats_mlp.c:2671
+#, fuzzy, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
+msgstr ""
+"No hay configurada una cuota de salida para la red «%s», asignando el ancho "
+"de banda predeterminado %llu\n"
+
+#: src/ats/plugin_ats_mlp.c:2680
+#, fuzzy, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
+msgstr ""
+"No hay configuración de cuota de entrada para la red '%s', asignando el "
+"ancho de banda predeterminado (%llu)\n"
+
+# Miguel: "Outbound" lo he traducido como salida en todo el texto.
+#: src/ats/plugin_ats_mlp.c:2690
+#, fuzzy, c-format
+msgid ""
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
+msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
+
+# Miguel: "Outbound" lo he traducido como salida en todo el texto.
+#: src/ats/plugin_ats_mlp.c:2699
+#, fuzzy, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr "Se produjo un fallo al cargar la configuración de %s\n"
+
 #: src/auction/gnunet-auction-create.c:163
 msgid "description of the item to be sold"
 msgstr "descripción del elemento que está por vender"
@@ -730,7 +742,7 @@ msgstr ""
 
 #: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
 #: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
 msgid "help text"
 msgstr "texto de ayuda"
 
@@ -743,40 +755,40 @@ msgstr "URI no válida: «%s»\n"
 msgid "Extra arguments are not applicable in combination with this option.\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/cadet/gnunet-cadet.c:795
 #, fuzzy, c-format
 msgid "Invalid target `%s'\n"
 msgstr "Parámetro no válido «%s»\n"
 
-#: src/cadet/gnunet-cadet.c:829
+#: src/cadet/gnunet-cadet.c:832
 #, fuzzy
 msgid "No action requested\n"
 msgstr "Colección detenida.\n"
 
-#: src/cadet/gnunet-cadet.c:854
+#: src/cadet/gnunet-cadet.c:857
 #, fuzzy
 msgid "Provide information about a particular connection"
 msgstr "proveer información acerca de un túnel en particular"
 
-#: src/cadet/gnunet-cadet.c:858
+#: src/cadet/gnunet-cadet.c:861
 msgid "Activate echo mode"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
+#: src/cadet/gnunet-cadet.c:866
 msgid "Listen for connections using a shared secret among sender and recipient"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
+#: src/cadet/gnunet-cadet.c:871
 #, fuzzy
 msgid "Provide information about a patricular peer"
 msgstr "proveer información acerca de un túnel en particular"
 
-#: src/cadet/gnunet-cadet.c:872
+#: src/cadet/gnunet-cadet.c:875
 #, fuzzy
 msgid "Provide information about all peers"
 msgstr "proveer información acerca de un túnel en particular"
 
-#: src/cadet/gnunet-cadet.c:876
+#: src/cadet/gnunet-cadet.c:879
 #, fuzzy
 msgid "Provide information about all tunnels"
 msgstr "proveer información acerca de un túnel en particular"
@@ -829,6 +841,28 @@ msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 "El cliente se desconectó del servicio principal, tratando de reconectar.\n"
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1087,30 +1121,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1242,7 +1254,7 @@ msgid "Failed to allocate %u bytes for second packet\n"
 msgstr ""
 "Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n"
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, fuzzy, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr "¡No se pudo conectar al servicio %s!\n"
@@ -1268,51 +1280,51 @@ msgstr "No se pudo procesar el registro PKEY «%s»\n"
 msgid "Could not start playback audio helper.\n"
 msgstr "No se pudo empezar a publicar.\n"
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr "# amigos conectados"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 #, fuzzy
 msgid "key received"
 msgstr "# claves de sesión recibidas"
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 #, fuzzy
 msgid "connection established"
 msgstr "Colección detenida.\n"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "Desconectado de"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 #, fuzzy
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 "El cliente se desconectó del servicio principal, tratando de reconectar.\n"
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "<tiempo desconocido>"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, fuzzy, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr "%24s: %-17s %4s   (%u conexiones en total)\n"
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr "Parámetro no válido «%s» en la línea de comandos\n"
@@ -1323,224 +1335,224 @@ msgid "Failed to connect to CORE service!\n"
 msgstr "¡Se produjo un fallo al conectar con el servicio DHT!\n"
 
 # Miguel: ¿Quizá continuamente fuese mejor?
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 msgid "provide information about all current connections (continuously)"
 msgstr ""
 "provee información sobre todas las conexiones actuales (de forma continua)"
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 msgid "Print information about connected peers."
 msgstr "Imprime información sobre los pares conectados."
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 msgid "# send requests dropped (disconnected)"
 msgstr "# peticiones de envío descartadas (desconectado)"
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, c-format
 msgid "# bytes of messages of type %u received"
 msgstr "# bytes de mensajes del tipo %u recibidos"
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 msgid "# messages discarded (session disconnected)"
 msgstr "# mensajes descartados (sesión desconectada)"
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, fuzzy, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr "# bytes de mensajes del tipo %u recibidos"
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 "Al servicio principal le falta la configuración de la clave de máquina "
 "(HOSTKEY).  Saliendo.\n"
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "El servicio principal de «%4s» está listo.\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr "# bytes cifrados"
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr "# bytes descifrados"
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 #, fuzzy
 msgid "# PAYLOAD dropped (out of order)"
 msgstr "# bytes omitidos (fuera de secuencia)"
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr "# intercambio de claves iniciados"
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr "# intercambio de claves parados"
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 #, fuzzy
 msgid "# PING messages transmitted"
 msgstr "# mensajes PONG creados"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 #, fuzzy
 msgid "# duplicate ephemeral keys ignored"
 msgstr "# mapas de tipos recibidos"
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 #, fuzzy
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr "# mensajes «SET_KEY» descifrados"
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 #, fuzzy
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr "# mensajes «SET_KEY» descifrados"
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "# mapas de tipos recibidos"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 msgid "# PING messages received"
 msgstr "# mensajes PING recibidos"
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 #, fuzzy
 msgid "# PING messages dropped (out of order)"
 msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 msgid "# PONG messages created"
 msgstr "# mensajes PONG creados"
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 msgid "# sessions terminated by timeout"
 msgstr "# sesiones terminadas por plazo de expiración"
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 msgid "# keepalive messages sent"
 msgstr "# mensajes «keepalive» enviados"
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 msgid "# PONG messages received"
 msgstr "# mensajes PONG recibidos"
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 #, fuzzy
 msgid "# PONG messages dropped (connection down)"
 msgstr "# mensajes PONG recibidos"
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 #, fuzzy
 msgid "# PONG messages dropped (out of order)"
 msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 msgid "# PONG messages decrypted"
 msgstr "# mensajes PONG descifrados"
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 msgid "# session keys confirmed via PONG"
 msgstr "# claves de sesión confirmadas vía PONG"
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 #, fuzzy
 msgid "# timeouts prevented via PONG"
 msgstr "# bytes recibidos vía TCP"
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 msgid "# rekey operations confirmed via PONG"
 msgstr "# operaciones de cambio de clave confirmadas vía PONG"
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 #, fuzzy
 msgid "# DATA message dropped (out of order)"
 msgstr "# bytes omitidos (fuera de secuencia)"
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 #, fuzzy
 msgid "# sessions terminated by key expiration"
 msgstr "# sesiones terminadas por plazo de expiración"
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 msgid "# bytes dropped (duplicates)"
 msgstr "# bytes omitidos (duplicados)"
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 msgid "# bytes dropped (out of sequence)"
 msgstr "# bytes omitidos (fuera de secuencia)"
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 msgid "# bytes dropped (ancient message)"
 msgstr "# bytes omitidos (mensaje antiguo)"
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 msgid "# bytes of payload decrypted"
 msgstr "# bytes de «payload» descifrados"
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 msgid "# peers connected"
 msgstr "# pares conectados"
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 msgid "# type map refreshes sent"
 msgstr "# envíos de refrescos del mapa de tipos"
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 #, fuzzy
 msgid "# outdated typemap confirmations received"
 msgstr "Se produjo un fallo al encolar una confirmación de recepción\n"
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 #, fuzzy
 msgid "# valid typemap confirmations received"
 msgstr "Se produjo un fallo al encolar una confirmación de recepción\n"
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 msgid "# type maps received"
 msgstr "# mapas de tipos recibidos"
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr "# actualizaciones de mi mapa de tipos"
 
@@ -1549,7 +1561,7 @@ msgstr "# actualizaciones de mi mapa de tipos"
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, fuzzy, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr "'%s': servicio desconocido: %s\n"
@@ -1651,29 +1663,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr "Herramienta de acceso GNUnet GNS"
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, c-format
 msgid "Failed to connect to GNS\n"
 msgstr "Se produjo un fallo al conectar con GNS\n"
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, c-format
 msgid "Failed to connect to namestore\n"
 msgstr "Se produjo un fallo al conectar con el almacén de nombres\n"
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-#, fuzzy
-msgid "GNS REST API initialized\n"
-msgstr "Conexión fallida\n"
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 msgid "# bytes stored"
@@ -1718,19 +1725,21 @@ msgstr "Caché de datos de montículo (heap) ejecutándose\n"
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1740,6 +1749,7 @@ msgstr "«%s» falló en %s: %d con el error: %s\n"
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 "Se intentó cerrar sqlite sin finalizar todas las sentencias preparadas.\n"
@@ -2042,7 +2052,7 @@ msgstr "Base de datos de montículo ejecutándose\n"
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -2057,20 +2067,22 @@ msgstr "número de valores"
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr "«%s» para «%s» falló en %s: %d con error: %s\n"
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr "Base de datos Mysql ejecutándose\n"
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 msgid "Failed to drop table from database.\n"
 msgstr "Se produjo un fallo al borrar una tabla de la base de datos.\n"
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr "Base de datos Postgres ejecutándose\n"
 
@@ -2086,6 +2098,8 @@ msgstr "«%s» falló en %s:%u con el error: %s"
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr "Imposible inicializar SQLite: %s.\n"
@@ -2112,7 +2126,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 msgid "Sqlite database running\n"
 msgstr "Base de datos sqlite ejecutándose\n"
 
@@ -2154,88 +2169,39 @@ msgstr "Enviando un «GET» DHT con clave"
 msgid "the query key"
 msgstr "la clave de búsqueda"
 
-#: src/dht/gnunet-dht-get.c:253
-msgid "how many parallel requests (replicas) to create"
-msgstr "cuantas peticiones paralelas (réplicas) crear"
-
-#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
-msgid "the type of data to look for"
-msgstr "el tipo de datos a buscar"
-
-#: src/dht/gnunet-dht-get.c:263
-msgid "how long to execute this query before giving up?"
-msgstr "¿cuánto tiempo se debe ejecutar esta consulta antes de abandonar?"
-
-#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
-msgid "use DHT's demultiplex everywhere option"
-msgstr "opción para usar el demultiplexado de la DHT siempre"
-
-#: src/dht/gnunet-dht-get.c:280
-msgid "Issue a GET request to the GNUnet DHT, prints results."
-msgstr ""
-"Iniciando una peticion «GET» a la DHT de GNUnet, imprimiendo resultados."
-
-#: src/dht/gnunet-dht-monitor.c:319
-msgid "how long should the monitor command run"
-msgstr "cuanto tiempo debe ejecutarse el comando de monitorización"
-
-#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
-#: src/nse/gnunet-nse-profiler.c:878
-msgid "be verbose (print progress information)"
-msgstr "ser prolijo (imprime información de progreso)"
-
-#: src/dht/gnunet-dht-monitor.c:337
-msgid "Prints all packets that go through the DHT."
-msgstr "Imprime todos los paquetes que pasan por la DHT."
-
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, fuzzy, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr "El número máximo de conexiones es %u\n"
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-msgid "number of peers to start"
-msgstr "número de pares para empezar"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-"nombre del fichero con la información de acceso usada para la batería de "
-"pruebas"
+#: src/dht/gnunet-dht-get.c:253
+msgid "how many parallel requests (replicas) to create"
+msgstr "cuantas peticiones paralelas (réplicas) crear"
 
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
+#: src/dht/gnunet-dht-get.c:258 src/dht/gnunet-dht-monitor.c:313
+msgid "the type of data to look for"
+msgstr "el tipo de datos a buscar"
 
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
+#: src/dht/gnunet-dht-get.c:263
+msgid "how long to execute this query before giving up?"
+msgstr "¿cuánto tiempo se debe ejecutar esta consulta antes de abandonar?"
 
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
+#: src/dht/gnunet-dht-get.c:267 src/dht/gnunet-dht-put.c:202
+msgid "use DHT's demultiplex everywhere option"
+msgstr "opción para usar el demultiplexado de la DHT siempre"
 
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
+#: src/dht/gnunet-dht-get.c:280
+msgid "Issue a GET request to the GNUnet DHT, prints results."
 msgstr ""
+"Iniciando una peticion «GET» a la DHT de GNUnet, imprimiendo resultados."
 
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
+#: src/dht/gnunet-dht-monitor.c:319
+msgid "how long should the monitor command run"
+msgstr "cuanto tiempo debe ejecutarse el comando de monitorización"
 
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
+#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
+#: src/nse/gnunet-nse-profiler.c:878
+msgid "be verbose (print progress information)"
+msgstr "ser prolijo (imprime información de progreso)"
 
-#: src/dht/gnunet_dht_profiler.c:1009
-#, fuzzy
-msgid "Measure quality and performance of the DHT service."
-msgstr "Medir la calidad y rendimiento del servicio NSE."
+#: src/dht/gnunet-dht-monitor.c:337
+msgid "Prints all packets that go through the DHT."
+msgstr "Imprime todos los paquetes que pasan por la DHT."
 
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
@@ -2365,96 +2331,96 @@ msgstr "# «HELLO» obtenidos de «peerinfo»"
 msgid "# FIND PEER messages initiated"
 msgstr "# mensajes «FIND PEER» iniciados"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# peticiones unidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr "# Pares excluidos del encaminado debido a «Bloomfilter»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 msgid "# Peer selection failed"
 msgstr "# Selecciones de pares fallidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 msgid "# PUT requests routed"
 msgstr "# Peticiones «PUT» encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 msgid "# PUT messages queued for transmission"
 msgstr "# mensajes «PUT» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 msgid "# P2P messages dropped due to full queue"
 msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 msgid "# GET requests routed"
 msgstr "# Peticiones «GET» encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 msgid "# GET messages queued for transmission"
 msgstr "# Mensajes «GET» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 msgid "# RESULT messages queued for transmission"
 msgstr "# Mensajes «RESULT» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 #, fuzzy
 msgid "# Expired PUTs discarded"
 msgstr "# respuestas irrelevantes descartadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 msgid "# P2P PUT requests received"
 msgstr "# Peticiones «PUT» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# Peticiones «PUT» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr "# Peticiones «FIND PEER» ignoradas debido a «Bloomfilter»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr "# Peticiones «FIND PEER» ignoradas debido a falta de «HELLO»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 msgid "# P2P GET requests received"
 msgstr "# Peticiones «GET» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# Peticiones «GET» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 msgid "# P2P FIND PEER requests processed"
 msgstr "# Peticiones «FIND PEER» P2P procesadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 msgid "# P2P GET requests ONLY routed"
 msgstr "# Peticiones «GET» P2P SOLAMENTE encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 #, fuzzy
 msgid "# Expired results discarded"
 msgstr "# respuestas irrelevantes descartadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 msgid "# P2P RESULTS received"
 msgstr "# Resultados (RESULTS) P2P recibidos"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Resultados (RESULTS) P2P recibidos"
@@ -2493,14 +2459,63 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr "# Entradas eliminadas de la tabla de encaminamiento"
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr "# Entradas añadidas a la tabla de encaminamiento"
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 msgid "# DHT requests combined"
 msgstr "# Peticiones a la DHT combinadas"
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, fuzzy, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr "El número máximo de conexiones es %u\n"
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+msgid "number of peers to start"
+msgstr "número de pares para empezar"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+"nombre del fichero con la información de acceso usada para la batería de "
+"pruebas"
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+#, fuzzy
+msgid "Measure quality and performance of the DHT service."
+msgstr "Medir la calidad y rendimiento del servicio NSE."
+
 #: src/dht/plugin_block_dht.c:189
 #, c-format
 msgid "Block not of type %u\n"
@@ -2576,15 +2591,20 @@ msgstr "# Paquetes UDP no-DNS recibidos vía interfaz TUN"
 msgid "# DNS requests received via TUN interface"
 msgstr "# Peticiones DNS recibidas vía interfaz TUN"
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr "se necesita una dirección IPv4 o IPv6 válida\n"
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, fuzzy, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
 msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
 
+#: src/dv/gnunet-dv.c:175
+#, fuzzy
+msgid "Print information about DV state"
+msgstr "Imprime información acerca del estado del ATS"
+
 #: src/exit/gnunet-daemon-exit.c:960
 msgid "# TCP packets sent via TUN"
 msgstr "# Paquetes TCP enviados vía TUN"
@@ -2593,169 +2613,169 @@ msgstr "# Paquetes TCP enviados vía TUN"
 msgid "# ICMP packets sent via TUN"
 msgstr "# Paquetes ICMP enviados vía TUN"
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 msgid "# UDP packets sent via TUN"
 msgstr "# Paquetes UDP enviados vía TUN"
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 #, fuzzy
 msgid "# Bytes received from CADET"
 msgstr "# Bytes recibidos de TUN"
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 #, fuzzy
 msgid "# UDP IP-exit requests received via cadet"
 msgstr "# Peticiones de salida IP por UDP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 #, fuzzy
 msgid "# UDP service requests received via cadet"
 msgstr "# Peticiones de servicio UDP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 #, fuzzy
 msgid "# TCP service creation requests received via cadet"
 msgstr "# Peticiones de creaciones de servicio TCP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 #, fuzzy
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr "# Peticiones de creación de salida IP por TCP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 msgid "# TCP DATA requests dropped (no session)"
 msgstr "# Peticiones de datos (DATA) TCP omitidas (no hay sesión)"
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 #, fuzzy
 msgid "# TCP data requests received via cadet"
 msgstr "# Peticiones de datos TCP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 #, fuzzy
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr "# Peticiones de salida IP por ICMP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr "# Paquetes ICMPv4 omitidos (tipo no permitido)"
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr "# Paquetes ICMPv6 omitidos (tipo no permitido)"
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 #, fuzzy
 msgid "# ICMP service requests received via cadet"
 msgstr "# Peticiones de servicio ICMP recibidas vía mesh"
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr "# Paquetes ICMPv4 omitidos (imposible atravesar v6)"
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr "# Paquetes ICMPv6 omitidos (imposible atravesar v4)"
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr "# Túneles interiores MESH creados"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr "Hay registros de servicios duplicados para «%s:%u»\n"
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr "# Bytes transmitidos vía túneles MESH"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr "# Paquetes ICMP omitidos (tipo no permitido)"
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr "Paquete ICMP omitido, no hay información de conexiones coincidente\n"
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr "Paquete UDP omitido, no hay información de conexiones coincidente\n"
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr "Paquete TCP omitido, no hay información de conexiones coincidente\n"
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 msgid "# Packets received from TUN"
 msgstr "# Paquetes recibidos de TUN"
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 msgid "# Bytes received from TUN"
 msgstr "# Bytes recibidos de TUN"
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr "Opciones de paquete IPv4 recibidas.  Ignoradas.\n"
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 "Recibido paquete IPv4 con cabecera «next» no soportada %u.  Ignorado.\n"
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 "Recibido paquete IPv6 con cabecera «next» no soportada %d.  Ignorado.\n"
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr "Recibido paquete de protocolo desconocido %u.  Ignorado.\n"
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, fuzzy, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr "Las opción «%s» o «%s» es necesaria.\n"
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
-"¡No se encontraron direcciones para el nombre de máquina «%s» del servicio "
-"«%s»!\n"
+"¡No se encontraron direcciones para el nombre de máquina «%s» del servicio «%"
+"s»!\n"
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr "¡Servicio «%s» configurado para IPv4, pero IPv4 está deshabilitado!\n"
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 "¡No se encontraron direcciones IP para el nombre de máquina «%s» del "
 "servicio «%s»!\n"
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
@@ -2763,7 +2783,7 @@ msgstr ""
 "Este sistema no soporta IPv4, se deshabilitarán las funciones IPv4 aunque "
 "estén habilitadas en la configuración\n"
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
@@ -2771,7 +2791,7 @@ msgstr ""
 "Este sistema no soporta IPv6, se deshabilitarán las funciones IPv6 aunque "
 "estén habilitadas en la configuración\n"
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
@@ -2779,7 +2799,7 @@ msgstr ""
 "No se puede habilitar salida IPv4 pero se deshabilita IPv4 sobre interfaz "
 "TUN, se usará ENABLE_IPv4=YES\n"
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
@@ -2787,20 +2807,20 @@ msgstr ""
 "No se pudo habilitar la salida IPv6 pero se deshabilita IPv6 sobre interfaz "
 "TUN, se usará ENABLE_IPv6=YES\n"
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, fuzzy, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr "Ningún servicio útil habilitado.  Saliendo.\n"
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr "Demonio a ejecutar para obtener un nodo de salida IP para la VPN"
 
@@ -2888,8 +2908,8 @@ msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\
 #, c-format
 msgid "Failure while resuming unindexing operation `%s': %s\n"
 msgstr ""
-"Se produjo un fallo mientras se retomaba la operación de publicación «%s»: "
-"%s\n"
+"Se produjo un fallo mientras se retomaba la operación de publicación «%s»: %"
+"s\n"
 
 #: src/fs/fs_api.c:2332
 #, c-format
@@ -2929,8 +2949,8 @@ msgstr ""
 #, c-format
 msgid "Failure while resuming download operation `%s': %s\n"
 msgstr ""
-"Se produjo un fallo mientras se retomaba de la operación de descarga «%s»: "
-"%s\n"
+"Se produjo un fallo mientras se retomaba de la operación de descarga «%s»: %"
+"s\n"
 
 #: src/fs/fs_directory.c:213
 msgid "MAGIC mismatch.  This is not a GNUnet directory.\n"
@@ -2954,8 +2974,8 @@ msgstr ""
 msgid ""
 "Failed to access full directroy contents of `%s' for recursive download\n"
 msgstr ""
-"Se produjo un fallo al crear el directorio para la descarga recursiva de "
-"«%s»\n"
+"Se produjo un fallo al crear el directorio para la descarga recursiva de «%"
+"s»\n"
 
 #: src/fs/fs_download.c:534 src/fs/fs_download.c:546
 #, c-format
@@ -2966,8 +2986,8 @@ msgstr "Se produjo un fallo al abrir «%s» para escritura"
 #, c-format
 msgid "Failed to create directory for recursive download of `%s'\n"
 msgstr ""
-"Se produjo un fallo al crear el directorio para la descarga recursiva de "
-"«%s»\n"
+"Se produjo un fallo al crear el directorio para la descarga recursiva de «%"
+"s»\n"
 
 #: src/fs/fs_download.c:1047
 #, c-format
@@ -2997,8 +3017,8 @@ msgstr ""
 #, c-format
 msgid "Failed to write block of %u bytes at offset %llu in file `%s': %s"
 msgstr ""
-"Se produjo un fallo al escribir el bloque de %u bytes en el desplazamiento "
-"%llu del fichero «%s»: %s"
+"Se produjo un fallo al escribir el bloque de %u bytes en el desplazamiento %"
+"llu del fichero «%s»: %s"
 
 #: src/fs/fs_download.c:1220
 msgid "internal error decoding tree"
@@ -3059,66 +3079,61 @@ msgstr "Se produjo un fallo al conectar con el almacén de datos."
 msgid "Publishing failed: %s"
 msgstr "Publicación fallida: %s"
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Imposible abrir el fichero de configuración '%s'.\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr "No se pudo indexar el fichero «%s»: %s.  Se intentará insertar.\n"
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr ""
 "expiración del plazo en la petición de inicio de indexado (index-start) al "
 "servicio «fs»"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr "se produjo un fallo al calcular el hash"
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr "nombre de fichero demasiado largo"
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 msgid "could not connect to `fs' service"
 msgstr "no se pudo conectar con el servicio «fs»"
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr ""
 "Se produjo un fallo al obtener los identificadores de fichero para «%s»\n"
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr "La subida recursiva falló en «%s»: %s"
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, c-format
 msgid "Recursive upload failed: %s"
 msgstr "Subida recursiva fallida: %s"
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr "tiene que ser un fichero de verdad"
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr "# «PUT» en el almacén de datos fallidos"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr "Reservando espacio para %u entradas y %llu bytes para publicación\n"
@@ -3190,138 +3205,138 @@ msgid "Failed to compute hash of file."
 msgstr "Se produjo un fallo al calcular el hash del fichero."
 
 # Cadena erronea, corregida en SVN.
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, fuzzy, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr "'%' debe ser seguido por un número hexadecimal"
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 #, fuzzy
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 #, fuzzy
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr "URI KSK mal formada (no debe empezar ni terminar con «+»)"
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 #, fuzzy
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr "URI SKS mal formada"
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 #, fuzzy
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr "URI CHK mal formada"
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 #, fuzzy
 msgid "LOC URI malformed (wrong syntax)"
 msgstr "URI SKS mal formada"
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 #, fuzzy
 msgid "LOC URI malformed (no CHK)"
 msgstr "URI SKS mal formada"
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 #, fuzzy
 msgid "LOC URI malformed (missing LOC)"
 msgstr "URI SKS mal formada"
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 #, fuzzy
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)"
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 #, fuzzy
 msgid "LOC URI malformed (could not decode public key)"
 msgstr "URI SKS mal formada (no se pudo decodificar la clave pública)"
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 #, fuzzy
 msgid "LOC URI malformed (could not find signature)"
 msgstr "URI SKS mal formada (no se pudo encontrar la firma)"
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 #, fuzzy
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr "URI SKS mal formada (no se pudo encontrar la firma)"
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 #, fuzzy
 msgid "LOC URI malformed (could not decode signature)"
 msgstr "URI SKS mal formada (no se pudo decodificar la firma)"
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 #, fuzzy
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)"
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 #, fuzzy
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr "URI SKS mal formada (no se encuentra el tiempo de expiración)"
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 #, fuzzy
 msgid "LOC URI malformed (signature failed validation)"
 msgstr "URI SKS mal formada (se produjo un fallo al validar la firma)"
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "Parámetro no válido «%s»\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr "Tipo de URI no reconocido"
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr "¡Ninguna palabra clave especificada!\n"
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr "¡Número de comillas dobles no balanceado!\n"
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, c-format
 msgid "Failed to load state: %s\n"
 msgstr "Se produjo un fallo al cargar el estado: %s\n"
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, c-format
 msgid "Failed to save state to file %s\n"
 msgstr "Se produjo un fallo al guardar el estado en el fichero %s\n"
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr "Publicación de «%s» finalizada\n"
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, c-format
 msgid "Publishing `%s'\n"
 msgstr "Publicando «%s»\n"
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, c-format
 msgid "Failed to run `%s'\n"
 msgstr "Se produjo un fallo al ejecutar «%s»\n"
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
@@ -3329,28 +3344,28 @@ msgstr ""
 "Debes especificar uno y solo un nombre de directorio para publicación "
 "automática.\n"
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr "establece el nivel LEVEL deseado de anonimato del emisor"
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 "deshabilitar añadir tiempo de creación a los metadatos del fichero subido"
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr "no usar libextractor para añadir palabras clave o metadatos"
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr "especificar la prioridad del contenido"
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr "establece el nivel LEVEL deseado de replicación"
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr "Publicar automáticamente ficheros de un directorio en GNUnet"
 
@@ -3420,7 +3435,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr "Finalizada descarga «%s» (%s/s).\n"
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr "Estado inesperado: %d\n"
@@ -3443,12 +3458,12 @@ msgid "Target filename must be specified.\n"
 msgstr "El nombre de fichero de destino debe ser especificado.\n"
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr "No se pudo inicializar el subsistema «%s».\n"
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr "establece el nivel LEVEL deseado de anonimato del receptor"
 
@@ -3456,7 +3471,7 @@ msgstr "establece el nivel LEVEL deseado de anonimato del receptor"
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr "borra descargas incompletas (cuando fueron abortadas con CTRL-C="
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr "únicamente buscar en el par local (no buscar en la red P2P)"
 
@@ -3484,14 +3499,6 @@ msgstr ""
 "Descargar ficheros de GNUnet usando una URI GNUnet CHK o LOC (gnunet://fs/"
 "chk/...)"
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr "imprimir una lista de todos los ficheros indexados"
-
-#: src/fs/gnunet-fs.c:130
-msgid "Special file-sharing operations"
-msgstr "Operaciones especiales de compartición de ficheros"
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr "ejecuta el experimento con «COUNT» pares"
@@ -3512,6 +3519,14 @@ msgstr ""
 "ejecuta una batería de pruebas para medir el rendimiento de la compartición "
 "de ficheros"
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr "imprimir una lista de todos los ficheros indexados"
+
+#: src/fs/gnunet-fs.c:130
+msgid "Special file-sharing operations"
+msgstr "Operaciones especiales de compartición de ficheros"
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3600,7 +3615,7 @@ msgstr "La extracción de metadatos ha finalizado.\n"
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "Error interno escaneando directorio.\n"
 
 #: src/fs/gnunet-publish.c:715
@@ -3642,17 +3657,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr "La opción «%s» es obligatoria cuando se usa la opción «%s».\n"
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n"
 
-#: src/fs/gnunet-publish.c:911
-#, fuzzy
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-"deshabilitar añadir tiempo de creación a los metadatos del fichero subido"
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3729,32 +3738,32 @@ msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, c-format
 msgid "Error searching: %s.\n"
 msgstr "Error buscando: %s.\n"
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 msgid "Could not create keyword URI from arguments.\n"
 msgstr "No se pudo crear URI de palabra clave a partir de los parámetros.\n"
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 msgid "Could not start searching.\n"
 msgstr "No se pudo empezar a buscar.\n"
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr "escribir resultados de búsqueda al fichero que empiecen por «PREFIX»"
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr "terminar búsqueda automáticamente después de «DELAY»"
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr "terminar búsqueda después de «VALUE» resultados encontrados"
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr "Buscar en GNUnet ficheros que han sido publicados en GNUnet"
 
@@ -3796,18 +3805,18 @@ msgstr ""
 "Al servicio principal le falta la configuración de la clave de máquina "
 "(HOSTKEY).  Saliendo.\n"
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr "Se produjo un fallo al conectar con el servicio «%s».\n"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 #, fuzzy
 msgid "# replies received via cadet"
 msgstr "# respuestas recibidas vía «stream»"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 #, fuzzy
 msgid "# replies received via cadet dropped"
 msgstr "# respuestas recibidas omitidas vía «stream»"
@@ -3936,8 +3945,8 @@ msgstr "# bloques de índice eliminados: fichero original inaccesible"
 #, c-format
 msgid "Could not access indexed file `%s' (%s) at offset %llu: %s\n"
 msgstr ""
-"No se pudo acceder al fichero indexado «%s» (%s) en el desplazamiento %llu: "
-"%s\n"
+"No se pudo acceder al fichero indexado «%s» (%s) en el desplazamiento %llu: %"
+"s\n"
 
 #: src/fs/gnunet-service-fs_indexing.c:361
 msgid "not indexed"
@@ -3988,108 +3997,108 @@ msgstr "# peticiones refrescadas"
 msgid "# query plan entries"
 msgstr "# entradas de planes de búsqueda"
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 msgid "# Pending requests created"
 msgstr "# Peticiones pendientes creadas"
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 msgid "# Pending requests active"
 msgstr "# Peticiones pendientes activas"
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 msgid "# replies received and matched"
 msgstr "# respuestas recibidas y asociadas"
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr "# respuestas duplicadas descartadas (bloomfilter)"
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr "# respuestas irrelevantes descartadas"
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr "Tipo de bloque %u no soportado\n"
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr "# resultados hallados localmente"
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr "# «PUT» en el almacén de datos fallidos"
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 msgid "# storage requests dropped due to high load"
 msgstr "# peticiones de almacenamiento omitidas debido a alta carga"
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 msgid "# Replies received from DHT"
 msgstr "# Respuestas recibidas de la DHT"
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 #, fuzzy
 msgid "# Replies received from CADET"
 msgstr "# Respuestas recibidas de la DHT"
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr "¡La búsqueda en el almacén de datos toma %s!\n"
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr "¡La búsqueda en bajo demanda toma %s!\n"
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr "# «DBLOCK» o «IBLOCK» pedido no encontrado"
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr "# Búsquedas en el almacén de datos finalizadas (error encolando)"
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr "# Búsquedas en el almacén de datos finalizadas (sin resultados)"
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr "# Búsquedas en el almacén de datos finalizadas (vistos todos)"
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr "# Búsquedas en el almacén de datos finalizadas (más de «MAX_RESULTS»)"
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr "# peticiones asociadas de bloques bajo demanda"
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr "# búsquedas satisfactorias de bloques bajo demanda"
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr "# búsquedas fallidas de bloques bajo demanda"
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 "# Búsquedas en el almacén de datos finalizadas (encontrado último resultado)"
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr "# Búsquedas en el almacén de datos finalizadas (carga demasiado alta)"
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr "# Búsquedas en el almacén de datos iniciadas"
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 msgid "# GAP PUT messages received"
 msgstr "# Mensajes «GAP PUT» recibidos"
 
@@ -4124,7 +4133,7 @@ msgstr "No se pudo empezar la operación de desindexado.\n"
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr "Desindexa un fichero previamente indexado con «gnunet-publish»."
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -4157,43 +4166,43 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr ""
 "¡Se produjo un fallo al empaquetar una respuesta DNS en un paquete UDP!\n"
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr "No se puede procesar la petición DNS de %s\n"
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr "Recibida petición DNS mal formada de %s\n"
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr "Recibida petición DNS no soportada de %s\n"
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 #, fuzzy
 msgid "No DNS server specified!\n"
 msgstr "¡Ninguna palabra clave especificada!\n"
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr "IP del resolvedor recursivo DNS a usar (requerido)"
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 #, fuzzy
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 "Puerto UDP en el que escuchar para peticiones DNS entrantes; predeterminado: "
 "53"
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr "Pasarela GNUnet DNS-a-GNS (un servidor DNS)"
 
@@ -4210,38 +4219,6 @@ msgstr "¿cuánto tiempo se debe ejecutar? 0 = para siempre"
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "«%s» no es una dirección IP válida.\n"
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr "Buscar el registro para el nombre dado"
-
-#: src/gns/gnunet-gns.c:266
-msgid "Specify the type of the record to lookup"
-msgstr "Especificar el tipo del registro a buscar"
-
-#: src/gns/gnunet-gns.c:272
-#, fuzzy
-msgid "Specify a timeout for the lookup"
-msgstr "Especificar el tipo del registro a buscar"
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr "Sin salida innecesaria"
-
-#: src/gns/gnunet-gns.c:288
-#, fuzzy
-msgid "GNUnet GNS resolver tool"
-msgstr "Herramienta de acceso GNUnet GNS"
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -4261,122 +4238,144 @@ msgstr "Fallo al conectar a gnunetd.\n"
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr "%s falló en %s:%d: «%s».\n"
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, fuzzy, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr "Tipo de bloque %u no soportado\n"
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, fuzzy, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr "Se produjo un fallo al mandar la petición DNS a %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, fuzzy, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr "¡No se puede inicializar el resolvedor!\n"
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, fuzzy, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr "Se produjo un fallo al procesar la petición DNS.  Omitiendo.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, fuzzy, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, fuzzy, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr "Tipo no soportado «%s»\n"
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr "No se pudo importar la clave privada del fichero «%s»\n"
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "No se pudo importar el certificado %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, fuzzy, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 #, fuzzy
 msgid "Failed to pass client to MHD\n"
 msgstr "Se produjo un fallo al conectar con GNS\n"
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, fuzzy, c-format
 msgid "Unsupported socks version %d\n"
 msgstr "Tipo de bloque %u no soportado\n"
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, fuzzy, c-format
 msgid "Unsupported socks command %d\n"
 msgstr "Tipo de bloque %u no soportado\n"
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, fuzzy, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr "Tipo de bloque %u no soportado\n"
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, fuzzy, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr "escuchar en el puerto especificado (predeterminado: 7777)"
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr "fichero pem para usar como autoridad de certificación (CA)"
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr "Proxy GNUnet GNS"
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr "Buscar el registro para el nombre dado"
+
+#: src/gns/gnunet-gns.c:238
+msgid "Specify the type of the record to lookup"
+msgstr "Especificar el tipo del registro a buscar"
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr "Sin salida innecesaria"
+
+#: src/gns/gnunet-gns.c:258
+#, fuzzy
+msgid "GNUnet GNS resolver tool"
+msgstr "Herramienta de acceso GNUnet GNS"
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4388,8 +4387,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 msgid "Could not connect to DHT!\n"
 msgstr "¡No se pudo conectar a la DHT!\n"
 
@@ -4484,94 +4483,84 @@ msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
 
-#: src/gns/plugin_rest_gns.c:442
-#, fuzzy
-msgid "Gns REST API initialized\n"
-msgstr "Conexión fallida\n"
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr "No se pudo procesar la dirección IPv4 «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, fuzzy, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, fuzzy, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, fuzzy, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr "No se pudo procesar el registro SOA «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, fuzzy, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, fuzzy, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr "No se pudo procesar el registro MX «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, fuzzy, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "No se pudo procesar el registro SOA «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr ""
 "Se produjo un fallo al escribir el directorio con los resultados de búsqueda "
 "de «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr "No se pudo procesar dirección IPv4 «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr "No se pudo procesar la cadena de registro TLSA «%s»\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr "Llamar con el nombre del fichero «HELLO» para modificar.\n"
@@ -4611,45 +4600,45 @@ msgstr "Error escribiendo «HELLO» al fichero «%s»: %s\n"
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr ""
 "Se produjo un fallo al procesar un mensaje «HELLO»: falta el tiempo de "
 "expiración\n"
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr ""
 "Se produjo un fallo al procesar un mensaje «HELLO»: tiempo de expiración no "
 "válido\n"
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr ""
 "Se produjo un fallo al procesar un mensaje «HELLO»: falta el módulo de "
 "transporte\n"
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, fuzzy, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr "Módulo «%s» no encontrado\n"
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr "El módulo «%s» no soporta URI todavía\n"
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr ""
 "Se produjo un fallo al procesar «%s» como una dirección para el módulo «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
@@ -4657,11 +4646,11 @@ msgstr ""
 "Ninguna de las funciones para el demonio de listas de máquinas fue "
 "activada.  ¡No tengo razón para ejecutarme!\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr "anuncia nuestra lista de máquinas a otros pares"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
@@ -4669,49 +4658,49 @@ msgstr ""
 "realizar inicialización usando listas de máquinas (es altamente recomendable "
 "que siempre se use esta opción)"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 "habilitar aprendizaje de servidores de listas de máquinas de otros pares"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr "proveer un servidor de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr "Servidor y cliente GNUnet de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr "# bytes descargados de servidores de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr "# «HELLO» no válidos descargados de servidores de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr "Mensaje «%s» no válido recibido de la lista de máquinas en «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr "# «HELLO» válidos descargados de servidores de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr "# URI de listas de máquinas anunciadas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr "# URI anunciadas «%s» descargadas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
@@ -4720,120 +4709,120 @@ msgstr ""
 "Lista de máquinas anunciada con la URI «%s» no pudo ser descargada. La URI "
 "anunciada es descartada.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr ""
 "Finalizado el plazo mientras se intentaba bajar lista de máquinas de «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr "Límite de descarga de %u bytes superado, parando descarga\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr "Descarga de lista de máquinas de «%s» fallida: «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr "Descarga de lista de máquinas «%s» completada.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr "Añadiendo el almacén de datos de la lista de máquinas probada «%s».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr "Inicializando usando lista de máquinas en «%s».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr "# descargas de listas de máquinas iniciadas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr "# milisegundos entre descargas de listas de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 "Hay %u/%u conexiones.  Se considerará descargar una lista de máquinas en %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 msgid "# active connections"
 msgstr "# conexiones activas"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr "Cargando entradas guardadas de listas de máquinas del fichero «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr "El fichero de listas de máquinas «%s» no existe\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr ""
 "No se pudo abrir el fichero «%s» en modo lectura para cargar las listas de "
 "máquinas: %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr "%u URI de listas de máquinas cargadas del fichero\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr "# URI de listas de máquinas leídas de fichero"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr ""
 "No se pudo abrir el fichero «%s» en modo escritura para almacenar las listas "
 "de máquinas: %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr "Escribiendo %u URI de listas de máquinas a «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr "Error escribiendo URI de listas de máquinas al fichero «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr "# URI de listas de máquinas escritas a fichero"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr "El aprendizaje está habilitado en este par\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr "El aprendizaje no está habilitado en este par\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
@@ -4841,48 +4830,48 @@ msgstr ""
 "La lista de máquinas «%s» fue eliminada puesto que el aprendizaje no está "
 "habilitado en este par\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 msgid "bytes in hostlist"
 msgstr "bytes en la lista de máquinas"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr "direcciones expiradas encontradas"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr ""
 "Error en la comunicación con el servicio de información de pares (PEERINFO): "
 "%s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr "«HELLO» sin dirección encontrados (ignorados)"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr "bytes no incluidos en la lista de máquinas (límite de tamaño)"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr "Rechazando petición «%s» al servidor de listas de máquinas\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr "Peticiones de listas de máquinas rechazadas (no HTTP GET)"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr "Rechazando petición «%s» con %llu bytes de datos de subida\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr "Peticiones de listas de máquinas rechazadas (datos de subida)"
 
@@ -4896,191 +4885,180 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr "Peticiones de listas de máquinas rechazadas (no preparados)"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr "Peticiones recibidas de nuestra lista de máquinas\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 msgid "hostlist requests processed"
 msgstr "Peticiones de lista de máquinas procesadas"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 msgid "# hostlist advertisements send"
 msgstr "# anuncios de listas de máquinas enviados"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr ""
 "No se pudo acceder al servicio de información de pares (PEERINFO).  "
 "Saliendo.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr "Número de puerto %llu no válido.  Saliendo.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr "Servicio de listas de máquinas arranca en %s:%llu\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr "Dirección para obtener la lista de máquinas: «%s»\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "¡«%s» no es una dirección IP válida! Ignorando «BINDTOIP».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr ""
 "No se pudo arrancar un servidor de listas de máquinas HTTP en el puerto %u\n"
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, fuzzy, c-format
 msgid "Failed to create ego: %s\n"
 msgstr "Se produjo un fallo al crear la página para «%s»\n"
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, fuzzy, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr "Se produjo un fallo al crear la página para «%s»\n"
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 #, fuzzy
 msgid "delete ego NAME "
 msgstr "borrar un nombre de espacio de nombres (NAME)"
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 #, fuzzy
 msgid "display all egos"
 msgstr "mostrar registros"
 
-#: src/identity/gnunet-identity.c:404
-#, fuzzy
-msgid "reduce output"
-msgstr "Sin salida innecesaria"
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
 # Miguel: Aquí he dejado monitorización porque esto es
 # del servicio de traducción de direcciones.
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 #, fuzzy
 msgid "run in monitor mode egos"
 msgstr "modo de monitorización"
 
-#: src/identity/gnunet-identity.c:419
-msgid "display private keys as well"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, fuzzy, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr ""
 "Se produjo un fallo al obtener los identificadores de fichero para «%s»\n"
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 #, fuzzy
 msgid "target name already exists"
 msgstr "El registro ya existía en el almacén de nombres"
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, fuzzy, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr "Se produjo un fallo al procesar la identidad del par «%s»\n"
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, fuzzy, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, fuzzy, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr "Se produjo un fallo al leer el directorio «%s»\n"
 
-#: src/identity/plugin_rest_identity.c:1311
-#, fuzzy
-msgid "Identity REST API initialized\n"
-msgstr "Conexión fallida\n"
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, fuzzy, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr "«%s» falló en %s: %d con el error: %s\n"
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr "Intentando usar el fichero «%s» para la configuración de MySQL.\n"
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr "No se pudo acceder al fichero «%s»: %s\n"
@@ -5090,7 +5068,7 @@ msgstr "No se pudo acceder al fichero «%s»: %s\n"
 msgid "No records found for `%s'"
 msgstr "No se han encontrado ficheros en «%s»\n"
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr "\tRegistro corrupto o no soportado del tipo %u\n"
@@ -5110,16 +5088,16 @@ msgstr "Parámetro no válido «%s»\n"
 msgid "You must specify a name\n"
 msgstr "¡Debes especificar un receptor!\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr "nombre del registro a añadir/borrar/mostrar"
 
 #: src/namecache/gnunet-namecache.c:238
 #, fuzzy
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr "Especificar el tipo del registro a buscar"
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 msgid "GNUnet zone manipulation tool"
 msgstr "Herramienta de manipulación de zona de GNUnet"
 
@@ -5134,367 +5112,341 @@ msgstr "El almacén de nombres no pudo añadir el registro"
 msgid "Error communicating with namecache service"
 msgstr "Error al comunicar con el servicio ARM.\n"
 
-#: src/namecache/plugin_namecache_flat.c:121
-#: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
-#: src/peerstore/plugin_peerstore_flat.c:379
-#: src/peerstore/plugin_peerstore_flat.c:538
-#, fuzzy, c-format
-msgid "Unable to initialize file: %s.\n"
-msgstr "Imposible inicializar SQLite: %s.\n"
+#: src/namecache/plugin_namecache_flat.c:121
+#: src/namecache/plugin_namecache_flat.c:255
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
+#: src/peerstore/plugin_peerstore_flat.c:379
+#: src/peerstore/plugin_peerstore_flat.c:538
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "Imposible inicializar SQLite: %s.\n"
+
+#: src/namecache/plugin_namecache_flat.c:132
+#: src/namestore/plugin_namestore_heap.c:159
+#: src/peerstore/plugin_peerstore_flat.c:394
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Se produjo un fallo al crear los índices\n"
+
+#: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
+#: src/peerstore/plugin_peerstore_flat.c:406
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Se produjo un fallo al crear los índices\n"
+
+#: src/namecache/plugin_namecache_flat.c:410
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "Base de datos sqlite ejecutándose\n"
+
+#: src/namecache/plugin_namecache_sqlite.c:183
+#: src/namecache/plugin_namecache_sqlite.c:197
+#: src/namestore/plugin_namestore_sqlite.c:219
+#: src/namestore/plugin_namestore_sqlite.c:230
+#, fuzzy, c-format
+msgid "Failed to setup database at `%s'\n"
+msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
+
+# form??
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr "Forma de valor no soportada «%s»\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr "Encontrado nombre «%s» para la clave dada\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr "Encontrados %u registros para el dominio «%s»\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr "Se produjo un fallo al crear la página para «%s»\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr "El nombre de dominio no puede contener «.»\n"
 
-#: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
-#: src/peerstore/plugin_peerstore_flat.c:394
-#, fuzzy, c-format
-msgid "Unable to get filesize: %s.\n"
-msgstr "Se produjo un fallo al crear los índices\n"
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr "El nombre de dominio no puede contener «+»\n"
 
-#: src/namecache/plugin_namecache_flat.c:151
-#: src/peerstore/plugin_peerstore_flat.c:406
-#, fuzzy, c-format
-msgid "Unable to read file: %s.\n"
-msgstr "Se produjo un fallo al crear los índices\n"
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
 
-#: src/namecache/plugin_namecache_flat.c:410
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
+msgid "Failed to start HTTP server\n"
+msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
 #, fuzzy
-msgid "flat plugin running\n"
-msgstr "Base de datos sqlite ejecutándose\n"
+msgid "Failed to connect to identity\n"
+msgstr "Se produjo un fallo al conectar con GNS\n"
 
-#: src/namecache/plugin_namecache_sqlite.c:183
-#: src/namecache/plugin_namecache_sqlite.c:197
-#: src/namestore/plugin_namestore_sqlite.c:219
-#: src/namestore/plugin_namestore_sqlite.c:230
-#, fuzzy, c-format
-msgid "Failed to setup database at `%s'\n"
-msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+#, fuzzy
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse"
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore.c:341
 #, c-format
 msgid "Adding record failed: %s\n"
 msgstr "No se pudo añadir el registro: %s\n"
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, fuzzy, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr "No se pudo borrar el registro: %s\n"
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, fuzzy, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr "No se pudo borrar el registro: %s\n"
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Se produjo un fallo al procesar la petición DNS.  Omitiendo.\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr "No se han proporcionado opciones\n"
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr "Falta la opción «%s» para la operación «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr "añadir"
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, c-format
 msgid "Unsupported type `%s'\n"
 msgstr "Tipo no soportado «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr "Valor «%s» no válido para el tipo de registro «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, c-format
 msgid "Invalid time format `%s'\n"
 msgstr "Formato de tiempo no válido «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr "borrar"
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, fuzzy, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Parámetro no válido «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "URI no válida: «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, fuzzy, c-format
 msgid "Invalid nick `%s'\n"
 msgstr "URI no válida: «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, fuzzy, c-format
 msgid "No default ego configured in identity service\n"
 msgstr "'%s': servicio desconocido: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, fuzzy, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr "Argumentos superfluos (ignorados).\n"
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, fuzzy, c-format
 msgid "Cannot connect to identity service\n"
 msgstr "¡No se pudo conectar al servicio %s!\n"
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, fuzzy, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Comando desconocido «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "Formato no válido para la IP: «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr "añadir registro"
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr "borrar registro"
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr "mostrar registros"
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 "tiempo de expiración del registro a usar (únicamente para añadir), nunca "
 "(\"never\") es posible"
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 #, fuzzy
 msgid "set the desired nick name for the zone"
 msgstr "establece el nivel LEVEL deseado de replicación"
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 #, fuzzy
 msgid "monitor changes in the namestore"
 msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 #, fuzzy
 msgid "determine our name for the given PKEY"
 msgstr "establece las preferencias para el par dado"
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr "tipo del registro a añadir/borrar/mostrar"
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr "URI a importar a nuestra zona"
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr "valor del registro a añadir/borrar"
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr "crear o listar registros públicos"
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 #, fuzzy
 msgid "name of the ego controlling the zone"
 msgstr "nombre de la sección a la que acceder"
 
-# form??
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr "Forma de valor no soportada «%s»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr "Se produjo un fallo al crear un registro para el dominio «%s»: %s\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr "Encontrado nombre «%s» para la clave dada\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr "Encontrados %u registros para el dominio «%s»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr "Se produjo un fallo al crear la página para «%s»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr "El nombre de dominio no puede contener «.»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr "El nombre de dominio no puede contener «+»\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-msgid "Failed to start HTTP server\n"
-msgstr "Se produjo un fallo al iniciar el servidor HTTP\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-#, fuzzy
-msgid "Failed to connect to identity\n"
-msgstr "Se produjo un fallo al conectar con GNS\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-#, fuzzy
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr "Servicio de registro GNUnet GNS primero en llegar, primero en servirse"
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, fuzzy, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr "Se produjo un fallo al crear el espacio de nombres «%s»\n"
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 #, fuzzy
 msgid "Namestore failed to store record\n"
 msgstr "El almacén de nombres no pudo añadir el registro\n"
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
+#: src/namestore/plugin_namestore_heap.c:778
 #, fuzzy
-msgid "Flat file database running\n"
+msgid "heap file database running\n"
 msgstr "Base de datos de plantilla ejecutándose\n"
 
-#: src/namestore/plugin_rest_namestore.c:919
-#, fuzzy
-msgid "Namestore REST API initialized\n"
-msgstr "Conexión fallida\n"
-
 #: src/nat-auto/gnunet-nat-auto.c:193
 #, fuzzy
 msgid "Suggested configuration changes:\n"
@@ -5538,7 +5490,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 msgid "Failed to connect to `gnunet-nat-server'\n"
 msgstr "Se produjo un fallo al conectar con «gnunet-nat-server»\n"
@@ -5578,39 +5530,39 @@ msgstr "Probando conexión inversa con el servidor ICMP.\n"
 msgid "Detected external IP `%s'\n"
 msgstr "Detectada IP externa «%s»\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 "Este sistema tiene una dirección IPv6 global, fijando IPv6 a habilitado.\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr "Detectada dirección de la red interna «%s».\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr "«upnpc» encontrado, habilitando su uso\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 msgid "upnpc not found\n"
 msgstr "«upnpc» no encontrado\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr "No se ha encontrado un «gnunet-helper-nat-server» funcional\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5739,45 +5691,45 @@ msgstr "# pares desconectados debido a petición externa"
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr "Demonio de ayuda en las pruebas de recorrido NAT de GNUnet"
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, fuzzy, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 "Puerto inválido \"%s\" en la especificación de la lista local, probando el "
 "puerto %d.\n"
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 #, fuzzy
 msgid "Connection reversal request failed\n"
 msgstr "Colección detenida.\n"
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr "«gnunet-helper-nat-server» generó la dirección mal formada «%s»\n"
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, c-format
 msgid "Failed to start %s\n"
 msgstr "Se produjo un fallo al arrancar %s\n"
@@ -5790,11 +5742,6 @@ msgstr "comando «external-ip» no encontrado\n"
 msgid "`upnpc' command not found\n"
 msgstr "comando «upnpc» no encontrado\n"
 
-#: src/nse/gnunet-nse.c:123
-#, fuzzy
-msgid "Show network size estimates from NSE service."
-msgstr "# Estimaciones del tamaño de red recibidas"
-
 #: src/nse/gnunet-nse-profiler.c:849
 msgid "limit to the number of connections to NSE services, 0 for none"
 msgstr "límite al número de conexiones a servicios NSE, 0 para ilimitadas"
@@ -5820,69 +5767,15 @@ msgstr "retraso entre rondas"
 msgid "Measure quality and performance of the NSE service."
 msgstr "Medir la calidad y rendimiento del servicio NSE."
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
-msgid "Value is too large.\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, c-format
-msgid "Removing expired address of transport `%s'\n"
-msgstr "Eliminando dirección de transporte «%s»\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:313
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
-msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr "# pares conocidos"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:492
-#, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
-msgstr ""
-"El fichero «%s» en el directorio «%s» no sigue la convención de nombres. "
-"Eliminado.\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:658
-#, fuzzy, c-format
-msgid "Scanning directory `%s'\n"
-msgstr "Escaneando directorio «%s».\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:666
-#, c-format
-msgid "Still no peers found in `%s'!\n"
-msgstr "¡Aún no se han encontrado pares en «%s»!\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
-#, fuzzy, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr "Escaneando directorio «%s».\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr "Importando HELLO de «%s»\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
-msgstr ""
+#: src/nse/gnunet-nse.c:122
+#, fuzzy
+msgid "Show network size estimates from NSE service."
+msgstr "# Estimaciones del tamaño de red recibidas"
 
-# Miguel: "Failed to receive" también aquí está traducido como
-# "no se obtuvo respuesta" por claridad.
-#: src/peerinfo/peerinfo_api.c:220
-msgid "Failed to receive response from `PEERINFO' service."
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
+msgid "Value is too large.\n"
 msgstr ""
-"No se obtuvo respuesta del servicio de información de pares (PEERINFO)."
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, fuzzy, c-format
@@ -5895,7 +5788,7 @@ msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, fuzzy, c-format
 msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n"
@@ -5962,47 +5855,102 @@ msgstr "Imprimir información sobre los pares."
 msgid "Starting transport plugins `%s'\n"
 msgstr "Iniciando los módulos de transporte «%s»\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
-#: src/transport/gnunet-service-transport_plugins.c:173
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
+#: src/transport/gnunet-service-transport_plugins.c:173
+#, c-format
+msgid "Loading `%s' transport plugin\n"
+msgstr "Cargando el módulo de transporte «%s»\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
+#: src/transport/gnunet-service-transport_plugins.c:208
+#, c-format
+msgid "Failed to load transport plugin for `%s'\n"
+msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr "Eliminando dirección de transporte «%s»\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr "Se produjo un fallo al procesar «HELLO» en el fichero «%s»\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
+msgstr "# pares conocidos"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+"El fichero «%s» en el directorio «%s» no sigue la convención de nombres. "
+"Eliminado.\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, fuzzy, c-format
+msgid "Scanning directory `%s'\n"
+msgstr "Escaneando directorio «%s».\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:667
+#, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr "¡Aún no se han encontrado pares en «%s»!\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
+#, fuzzy, c-format
+msgid "Cleaning up directory `%s'\n"
+msgstr "Escaneando directorio «%s».\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
 #, c-format
-msgid "Loading `%s' transport plugin\n"
-msgstr "Cargando el módulo de transporte «%s»\n"
+msgid "Importing HELLOs from `%s'\n"
+msgstr "Importando HELLO de «%s»\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
-#: src/transport/gnunet-service-transport_plugins.c:208
-#, c-format
-msgid "Failed to load transport plugin for `%s'\n"
-msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
-#, fuzzy
-msgid "Peerinfo REST API initialized\n"
-msgstr "Conexión fallida\n"
+# Miguel: "Failed to receive" también aquí está traducido como
+# "no se obtuvo respuesta" por claridad.
+#: src/peerinfo/peerinfo_api.c:220
+msgid "Failed to receive response from `PEERINFO' service."
+msgstr ""
+"No se obtuvo respuesta del servicio de información de pares (PEERINFO)."
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "No se pudo leer el fichero de la lista negra «%s»\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 #, fuzzy
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr "El formato de salida es desconocido, ésto no debería pasar.\n"
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 #, fuzzy
 msgid "Received a malformed response from service."
 msgstr "Recibida petición DNS mal formada de %s\n"
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, fuzzy, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -6010,6 +5958,8 @@ msgid ""
 msgstr "Error abriendo fichero «%s»: %s\n"
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, fuzzy, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -6026,6 +5976,114 @@ msgstr "Se produjo un fallo al crear los índices\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr "«%s» para «%s» falló en %s: %d con error: %s\n"
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "Parámetro no válido «%s»\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Se produjo un fallo al iniciar el demonio: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Se produjo un fallo al cargar el estado: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Se produjo un fallo al cargar el estado: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Se produjo un fallo al cargar el estado: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "Imposible inicializar SQLite: %s.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Se produjo un fallo al preparar la sentencia «%s»\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, fuzzy, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr "«%s» falló en %s: %d con el error: %s\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+#, fuzzy
+msgid "SQLite database running\n"
+msgstr "Base de datos sqlite ejecutándose\n"
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr "Se produjo un fallo al empaquetar la petición DNS.  Omitiendo.\n"
@@ -6071,97 +6129,74 @@ msgstr "# Respuestas DNS recibidas"
 msgid "# DNS replies dropped (too late?)"
 msgstr "# Respuestas DNS (¿demasiado tarde?)"
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr "Se produjo un fallo al conectar con el servicio %s.  Saliendo.\n"
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 "Demonio a ejecutar para realizar la traducción de protocolo IP a GNUnet"
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, fuzzy, c-format
 msgid "Ego is required\n"
 msgstr "Las opción «%s» o «%s» es necesaria.\n"
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, fuzzy, c-format
 msgid "Requesting party key is required!\n"
 msgstr "el parámetro --section es necesario\n"
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-#, fuzzy
-msgid "The EGO to use"
-msgstr "tamaño del mensaje"
-
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-#, fuzzy
-msgid "OpenID Connect REST API initialized\n"
-msgstr "Conexión fallida\n"
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-#, fuzzy
-msgid "Identity Provider REST API initialized\n"
-msgstr "Conexión fallida\n"
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "El almacén de nombres no pudo añadir el registro\n"
@@ -6261,21 +6296,52 @@ msgstr "El servicio «%s» no está ejecutandose\n"
 msgid "Search string `%s' is too long!\n"
 msgstr "El servicio «%s» no está ejecutandose\n"
 
-#: src/rest/gnunet-rest-server.c:1039
+#: src/rest-plugins/plugin_rest_copying.c:209
 #, fuzzy
-msgid "GNUnet REST server"
-msgstr "Herramienta de acceso GNUnet GNS"
+msgid "COPYING REST API initialized\n"
+msgstr "Conexión fallida\n"
 
-#: src/rest/plugin_rest_config.c:265
+#: src/rest-plugins/plugin_rest_credential.c:1128
 #, fuzzy
-msgid "CONFIG REST API initialized\n"
+msgid "GNS REST API initialized\n"
 msgstr "Conexión fallida\n"
 
-#: src/rest/plugin_rest_copying.c:209
+#: src/rest-plugins/plugin_rest_gns.c:452
 #, fuzzy
-msgid "COPYING REST API initialized\n"
+msgid "Gns REST API initialized\n"
+msgstr "Conexión fallida\n"
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+#, fuzzy
+msgid "Identity REST API initialized\n"
+msgstr "Conexión fallida\n"
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+#, fuzzy
+msgid "Namestore REST API initialized\n"
+msgstr "Conexión fallida\n"
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+#, fuzzy
+msgid "Identity Provider REST API initialized\n"
+msgstr "Conexión fallida\n"
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+#, fuzzy
+msgid "Peerinfo REST API initialized\n"
 msgstr "Conexión fallida\n"
 
+#: src/rest/gnunet-rest-server.c:927
+#, fuzzy
+msgid "listen on specified port (default: 7776)"
+msgstr "escuchar en el puerto especificado (predeterminado: 7777)"
+
+#: src/rest/gnunet-rest-server.c:944
+#, fuzzy
+msgid "GNUnet REST server"
+msgstr "Herramienta de acceso GNUnet GNS"
+
 #: src/revocation/gnunet-revocation.c:129
 #, fuzzy, c-format
 msgid "Key `%s' is valid\n"
@@ -6326,59 +6392,59 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr "Módulo «%s» no encontrado\n"
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, fuzzy, c-format
 msgid "Public key `%s' malformed\n"
 msgstr "El bloque del tipo %u está mal formado\n"
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 #, fuzzy
 msgid "No filename to store revocation certificate given.\n"
 msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, fuzzy, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr "Se produjo un fallo al leer la lista de amigos de «%s»\n"
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 #, fuzzy
 msgid "No action specified. Nothing to do.\n"
 msgstr "Ninguna interfaz especificada, usando la marcada por defecto\n"
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -6411,44 +6477,44 @@ msgstr "# transmisiones de fragmentos completadas"
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 #, fuzzy
 msgid "Could not open revocation database file!"
 msgstr "No se pudo conectar con el almacén de datos."
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 #, fuzzy
 msgid "duration of the profiling"
 msgstr ""
 "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%s'!\n"
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 #, fuzzy
 msgid "timeout for the profiling"
 msgstr "Especificar el tipo del registro a buscar"
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "número de pares para empezar"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 #, fuzzy
 msgid "Measure quality and performance of the RPS service."
 msgstr "Medir la calidad y rendimiento del servicio NSE."
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 #, fuzzy
 msgid "You must specify at least one message ID to check!\n"
@@ -6504,10 +6570,10 @@ msgstr ""
 msgid "Calculate the Vectorproduct with a GNUnet peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
 #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
 #, fuzzy
 msgid "Connect to CADET failed\n"
 msgstr "Conexión fallida (¿bug?)\n"
@@ -6532,31 +6598,31 @@ msgstr ""
 msgid "also profile decryption"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
+#: src/set/gnunet-service-set.c:2005
 #, fuzzy
 msgid "Could not connect to CADET service\n"
 msgstr "¡No se pudo conectar al servicio %s!\n"
 
 # Miguel: Conjunto resta.
-#: src/set/gnunet-set-ibf-profiler.c:267
+#: src/set/gnunet-set-ibf-profiler.c:252
 msgid "number of element in set A-B"
 msgstr "número de elementos en el conjunto A-B"
 
-#: src/set/gnunet-set-ibf-profiler.c:273
+#: src/set/gnunet-set-ibf-profiler.c:258
 msgid "number of element in set B-A"
 msgstr "número de elementos en el conjunto B-A"
 
 # Miguel: Conjunto unión.
-#: src/set/gnunet-set-ibf-profiler.c:280
+#: src/set/gnunet-set-ibf-profiler.c:264
 msgid "number of common elements in A and B"
 msgstr "número de elementos comunes en A y B"
 
 # Miguel: "hash" me tiene un poco frito. ¿Existe alguna traducción buena?
-#: src/set/gnunet-set-ibf-profiler.c:286
+#: src/set/gnunet-set-ibf-profiler.c:270
 msgid "hash num"
 msgstr "número de hash"
 
-#: src/set/gnunet-set-ibf-profiler.c:292
+#: src/set/gnunet-set-ibf-profiler.c:276
 msgid "ibf size"
 msgstr "tamaño ibf"
 
@@ -6580,6 +6646,134 @@ msgstr ""
 msgid "element size"
 msgstr ""
 
+#: src/social/gnunet-social.c:1166
+#, fuzzy
+msgid "--place missing or invalid.\n"
+msgstr "Parámetro no válido «%s»\n"
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
+msgstr ""
+
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
+msgstr ""
+
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
+msgstr ""
+
+#: src/social/gnunet-social.c:1304
+#, fuzzy
+msgid "name or public key of ego"
+msgstr "Parámetro no válido «%s»\n"
+
+#: src/social/gnunet-social.c:1309
+#, fuzzy
+msgid "wait for incoming messages"
+msgstr "Falló al entregar el mensaje '%s'.\n"
+
+#: src/social/gnunet-social.c:1315
+#, fuzzy
+msgid "GNS name"
+msgstr "Mostrar el _nombre"
+
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
+msgstr ""
+
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
+msgstr ""
+
+#: src/social/gnunet-social.c:1333
+#, fuzzy
+msgid "method name"
+msgstr "Mostrar el _nombre"
+
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "número de mensajes a usar por iteración"
+
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
+msgstr ""
+
 #: src/sq/sq.c:54
 #, c-format
 msgid "Failure to bind %u-th SQL parameter\n"
@@ -6604,93 +6798,93 @@ msgstr "Escritos %llu bytes de estadísticas a «%s»\n"
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr "Cargando %llu bytes de estadísticas de «%s»\n"
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 msgid "Failed to obtain statistics.\n"
 msgstr "Se produjo un fallo al obtener las estadísticas.\n"
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr ""
 "Se produjo un fallo al obtener las estadísticas de la máquina «%s:%llu»\n"
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr "Falta el parámetro: subsistema\n"
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr "Falta el argumento: nombre\n"
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr "No se proporcionó un subsistema o un nombre\n"
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr "Se produjo un fallo al inicializar la rutina de visualización\n"
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "Parámetro no válido «%s»\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr "Se necesita un puerto para conectar con la máquina «%s»\n"
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr "Un puerto debe estar entre 1 y 65534 para conectar a la máquina «%s»\n"
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr "limita la salida de estadísticas para el nombre (NAME) dado"
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr "hacer el valor persistente"
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr "límite de salida para el subsistema (SUBSYSTEM) dado"
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr "imprime el valor de las estadísticas"
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr "visualiza el valor continuamente"
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr "conectar a equipo remoto"
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr "puerto del equipo remoto"
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr "Imprime estadísticas acerca de las operaciones de GNUnet."
 
@@ -6743,7 +6937,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Argumento no válido para '%s' en %s:%d.\n"
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr "crea «COUNT» número de pares"
 
@@ -6782,7 +6976,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr "El fichero de máquinas no tiene el formato correcto: %s\n"
@@ -6856,6 +7050,17 @@ msgstr "Petición ignorada porque el ARM se está apagando.\n"
 msgid "%.s Unknown result code."
 msgstr "Código de respuesta del ARM desconocido.\n"
 
+#: src/testbed/gnunet-testbed-profiler.c:289
+msgid "tolerate COUNT number of continious timeout failures"
+msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo"
+
+#: src/testbed/gnunet-testbed-profiler.c:294
+msgid ""
+"run profiler in non-interactive mode where upon testbed setup the profiler "
+"does not wait for a keystroke but continues to run until a termination "
+"signal is received"
+msgstr ""
+
 #: src/testbed/gnunet_testbed_mpi_spawn.c:118
 #, fuzzy
 msgid "Waiting for child to exit.\n"
@@ -6866,18 +7071,7 @@ msgstr "Esperando a los pares para conectar (%u ciclos restantes)...\n"
 msgid "Spawning process `%s'\n"
 msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n"
 
-#: src/testbed/gnunet-testbed-profiler.c:287
-msgid "tolerate COUNT number of continious timeout failures"
-msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo"
-
-#: src/testbed/gnunet-testbed-profiler.c:291
-msgid ""
-"run profiler in non-interactive mode where upon testbed setup the profiler "
-"does not wait for a keystroke but continues to run until a termination "
-"signal is received"
-msgstr ""
-
-#: src/testbed/testbed_api.c:400
+#: src/testbed/testbed_api.c:410
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr "No se pudo añadir la máquina %u por el error: %s\n"
@@ -6897,7 +7091,7 @@ msgstr "El archivo de máquinas %s no tiene datos\n"
 msgid "Hosts file %s cannot be read\n"
 msgstr "El archivo de máquinas %s no puede leerse\n"
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -7064,7 +7258,7 @@ msgstr "El número de clave %u no existe\n"
 
 # Miguel: "testbed" lo he traducido como batería de pruebas, pero
 # no es una traducción muy literal.
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
@@ -7073,47 +7267,47 @@ msgstr ""
 "Se ha intentado crear una batería de pruebas con más de %u máquinas.  Por "
 "favor, pre-compute más claves de máquinas primero.\n"
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 "Se produjo un fallo al inicializar la clave de la máquina desde el par %u\n"
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 #, fuzzy
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr "¡Falta la opción «%s» en la sección «%s» de la configuración!\n"
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 "Se produjo un fallo al crear la configuración para el par (¿no hay "
 "suficientes puertos libres?)\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "No se pudo abrir el fichero de claves de máquina: %s\n"
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 "Se produjo un fallo al escribir la clave de la máquina para el par %u: %s\n"
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 "Se produjo un fallo al escribir el fichero de configuración «%s» para el par "
 "%u: %s\n"
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Se produjo un fallo al arrancar «%s»: %s\n"
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Se produjo un fallo al cargar la configuración de %s\n"
@@ -7130,50 +7324,50 @@ msgstr ""
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr "«gnunet-arm» o «ssh» no parecen terminar.\n"
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr "# pares en la lista negra"
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 #, fuzzy
 msgid "# connect requests issued to ATS"
 msgstr "# peticiones de conexión requeridas al servicio de transporte"
 
 # gossiped??
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 msgid "# HELLO messages gossipped"
 msgstr "# Mensajes «HELLO» rumoreados"
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 msgid "# friends connected"
 msgstr "# amigos conectados"
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 "¡Se produjo un fallo al conectar con el servicio principal, no se puede "
 "gestionar la topología!\n"
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr "Me he encontrado «%s» en mi lista de amigos (inútil, ignorado)\n"
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr "Encontrado amigo «%s» en la configuración\n"
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 msgid "# friends in configuration"
 msgstr "# amigos en configuración"
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
@@ -7181,103 +7375,103 @@ msgstr ""
 "Menos amigos especificados que los requeridos por el contador mínimo de "
 "amigos. Sólo me conectaré a amigos.\n"
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 "Más conexiones amistosas requeridas que el número objetivo total de "
 "conexiones.\n"
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 msgid "# HELLO messages received"
 msgstr "# mensajes «HELLO» recibidos"
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 "El servicio de transporte carece de opciones de configuración de clave.  "
 "Saliendo.\n"
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 #, fuzzy
 msgid "GNUnet TCP communicator"
 msgstr "Configurador Gtk de GNUnet"
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 #, fuzzy
 msgid "GNUnet UDP communicator"
 msgstr "Configurador Gtk de GNUnet"
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 #, fuzzy
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr "El número máximo de conexiones es %u\n"
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, fuzzy, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr "Se produjo un fallo al crear la página para «%s»\n"
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr "# mensajes omitidos debido a un cliente lento"
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr "# bytes de «payload» omitidos (el otro par no estaba conectado)"
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 #, fuzzy
 msgid "# bytes payload discarded due to not connected peer"
 msgstr "# bytes de «payload» descartados debido a par no conectado"
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 msgid "# bytes total received"
 msgstr "# total de bytes recibidos"
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 msgid "# bytes payload received"
 msgstr "# bytes de «payload» recibidos"
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr "# desconexiones debido a la lista negra"
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, fuzzy, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr "Se produjo un fallo al cargar el módulo del transporte para «%s»\n"
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, fuzzy, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr "Añadiendo «%s» sin direcciones para el par «%s»\n"
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr "# refrescos de mi «HELLO»"
@@ -7287,211 +7481,211 @@ msgstr "# refrescos de mi «HELLO»"
 msgid "# session creation failed"
 msgstr "# sesiones wlan creadas"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 msgid "# DISCONNECT messages sent"
 msgstr "# Mensajes «DISCONNECT» enviados"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr "# desconexiones debido a una cuota de 0"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 msgid "# bytes in message queue for other peers"
 msgstr "# bytes en la cola de mensajes para otros pares"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 msgid "# messages transmitted to other peers"
 msgstr "# mensajes transmitidos a otros pares"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 msgid "# transmission failures for messages to other peers"
 msgstr "# fallos de transmisión en mensajes a otros pares"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr "# mensajes expirados mientras estaban en la cola de transporte"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr "# Mensajes «KEEPALIVE» descartados (par desconocido)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr "# mensajes «KEEPALIVE» descartados (no hay sesión)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr "# Mensajes «KEEPALIVE_RESPONSE» descartados (no esperado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr "# mensajes «KEEPALIVE_RESPONSE» descartados (no conectado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 msgid "# messages discarded due to lack of neighbour record"
 msgstr "# mensajes descartados debido a la falta de registro vecinal"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 msgid "# bandwidth quota violations by other peers"
 msgstr "# violaciones de la cuota de ancho de banda por otros pares"
 
 # throttling?
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr "# ms de impulso sugeridos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr ""
-"Se produjo un fallo al procesar el mensaje interno del programa auxiliar "
-"«%s»\n"
+"Se produjo un fallo al procesar el mensaje interno del programa auxiliar «%"
+"s»\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr "Se produjo un fallo al procesar la petición DNS.  Omitiendo.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "# Mensajes «DISCONNECT» enviados"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr "Se produjo un fallo al procesar la petición DNS.  Omitiendo.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "¡Se produjo un fallo al conectar al servicio de estadísticas!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 #, fuzzy
 msgid "# SYN_ACK messages sent"
 msgstr "# Mensajes «DISCONNECT» enviados"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Se produjo un fallo al transmitir un mensaje al servicio «%s».\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 #, fuzzy
 msgid "# SYN messages received"
 msgstr "# mensajes PING recibidos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 #, fuzzy
 msgid "# SYN_ACK messages received"
 msgstr "# mensajes SET QUOTA recibidos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr "# Mensajes «CONNECT_ACK» inesperados (sin par)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr "# Mensajes «CONNECT_ACK» inesperados (no estaba preparado)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr "# Mensajes «CONNECT_ACK» inesperados (esperando en el ATS)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr "# Mensajes «CONNECT_ACK» inesperados (desconectando)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 #, fuzzy
 msgid "# ACK messages received"
 msgstr "# mensajes «REQUEST CONNECT» recibidos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 #, fuzzy
 msgid "# unexpected ACK messages"
 msgstr "# Mensajes «SESSION ACK» inesperados"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 #, fuzzy
 msgid "# quota messages ignored (malformed)"
 msgstr "# mensajes de desconexión ignorados (formato antiguo)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 #, fuzzy
 msgid "# QUOTA messages received"
 msgstr "# Mensajes «GAP PUT» recibidos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 #, fuzzy
 msgid "# disconnect messages ignored (malformed)"
 msgstr "# mensajes de desconexión ignorados (formato antiguo)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 #, fuzzy
 msgid "# DISCONNECT messages received"
 msgstr "# mensajes «REQUEST CONNECT» recibidos"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr "# mensajes de desconexión ignorados (marca temporal)"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 msgid "# disconnected from peer upon explicit request"
 msgstr "# desconexiones del par debido a una petición explícita"
 
@@ -7527,7 +7721,7 @@ msgstr "# revalidaciones de direcciones iniciadas"
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 #, fuzzy
 msgid "# validations running"
 msgstr "Base de datos sqlite ejecutándose\n"
@@ -7555,31 +7749,31 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr "# revalidaciones de direcciones iniciadas"
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 msgid "# PING message for different peer received"
 msgstr "# Mensajes PING recibidos para un par diferente"
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, fuzzy, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener "
 "esa dirección.\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, fuzzy, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
@@ -7588,70 +7782,109 @@ msgstr ""
 "No confirmando el PING con dirección «%s» ya que no puedo confirmar tener "
 "esa dirección.\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, fuzzy, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr "Se produjo un fallo al crear la página para «%s»\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr "# unicast de PONG vía transporte confiable"
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr "# multicast de PONG a todas las direcciones disponibles"
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr "# PONG omitidos, no hay una validación pendiente coincidente"
 
-#: src/transport/gnunet-service-transport_validation.c:1518
-msgid "# PONGs dropped, signature expired"
-msgstr "# Mensajes PONG omitidos, firma expirada"
+#: src/transport/gnunet-service-transport_validation.c:1517
+msgid "# PONGs dropped, signature expired"
+msgstr "# Mensajes PONG omitidos, firma expirada"
+
+#: src/transport/gnunet-service-transport_validation.c:1572
+#, fuzzy
+msgid "# validations succeeded"
+msgstr "# revalidaciones de direcciones iniciadas"
+
+#: src/transport/gnunet-service-transport_validation.c:1627
+#, fuzzy
+msgid "# HELLOs given to peerinfo"
+msgstr "# «HELLO» obtenidos de «peerinfo»"
+
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+#, fuzzy
+msgid "receive data from peer"
+msgstr "# respuestas recibidas de otros pares"
+
+#: src/transport/gnunet-transport-profiler.c:626
+#, fuzzy
+msgid "iterations"
+msgstr "Otras configuraciones"
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-transport-profiler.c:631
 #, fuzzy
-msgid "# validations succeeded"
-msgstr "# revalidaciones de direcciones iniciadas"
+msgid "number of messages to send"
+msgstr "número de mensajes a usar por iteración"
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-transport-profiler.c:636
 #, fuzzy
-msgid "# HELLOs given to peerinfo"
-msgstr "# «HELLO» obtenidos de «peerinfo»"
+msgid "message size to use"
+msgstr "tamaño del mensaje"
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr "identidad del par"
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+msgid "Direct access to transport service."
+msgstr "Acceso directo al servicio de transporte."
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport.c:413
 #, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr "Transmitidos %llu bytes/s (%llu bytes en %s)\n"
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr "Recibidos %llu bytes/s (%llu bytes en %s)\n"
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr "Se produjo un fallo al conectar con «%s»\n"
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr "Se produjo un fallo al resolver la dirección para el par «%s»\n"
 
 # Miguel: La traducción no es literal, pero me parece más correcta
 # en castellano.
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "No se pudieron listar las conexiones, expiró el plazo\n"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, fuzzy, c-format
 msgid "Transmitting %u bytes\n"
 msgstr "Transmitiendo %u bytes a %s\n"
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
@@ -7660,46 +7893,46 @@ msgstr ""
 "Conectado satisfactoriamente a «%s», empezando a mandar datos de prueba en "
 "bloques de %u Kb\n"
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr "Desconectado del par «%s» mientras probaba\n"
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr "%24s: %-17s %4s   (%u conexiones en total)\n"
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 msgid "Connected to"
 msgstr "Conectado a"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 msgid "Disconnected from"
 msgstr "Desconectado de"
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, fuzzy, c-format
 msgid "Received %u bytes\n"
 msgstr "Recibidos %u bytes de %s\n"
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr "Par «%s»: %s %s\n"
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr ""
 "El cliente se desconectó del servicio principal, tratando de reconectar.\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, fuzzy, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
@@ -7708,137 +7941,100 @@ msgstr ""
 "Múltiples operaciones introducidas. Por favor, seleccione únicamente una "
 "operación: %s, %s, %s, %s, %s, %s\n"
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, fuzzy, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
-"Ninguna operación introducida. Por favor, seleccione alguna operación: %s, "
-"%s, %s, %s, %s, %s\n"
+"Ninguna operación introducida. Por favor, seleccione alguna operación: %s, %"
+"s, %s, %s, %s, %s\n"
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "Se produjo un fallo al conectar con el servicio de transporte\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 msgid "Failed to connect to transport service\n"
 msgstr "Se produjo un fallo al conectar con el servicio de transporte\n"
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr "Empezando a recibir datos de prueba\n"
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 #, fuzzy
 msgid "print information for all peers (instead of only connected peers)"
 msgstr "Imprime información sobre los pares conectados."
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr "medir cómo de rápido recibimos datos de todos los pares (hasta CTRL-C)"
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 #, fuzzy
 msgid "disconnect from a peer"
 msgstr "conectar a un par"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 msgid "provide information about all current connections (once)"
 msgstr "provee información sobre todas las conexiones actuales (una vez)"
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr ""
 "provee información sobre todas los eventos de conexión y desconexión "
 "(continuamente)"
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 msgid "do not resolve hostnames"
 msgstr "no resolver nombres de máquinas"
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr "identidad del par"
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 #, fuzzy
 msgid "monitor plugin sessions"
 msgstr "# sesiones wlan pendientes"
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr "enviar data para prueba a otro par (hasta CTRL-C)"
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-msgid "Direct access to transport service."
-msgstr "Acceso directo al servicio de transporte."
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-#, fuzzy
-msgid "receive data from peer"
-msgstr "# respuestas recibidas de otros pares"
-
-#: src/transport/gnunet-transport-profiler.c:586
-#, fuzzy
-msgid "iterations"
-msgstr "Otras configuraciones"
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "número de mensajes a usar por iteración"
-
-#: src/transport/gnunet-transport-profiler.c:596
-#, fuzzy
-msgid "message size to use"
-msgstr "tamaño del mensaje"
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 "¡No se pudo inicializar el multi-manejador de curl, no se pudo iniciar el "
 "módulo %s!\n"
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr "Finalizando el módulo «%s»\n"
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr "Finalización del módulo «%s» completa\n"
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, fuzzy, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr "El número máximo de conexiones es %u\n"
@@ -7895,6 +8091,7 @@ msgstr "Encontradas %u direcciones para comunicar al servicio NAT\n"
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n"
 
@@ -8000,118 +8197,127 @@ msgstr "# bytes enviados vía SMTP"
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr "# bytes omitidos por SMTP (salientes)"
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr "Longitud de dirección inesperada: %u bytes\n"
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 msgid "# TCP sessions active"
 msgstr "# Sesiones TCP activas"
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 msgid "# bytes currently in TCP buffers"
 msgstr "# bytes actualmente en los buffer TCP"
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr "# bytes descartados por TCP (desconectado)"
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 msgid "# bytes discarded by TCP (timeout)"
 msgstr "# bytes omitidos por TCP (expirados)"
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 msgid "# bytes transmitted via TCP"
 msgstr "# bytes recibidos vía TCP"
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr "# peticiones de desconexión del servicio de transporte por TCP"
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 msgid "# TCP WELCOME messages received"
 msgstr "# Mensajes «WELCOME» TCP recibidos"
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr "# bytes recibidos vía TCP"
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr "# conexiones «stream» activas"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 #, fuzzy
 msgid "# TCP server connect events"
 msgstr "# Pares conectados"
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr "# eventos de desconexión TCP a nivel de red"
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 msgid "Failed to start service.\n"
 msgstr "Se produjo un fallo al iniciar el servicio.\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr "Transporte TCP escuchando en el puerto %llu\n"
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n"
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr "El transporte TCP anuncia que está en el puerto %llu\n"
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-#, fuzzy
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP"
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-"Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el "
-"«socket» en el puerto %d\n"
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -8138,6 +8344,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 #, fuzzy
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr "¡Deshabilitando IPv6 ya que no está soportado en este sistema!\n"
@@ -8148,15 +8355,19 @@ msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "«%s» no es una dirección IP válida.\n"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "«%s» no es una dirección IP válida.\n"
@@ -8166,6 +8377,23 @@ msgstr "«%s» no es una dirección IP válida.\n"
 msgid "Failed to create UDP network sockets\n"
 msgstr "Se produjo un fallo al crear una nueva firma"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+#, fuzzy
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr "# beacons HELLO multicast IPv6 recibidos vía UDP"
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+"Se produjo un fallo al establecer la opción de «broadcast» IPv4 para el "
+"«socket» en el puerto %d\n"
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -8246,6 +8474,61 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr "# sesiones WLAN alojadas"
 
+#: src/transport/plugin_transport_xt.c:4010
+#, fuzzy, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr "Transporte TCP escuchando en el puerto %llu\n"
+
+#: src/transport/plugin_transport_xt.c:4014
+#, fuzzy
+msgid "XT transport not listening on any port (client only)\n"
+msgstr "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n"
+
+#: src/transport/plugin_transport_xt.c:4018
+#, fuzzy, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr "El transporte TCP anuncia que está en el puerto %llu\n"
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# Sesiones TCP activas"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, fuzzy, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+"UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, "
+"compruebe su configuración de red\n"
+
+#: src/transport/plugin_transport_xu.c:1251
+#, fuzzy
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+"UDP no pudo transmitir el mensaje a «%s». Por favor, compruebe su "
+"configuración de red y deshabilite IPv6 si su conexión carece de una "
+"dirección IPv6 global\n"
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "Se produjo un fallo al crear una nueva firma"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, c-format
 msgid "Access denied to `%s'\n"
@@ -8256,17 +8539,17 @@ msgstr "Acceso denegado a «%s»\n"
 msgid "Accepting connection from `%s': %p\n"
 msgstr "Aceptando conexión desde «%s»: %p\n"
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "«%s» falló para el puerto %d (%s).\n"
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "«%s» falló para el puerto %d (%s): dirección en uso actualmente\n"
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "«%s» falló para «%.*s»: dirección en uso actualmente\n"
@@ -8280,7 +8563,7 @@ msgstr ""
 "El código de procesado para el mensaje del tipo %u no llamó a "
 "«GNUNET_SERVER_receive_done» después de %s\n"
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr "Familia de direcciones %d desconocida\n"
@@ -8290,29 +8573,29 @@ msgstr "Familia de direcciones %d desconocida\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr "Acceso denegado desde «%s» al servicio «%s»\n"
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr "No se pudo procesar la especificación de red IPv4 «%s» para «%s:%s»\n"
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr "No se pudo procesar la especificación de red IPv6 «%s» para «%s:%s»\n"
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 "No se pudo acceder a un «socket» pre-ascociado, lo intentaré asociar yo "
 "mismo\n"
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr "El valor especificado «%s» para el servicio «%s» no es válido\n"
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8329,46 +8612,45 @@ msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "El servicio «%s» se ejecuta en %s\n"
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr "No se pudo inicializar el proceso del servicio\n"
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 "No se pudo inicializar la función del servidor en el proceso del servicio\n"
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr "El proceso del servicio no devolvió un estado\n"
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "No se pudo obtener información acerca del usuario «%s»: %s\n"
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr "No existe tal usuario"
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Imposible cambiar el usuario/grupo a «%s»: %s\n"
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr "demonizar (desasociar del terminal)"
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
@@ -8378,7 +8660,7 @@ msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 msgid "Could not access configuration file `%s'\n"
 msgstr "No se pudo acceder al fichero de configuración «%s»\n"
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -8411,67 +8693,67 @@ msgstr "Los metadatos serializados «%s» son mayores de lo permitido (%u>%u)"
 msgid "Metadata `%s' failed to deserialize"
 msgstr "Se produjo un fallo al deserializar los metadatos «%s»"
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr "Se necesita un nombre de máquina no vacío para el servicio «%s».\n"
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "DEPURACIÓN"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "INFORMACIÓN"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr "MENSAJE"
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "PELIGRO"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "ERROR"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr "NINGUNO"
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "Mensaje `%.*s» repetido %u veces en el último %s\n"
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr "NO VÁLIDO"
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr "dirección desconocida"
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr "dirección no válida"
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "¡La configuración no especifica la opción «%s» en la sección «%s»!\n"
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8523,28 +8805,28 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 "El tamaño del fichero en disco es incorrecto para este «Bloom "
 "filter» (esperado %llu, tiene %llu)\n"
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr "El firmado ECC falló en %s:%d: %s\n"
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, fuzzy, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr "El firmado ECC falló en %s:%d: %s\n"
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, fuzzy, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, fuzzy, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
@@ -8584,7 +8866,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr "No se pudo acceder a la clave de máquina.\n"
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr "libgcrypt no tiene la versión esperada (se necesita la versión %s).\n"
@@ -8599,7 +8881,7 @@ msgstr "El firmado ECC falló en %s:%d: %s\n"
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr "La verificación de la firma RSA fallo en %s:%d: %s\n"
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr "¡Se esperaba que «%s» fuera un directorio!\n"
@@ -8611,7 +8893,7 @@ msgstr ""
 "Se produjo un fallo al convertir el nombre en formato DNS IDNA «%s» a UTF-8: "
 "%s\n"
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr ""
@@ -8638,7 +8920,7 @@ msgstr "Se produjo un fallo al mandar la petición DNS a %s\n"
 msgid "Sent DNS request to %s\n"
 msgstr "Petición DNS enviada a %s\n"
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: la opción «%s» es ambigua\n"
@@ -8648,71 +8930,66 @@ msgstr "%s: la opción «%s» es ambigua\n"
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr "%s: la opción «--%s» no permite un parámetro\n"
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr "%s: la opción «%c%s» no permite un parámetro\n"
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: la opción «%s» requiere un parámetro\n"
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: opción no reconocida «--%s»\n"
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: opción no reconocida «%c%s»\n"
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: opción ilegal -- %c\n"
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: opción no válida -- %c\n"
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: la opción requiere un parámetro -- %c\n"
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: la opción «-W %s» es ambigua\n"
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr "%s: la opción «-W %s» no permite un parámetro\n"
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr "Use %s para obtener una lista de opciones.\n"
 
-#: src/util/getopt.c:987
-#, fuzzy, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n"
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, fuzzy, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr "Falta la opción «%s» para la operación «%s»\n"
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr "imprime el número de versión"
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8720,110 +8997,106 @@ msgstr ""
 "Los parámetros obligatorios para las opciones largas también lo son para sus "
 "versiones cortas.\n"
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr "imprime esta ayuda"
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr ""
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "crear ficheros de configuración únicos"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr "Tienes que introducir un número en la opción «%s».\n"
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr "Debes introducir un tiempo relativo en la opción «%s».\n"
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, fuzzy, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr "Debes introducir un tiempo relativo en la opción «%s».\n"
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, fuzzy, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr "Tienes que introducir un número en la opción «%s».\n"
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "Se produjo un fallo al cargar la configuración de %s\n"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, fuzzy, c-format
 msgid "%s or %s argument is required\n"
 msgstr "el parámetro --section es necesario\n"
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr "el parámetro --option es necesario para establecer un valor\n"
 
-#: src/util/gnunet-config.c:284
+#: src/util/gnunet-config.c:286
 #, fuzzy
-msgid "interpret option value as a filename (with $-expansion)"
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 "obtener la opción del valor como un nombre de fichero (con expansión del $)"
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr "nombre de la sección a la que acceder"
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr "nombre de la opción a la que acceder"
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr "valor a establecer"
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 #, fuzzy
 msgid "print available configuration sections"
 msgstr "Falta configuración sobre las opciones de claves.\n"
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 msgid "Manipulate GNUnet configuration files"
 msgstr "Manipular ficheros de configuración de GNUnet"
 
@@ -8832,17 +9105,17 @@ msgstr "Manipular ficheros de configuración de GNUnet"
 msgid "Failed to open `%s': %s\n"
 msgstr "Se produjo un fallo al abrir «%s»: %s\n"
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, fuzzy, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr "Generando %u claves, por favor, espere"
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr "Generando %u claves, por favor, espere"
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, c-format
 msgid ""
 "\n"
@@ -8851,100 +9124,73 @@ msgstr ""
 "\n"
 "Se produjo un fallo al escribir en «%s»: %s\n"
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Finished!\n"
 msgstr "¡Finalizado!\n"
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr "El fichero de máquinas %s no fue encontrado\n"
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr "El archivo de amigos «%s» está vacío.\n"
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, fuzzy, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr "¡No se puede leer el fichero de claves de máquina!\n"
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr "No se ha especificado la clave de máquina en la línea de comandos\n"
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr "crea «COUNT» pares de claves pública-privada (para pruebas)"
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr "imprime la clave pública en formato ASCII"
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 #, fuzzy
 msgid "print the private key in ASCII format"
 msgstr "imprime la clave pública en formato ASCII"
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 #, fuzzy
 msgid "print the public key in HEX format"
 msgstr "imprime la clave pública en formato ASCII"
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 msgid "Manipulate GNUnet private ECC key files"
 msgstr "Manipular los ficheros de clave privada ECC de GNUnet"
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr "URI no válida: no comienza con «%s»\n"
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr "URI no válida: falla al especificar el subsistema\n"
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr "No hay un manejador conocido para el subsistema «%s»\n"
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr "realizar una búsqueda inversa"
@@ -8953,42 +9199,57 @@ msgstr "realizar una búsqueda inversa"
 msgid "Use build-in GNUnet stub resolver"
 msgstr "Utilizar el resolvedor interno para pruebas de GNUnet"
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr "La carga de la clave de la máquina desde «%s» ha fallado.\n"
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 #, fuzzy
 msgid "Manipulate GNUnet proof of work files"
 msgstr "Manipular los ficheros de clave privada ECC de GNUnet"
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr "No se ha especificado una URI en la línea de comandos. Saliendo.\n"
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr "URI no válida: no comienza con «%s»\n"
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr "URI no válida: falla al especificar el subsistema\n"
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr "No hay un manejador conocido para el subsistema «%s»\n"
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr "Realizar las acciones predeterminadas para URI de GNUnet"
 
@@ -9001,20 +9262,20 @@ msgstr "Error leyendo de «%s»: %s\n"
 #, c-format
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr ""
-"Se produjo un fallo al procesar el mensaje interno del programa auxiliar "
-"«%s»\n"
+"Se produjo un fallo al procesar el mensaje interno del programa auxiliar «%"
+"s»\n"
 
 #: src/util/helper.c:606
 #, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Error escribiendo a «%s»: %s\n"
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr "Imposible acortar la ruta unix «%s» manteniendo el nombre único\n"
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -9031,22 +9292,22 @@ msgstr ""
 "No se pudo determinar la ruta de instalación de %s.  Establezca la variable "
 "de entorno «%s».\n"
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr "¡No se pudo encontrar el programa llamado «%s» en PATH!\n"
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, fuzzy, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr "«%s» falló para el puerto %d (%s).\n"
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -9070,17 +9331,17 @@ msgstr "Falló «%s» para la biblioteca «%s» con error: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "No se pudo determinar la ruta de instalación de los módulos.\n"
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, fuzzy, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
@@ -9130,7 +9391,12 @@ msgid "Could not resolve our FQDN: %s\n"
 msgstr ""
 "No se pudo resolver nuestro nombre de dominio cualificado (FQDN) : %s\n"
 
-#: src/util/service.c:668
+#: src/util/service.c:1307
+msgid ""
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+msgstr ""
+
+#: src/util/service.c:2141
 #, fuzzy, c-format
 msgid ""
 "Processing code for message of type %u did not call "
@@ -9139,22 +9405,17 @@ msgstr ""
 "El código de procesado para el mensaje del tipo %u no llamó a "
 "«GNUNET_SERVER_receive_done» después de %s\n"
 
-#: src/util/service.c:1820
-msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
-msgstr ""
-
 #: src/util/signal.c:89
 #, c-format
 msgid "signal (%d, %p) returned %d.\n"
 msgstr "señal (%d, %p) devolvió %d.\n"
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -9163,242 +9424,242 @@ msgstr ""
 msgid "b"
 msgstr "b"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr "Los conjuntos de caracteres pedidos fueron «%s»->«%s»\n"
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 "Se produjo un fallo al expandir «$HOME»: variable de entorno «HOME» no "
 "establecida"
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr ""
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr "para siempre"
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr "0 ms"
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "ms"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "s"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "m"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "h"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 msgid "day"
 msgstr "día"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 msgid "days"
 msgstr "días"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr "fin del plazo"
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr "La dirección IPv6 no empezaba con «[»\n"
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr "La dirección IPv6 contenía «:» para separar el número de puerto\n"
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 "La dirección IPv6 contenía «]» antes de «:» para separar el número de "
 "puerto\n"
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 "La dirección IPv6 contenía un número de puerto válido después del último "
 "«:»\n"
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr "Dirección IPv6 «%s» no válida: %s\n"
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, fuzzy, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr "Se produjo un fallo al iniciar el servicio «%s»\n"
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr "Formato no válido para la IP: «%s»\n"
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr "Notación de red no válida («/%d» no es válido en IPv4 CIDR)."
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, fuzzy, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "Formato de tiempo no válido «%s»\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr "Notación de red no válida (no termina con «;»: «%s»)\n"
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr "Formato «%s» erroneo para máscara de red\n"
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr "Formato «%s» erroneo para red\n"
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, fuzzy, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 "Se produjo un fallo al recuperar el espacio de nombres «%s», no se pudo "
 "retomar la operación de publicación.\n"
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 #, fuzzy
 msgid "# Active channels"
 msgstr "# Túneles activos"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 #, fuzzy
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr "# Bytes omitidos en la cola mesh (desbordamiento)"
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 #, fuzzy
 msgid "# ICMP packets received from cadet"
 msgstr "# Paquetes ICMP recibidos de mesh"
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 #, fuzzy
 msgid "# UDP packets received from cadet"
 msgstr "# Paquetes UDP recibidos de mesh"
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 #, fuzzy
 msgid "# TCP packets received from cadet"
 msgstr "# Paquetes TCP recibidos de mesh"
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr "# Túneles mesh creados"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr "Protocolo %u no soportado, omitiendo\n"
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 #, fuzzy
 msgid "# Packets dropped (channel not yet online)"
 msgstr "# Paquetes ICMP omitidos (tipo no permitido)"
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr "# Paquetes ICMPv4 omitidos (no permitido)"
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr "# Paquetes ICMPv6 omitidos (no permitido)"
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 msgid "# Packets received from TUN interface"
 msgstr "# Paquetes recibidos de la interfaz TUN"
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr "Paquete recibido para el destino «%s» no mapeado (omitiéndolo)\n"
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr "Recibido paquete IPv4 con opciones (omitiéndolo)\n"
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr "Recibido paquete de protocolo %d desconocido desde TUN (omitiéndolo)\n"
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr "No se encontraron direcciones IPv4 libres en el rango de la VPN\n"
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr "No se encontraron direcciones IPv6 libres en el rango de la VPN\n"
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 msgid "# Active destinations"
 msgstr "# Destinos activos"
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 "Se produjo un fallo al alojar las direcciones IP para el nuevo destino\n"
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 #, fuzzy
 msgid "Must specify valid IPv6 address"
 msgstr "«%s» no es una dirección IP válida.\n"
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 "El soporte de IPv6 se deshabilita porque este sistema no soporta IPv6\n"
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 #, fuzzy
 msgid "Must specify valid IPv4 address"
 msgstr "«%s» no es una dirección IP válida.\n"
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 "El soporte de IPv4 se deshabilita porque este sistema no soporta IPv4\n"
@@ -9468,86 +9729,76 @@ msgstr "el servicio es ofrecido vía UDP"
 msgid "Setup tunnels via VPN."
 msgstr "Configurar túneles vía VPN."
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 msgid "Failed to connect to the namestore!\n"
 msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "Aserción fallida en %s:%d.\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "Aserción fallida en %s:%d.\n"
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr "Violación externa del protocolo detectada en %s:%d.\n"
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #, fuzzy
-#~ msgid "listen on specified port (default: 7776)"
-#~ msgstr "escuchar en el puerto especificado (predeterminado: 7777)"
+#~ msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+#~ msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
 
 #, fuzzy
-#~ msgid "XT transport listening on port %llu\n"
-#~ msgstr "Transporte TCP escuchando en el puerto %llu\n"
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "Imposible abrir el fichero de configuración '%s'.\n"
 
 #, fuzzy
-#~ msgid "XT transport not listening on any port (client only)\n"
+#~ msgid "enable adding the creation time to the metadata of the uploaded file"
 #~ msgstr ""
-#~ "Transporte TCP no escuchando en ningún puerto (únicamente cliente)\n"
+#~ "deshabilitar añadir tiempo de creación a los metadatos del fichero subido"
 
 #, fuzzy
-#~ msgid "XT transport advertises itself as being on port %llu\n"
-#~ msgstr "El transporte TCP anuncia que está en el puerto %llu\n"
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "«%s» no es una dirección IP válida.\n"
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr "# Sesiones TCP activas"
+#~ msgid "Specify a timeout for the lookup"
+#~ msgstr "Especificar el tipo del registro a buscar"
 
 #, fuzzy
-#~ msgid ""
-#~ "XU could not transmit message to `%s': Network seems down, please check "
-#~ "your network configuration\n"
-#~ msgstr ""
-#~ "UDP no pudo transmitir el mensaje a «%s»: La red parece caída, por favor, "
-#~ "compruebe su configuración de red\n"
+#~ msgid "Unable to parse CAA record string `%s'\n"
+#~ msgstr "No se pudo procesar la cadena de registro VPN «%s»\n"
 
 #, fuzzy
-#~ msgid ""
-#~ "XU could not transmit IPv6 message! Please check your network "
-#~ "configuration and disable IPv6 if your connection does not have a global "
-#~ "IPv6 address\n"
-#~ msgstr ""
-#~ "UDP no pudo transmitir el mensaje a «%s». Por favor, compruebe su "
-#~ "configuración de red y deshabilite IPv6 si su conexión carece de una "
-#~ "dirección IPv6 global\n"
+#~ msgid "reduce output"
+#~ msgstr "Sin salida innecesaria"
 
 #, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
+#~ msgid "The EGO to use"
+#~ msgstr "tamaño del mensaje"
 
 #, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "Se produjo un fallo al abrir los «sockets» UDP\n"
+#~ msgid "OpenID Connect REST API initialized\n"
+#~ msgstr "Conexión fallida\n"
 
 #, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
-#~ msgstr "Se produjo un fallo al crear una nueva firma"
+#~ msgid "CONFIG REST API initialized\n"
+#~ msgstr "Conexión fallida\n"
 
 #, fuzzy
-#~ msgid "Print information about DV state"
-#~ msgstr "Imprime información acerca del estado del ATS"
+#~ msgid "Option `%s' can't be used with other options.\n"
+#~ msgstr "La opción «%s» no tiene sentido sin la opción «%s».\n"
 
 #, fuzzy
 #~ msgid "Invalid tunnel owner `%s'\n"
@@ -9557,107 +9808,6 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ msgid "Provide information about a particular tunnel"
 #~ msgstr "proveer información acerca de un túnel en particular"
 
-#, fuzzy
-#~ msgid "Failed to store membership information!\n"
-#~ msgstr ""
-#~ "Se produjo un fallo al retomar la operación de publicación «%s»: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "¡Se produjo un fallo al configurar el túnel mesh!\n"
-
-#, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "Parámetro no válido «%s»\n"
-
-#, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "Se produjo un fallo al iniciar el demonio: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to get fragment!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to get message!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to get message fragment!\n"
-#~ msgstr "Se produjo un fallo al procesar un mensaje «HELLO»: mal formado\n"
-
-#, fuzzy
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "Se produjo un fallo al cargar el estado: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to begin synchronizing state!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to end synchronizing state!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr "¡Se produjo un fallo al obtener la clave de máquina!\n"
-
-#, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
-#~ msgstr "Imposible inicializar SQLite: %s.\n"
-
-#, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
-#~ msgstr "Se produjo un fallo al preparar la sentencia «%s»\n"
-
-#, fuzzy
-#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
-#~ msgstr "«%s» falló en %s: %d con el error: %s\n"
-
-#, fuzzy
-#~ msgid "SQLite database running\n"
-#~ msgstr "Base de datos sqlite ejecutándose\n"
-
-#, fuzzy
-#~ msgid "--place missing or invalid.\n"
-#~ msgstr "Parámetro no válido «%s»\n"
-
-#, fuzzy
-#~ msgid "name or public key of ego"
-#~ msgstr "Parámetro no válido «%s»\n"
-
-#, fuzzy
-#~ msgid "wait for incoming messages"
-#~ msgstr "Falló al entregar el mensaje '%s'.\n"
-
-#, fuzzy
-#~ msgid "GNS name"
-#~ msgstr "Mostrar el _nombre"
-
-#, fuzzy
-#~ msgid "method name"
-#~ msgstr "Mostrar el _nombre"
-
-#, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "número de mensajes a usar por iteración"
-
 #~ msgid "Could not resolve `%s' (%s): %s\n"
 #~ msgstr "No se pudo resolver «%s» (%s): %s\n"
 
@@ -9782,8 +9932,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Failed to run upnp client for port %u\n"
 #~ msgstr ""
-#~ "Se produjo un fallo al inicializar la clave de la máquina desde el par "
-#~ "%u\n"
+#~ "Se produjo un fallo al inicializar la clave de la máquina desde el par %"
+#~ "u\n"
 
 #~ msgid "malformed"
 #~ msgstr "mal formado"
@@ -10416,9 +10566,6 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ msgid "Template datacache running\n"
 #~ msgstr "Caché de datos de plantilla en ejecución\n"
 
-#~ msgid "`%s' must be installed SUID, refusing to run\n"
-#~ msgstr "«%s» debe ser instalado con SUID, se niega a arrancar\n"
-
 # Miguel: "Outbound" lo he traducido como salida en todo el texto.
 #~ msgid "Outbound quota configure for network `%s' is %llu\n"
 #~ msgstr "La cuota de salida configurada para la red «%s» es %llu\n"
@@ -10861,8 +11008,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ msgstr "Imprimir información acerca de tuneles mesh y pares."
 
 #~ msgid ""
-#~ "%s service is lacking key configuration settings (%s). Using default "
-#~ "(%u).\n"
+#~ "%s service is lacking key configuration settings (%s). Using default (%"
+#~ "u).\n"
 #~ msgstr ""
 #~ "El servicio %s carece de opciones de configuración de clave (%s). Usando "
 #~ "predeterminada (%u).\n"
@@ -10938,15 +11085,15 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ msgid ""
 #~ "Syntax error in topology specification at offset %llu, skipping bytes.\n"
 #~ msgstr ""
-#~ "Error de sintaxis en la especificación de topología en el desplazamiento "
-#~ "%llu, omitiendo bytes.\n"
+#~ "Error de sintaxis en la especificación de topología en el desplazamiento %"
+#~ "llu, omitiendo bytes.\n"
 
 #~ msgid ""
-#~ "Syntax error in topology specification at offset %llu, skipping bytes `"
-#~ "%s'.\n"
+#~ "Syntax error in topology specification at offset %llu, skipping bytes `%"
+#~ "s'.\n"
 #~ msgstr ""
-#~ "Error de sintaxis en la especificación de topología en el desplazamiento "
-#~ "%llu, omitiendo bytes «%s».\n"
+#~ "Error de sintaxis en la especificación de topología en el desplazamiento %"
+#~ "llu, omitiendo bytes «%s».\n"
 
 #~ msgid "ECC signature verification failed at %s:%d: %s\n"
 #~ msgstr "La verificación de firma ECC falló en %s:%d: %s\n"
@@ -11186,8 +11333,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ "File `%s' does not contain a valid private key (too long, %llu bytes).  "
 #~ "Deleting it.\n"
 #~ msgstr ""
-#~ "El fichero «%s» no contiene una clave privada válida (demasiado grande, "
-#~ "%llu bytes).  Borrándolo.\n"
+#~ "El fichero «%s» no contiene una clave privada válida (demasiado grande, %"
+#~ "llu bytes).  Borrándolo.\n"
 
 #~ msgid ""
 #~ "File `%s' does not contain a valid private key (failed decode, %llu "
@@ -11210,8 +11357,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ "File `%s' does not contain a valid private key (too long, %llu bytes).  "
 #~ "Renaming it.\n"
 #~ msgstr ""
-#~ "El fichero «%s» no contiene una clave privada válida (demasiado grande, "
-#~ "%llu bytes).  Renombrándolo.\n"
+#~ "El fichero «%s» no contiene una clave privada válida (demasiado grande, %"
+#~ "llu bytes).  Renombrándolo.\n"
 
 #~ msgid "gnunet-rsa failed"
 #~ msgstr "«gnunet-rsa» falló"
@@ -11312,13 +11459,13 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "Syntax error in blacklist file at offset %llu, giving up!\n"
 #~ msgstr ""
-#~ "¡Error de sintaxis en el fichero de la lista negra en el desplazamiento "
-#~ "%llu, rindiendose!\n"
+#~ "¡Error de sintaxis en el fichero de la lista negra en el desplazamiento %"
+#~ "llu, rindiendose!\n"
 
 #~ msgid "Syntax error in blacklist file at offset %llu, skipping bytes.\n"
 #~ msgstr ""
-#~ "Error de sintaxis en el fichero de la lista negra en el desplazamiento "
-#~ "%llu, omitiendo bytes.\n"
+#~ "Error de sintaxis en el fichero de la lista negra en el desplazamiento %"
+#~ "llu, omitiendo bytes.\n"
 
 #~ msgid "Found myself `%s' in blacklist (useless, ignored)\n"
 #~ msgstr "Me he encontrado «%s» en mi lista negra (inútil, ignorado)\n"
@@ -11382,8 +11529,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "Failed to open named pipe `%s' for writing: %s\n"
 #~ msgstr ""
-#~ "Se produjo un fallo al abrir el fichero (tubería) «%s» para escritura: "
-#~ "%s\n"
+#~ "Se produjo un fallo al abrir el fichero (tubería) «%s» para escritura: %"
+#~ "s\n"
 
 #~ msgid "session identifier"
 #~ msgstr "identificador de sesión"
@@ -11446,8 +11593,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "Error receiving response to `%s' request from ARM for service `%s'\n"
 #~ msgstr ""
-#~ "Error recibiendo respuesta a la petición «%s» del ARM para el servicio "
-#~ "«%s»\n"
+#~ "Error recibiendo respuesta a la petición «%s» del ARM para el servicio «%"
+#~ "s»\n"
 
 #~ msgid "Requesting termination of service `%s'.\n"
 #~ msgstr "Solicitando finalización del servicio «%s».\n"
@@ -11544,8 +11691,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #, fuzzy
 #~ msgid ""
-#~ "(%s) `%s' was confirmed that you and only you received from him or her: "
-#~ "%s\n"
+#~ "(%s) `%s' was confirmed that you and only you received from him or her: %"
+#~ "s\n"
 #~ msgstr ""
 #~ "(%s) «%s» confirmó que usted y sólo usted recibió de él o ella: %s\n"
 
@@ -11871,8 +12018,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ "Invalid value `%s' for option `%s' in section `%s': got %f, needed value "
 #~ "greater than 0\n"
 #~ msgstr ""
-#~ "Valor «%s» no válido para la opción «%s» en la sección «%s»: se obtuvo "
-#~ "%f, se necesitaba un valor mayor que 0\n"
+#~ "Valor «%s» no válido para la opción «%s» en la sección «%s»: se obtuvo %"
+#~ "f, se necesitaba un valor mayor que 0\n"
 
 #~ msgid "Connecting nodes in 2d torus topology: %u rows %u columns\n"
 #~ msgstr ""
@@ -12678,8 +12825,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Configuration unchanged, no need to save.\n"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #, fuzzy
 #~ msgid "Do you wish to save your new configuration?"
@@ -12710,8 +12857,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Configuration changed. Save?"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #, fuzzy
 #~ msgid "Error saving configuration."
@@ -12768,8 +12915,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Configuration was unchanged, no need to save.\n"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #~ msgid "Can't open Service Control Manager"
 #~ msgstr "Imposible abrir el Service Control Manager"
@@ -13029,8 +13176,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Existing key in file `%s' failed format check, creating new key.\n"
 #~ msgstr ""
-#~ "Se produjo un fallo al comprobar la clave local existente en el fichero "
-#~ "'%s', creando nueva clave local.\n"
+#~ "Se produjo un fallo al comprobar la clave local existente en el fichero '%"
+#~ "s', creando nueva clave local.\n"
 
 #, fuzzy
 #~ msgid "Creating new key for this nickname (this may take a while).\n"
@@ -13081,8 +13228,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ msgid ""
 #~ "Existing hostkey in file `%s' failed format check, creating new hostkey.\n"
 #~ msgstr ""
-#~ "Se produjo un fallo al comprobar la clave local existente en el fichero "
-#~ "'%s', creando nueva clave local.\n"
+#~ "Se produjo un fallo al comprobar la clave local existente en el fichero '%"
+#~ "s', creando nueva clave local.\n"
 
 #~ msgid "Done creating hostkey.\n"
 #~ msgstr "Correcto al crear la clave local.\n"
@@ -13314,8 +13461,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #~ "Unindexing of `%s' complete, %llu bytes took %llu seconds (%8.3f KiB/s).\n"
 #~ msgstr ""
 #~ "\n"
-#~ "El desindexado de '%s' se completó, %llu bytes tomaron %llu segundos "
-#~ "(%8.3f kbps).\n"
+#~ "El desindexado de '%s' se completó, %llu bytes tomaron %llu segundos (%"
+#~ "8.3f kbps).\n"
 
 #, fuzzy
 #~ msgid "Not enough arguments. You must specify a filename.\n"
@@ -13340,8 +13487,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Download of file `%s' complete.  Speed was %8.3f KiB per second.\n"
 #~ msgstr ""
-#~ "Descarga del fichero '%s' completada. La velocidad media fue "
-#~ "%8.3fkilobytes por segundo.\n"
+#~ "Descarga del fichero '%s' completada. La velocidad media fue %"
+#~ "8.3fkilobytes por segundo.\n"
 
 #~ msgid "Not enough arguments. You must specify a GNUnet file URI\n"
 #~ msgstr ""
@@ -13549,8 +13696,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "Configuration or GNUnet version changed.  You need to run `%s'!\n"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #~ msgid "The `%s' request received from client is malformed.\n"
 #~ msgstr "La petición '%s' recibida del cliente esta mal formada.\n"
@@ -13712,14 +13859,14 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 #, fuzzy
 #~ msgid "Configuration file that specifies the MySQL username and password"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #, fuzzy
 #~ msgid "Configuration of the MySQL database"
 #~ msgstr ""
-#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar "
-#~ "'%s'!\n"
+#~ "La configuración o la versión de GNUnet cambiaron.  ¡Debes ejecutar '%"
+#~ "s'!\n"
 
 #, fuzzy
 #~ msgid "MB of diskspace GNUnet can use for anonymous file sharing"
@@ -14417,8 +14564,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "%s: Rejected connection from blacklisted address %u.%u.%u.%u.\n"
 #~ msgstr ""
-#~ "%s: Conexión rechazada de una dirección de la \"lista negra\" %u.%u.%u."
-#~ "%u.\n"
+#~ "%s: Conexión rechazada de una dirección de la \"lista negra\" %u.%u.%u.%"
+#~ "u.\n"
 
 #~ msgid "Unexpected reply to `%s' operation.\n"
 #~ msgstr "Respuesta inesperada a la operación '%s'.\n"
@@ -14740,8 +14887,8 @@ msgstr "«%s» falló en el fichero «%s» en %s:%d con el error: %s\n"
 
 #~ msgid "gnunet-setup must have write-access to the configuration file `%s'\n"
 #~ msgstr ""
-#~ "gnunet-setup debe tener acceso de escritura al fichero de configuración "
-#~ "'%s'\n"
+#~ "gnunet-setup debe tener acceso de escritura al fichero de configuración '%"
+#~ "s'\n"
 
 #, fuzzy
 #~ msgid ""
index c2c43c5af2bc98255518f5effb67e8fd147fd12a..acc22f2863dcd252eca61a78947e69bc0a7f804b 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,95 +7,95 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2015-12-24 01:20+0100\n"
 "Last-Translator: Stéphane  Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
-"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 msgid "We disconnected from ARM before we could send a request"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 msgid "Unknown request status"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "%s est arrêté"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 #, fuzzy
 msgid "is starting"
 msgstr "%s est en cours de démarrage"
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "%s est en cours d'arrêt"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 #, fuzzy
 msgid "is starting already"
 msgstr "%s est déjà en cours de démarrage"
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "%s est déjà arrêté"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 #, fuzzy
 msgid "is started already"
 msgstr "%s est déjà démarré"
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "%s est déjà arrêté"
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 msgid "service is not known to ARM"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "Échec du démarrage de %s\n"
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "%.s Code d'erreur inconnu"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr ""
@@ -110,118 +110,119 @@ msgstr ""
 msgid "Failed to stop the ARM service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "Dernier message reçu de %s\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 msgid "Running services:\n"
 msgstr "Services en exécution :\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr "Arrêté %s.\n"
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, c-format
 msgid "Starting %s...\n"
 msgstr "En cous de démarrage %s…\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr "En cour d'arrêt %s…\n"
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 msgid "stop all GNUnet services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 msgid "start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 msgid "stop and start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 msgid "list currently running services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -230,30 +231,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -261,7 +268,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -269,7 +277,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
@@ -277,7 +286,8 @@ msgstr "Résolution de « %s » échouée : %s\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr ""
@@ -348,159 +358,25 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr "solveur utilisé"
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-msgid "print logging"
-msgstr "afficher le journal"
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "fornat invalide : « %s »\n"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
+msgstr "Arrêter la journalisation\n"
 
-#: src/ats/plugin_ats_mlp.c:2699
+#: src/ats-tests/ats-testing-log.c:892
 #, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_proportional.c:1164
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr "fornat invalide : « %s »\n"
+msgid "Start logging `%s'\n"
+msgstr "Démarrer la journalisation « %s »\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr "Arrêter la journalisation\n"
-
-#: src/ats-tests/ats-testing-log.c:892
-#, c-format
-msgid "Start logging `%s'\n"
-msgstr "Démarrer la journalisation « %s »\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -508,6 +384,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr "solveur utilisé"
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -623,100 +510,225 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:163
-msgid "description of the item to be sold"
-msgstr ""
-
-#: src/auction/gnunet-auction-create.c:169
-msgid "mapping of possible prices"
-msgstr ""
-
-#: src/auction/gnunet-auction-create.c:175
-msgid "max duration per round"
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:181
-msgid "duration until auction starts"
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:186
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
 msgid ""
-"number of items to sell\n"
-"0 for first price auction\n"
-">0 for vickrey/M+1st price auction"
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:193
-msgid "public auction outcome"
-msgstr ""
+#: src/ats/gnunet-ats-solver-eval.c:3306
+msgid "print logging"
+msgstr "afficher le journal"
 
-#: src/auction/gnunet-auction-create.c:198
-msgid "keep running in foreground until auction completes"
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:209
-msgid "create a new auction and start listening for bidders"
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
 msgstr ""
 
-#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
-#: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
-msgid "help text"
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, c-format
+msgid "Failed to initialize solver `%s'!\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:631
+#: src/ats/gnunet-service-ats_plugins.c:304
 #, c-format
-msgid "Invalid peer ID `%s'\n"
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:718
-msgid "Extra arguments are not applicable in combination with this option.\n"
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/ats/gnunet-service-ats_plugins.c:359
 #, c-format
-msgid "Invalid target `%s'\n"
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:829
-msgid "No action requested\n"
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:854
-msgid "Provide information about a particular connection"
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:858
-msgid "Activate echo mode"
+#: src/ats/plugin_ats_mlp.c:1870
+#, c-format
+msgid "Adding address for peer `%s' multiple times\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
-msgid "Listen for connections using a shared secret among sender and recipient"
+#: src/ats/plugin_ats_mlp.c:1914
+#, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
-msgid "Provide information about a patricular peer"
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:872
-msgid "Provide information about all peers"
-msgstr ""
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "fornat invalide : « %s »\n"
 
-#: src/cadet/gnunet-cadet.c:876
-msgid "Provide information about all tunnels"
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:523
-#: src/secretsharing/gnunet-secretsharing-profiler.c:610
-msgid "number of peers in consensus"
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:529
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
 msgid ""
-"how many peers (random selection without replacement) receive one value?"
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:535
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr "fornat invalide : « %s »\n"
+
+#: src/auction/gnunet-auction-create.c:163
+msgid "description of the item to be sold"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:169
+msgid "mapping of possible prices"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:175
+msgid "max duration per round"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:181
+msgid "duration until auction starts"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:186
+msgid ""
+"number of items to sell\n"
+"0 for first price auction\n"
+">0 for vickrey/M+1st price auction"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:193
+msgid "public auction outcome"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:198
+msgid "keep running in foreground until auction completes"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:209
+msgid "create a new auction and start listening for bidders"
+msgstr ""
+
+#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
+#: src/conversation/gnunet-conversation-test.c:254
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
+msgid "help text"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:631
+#, c-format
+msgid "Invalid peer ID `%s'\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:718
+msgid "Extra arguments are not applicable in combination with this option.\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:795
+#, c-format
+msgid "Invalid target `%s'\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:832
+msgid "No action requested\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:857
+msgid "Provide information about a particular connection"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:861
+msgid "Activate echo mode"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:866
+msgid "Listen for connections using a shared secret among sender and recipient"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:871
+msgid "Provide information about a patricular peer"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:875
+msgid "Provide information about all peers"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:879
+msgid "Provide information about all tunnels"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:523
+#: src/secretsharing/gnunet-secretsharing-profiler.c:610
+msgid "number of peers in consensus"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:529
+msgid ""
+"how many peers (random selection without replacement) receive one value?"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:535
 #: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
 #: src/set/gnunet-set-profiler.c:462
 msgid "number of values"
@@ -748,6 +760,28 @@ msgstr ""
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1001,30 +1035,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1148,7 +1160,7 @@ msgstr "ogg_stream_init() échoué.\n"
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr ""
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr ""
@@ -1172,46 +1184,46 @@ msgstr ""
 msgid "Could not start playback audio helper.\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 msgid "fresh connection"
 msgstr ""
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 msgid "key received"
 msgstr ""
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 msgid "connection established"
 msgstr ""
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "Déconnecté de"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "adresse inconnue"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr ""
@@ -1220,207 +1232,207 @@ msgstr ""
 msgid "Failed to connect to CORE service!\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 msgid "provide information about all current connections (continuously)"
 msgstr ""
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 msgid "Print information about connected peers."
 msgstr ""
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 msgid "# send requests dropped (disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, c-format
 msgid "# bytes of messages of type %u received"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 msgid "# messages discarded (session disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 msgid "# PAYLOAD dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 msgid "# PING messages transmitted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 msgid "# duplicate ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 msgid "# valid ephemeral keys received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 msgid "# PING messages received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 msgid "# PING messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 msgid "# PONG messages created"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 msgid "# sessions terminated by timeout"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 msgid "# keepalive messages sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 msgid "# PONG messages received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 msgid "# PONG messages dropped (connection down)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 msgid "# PONG messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 msgid "# PONG messages decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 msgid "# session keys confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 msgid "# timeouts prevented via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 msgid "# rekey operations confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 msgid "# DATA message dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 msgid "# sessions terminated by key expiration"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 msgid "# bytes dropped (duplicates)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 msgid "# bytes dropped (out of sequence)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 msgid "# bytes dropped (ancient message)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 msgid "# bytes of payload decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 msgid "# peers connected"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 msgid "# type map refreshes sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 msgid "# outdated typemap confirmations received"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 msgid "# valid typemap confirmations received"
 msgstr ""
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 msgid "# type maps received"
 msgstr ""
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1429,7 +1441,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr ""
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr ""
@@ -1527,28 +1539,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr ""
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, c-format
 msgid "Failed to connect to GNS\n"
 msgstr ""
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, c-format
 msgid "Failed to connect to namestore\n"
 msgstr ""
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "Résolution de « %s » échouée\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-msgid "GNS REST API initialized\n"
-msgstr ""
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 msgid "# bytes stored"
@@ -1590,19 +1598,21 @@ msgstr ""
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1612,6 +1622,7 @@ msgstr ""
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -1892,7 +1903,7 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -1906,20 +1917,22 @@ msgstr ""
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 msgid "Failed to drop table from database.\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr ""
 
@@ -1935,6 +1948,8 @@ msgstr ""
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr ""
@@ -1956,7 +1971,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 msgid "Sqlite database running\n"
 msgstr ""
 
@@ -2030,53 +2046,6 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-#, fuzzy
-msgid "number of peers to start"
-msgstr "nombre de valeurs"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:1009
-msgid "Measure quality and performance of the DHT service."
-msgstr ""
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2198,91 +2167,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2314,14 +2283,61 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 msgid "# DHT requests combined"
 msgstr ""
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+#, fuzzy
+msgid "number of peers to start"
+msgstr "nombre de valeurs"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+msgid "Measure quality and performance of the DHT service."
+msgstr ""
+
 #: src/dht/plugin_block_dht.c:189
 #, c-format
 msgid "Block not of type %u\n"
@@ -2397,13 +2413,17 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
+msgstr ""
+
+#: src/dv/gnunet-dv.c:175
+msgid "Print information about DV state"
 msgstr ""
 
 #: src/exit/gnunet-daemon-exit.c:960
@@ -2414,190 +2434,190 @@ msgstr ""
 msgid "# ICMP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 msgid "# UDP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 msgid "# Bytes received from CADET"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 msgid "# UDP IP-exit requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 msgid "# UDP service requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 msgid "# TCP service creation requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 msgid "# TCP DATA requests dropped (no session)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 msgid "# TCP data requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 msgid "# ICMP service requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 msgid "# Inbound CADET channels created"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 msgid "# Messages transmitted via cadet channels"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 msgid "# Packets received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 msgid "# Bytes received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr "Doit être un nombre"
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -2829,62 +2849,57 @@ msgstr ""
 msgid "Publishing failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Résolution de « %s » échouée : %s\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 msgid "error on index-start request to `fs' service"
 msgstr ""
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr ""
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr ""
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 msgid "could not connect to `fs' service"
 msgstr ""
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, c-format
 msgid "Recursive upload failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr ""
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr "pa_stream_new() échoué : %s\n"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -2949,149 +2964,149 @@ msgstr ""
 msgid "Failed to compute hash of file."
 msgstr ""
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr ""
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr ""
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr ""
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr ""
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "Argument invalide « %s »\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr "Type d’URI non reconnu"
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr ""
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, c-format
 msgid "Failed to load state: %s\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, c-format
 msgid "Failed to save state to file %s\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr "Publication de « %s » terminée\n"
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, c-format
 msgid "Publishing `%s'\n"
 msgstr "Publication de « %s »\n"
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, c-format
 msgid "Failed to run `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr ""
 
@@ -3159,7 +3174,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr ""
@@ -3182,12 +3197,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr ""
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr ""
 
@@ -3195,7 +3210,7 @@ msgstr ""
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr ""
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3221,14 +3236,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-msgid "Special file-sharing operations"
-msgstr ""
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3245,6 +3252,14 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+msgid "Special file-sharing operations"
+msgstr ""
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3329,8 +3344,9 @@ msgid "Meta data extraction has finished.\n"
 msgstr ""
 
 #: src/fs/gnunet-publish.c:687
-msgid "Error scanning directory.\n"
-msgstr ""
+#, fuzzy
+msgid "Internal error scanning directory.\n"
+msgstr "Erreur interne."
 
 #: src/fs/gnunet-publish.c:715
 #, c-format
@@ -3369,15 +3385,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr ""
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr ""
 
-#: src/fs/gnunet-publish.c:911
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3436,32 +3448,32 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, c-format
 msgid "Error searching: %s.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 msgid "Could not create keyword URI from arguments.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 msgid "Could not start searching.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr ""
 
@@ -3498,17 +3510,17 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 msgid "# replies received via cadet"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 msgid "# replies received via cadet dropped"
 msgstr ""
 
@@ -3677,106 +3689,106 @@ msgstr ""
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 msgid "# Pending requests created"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 msgid "# Pending requests active"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 msgid "# replies received and matched"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 msgid "# storage requests dropped due to high load"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 msgid "# Replies received from DHT"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 msgid "# Replies received from CADET"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 msgid "# GAP PUT messages received"
 msgstr ""
 
@@ -3811,7 +3823,7 @@ msgstr ""
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -3843,38 +3855,38 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 msgid "No DNS server specified!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -3890,36 +3902,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-msgid "Specify the type of the record to lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:272
-msgid "Specify a timeout for the lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-msgid "GNUnet GNS resolver tool"
-msgstr ""
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -3939,121 +3921,142 @@ msgstr ""
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 msgid "Failed to pass client to MHD\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, c-format
 msgid "Unsupported socks version %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, c-format
 msgid "Unsupported socks command %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+msgid "Specify the type of the record to lookup"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+msgid "GNUnet GNS resolver tool"
+msgstr ""
+
 #: src/gns/gnunet-service-gns.c:506
 msgid "Properly base32-encoded public key required"
 msgstr ""
@@ -4063,8 +4066,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr ""
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 msgid "Could not connect to DHT!\n"
 msgstr ""
 
@@ -4154,81 +4157,72 @@ msgstr ""
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr ""
 
-#: src/gns/plugin_rest_gns.c:442
-msgid "Gns REST API initialized\n"
-msgstr ""
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "Résolution de « %s » échouée\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4268,254 +4262,254 @@ msgstr ""
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr ""
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr ""
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, fuzzy, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr "Extension « %s » introuvable\n"
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 msgid "# active connections"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 msgid "bytes in hostlist"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr ""
 
@@ -4527,178 +4521,168 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 msgid "hostlist requests processed"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 msgid "# hostlist advertisements send"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, c-format
 msgid "Failed to create ego: %s\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-#, fuzzy
-msgid "reduce output"
-msgstr "sortie verbeuse"
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-msgid "display private keys as well"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr ""
 
-#: src/identity/plugin_rest_identity.c:1311
-msgid "Identity REST API initialized\n"
-msgstr ""
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Résolution de « %s » échouée : %s\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr ""
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr ""
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr ""
@@ -4708,7 +4692,7 @@ msgstr ""
 msgid "No records found for `%s'"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -4728,15 +4712,15 @@ msgstr "fornat invalide : « %s »\n"
 msgid "You must specify a name\n"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
 #: src/namecache/gnunet-namecache.c:238
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 msgid "GNUnet zone manipulation tool"
 msgstr ""
 
@@ -4750,8 +4734,8 @@ msgstr ""
 
 #: src/namecache/plugin_namecache_flat.c:121
 #: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
 #: src/peerstore/plugin_peerstore_flat.c:379
 #: src/peerstore/plugin_peerstore_flat.c:538
 #, c-format
@@ -4759,13 +4743,14 @@ msgid "Unable to initialize file: %s.\n"
 msgstr ""
 
 #: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
+#: src/namestore/plugin_namestore_heap.c:159
 #: src/peerstore/plugin_peerstore_flat.c:394
 #, c-format
 msgid "Unable to get filesize: %s.\n"
 msgstr ""
 
 #: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
 #: src/peerstore/plugin_peerstore_flat.c:406
 #, fuzzy, c-format
 msgid "Unable to read file: %s.\n"
@@ -4783,317 +4768,291 @@ msgstr ""
 msgid "Failed to setup database at `%s'\n"
 msgstr "Échec du démarrage de %s\n"
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
+msgid "Failed to start HTTP server\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
+msgid "Failed to connect to identity\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr ""
+
+#: src/namestore/gnunet-namestore.c:341
 #, c-format
 msgid "Adding record failed: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr "ajouter"
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, c-format
 msgid "Unsupported type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, c-format
 msgid "Invalid time format `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr "supprimer"
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "URI invalide « %s »\n"
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, c-format
 msgid "Invalid nick `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, c-format
 msgid "No default ego configured in identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, c-format
 msgid "Cannot connect to identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Commande « %s » inconnue\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr "ajouter un enregistrement"
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr "suprimer un enregistrement"
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr "afficher les enregistrements"
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 msgid "set the desired nick name for the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 msgid "monitor changes in the namestore"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 msgid "determine our name for the given PKEY"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 msgid "name of the ego controlling the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-msgid "Failed to start HTTP server\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-msgid "Failed to connect to identity\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
-msgid "Flat file database running\n"
-msgstr ""
-
-#: src/namestore/plugin_rest_namestore.c:919
-msgid "Namestore REST API initialized\n"
+#: src/namestore/plugin_namestore_heap.c:778
+msgid "heap file database running\n"
 msgstr ""
 
 #: src/nat-auto/gnunet-nat-auto.c:193
@@ -5136,7 +5095,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr ""
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 msgid "Failed to connect to `gnunet-nat-server'\n"
 msgstr ""
@@ -5172,38 +5131,38 @@ msgstr ""
 msgid "Detected external IP `%s'\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 msgid "upnpc not found\n"
 msgstr "upnpc introuvable\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5319,42 +5278,42 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 msgid "Connection reversal request failed\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, c-format
 msgid "Failed to start %s\n"
 msgstr "Échec du démarrage de %s\n"
@@ -5367,10 +5326,6 @@ msgstr ""
 msgid "`upnpc' command not found\n"
 msgstr ""
 
-#: src/nse/gnunet-nse.c:123
-msgid "Show network size estimates from NSE service."
-msgstr ""
-
 #: src/nse/gnunet-nse-profiler.c:849
 msgid "limit to the number of connections to NSE services, 0 for none"
 msgstr ""
@@ -5395,99 +5350,49 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr ""
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
-msgid "Value is too large.\n"
+#: src/nse/gnunet-nse.c:122
+msgid "Show network size estimates from NSE service."
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, c-format
-msgid "Removing expired address of transport `%s'\n"
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
+msgid "Value is too large.\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:313
+#: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
+msgid "%sPeer `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
+#: src/peerinfo-tool/gnunet-peerinfo.c:246
 #, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
+msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:492
+#: src/peerinfo-tool/gnunet-peerinfo.c:299
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:658
+#: src/peerinfo-tool/gnunet-peerinfo.c:466
 #, c-format
-msgid "Scanning directory `%s'\n"
+msgid "Failure: Received invalid %s\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:666
+#: src/peerinfo-tool/gnunet-peerinfo.c:480
 #, c-format
-msgid "Still no peers found in `%s'!\n"
+msgid "Failed to write HELLO with %u bytes to file `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
+#: src/peerinfo-tool/gnunet-peerinfo.c:499
 #, c-format
-msgid "Cleaning up directory `%s'\n"
+msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
+#: src/peerinfo-tool/gnunet-peerinfo.c:799
 #, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
-msgstr ""
-
-#: src/peerinfo/peerinfo_api.c:220
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:239
-#, c-format
-msgid "%sPeer `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:246
-#, c-format
-msgid "\tExpires: %s \t %s\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
-#, c-format
-msgid "Failure: Cannot convert address to string for peer `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:466
-#, c-format
-msgid "Failure: Received invalid %s\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:480
-#, c-format
-msgid "Failed to write HELLO with %u bytes to file `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:499
-#, c-format
-msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:799
-#, c-format
-msgid "I am peer `%s'.\n"
+msgid "I am peer `%s'.\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:843
@@ -5544,32 +5449,83 @@ msgstr ""
 msgid "Failed to load transport plugin for `%s'\n"
 msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
-msgid "Peerinfo REST API initialized\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, c-format
+msgid "Scanning directory `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:667
+#, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
+#, c-format
+msgid "Cleaning up directory `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
+
+#: src/peerinfo/peerinfo_api.c:220
+msgid "Failed to receive response from `PEERINFO' service."
 msgstr ""
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "Impossible d’ouvrir « %s ».\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 msgid "Received a malformed response from service."
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5577,6 +5533,8 @@ msgid ""
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5593,6 +5551,111 @@ msgstr ""
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr ""
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "Argument invalide « %s »\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+msgid "Tried to set invalid state variable name!\n"
+msgstr ""
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "Résolution de « %s » échouée\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+msgid "Tried to get invalid state variable name!\n"
+msgstr ""
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "Résolution de « %s » échouée\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Échec du démarrage de %s\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr ""
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+msgid "SQLite database running\n"
+msgstr ""
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr ""
@@ -5637,93 +5700,73 @@ msgstr ""
 msgid "# DNS replies dropped (too late?)"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, c-format
 msgid "Ego is required\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, c-format
 msgid "Requesting party key is required!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-msgid "The EGO to use"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-msgid "OpenID Connect REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-msgid "Identity Provider REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "Échec du démarrage de %s\n"
@@ -5812,16 +5855,41 @@ msgstr ""
 msgid "Search string `%s' is too long!\n"
 msgstr ""
 
-#: src/rest/gnunet-rest-server.c:1039
-msgid "GNUnet REST server"
+#: src/rest-plugins/plugin_rest_copying.c:209
+msgid "COPYING REST API initialized\n"
 msgstr ""
 
-#: src/rest/plugin_rest_config.c:265
-msgid "CONFIG REST API initialized\n"
+#: src/rest-plugins/plugin_rest_credential.c:1128
+msgid "GNS REST API initialized\n"
 msgstr ""
 
-#: src/rest/plugin_rest_copying.c:209
-msgid "COPYING REST API initialized\n"
+#: src/rest-plugins/plugin_rest_gns.c:452
+msgid "Gns REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+msgid "Identity REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+msgid "Namestore REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+msgid "Identity Provider REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+msgid "Peerinfo REST API initialized\n"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:944
+msgid "GNUnet REST server"
 msgstr ""
 
 #: src/revocation/gnunet-revocation.c:129
@@ -5870,57 +5938,57 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, c-format
 msgid "Public key `%s' malformed\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 msgid "No filename to store revocation certificate given.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 msgid "No action specified. Nothing to do.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -5949,39 +6017,39 @@ msgstr ""
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 msgid "Could not open revocation database file!"
 msgstr ""
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 msgid "timeout for the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "nombre de valeurs"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 msgid "Measure quality and performance of the RPS service."
 msgstr ""
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 msgid "You must specify at least one message ID to check!\n"
 msgstr ""
@@ -6032,80 +6100,203 @@ msgstr ""
 msgid "Transaction ID shared with peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-scalarproduct.c:379
-msgid "Calculate the Vectorproduct with a GNUnet peer."
+#: src/scalarproduct/gnunet-scalarproduct.c:379
+msgid "Calculate the Vectorproduct with a GNUnet peer."
+msgstr ""
+
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
+msgid "Connect to CADET failed\n"
+msgstr ""
+
+#: src/scalarproduct/scalarproduct_api.c:185
+msgid "Keys given to SCALARPRODUCT not unique!\n"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:616
+msgid "dkg start delay"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:622
+msgid "dkg timeout"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:628
+msgid "threshold"
+msgstr "threshold"
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:633
+msgid "also profile decryption"
+msgstr ""
+
+#: src/set/gnunet-service-set.c:2005
+#, fuzzy
+msgid "Could not connect to CADET service\n"
+msgstr "Impossible d’ouvrir « %s ».\n"
+
+#: src/set/gnunet-set-ibf-profiler.c:252
+msgid "number of element in set A-B"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:258
+msgid "number of element in set B-A"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:264
+msgid "number of common elements in A and B"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:270
+msgid "hash num"
+msgstr "numéro de hash"
+
+#: src/set/gnunet-set-ibf-profiler.c:276
+msgid "ibf size"
+msgstr "taille ibz"
+
+#: src/set/gnunet-set-profiler.c:444
+msgid "use byzantine mode"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:450
+msgid "force sending full set"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:456
+msgid "number delta operation"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:468
+msgid "operation to execute"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:474
+msgid "element size"
+msgstr ""
+
+#: src/social/gnunet-social.c:1166
+msgid "--place missing or invalid.\n"
+msgstr ""
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
-msgid "Connect to CADET failed\n"
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
 msgstr ""
 
-#: src/scalarproduct/scalarproduct_api.c:185
-msgid "Keys given to SCALARPRODUCT not unique!\n"
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:616
-msgid "dkg start delay"
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:622
-msgid "dkg timeout"
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:628
-msgid "threshold"
-msgstr "threshold"
+#: src/social/gnunet-social.c:1304
+msgid "name or public key of ego"
+msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:633
-msgid "also profile decryption"
+#: src/social/gnunet-social.c:1309
+msgid "wait for incoming messages"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
-#, fuzzy
-msgid "Could not connect to CADET service\n"
-msgstr "Impossible d’ouvrir « %s ».\n"
+#: src/social/gnunet-social.c:1315
+msgid "GNS name"
+msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:267
-msgid "number of element in set A-B"
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:273
-msgid "number of element in set B-A"
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:280
-msgid "number of common elements in A and B"
+#: src/social/gnunet-social.c:1333
+msgid "method name"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
-msgid "hash num"
-msgstr "numéro de hash"
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "nombre de valeurs"
 
-#: src/set/gnunet-set-ibf-profiler.c:292
-msgid "ibf size"
-msgstr "taille ibz"
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
 
-#: src/set/gnunet-set-profiler.c:444
-msgid "use byzantine mode"
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:450
-msgid "force sending full set"
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:456
-msgid "number delta operation"
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:468
-msgid "operation to execute"
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:474
-msgid "element size"
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
 msgstr ""
 
 #: src/sq/sq.c:54
@@ -6132,92 +6323,92 @@ msgstr ""
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 msgid "Failed to obtain statistics.\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "Argument invalide « %s »\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr ""
 
@@ -6268,7 +6459,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr ""
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6307,7 +6498,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6377,27 +6568,27 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr "%.s Code d'erreur inconnu"
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:118
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:241
-#, c-format
-msgid "Spawning process `%s'\n"
-msgstr ""
-
-#: src/testbed/gnunet-testbed-profiler.c:287
+#: src/testbed/gnunet-testbed-profiler.c:289
 msgid "tolerate COUNT number of continious timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:291
+#: src/testbed/gnunet-testbed-profiler.c:294
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/testbed_api.c:400
+#: src/testbed/gnunet_testbed_mpi_spawn.c:118
+msgid "Waiting for child to exit.\n"
+msgstr ""
+
+#: src/testbed/gnunet_testbed_mpi_spawn.c:241
+#, c-format
+msgid "Spawning process `%s'\n"
+msgstr ""
+
+#: src/testbed/testbed_api.c:410
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr ""
@@ -6417,7 +6608,7 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6570,47 +6761,47 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr ""
@@ -6625,139 +6816,139 @@ msgstr ""
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 msgid "# connect requests issued to ATS"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 msgid "# HELLO messages gossipped"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 msgid "# friends connected"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 msgid "# friends in configuration"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 msgid "# HELLO messages received"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 msgid "# bytes payload discarded due to not connected peer"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 msgid "# bytes total received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 msgid "# bytes payload received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -6767,186 +6958,186 @@ msgstr ""
 msgid "# session creation failed"
 msgstr "# Session TCP active"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 msgid "# DISCONNECT messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 msgid "# bytes in message queue for other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 msgid "# messages transmitted to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 msgid "# transmission failures for messages to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 msgid "# messages discarded due to lack of neighbour record"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 msgid "# bandwidth quota violations by other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "Résolution de « %s » échouée\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 msgid "# SYN messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Échec du démarrage de %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 msgid "# SYN_ACK messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Échec du démarrage de %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 msgid "# SYN messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 msgid "# SYN_ACK messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 msgid "# ACK messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 msgid "# unexpected ACK messages"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 msgid "# quota messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 msgid "# QUOTA messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 msgid "# DISCONNECT messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 msgid "# disconnected from peer upon explicit request"
 msgstr ""
 
@@ -6981,7 +7172,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 msgid "# validations running"
 msgstr ""
 
@@ -7005,263 +7196,265 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 msgid "# PING message for different peer received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 msgid "# HELLOs given to peerinfo"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+msgid "receive data from peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:626
+msgid "iterations"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:631
+#, fuzzy
+msgid "number of messages to send"
+msgstr "nombre de valeurs"
+
+#: src/transport/gnunet-transport-profiler.c:636
+msgid "message size to use"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+msgid "Direct access to transport service."
+msgstr ""
+
+#: src/transport/gnunet-transport.c:413
 #, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, c-format
 msgid "Transmitting %u bytes\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 msgid "Connected to"
 msgstr "Connecté à"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 msgid "Disconnected from"
 msgstr "Déconnecté de"
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, fuzzy, c-format
 msgid "Received %u bytes\n"
 msgstr "%s message(s) reçu(s)\n"
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 msgid "Failed to connect to transport service\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 msgid "print information for all peers (instead of only connected peers)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 msgid "disconnect from a peer"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 msgid "provide information about all current connections (once)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 msgid "do not resolve hostnames"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-msgid "Direct access to transport service."
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-msgid "receive data from peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:586
-msgid "iterations"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "nombre de valeurs"
-
-#: src/transport/gnunet-transport-profiler.c:596
-msgid "message size to use"
-msgstr ""
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr ""
@@ -7310,6 +7503,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7407,114 +7601,126 @@ msgstr ""
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 msgid "# TCP sessions active"
 msgstr "# Session TCP active"
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 msgid "# bytes currently in TCP buffers"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 msgid "# bytes discarded by TCP (timeout)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 msgid "# bytes transmitted via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 msgid "# TCP WELCOME messages received"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr "# Session TCP active"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 msgid "# TCP server connect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 msgid "Failed to start service.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7535,6 +7741,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7544,15 +7751,19 @@ msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "adresse invalide"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "adresse invalide"
@@ -7561,6 +7772,20 @@ msgstr "adresse invalide"
 msgid "Failed to create UDP network sockets\n"
 msgstr ""
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+
 #: src/transport/plugin_transport_unix.c:1416
 #, c-format
 msgid "Cannot bind to `%s'\n"
@@ -7628,6 +7853,54 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr "# Session TCP active"
 
+#: src/transport/plugin_transport_xt.c:4010
+#, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4014
+msgid "XT transport not listening on any port (client only)\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4018
+#, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# Session TCP active"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "Résolution de « %s » échouée : %s\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "Résolution de « %s » échouée : %s\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "Résolution de « %s » échouée : %s\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, c-format
 msgid "Access denied to `%s'\n"
@@ -7638,17 +7911,17 @@ msgstr ""
 msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr ""
@@ -7660,7 +7933,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -7670,27 +7943,27 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -7705,45 +7978,44 @@ msgstr ""
 msgid "Service `%s' runs at %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr "Aucun utilisateur trouvé"
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 msgid "Malformed configuration, exit ...\n"
 msgstr ""
 
@@ -7752,7 +8024,7 @@ msgstr ""
 msgid "Could not access configuration file `%s'\n"
 msgstr ""
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -7785,67 +8057,67 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "AVERTISSEMENT"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "ERREUR"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr "AUCUN"
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr "INVALIDE"
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr "adresse inconnue"
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr "adresse invalide"
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -7892,26 +8164,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr ""
@@ -7944,7 +8216,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr ""
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr ""
@@ -7959,7 +8231,7 @@ msgstr ""
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr ""
@@ -7969,7 +8241,7 @@ msgstr ""
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr ""
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr ""
@@ -7994,7 +8266,7 @@ msgstr "Résolution de « %s » échouée : %s\n"
 msgid "Sent DNS request to %s\n"
 msgstr ""
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr ""
@@ -8004,177 +8276,168 @@ msgstr ""
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr ""
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr ""
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr ""
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr ""
 
-#: src/util/getopt.c:987
-#, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr ""
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr ""
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr ""
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr ""
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, c-format
 msgid "%s or %s argument is required\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 msgid "print available configuration sections"
 msgstr ""
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 msgid "Manipulate GNUnet configuration files"
 msgstr ""
 
@@ -8183,24 +8446,24 @@ msgstr ""
 msgid "Failed to open `%s': %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, c-format
 msgid ""
 "\n"
 "Failed to write to `%s': %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, c-format
 msgid ""
 "\n"
@@ -8209,91 +8472,64 @@ msgstr ""
 "\n"
 "Terminé !\n"
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 msgid "Manipulate GNUnet private ECC key files"
 msgstr ""
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8302,41 +8538,56 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 msgid "Manipulate GNUnet proof of work files"
 msgstr ""
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8355,12 +8606,12 @@ msgstr ""
 msgid "Error writing to `%s': %s\n"
 msgstr ""
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8373,22 +8624,22 @@ msgid ""
 "variable.\n"
 msgstr ""
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr ""
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr ""
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8412,17 +8663,17 @@ msgstr ""
 msgid "Could not determine plugin installation path.\n"
 msgstr ""
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "fornat invalide : « %s »\n"
@@ -8465,16 +8716,16 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8482,12 +8733,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr ""
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8496,223 +8747,223 @@ msgstr ""
 msgid "b"
 msgstr "o"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr "µs"
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr "perpetuel"
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr "0 ms"
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "ms"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "s"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "m"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "h"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 msgid "day"
 msgstr "jour"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 msgid "days"
 msgstr "jours"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr "fin du temps"
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr ""
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr ""
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr ""
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr ""
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr ""
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr ""
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 msgid "# Active channels"
 msgstr "# Canaux actifs"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 msgid "# ICMP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 msgid "# UDP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 msgid "# TCP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 msgid "# Cadet channels created"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 msgid "# Packets dropped (channel not yet online)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 msgid "# Packets received from TUN interface"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 msgid "# Active destinations"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 msgid "Must specify valid IPv6 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 msgid "Must specify valid IPv4 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -8781,75 +9032,43 @@ msgstr ""
 msgid "Setup tunnels via VPN."
 msgstr "Configurer des tunnels via VPN."
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 msgid "Failed to connect to the namestore!\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "opus_encode_float() échoué : %s. Annulation\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr ""
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr "# Session TCP active"
-
-#, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "Résolution de « %s » échouée : %s\n"
-
-#, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "Résolution de « %s » échouée : %s\n"
-
-#, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
+#~ msgid "Can not index file `%s': %s.\n"
 #~ msgstr "Résolution de « %s » échouée : %s\n"
 
 #, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "Argument invalide « %s »\n"
-
-#, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "Échec du démarrage de %s\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr "Échec du démarrage de %s\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "Échec du démarrage de %s\n"
-
-#, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
+#~ msgid "Unable to parse CAA record string `%s'\n"
 #~ msgstr "Résolution de « %s » échouée\n"
 
 #, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
-#~ msgstr "Échec du démarrage de %s\n"
-
-#, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "nombre de valeurs"
+#~ msgid "reduce output"
+#~ msgstr "sortie verbeuse"
 
 #, fuzzy
 #~ msgid "Unable to connect to Postgres database '%s': %s\n"
@@ -8925,10 +9144,6 @@ msgstr ""
 #~ msgid "malformed"
 #~ msgstr "malformé"
 
-#, fuzzy
-#~ msgid "Failed to start resolver!\n"
-#~ msgstr "Échec du démarrage de %s\n"
-
 #~ msgid "Benchmarking done\n"
 #~ msgstr "Benchmark terminé\n"
 
@@ -8938,7 +9153,3 @@ msgstr ""
 
 #~ msgid "unknown error"
 #~ msgstr "erreur unconnue."
-
-#, fuzzy
-#~ msgid "Failed to setup cadet channel!\n"
-#~ msgstr "Échec du démarrage de %s\n"
index 545aa2a085546ac5c36393f599488ce4db22fbbc..cbadc23752abada5b6ccfd716fb8ea66cec152ab 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -8,94 +8,94 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2019-04-23 20:58+0200\n"
 "Last-Translator: Sebastiano Pistore <SebastianoPistore.info@protonmail.ch>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
-"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
 "X-Generator: Poedit 2.2.1\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr "Messaggio inviato con successo"
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 msgid "We disconnected from ARM before we could send a request"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 msgid "Unknown request status"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "# elementi memorizzati"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 msgid "is starting"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "# elementi memorizzati"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 msgid "is starting already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "# elementi memorizzati"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 msgid "is started already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "# elementi memorizzati"
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 msgid "service is not known to ARM"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 msgid "service failed to start"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "Comando `%s' sconosciuto.\n"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr ""
@@ -110,118 +110,119 @@ msgstr ""
 msgid "Failed to stop the ARM service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 msgid "Running services:\n"
 msgstr "Servizi in esecuzione:\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr "%s arrestato.\n"
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, c-format
 msgid "Starting %s...\n"
 msgstr "Avvio di %s in corso...\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr "Arresto di %s in corso...\n"
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 msgid "stop all GNUnet services"
 msgstr "arresta tutti i servizi GNUnet"
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 msgid "start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 msgid "stop and start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 msgid "list currently running services"
 msgstr "elenca i servizi in esecuzione"
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -230,30 +231,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -261,7 +268,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -269,7 +277,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr ""
@@ -277,7 +286,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr ""
@@ -348,159 +358,25 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-msgid "print logging"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2699
-#, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
 msgstr ""
 
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, c-format
-msgid "Invalid %s configuration %f\n"
+msgid "Start logging `%s'\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr ""
-
-#: src/ats-tests/ats-testing-log.c:892
-#, c-format
-msgid "Start logging `%s'\n"
-msgstr ""
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -508,6 +384,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr ""
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -624,106 +511,231 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:163
-msgid "description of the item to be sold"
-msgstr ""
-
-#: src/auction/gnunet-auction-create.c:169
-msgid "mapping of possible prices"
-msgstr ""
-
-#: src/auction/gnunet-auction-create.c:175
-msgid "max duration per round"
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:181
-msgid "duration until auction starts"
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:186
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
 msgid ""
-"number of items to sell\n"
-"0 for first price auction\n"
-">0 for vickrey/M+1st price auction"
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:193
-msgid "public auction outcome"
+#: src/ats/gnunet-ats-solver-eval.c:3306
+msgid "print logging"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:198
-msgid "keep running in foreground until auction completes"
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
 msgstr ""
 
-#: src/auction/gnunet-auction-create.c:209
-msgid "create a new auction and start listening for bidders"
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
 msgstr ""
 
-#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
-#: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
-msgid "help text"
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, c-format
+msgid "Failed to initialize solver `%s'!\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:631
+#: src/ats/gnunet-service-ats_plugins.c:304
 #, c-format
-msgid "Invalid peer ID `%s'\n"
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:718
-msgid "Extra arguments are not applicable in combination with this option.\n"
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/ats/gnunet-service-ats_plugins.c:359
 #, c-format
-msgid "Invalid target `%s'\n"
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:829
-msgid "No action requested\n"
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:854
-msgid "Provide information about a particular connection"
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:858
-msgid "Activate echo mode"
+#: src/ats/plugin_ats_mlp.c:1870
+#, c-format
+msgid "Adding address for peer `%s' multiple times\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
-msgid "Listen for connections using a shared secret among sender and recipient"
+#: src/ats/plugin_ats_mlp.c:1914
+#, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
-msgid "Provide information about a patricular peer"
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:872
-msgid "Provide information about all peers"
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, c-format
+msgid "Invalid %s configuration %f \n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:876
-msgid "Provide information about all tunnels"
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:523
-#: src/secretsharing/gnunet-secretsharing-profiler.c:610
-msgid "number of peers in consensus"
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:529
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
 msgid ""
-"how many peers (random selection without replacement) receive one value?"
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:535
-#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
-#: src/set/gnunet-set-profiler.c:462
-msgid "number of values"
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
 msgstr ""
 
-#: src/consensus/gnunet-consensus-profiler.c:541
+#: src/ats/plugin_ats_proportional.c:1164
+#, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:163
+msgid "description of the item to be sold"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:169
+msgid "mapping of possible prices"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:175
+msgid "max duration per round"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:181
+msgid "duration until auction starts"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:186
+msgid ""
+"number of items to sell\n"
+"0 for first price auction\n"
+">0 for vickrey/M+1st price auction"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:193
+msgid "public auction outcome"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:198
+msgid "keep running in foreground until auction completes"
+msgstr ""
+
+#: src/auction/gnunet-auction-create.c:209
+msgid "create a new auction and start listening for bidders"
+msgstr ""
+
+#: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
+#: src/conversation/gnunet-conversation-test.c:254
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
+msgid "help text"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:631
+#, c-format
+msgid "Invalid peer ID `%s'\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:718
+msgid "Extra arguments are not applicable in combination with this option.\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:795
+#, c-format
+msgid "Invalid target `%s'\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:832
+msgid "No action requested\n"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:857
+msgid "Provide information about a particular connection"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:861
+msgid "Activate echo mode"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:866
+msgid "Listen for connections using a shared secret among sender and recipient"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:871
+msgid "Provide information about a patricular peer"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:875
+msgid "Provide information about all peers"
+msgstr ""
+
+#: src/cadet/gnunet-cadet.c:879
+msgid "Provide information about all tunnels"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:523
+#: src/secretsharing/gnunet-secretsharing-profiler.c:610
+msgid "number of peers in consensus"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:529
+msgid ""
+"how many peers (random selection without replacement) receive one value?"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:535
+#: src/set/gnunet-set-profiler.c:433 src/set/gnunet-set-profiler.c:439
+#: src/set/gnunet-set-profiler.c:462
+msgid "number of values"
+msgstr ""
+
+#: src/consensus/gnunet-consensus-profiler.c:541
 msgid "consensus timeout"
 msgstr ""
 
@@ -749,6 +761,28 @@ msgstr ""
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1002,30 +1036,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1149,7 +1161,7 @@ msgstr ""
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr "Generazione statistiche fallita\n"
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr ""
@@ -1173,47 +1185,47 @@ msgstr ""
 msgid "Could not start playback audio helper.\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr "# amici connessi"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 #, fuzzy
 msgid "key received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 msgid "connection established"
 msgstr "connessione stabilita"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "# amici connessi"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 msgid "unknown state"
 msgstr "stato sconosciuto"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr ""
@@ -1222,211 +1234,211 @@ msgstr ""
 msgid "Failed to connect to CORE service!\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 msgid "provide information about all current connections (continuously)"
 msgstr ""
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 msgid "Print information about connected peers."
 msgstr ""
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 msgid "# send requests dropped (disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, c-format
 msgid "# bytes of messages of type %u received"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 msgid "# messages discarded (session disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "Avvio del servizio '%s' in corso\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr "# byte crittografati"
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 msgid "# PAYLOAD dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 msgid "# PING messages transmitted"
 msgstr "# Messaggi PING trasmessi"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 #, fuzzy
 msgid "# duplicate ephemeral keys ignored"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 #, fuzzy
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr "# messaggi SYN ricevuti"
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 #, fuzzy
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr "# messaggi SYN ricevuti"
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 msgid "# PING messages received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 msgid "# PING messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 msgid "# PONG messages created"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 msgid "# sessions terminated by timeout"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 msgid "# keepalive messages sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 msgid "# PONG messages received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 msgid "# PONG messages dropped (connection down)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 msgid "# PONG messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 msgid "# PONG messages decrypted"
 msgstr "# messaggi PONG decrittati"
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 msgid "# session keys confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 msgid "# timeouts prevented via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 msgid "# rekey operations confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 msgid "# DATA message dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 msgid "# sessions terminated by key expiration"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 msgid "# bytes dropped (duplicates)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 msgid "# bytes dropped (out of sequence)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 msgid "# bytes dropped (ancient message)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 msgid "# bytes of payload decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 msgid "# peers connected"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 msgid "# type map refreshes sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 msgid "# outdated typemap confirmations received"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 msgid "# valid typemap confirmations received"
 msgstr ""
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 msgid "# type maps received"
 msgstr ""
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1435,7 +1447,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr ""
@@ -1533,28 +1545,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr ""
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, c-format
 msgid "Failed to connect to GNS\n"
 msgstr ""
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, c-format
 msgid "Failed to connect to namestore\n"
 msgstr ""
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-msgid "GNS REST API initialized\n"
-msgstr ""
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 msgid "# bytes stored"
@@ -1598,19 +1606,21 @@ msgstr ""
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1620,6 +1630,7 @@ msgstr ""
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -1901,7 +1912,7 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -1915,20 +1926,22 @@ msgstr ""
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 msgid "Failed to drop table from database.\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr ""
 
@@ -1944,6 +1957,8 @@ msgstr ""
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr ""
@@ -1965,7 +1980,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 msgid "Sqlite database running\n"
 msgstr ""
 
@@ -2035,52 +2051,6 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-msgid "number of peers to start"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:1009
-msgid "Measure quality and performance of the DHT service."
-msgstr ""
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2202,91 +2172,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2318,14 +2288,60 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 msgid "# DHT requests combined"
 msgstr ""
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+msgid "number of peers to start"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+msgid "Measure quality and performance of the DHT service."
+msgstr ""
+
 #: src/dht/plugin_block_dht.c:189
 #, c-format
 msgid "Block not of type %u\n"
@@ -2401,13 +2417,17 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
+msgstr ""
+
+#: src/dv/gnunet-dv.c:175
+msgid "Print information about DV state"
 msgstr ""
 
 #: src/exit/gnunet-daemon-exit.c:960
@@ -2418,199 +2438,199 @@ msgstr ""
 msgid "# ICMP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 msgid "# UDP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 msgid "# Bytes received from CADET"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 #, fuzzy
 msgid "# UDP IP-exit requests received via cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 #, fuzzy
 msgid "# UDP service requests received via cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 #, fuzzy
 msgid "# TCP service creation requests received via cadet"
 msgstr "# connessioni attive"
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 #, fuzzy
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr "# connessioni attive"
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 msgid "# TCP DATA requests dropped (no session)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 #, fuzzy
 msgid "# TCP data requests received via cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 #, fuzzy
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 #, fuzzy
 msgid "# ICMP service requests received via cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr "# messaggi PONG decrittati"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr "# Messaggi PING trasmessi"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 msgid "# Packets received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 msgid "# Bytes received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr "Deve essere un numero"
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -2842,63 +2862,58 @@ msgstr ""
 msgid "Publishing failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Connessione stabilita con `%s'\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr "impossibile calcolare l'hash"
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr "nome file troppo lungo"
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 msgid "could not connect to `fs' service"
 msgstr ""
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, c-format
 msgid "Recursive upload failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr ""
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, c-format
 msgid "Datastore failure: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -2963,148 +2978,148 @@ msgstr ""
 msgid "Failed to compute hash of file."
 msgstr "Impossibile calcolare l'hash del file."
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr ""
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr ""
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr ""
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr ""
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 msgid "invalid argument"
 msgstr "argomento non valido"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr ""
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr ""
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, c-format
 msgid "Failed to load state: %s\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, c-format
 msgid "Failed to save state to file %s\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, c-format
 msgid "Publishing `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, c-format
 msgid "Failed to run `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr ""
 
@@ -3172,7 +3187,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr ""
@@ -3195,12 +3210,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr ""
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr ""
 
@@ -3208,7 +3223,7 @@ msgstr ""
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr ""
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3234,14 +3249,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-msgid "Special file-sharing operations"
-msgstr ""
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3258,6 +3265,14 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+msgid "Special file-sharing operations"
+msgstr ""
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3347,7 +3362,7 @@ msgstr ""
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "Errore interno."
 
 #: src/fs/gnunet-publish.c:715
@@ -3387,15 +3402,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr ""
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr ""
 
-#: src/fs/gnunet-publish.c:911
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3454,32 +3465,32 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, c-format
 msgid "Error searching: %s.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 msgid "Could not create keyword URI from arguments.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 msgid "Could not start searching.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr ""
 
@@ -3516,18 +3527,18 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 #, fuzzy
 msgid "# replies received via cadet"
 msgstr "# ACK ricevuti"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 #, fuzzy
 msgid "# replies received via cadet dropped"
 msgstr "# ACK ricevuti"
@@ -3699,106 +3710,106 @@ msgstr ""
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 msgid "# Pending requests created"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 msgid "# Pending requests active"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 msgid "# replies received and matched"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 msgid "# storage requests dropped due to high load"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 msgid "# Replies received from DHT"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 msgid "# Replies received from CADET"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 msgid "# GAP PUT messages received"
 msgstr ""
 
@@ -3833,7 +3844,7 @@ msgstr ""
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -3865,38 +3876,38 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 msgid "No DNS server specified!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -3912,36 +3923,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "`%s' non è un indirizzo IP valido.\n"
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-msgid "Specify the type of the record to lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:272
-msgid "Specify a timeout for the lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-msgid "GNUnet GNS resolver tool"
-msgstr ""
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -3961,121 +3942,142 @@ msgstr ""
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "Generazione statistiche fallita\n"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 msgid "Failed to pass client to MHD\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, c-format
 msgid "Unsupported socks version %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, c-format
 msgid "Unsupported socks command %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+msgid "Specify the type of the record to lookup"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+msgid "GNUnet GNS resolver tool"
+msgstr ""
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4086,8 +4088,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr ""
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 msgid "Could not connect to DHT!\n"
 msgstr ""
 
@@ -4177,81 +4179,72 @@ msgstr ""
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/gns/plugin_rest_gns.c:442
-msgid "Gns REST API initialized\n"
-msgstr ""
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr ""
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "Impossibile avviare il servizio ' %s'\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4291,254 +4284,254 @@ msgstr ""
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr ""
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr ""
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr ""
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr ""
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 msgid "# active connections"
 msgstr "# connessioni attive"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 msgid "bytes in hostlist"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr ""
 
@@ -4550,179 +4543,170 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 msgid "hostlist requests processed"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 msgid "# hostlist advertisements send"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "`%s' non è un indirizzo IP valido.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr "`%s' non è un indirizzo IP valido.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "`%s' non è un indirizzo IP valido.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "`%s' non è un indirizzo IP valido.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, c-format
 msgid "Failed to create ego: %s\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-msgid "reduce output"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-msgid "display private keys as well"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr ""
 
-#: src/identity/plugin_rest_identity.c:1311
-msgid "Identity REST API initialized\n"
-msgstr ""
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr ""
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr ""
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr ""
@@ -4732,7 +4716,7 @@ msgstr ""
 msgid "No records found for `%s'"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -4752,15 +4736,15 @@ msgstr "# messaggi PONG ricevuti"
 msgid "You must specify a name\n"
 msgstr "È necessario specificare un nome\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
 #: src/namecache/gnunet-namecache.c:238
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 msgid "GNUnet zone manipulation tool"
 msgstr ""
 
@@ -4774,8 +4758,8 @@ msgstr ""
 
 #: src/namecache/plugin_namecache_flat.c:121
 #: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
 #: src/peerstore/plugin_peerstore_flat.c:379
 #: src/peerstore/plugin_peerstore_flat.c:538
 #, fuzzy, c-format
@@ -4783,13 +4767,14 @@ msgid "Unable to initialize file: %s.\n"
 msgstr "Generazione statistiche fallita\n"
 
 #: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
+#: src/namestore/plugin_namestore_heap.c:159
 #: src/peerstore/plugin_peerstore_flat.c:394
 #, fuzzy, c-format
 msgid "Unable to get filesize: %s.\n"
 msgstr "Generazione statistiche fallita\n"
 
 #: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
 #: src/peerstore/plugin_peerstore_flat.c:406
 #, fuzzy, c-format
 msgid "Unable to read file: %s.\n"
@@ -4807,317 +4792,291 @@ msgstr ""
 msgid "Failed to setup database at `%s'\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
+msgid "Failed to start HTTP server\n"
+msgstr "Impossibile avviare il server HTTP\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
+msgid "Failed to connect to identity\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr ""
+
+#: src/namestore/gnunet-namestore.c:341
 #, c-format
 msgid "Adding record failed: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, c-format
 msgid "Unsupported type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, c-format
 msgid "Invalid time format `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, c-format
 msgid "Invalid URI `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, c-format
 msgid "Invalid nick `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, c-format
 msgid "No default ego configured in identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, c-format
 msgid "Cannot connect to identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Comando `%s' sconosciuto.\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "deve essere un indirizzo IPv6 valido"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 msgid "set the desired nick name for the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 msgid "monitor changes in the namestore"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 msgid "determine our name for the given PKEY"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 msgid "name of the ego controlling the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-msgid "Failed to start HTTP server\n"
-msgstr "Impossibile avviare il server HTTP\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-msgid "Failed to connect to identity\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
-msgid "Flat file database running\n"
-msgstr ""
-
-#: src/namestore/plugin_rest_namestore.c:919
-msgid "Namestore REST API initialized\n"
+#: src/namestore/plugin_namestore_heap.c:778
+msgid "heap file database running\n"
 msgstr ""
 
 #: src/nat-auto/gnunet-nat-auto.c:193
@@ -5159,7 +5118,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr ""
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 msgid "Failed to connect to `gnunet-nat-server'\n"
 msgstr ""
@@ -5196,38 +5155,38 @@ msgstr ""
 msgid "Detected external IP `%s'\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 msgid "upnpc not found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5343,42 +5302,42 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 msgid "Connection reversal request failed\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, c-format
 msgid "Failed to start %s\n"
 msgstr ""
@@ -5391,10 +5350,6 @@ msgstr ""
 msgid "`upnpc' command not found\n"
 msgstr ""
 
-#: src/nse/gnunet-nse.c:123
-msgid "Show network size estimates from NSE service."
-msgstr ""
-
 #: src/nse/gnunet-nse-profiler.c:849
 msgid "limit to the number of connections to NSE services, 0 for none"
 msgstr ""
@@ -5419,103 +5374,53 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr ""
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
-msgid "Value is too large.\n"
+#: src/nse/gnunet-nse.c:122
+msgid "Show network size estimates from NSE service."
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, c-format
-msgid "Removing expired address of transport `%s'\n"
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
+msgid "Value is too large.\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:313
+#: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
+msgid "%sPeer `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
+#: src/peerinfo-tool/gnunet-peerinfo.c:246
 #, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
+msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr "# peer conosciuti"
+#: src/peerinfo-tool/gnunet-peerinfo.c:299
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
+#, fuzzy, c-format
+msgid "Failure: Cannot convert address to string for peer `%s'\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/peerinfo/gnunet-service-peerinfo.c:492
+#: src/peerinfo-tool/gnunet-peerinfo.c:466
 #, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgid "Failure: Received invalid %s\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:658
+#: src/peerinfo-tool/gnunet-peerinfo.c:480
 #, c-format
-msgid "Scanning directory `%s'\n"
+msgid "Failed to write HELLO with %u bytes to file `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:666
+#: src/peerinfo-tool/gnunet-peerinfo.c:499
 #, c-format
-msgid "Still no peers found in `%s'!\n"
+msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
 msgstr ""
 
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
+#: src/peerinfo-tool/gnunet-peerinfo.c:799
 #, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
-msgstr ""
-
-#: src/peerinfo/peerinfo_api.c:220
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:239
-#, c-format
-msgid "%sPeer `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:246
-#, c-format
-msgid "\tExpires: %s \t %s\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
-#, fuzzy, c-format
-msgid "Failure: Cannot convert address to string for peer `%s'\n"
-msgstr "Impossibile avviare il servizio ' %s'\n"
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:466
-#, c-format
-msgid "Failure: Received invalid %s\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:480
-#, c-format
-msgid "Failed to write HELLO with %u bytes to file `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:499
-#, c-format
-msgid "Wrote %s HELLO containing %u addresses with %u bytes to file `%s'\n"
-msgstr ""
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:799
-#, c-format
-msgid "I am peer `%s'.\n"
-msgstr "Io sono il peer '%s''.\n"
-
-#: src/peerinfo-tool/gnunet-peerinfo.c:843
-msgid "don't resolve host names"
+msgid "I am peer `%s'.\n"
+msgstr "Io sono il peer '%s''.\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:843
+msgid "don't resolve host names"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:848
@@ -5568,32 +5473,83 @@ msgstr ""
 msgid "Failed to load transport plugin for `%s'\n"
 msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
-msgid "Peerinfo REST API initialized\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
+msgstr "# peer conosciuti"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, c-format
+msgid "Scanning directory `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:667
+#, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
+#, c-format
+msgid "Cleaning up directory `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
+
+#: src/peerinfo/peerinfo_api.c:220
+msgid "Failed to receive response from `PEERINFO' service."
 msgstr ""
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 msgid "Received a malformed response from service."
 msgstr ""
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5601,6 +5557,8 @@ msgid ""
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5617,6 +5575,113 @@ msgstr "Generazione statistiche fallita\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr ""
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "argomento non valido"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "Impossibile leggere il file"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "Generazione statistiche fallita\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr ""
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+msgid "SQLite database running\n"
+msgstr ""
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr ""
@@ -5661,93 +5726,73 @@ msgstr ""
 msgid "# DNS replies dropped (too late?)"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, c-format
 msgid "Ego is required\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, c-format
 msgid "Requesting party key is required!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-msgid "The EGO to use"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-msgid "OpenID Connect REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-msgid "Identity Provider REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "Impossibile avviare il servizio.\n"
@@ -5836,16 +5881,41 @@ msgstr ""
 msgid "Search string `%s' is too long!\n"
 msgstr ""
 
-#: src/rest/gnunet-rest-server.c:1039
-msgid "GNUnet REST server"
+#: src/rest-plugins/plugin_rest_copying.c:209
+msgid "COPYING REST API initialized\n"
 msgstr ""
 
-#: src/rest/plugin_rest_config.c:265
-msgid "CONFIG REST API initialized\n"
+#: src/rest-plugins/plugin_rest_credential.c:1128
+msgid "GNS REST API initialized\n"
 msgstr ""
 
-#: src/rest/plugin_rest_copying.c:209
-msgid "COPYING REST API initialized\n"
+#: src/rest-plugins/plugin_rest_gns.c:452
+msgid "Gns REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+msgid "Identity REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+msgid "Namestore REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+msgid "Identity Provider REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+msgid "Peerinfo REST API initialized\n"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:944
+msgid "GNUnet REST server"
 msgstr ""
 
 #: src/revocation/gnunet-revocation.c:129
@@ -5894,57 +5964,57 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, c-format
 msgid "Public key `%s' malformed\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 msgid "No filename to store revocation certificate given.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 msgid "No action specified. Nothing to do.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -5974,36 +6044,36 @@ msgstr ""
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 msgid "Could not open revocation database file!"
 msgstr ""
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
+#: src/rps/gnunet-rps-profiler.c:2959
+msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
+#: src/rps/gnunet-rps-profiler.c:2965
+msgid "timeout for the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
+#: src/rps/gnunet-rps-profiler.c:2971
+msgid "number of PeerIDs to request"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3086
-msgid "duration of the profiling"
+#: src/rps/gnunet-rps-profiler.c:2986
+msgid "Measure quality and performance of the RPS service."
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
-msgid "timeout for the profiling"
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3096
-msgid "number of PeerIDs to request"
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3112
-msgid "Measure quality and performance of the RPS service."
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
 msgstr ""
 
 #: src/scalarproduct/gnunet-scalarproduct.c:220
@@ -6046,90 +6116,212 @@ msgid ""
 "A comma separated list of elements to compare as vector with our remote peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-scalarproduct.c:363
-msgid ""
-"[Optional] peer to calculate our scalarproduct with. If this parameter is "
-"not given, the service will wait for a remote peer to compute the request."
+#: src/scalarproduct/gnunet-scalarproduct.c:363
+msgid ""
+"[Optional] peer to calculate our scalarproduct with. If this parameter is "
+"not given, the service will wait for a remote peer to compute the request."
+msgstr ""
+
+#: src/scalarproduct/gnunet-scalarproduct.c:369
+msgid "Transaction ID shared with peer."
+msgstr ""
+
+#: src/scalarproduct/gnunet-scalarproduct.c:379
+msgid "Calculate the Vectorproduct with a GNUnet peer."
+msgstr ""
+
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
+msgid "Connect to CADET failed\n"
+msgstr ""
+
+#: src/scalarproduct/scalarproduct_api.c:185
+msgid "Keys given to SCALARPRODUCT not unique!\n"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:616
+msgid "dkg start delay"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:622
+msgid "dkg timeout"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:628
+msgid "threshold"
+msgstr ""
+
+#: src/secretsharing/gnunet-secretsharing-profiler.c:633
+msgid "also profile decryption"
+msgstr ""
+
+#: src/set/gnunet-service-set.c:2005
+#, fuzzy
+msgid "Could not connect to CADET service\n"
+msgstr "Impossibile avviare il servizio.\n"
+
+#: src/set/gnunet-set-ibf-profiler.c:252
+msgid "number of element in set A-B"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:258
+msgid "number of element in set B-A"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:264
+msgid "number of common elements in A and B"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:270
+msgid "hash num"
+msgstr ""
+
+#: src/set/gnunet-set-ibf-profiler.c:276
+msgid "ibf size"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:444
+msgid "use byzantine mode"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:450
+msgid "force sending full set"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:456
+msgid "number delta operation"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:468
+msgid "operation to execute"
+msgstr ""
+
+#: src/set/gnunet-set-profiler.c:474
+msgid "element size"
+msgstr ""
+
+#: src/social/gnunet-social.c:1166
+msgid "--place missing or invalid.\n"
+msgstr ""
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
 msgstr ""
 
-#: src/scalarproduct/gnunet-scalarproduct.c:369
-msgid "Transaction ID shared with peer."
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
 msgstr ""
 
-#: src/scalarproduct/gnunet-scalarproduct.c:379
-msgid "Calculate the Vectorproduct with a GNUnet peer."
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
-msgid "Connect to CADET failed\n"
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
 msgstr ""
 
-#: src/scalarproduct/scalarproduct_api.c:185
-msgid "Keys given to SCALARPRODUCT not unique!\n"
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:616
-msgid "dkg start delay"
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:622
-msgid "dkg timeout"
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:628
-msgid "threshold"
+#: src/social/gnunet-social.c:1304
+msgid "name or public key of ego"
 msgstr ""
 
-#: src/secretsharing/gnunet-secretsharing-profiler.c:633
-msgid "also profile decryption"
+#: src/social/gnunet-social.c:1309
+msgid "wait for incoming messages"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
-#, fuzzy
-msgid "Could not connect to CADET service\n"
-msgstr "Impossibile avviare il servizio.\n"
+#: src/social/gnunet-social.c:1315
+msgid "GNS name"
+msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:267
-msgid "number of element in set A-B"
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:273
-msgid "number of element in set B-A"
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:280
-msgid "number of common elements in A and B"
+#: src/social/gnunet-social.c:1333
+msgid "method name"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
-msgid "hash num"
+#: src/social/gnunet-social.c:1339
+msgid "number of messages to replay from history"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:292
-msgid "ibf size"
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:444
-msgid "use byzantine mode"
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:450
-msgid "force sending full set"
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:456
-msgid "number delta operation"
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:468
-msgid "operation to execute"
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
 msgstr ""
 
-#: src/set/gnunet-set-profiler.c:474
-msgid "element size"
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
 msgstr ""
 
 #: src/sq/sq.c:54
@@ -6156,92 +6348,92 @@ msgstr ""
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 msgid "Failed to obtain statistics.\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, c-format
 msgid "Invalid argument `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr ""
 
@@ -6293,7 +6485,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr ""
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6332,7 +6524,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6402,27 +6594,27 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:118
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:241
-#, c-format
-msgid "Spawning process `%s'\n"
-msgstr ""
-
-#: src/testbed/gnunet-testbed-profiler.c:287
+#: src/testbed/gnunet-testbed-profiler.c:289
 msgid "tolerate COUNT number of continious timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:291
+#: src/testbed/gnunet-testbed-profiler.c:294
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/testbed_api.c:400
+#: src/testbed/gnunet_testbed_mpi_spawn.c:118
+msgid "Waiting for child to exit.\n"
+msgstr ""
+
+#: src/testbed/gnunet_testbed_mpi_spawn.c:241
+#, c-format
+msgid "Spawning process `%s'\n"
+msgstr ""
+
+#: src/testbed/testbed_api.c:410
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr ""
@@ -6442,7 +6634,7 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6595,47 +6787,47 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr ""
@@ -6650,139 +6842,139 @@ msgstr ""
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr "# nodi in blacklist"
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 msgid "# connect requests issued to ATS"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 msgid "# HELLO messages gossipped"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 msgid "# friends connected"
 msgstr "# amici connessi"
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 msgid "# friends in configuration"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 msgid "# HELLO messages received"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 msgid "# bytes payload discarded due to not connected peer"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 msgid "# bytes total received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 msgid "# bytes payload received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -6792,198 +6984,198 @@ msgstr ""
 msgid "# session creation failed"
 msgstr "# connessioni attive"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 msgid "# DISCONNECT messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 msgid "# bytes in message queue for other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 msgid "# messages transmitted to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 msgid "# transmission failures for messages to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 msgid "# messages discarded due to lack of neighbour record"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 msgid "# bandwidth quota violations by other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "Generazione statistiche fallita\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 #, fuzzy
 msgid "# SYN_ACK messages sent"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 #, fuzzy
 msgid "# SYN messages received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 #, fuzzy
 msgid "# SYN_ACK messages received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 #, fuzzy
 msgid "# ACK messages received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 #, fuzzy
 msgid "# unexpected ACK messages"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 #, fuzzy
 msgid "# quota messages ignored (malformed)"
 msgstr "# messaggi PONG decrittati"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 #, fuzzy
 msgid "# QUOTA messages received"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 msgid "# DISCONNECT messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 msgid "# disconnected from peer upon explicit request"
 msgstr ""
 
@@ -7018,7 +7210,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 msgid "# validations running"
 msgstr ""
 
@@ -7042,265 +7234,267 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 msgid "# PING message for different peer received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 msgid "# HELLOs given to peerinfo"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+msgid "receive data from peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:626
+msgid "iterations"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:631
+msgid "number of messages to send"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:636
+msgid "message size to use"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+msgid "Direct access to transport service."
+msgstr ""
+
+#: src/transport/gnunet-transport.c:413
 #, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "# connessioni attive"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, fuzzy, c-format
 msgid "Transmitting %u bytes\n"
 msgstr "Avvio del servizio '%s' in corso\n"
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 msgid "Connected to"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 msgid "Disconnected from"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, c-format
 msgid "Received %u bytes\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 msgid "Failed to connect to transport service\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 msgid "print information for all peers (instead of only connected peers)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 #, fuzzy
 msgid "disconnect from a peer"
 msgstr "# amici connessi"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 msgid "provide information about all current connections (once)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 msgid "do not resolve hostnames"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-msgid "Direct access to transport service."
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-msgid "receive data from peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:586
-msgid "iterations"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:591
-msgid "number of messages to send"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:596
-msgid "message size to use"
-msgstr ""
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr ""
@@ -7349,6 +7543,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7446,115 +7641,126 @@ msgstr "# byte inviati via SMTP"
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 msgid "# TCP sessions active"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 msgid "# bytes currently in TCP buffers"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 msgid "# bytes discarded by TCP (timeout)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 msgid "# bytes transmitted via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 msgid "# TCP WELCOME messages received"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr "# connessioni attive"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 msgid "# TCP server connect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 msgid "Failed to start service.\n"
 msgstr "Impossibile avviare il servizio.\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-#, fuzzy
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr "# messaggi PONG ricevuti"
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7575,6 +7781,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "Generazione statistiche fallita\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7584,14 +7791,18 @@ msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 msgid "must be valid IPv4 address"
 msgstr "deve essere un indirizzo IPv4 valido"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "deve essere un indirizzo IPv4 valido"
@@ -7601,6 +7812,21 @@ msgstr "deve essere un indirizzo IPv4 valido"
 msgid "Failed to create UDP network sockets\n"
 msgstr "Generazione statistiche fallita\n"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+#, fuzzy
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr "# messaggi PONG ricevuti"
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -7674,6 +7900,54 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr ""
 
+#: src/transport/plugin_transport_xt.c:4010
+#, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4014
+msgid "XT transport not listening on any port (client only)\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4018
+#, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# connessioni attive"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "Generazione statistiche fallita\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "Generazione statistiche fallita\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "Generazione statistiche fallita\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, c-format
 msgid "Access denied to `%s'\n"
@@ -7684,17 +7958,17 @@ msgstr ""
 msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr ""
@@ -7706,7 +7980,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -7716,27 +7990,27 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -7751,45 +8025,44 @@ msgstr ""
 msgid "Service `%s' runs at %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 msgid "Malformed configuration, exit ...\n"
 msgstr ""
 
@@ -7798,7 +8071,7 @@ msgstr ""
 msgid "Could not access configuration file `%s'\n"
 msgstr ""
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -7831,67 +8104,67 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr ""
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "ERRORE"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr "NESSUNA"
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr "NON VALIDO"
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr "indirizzo sconosciuto"
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr "indirizzo non valido"
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -7938,26 +8211,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr ""
@@ -7990,7 +8263,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr ""
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr ""
@@ -8005,7 +8278,7 @@ msgstr ""
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr ""
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr ""
@@ -8015,7 +8288,7 @@ msgstr ""
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr ""
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr ""
@@ -8040,7 +8313,7 @@ msgstr "Generazione statistiche fallita\n"
 msgid "Sent DNS request to %s\n"
 msgstr ""
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr ""
@@ -8050,176 +8323,167 @@ msgstr ""
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr ""
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr ""
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr ""
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr ""
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr ""
 
-#: src/util/getopt.c:987
-#, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr ""
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr ""
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr ""
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr ""
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 msgid "use configuration file FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, c-format
 msgid "failed to load configuration defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, c-format
 msgid "%s or %s argument is required\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 msgid "print available configuration sections"
 msgstr ""
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 msgid "Manipulate GNUnet configuration files"
 msgstr ""
 
@@ -8228,24 +8492,24 @@ msgstr ""
 msgid "Failed to open `%s': %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, c-format
 msgid ""
 "\n"
 "Failed to write to `%s': %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, c-format
 msgid ""
 "\n"
@@ -8254,91 +8518,64 @@ msgstr ""
 "\n"
 "Completato!\n"
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 msgid "Manipulate GNUnet private ECC key files"
 msgstr ""
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8347,41 +8584,56 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 msgid "Manipulate GNUnet proof of work files"
 msgstr ""
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8400,12 +8652,12 @@ msgstr ""
 msgid "Error writing to `%s': %s\n"
 msgstr ""
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8418,22 +8670,22 @@ msgid ""
 "variable.\n"
 msgstr ""
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr ""
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr ""
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8457,17 +8709,17 @@ msgstr ""
 msgid "Could not determine plugin installation path.\n"
 msgstr ""
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr ""
 
@@ -8509,16 +8761,16 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr ""
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8526,12 +8778,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr ""
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8540,227 +8792,227 @@ msgstr ""
 msgid "b"
 msgstr ""
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr "µs"
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr "per sempre"
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr "0 ms"
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "ms"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "s"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr ""
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "o"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 msgid "day"
 msgstr "giorno"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 msgid "days"
 msgstr "giorni"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr ""
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr ""
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr ""
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr ""
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, c-format
 msgid "Invalid format: `%s'\n"
 msgstr ""
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr ""
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr ""
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr ""
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 msgid "# Active channels"
 msgstr "# Canali attivi"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 #, fuzzy
 msgid "# ICMP packets received from cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 #, fuzzy
 msgid "# UDP packets received from cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 #, fuzzy
 msgid "# TCP packets received from cadet"
 msgstr "# messaggi PONG ricevuti"
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr "# messaggi PONG decrittati"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 msgid "# Packets dropped (channel not yet online)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 msgid "# Packets received from TUN interface"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 msgid "# Active destinations"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 msgid "Must specify valid IPv6 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 msgid "Must specify valid IPv4 address"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -8829,32 +9081,44 @@ msgstr ""
 msgid "Setup tunnels via VPN."
 msgstr ""
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 msgid "Failed to connect to the namestore!\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "Connessione stabilita con `%s'\n"
+
+#, fuzzy
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "`%s' non è un indirizzo IP valido.\n"
+
+#, fuzzy
+#~ msgid "Unable to parse CAA record string `%s'\n"
+#~ msgstr "Impossibile avviare il servizio ' %s'\n"
+
 #~ msgid "Request timed out"
 #~ msgstr "Richiesta scaduta"
 
@@ -8929,36 +9193,11 @@ msgstr ""
 #~ msgid "Failure: Did not receive %s\n"
 #~ msgstr "Generazione statistiche fallita\n"
 
-#, fuzzy
-#~| msgid "Failed to start service.\n"
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "Impossibile avviare il servizio.\n"
-
-#, fuzzy
-#~| msgid "Failed to start service.\n"
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr "Impossibile avviare il servizio.\n"
-
 #, fuzzy
 #~| msgid "Unknown command `%s'\n"
 #~ msgid "Unknown operator: %c\n"
 #~ msgstr "Comando `%s' sconosciuto.\n"
 
-#, fuzzy
-#~| msgid "Failed to read file"
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "Impossibile leggere il file"
-
-#, fuzzy
-#~| msgid "Failed to read file"
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "Impossibile leggere il file"
-
-#, fuzzy
-#~| msgid "Failed to start service.\n"
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr "Impossibile avviare il servizio.\n"
-
 #, fuzzy
 #~| msgid "# SYN messages received"
 #~ msgid "# SUC responder result messages received"
index 819ef6cb579af805ebbc9aa39cc5b28e3af69313..8603e31d96207f2e4b26e099029780326acfb0bc 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,98 +7,98 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNUnet 0.7.0b\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2006-01-21 17:16+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
-"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: sv\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, fuzzy, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, fuzzy, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr "Filformatsfel (inte en GNUnet-katalog?)\n"
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 #, fuzzy
 msgid "We disconnected from ARM before we could send a request"
 msgstr "# av anslutna parter"
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 #, fuzzy
 msgid "Unknown request status"
 msgstr "Okänd operation \"%s\"\n"
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "# byte krypterade"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 #, fuzzy
 msgid "is starting"
 msgstr "\"%s\" startar\n"
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "# byte krypterade"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 #, fuzzy
 msgid "is starting already"
 msgstr "\"%s\" startar\n"
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "\"%s\" startar\n"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 #, fuzzy
 msgid "is started already"
 msgstr "\"%s\" startar\n"
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "\"%s\" startar\n"
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 #, fuzzy
 msgid "service is not known to ARM"
 msgstr "\"%s\" är inte en fil.\n"
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "Okänd operation \"%s\"\n"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, fuzzy, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr "Misslyckades att starta samling.\n"
@@ -113,121 +113,122 @@ msgstr "Misslyckades att ansluta till gnunetd.\n"
 msgid "Failed to stop the ARM service: %s\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, fuzzy, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, fuzzy, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, fuzzy, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr "Fel vid %s:%d.\n"
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, fuzzy, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 #, fuzzy
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 #, fuzzy
 msgid "Running services:\n"
 msgstr "Startade samling \"%s\".\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, fuzzy, c-format
 msgid "Starting %s...\n"
 msgstr "Startade samling \"%s\".\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, fuzzy, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr "Okänd operation \"%s\"\n"
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 msgid "stop all GNUnet services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 msgid "start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 msgid "stop and start all GNUnet default services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 #, fuzzy
 msgid "list currently running services"
 msgstr "Startade samling \"%s\".\n"
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -236,30 +237,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -267,7 +274,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -275,7 +283,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
@@ -283,7 +292,8 @@ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
@@ -355,160 +365,25 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-#, fuzzy
-msgid "print logging"
-msgstr "Startade samling \"%s\".\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, fuzzy, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr "Kunde inte initiera SQLite.\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, fuzzy, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, fuzzy, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "Kunde inte spara konfigurationsfil \"%s\":"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2699
-#, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
 msgstr ""
 
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+msgid "Start logging `%s'\n"
+msgstr "Startade samling \"%s\".\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, fuzzy, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr ""
-
-#: src/ats-tests/ats-testing-log.c:892
-#, fuzzy, c-format
-msgid "Start logging `%s'\n"
-msgstr "Startade samling \"%s\".\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -516,6 +391,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr ""
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -637,6 +523,132 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr "Skriv ut information om GNUnets motparter."
 
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
+msgid ""
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3306
+#, fuzzy
+msgid "print logging"
+msgstr "Startade samling \"%s\".\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
+msgstr ""
+
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, fuzzy, c-format
+msgid "Failed to initialize solver `%s'!\n"
+msgstr "Kunde inte initiera SQLite.\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:304
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:359
+#, c-format
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1870
+#, fuzzy, c-format
+msgid "Adding address for peer `%s' multiple times\n"
+msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
+
+#: src/ats/plugin_ats_mlp.c:1914
+#, fuzzy, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
+msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
+
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
+msgid ""
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
 #: src/auction/gnunet-auction-create.c:163
 msgid "description of the item to be sold"
 msgstr ""
@@ -674,7 +686,7 @@ msgstr ""
 
 #: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
 #: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
 #, fuzzy
 msgid "help text"
 msgstr "hjälptext för -t"
@@ -688,40 +700,40 @@ msgstr "Ogiltiga argument: "
 msgid "Extra arguments are not applicable in combination with this option.\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/cadet/gnunet-cadet.c:795
 #, fuzzy, c-format
 msgid "Invalid target `%s'\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/cadet/gnunet-cadet.c:829
+#: src/cadet/gnunet-cadet.c:832
 #, fuzzy
 msgid "No action requested\n"
 msgstr "Samling stoppad.\n"
 
-#: src/cadet/gnunet-cadet.c:854
+#: src/cadet/gnunet-cadet.c:857
 #, fuzzy
 msgid "Provide information about a particular connection"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/cadet/gnunet-cadet.c:858
+#: src/cadet/gnunet-cadet.c:861
 msgid "Activate echo mode"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
+#: src/cadet/gnunet-cadet.c:866
 msgid "Listen for connections using a shared secret among sender and recipient"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
+#: src/cadet/gnunet-cadet.c:871
 #, fuzzy
 msgid "Provide information about a patricular peer"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/cadet/gnunet-cadet.c:872
+#: src/cadet/gnunet-cadet.c:875
 #, fuzzy
 msgid "Provide information about all peers"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/cadet/gnunet-cadet.c:876
+#: src/cadet/gnunet-cadet.c:879
 #, fuzzy
 msgid "Provide information about all tunnels"
 msgstr "Skriv ut information om GNUnets motparter."
@@ -771,6 +783,28 @@ msgstr ""
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1028,30 +1062,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1183,7 +1195,7 @@ msgstr "\"%s\" %s misslyckades: %s\n"
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, fuzzy, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr "Kunde inte ansluta till gnunetd.\n"
@@ -1209,49 +1221,49 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 msgid "Could not start playback audio helper.\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr "# av anslutna parter"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 #, fuzzy
 msgid "key received"
 msgstr "# sessionnycklar vägrade"
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 #, fuzzy
 msgid "connection established"
 msgstr "Samling stoppad.\n"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "\"%s\" ansluten till \"%s\".\n"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "Okänt fel"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, fuzzy, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr "Ogiltiga kommandoradsargument:\n"
@@ -1261,239 +1273,239 @@ msgstr "Ogiltiga kommandoradsargument:\n"
 msgid "Failed to connect to CORE service!\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 #, fuzzy
 msgid "provide information about all current connections (continuously)"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 #, fuzzy
 msgid "Print information about connected peers."
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 msgid "# send requests dropped (disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, fuzzy, c-format
 msgid "# bytes of messages of type %u received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 #, fuzzy
 msgid "# messages discarded (session disconnected)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, fuzzy, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 #, fuzzy
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "GNUnet-konfiguration"
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "\"%s\" är inte en fil.\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr "# byte krypterade"
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr "# byte dekrypterade"
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 #, fuzzy
 msgid "# PAYLOAD dropped (out of order)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 #, fuzzy
 msgid "# PING messages transmitted"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 #, fuzzy
 msgid "# duplicate ephemeral keys ignored"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 #, fuzzy
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 #, fuzzy
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 #, fuzzy
 msgid "# PING messages received"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 #, fuzzy
 msgid "# PING messages dropped (out of order)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 #, fuzzy
 msgid "# PONG messages created"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 #, fuzzy
 msgid "# sessions terminated by timeout"
 msgstr "# byte kastade via TCP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 #, fuzzy
 msgid "# keepalive messages sent"
 msgstr "# PING-meddelanden i klartext skickade"
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 #, fuzzy
 msgid "# PONG messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 #, fuzzy
 msgid "# PONG messages dropped (connection down)"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 #, fuzzy
 msgid "# PONG messages dropped (out of order)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 #, fuzzy
 msgid "# PONG messages decrypted"
 msgstr "# PING-meddelanden skapade"
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 #, fuzzy
 msgid "# session keys confirmed via PONG"
 msgstr "# sessionnycklar vägrade"
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 #, fuzzy
 msgid "# timeouts prevented via PONG"
 msgstr "# byte mottogs via TCP"
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 #, fuzzy
 msgid "# rekey operations confirmed via PONG"
 msgstr "# sessionnycklar vägrade"
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 #, fuzzy
 msgid "# DATA message dropped (out of order)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 #, fuzzy
 msgid "# sessions terminated by key expiration"
 msgstr "# byte kastade via TCP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 #, fuzzy
 msgid "# bytes dropped (duplicates)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 #, fuzzy
 msgid "# bytes dropped (out of sequence)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 #, fuzzy
 msgid "# bytes dropped (ancient message)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 #, fuzzy
 msgid "# bytes of payload decrypted"
 msgstr "# byte dekrypterade"
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 #, fuzzy
 msgid "# peers connected"
 msgstr "# av anslutna parter"
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 msgid "# type map refreshes sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 #, fuzzy
 msgid "# outdated typemap confirmations received"
 msgstr "Kunde inte spara konfiguration!"
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 #, fuzzy
 msgid "# valid typemap confirmations received"
 msgstr "Kunde inte spara konfiguration!"
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 #, fuzzy
 msgid "# type maps received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1502,7 +1514,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, fuzzy, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr "\"%s\": okänd tjänst: %s\n"
@@ -1604,29 +1616,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr "Spåra GNUnets nätverkstopologi."
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, fuzzy, c-format
 msgid "Failed to connect to GNS\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, fuzzy, c-format
 msgid "Failed to connect to namestore\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-#, fuzzy
-msgid "GNS REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 #, fuzzy
@@ -1673,19 +1680,21 @@ msgstr ""
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1695,6 +1704,7 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -1991,7 +2001,7 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -2006,21 +2016,23 @@ msgstr "antal iterationer"
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n"
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 #, fuzzy
 msgid "Failed to drop table from database.\n"
 msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr ""
 
@@ -2036,6 +2048,8 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, fuzzy, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr "Kunde inte initiera SQLite.\n"
@@ -2057,7 +2071,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 msgid "Sqlite database running\n"
 msgstr ""
 
@@ -2112,70 +2127,22 @@ msgid "use DHT's demultiplex everywhere option"
 msgstr ""
 
 #: src/dht/gnunet-dht-get.c:280
-msgid "Issue a GET request to the GNUnet DHT, prints results."
-msgstr ""
-
-#: src/dht/gnunet-dht-monitor.c:319
-msgid "how long should the monitor command run"
-msgstr ""
-
-#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
-#: src/nse/gnunet-nse-profiler.c:878
-msgid "be verbose (print progress information)"
-msgstr ""
-
-#: src/dht/gnunet-dht-monitor.c:337
-msgid "Prints all packets that go through the DHT."
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, fuzzy, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr "Maximalt antal chattklienter uppnått.\n"
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-#, fuzzy
-msgid "number of peers to start"
-msgstr "antal iterationer"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
+msgid "Issue a GET request to the GNUnet DHT, prints results."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
+#: src/dht/gnunet-dht-monitor.c:319
+msgid "how long should the monitor command run"
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
+#: src/dht/gnunet-dht-monitor.c:324 src/fs/gnunet-download.c:372
+#: src/nse/gnunet-nse-profiler.c:878
+msgid "be verbose (print progress information)"
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+#: src/dht/gnunet-dht-monitor.c:337
+msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1009
-#, fuzzy
-msgid "Measure quality and performance of the DHT service."
-msgstr "Kan inte tillgå tjänsten"
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2305,105 +2272,105 @@ msgstr "Meddelande mottaget från klient är ogiltig.\n"
 msgid "# FIND PEER messages initiated"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 #, fuzzy
 msgid "# PUT messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 #, fuzzy
 msgid "# P2P messages dropped due to full queue"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 #, fuzzy
 msgid "# GET messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 #, fuzzy
 msgid "# RESULT messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 #, fuzzy
 msgid "# P2P FIND PEER requests processed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 #, fuzzy
 msgid "# P2P RESULTS received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# krypterade PONG-meddelanden mottagna"
@@ -2437,15 +2404,63 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 #, fuzzy
 msgid "# DHT requests combined"
 msgstr "# byte mottogs via TCP"
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, fuzzy, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr "Maximalt antal chattklienter uppnått.\n"
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+#, fuzzy
+msgid "number of peers to start"
+msgstr "antal iterationer"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+#, fuzzy
+msgid "Measure quality and performance of the DHT service."
+msgstr "Kan inte tillgå tjänsten"
+
 #: src/dht/plugin_block_dht.c:189
 #, fuzzy, c-format
 msgid "Block not of type %u\n"
@@ -2522,16 +2537,21 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 #, fuzzy
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr "Ogiltigt svar på \"%s\".\n"
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
 msgstr ""
 
+#: src/dv/gnunet-dv.c:175
+#, fuzzy
+msgid "Print information about DV state"
+msgstr "Skriv ut information om GNUnets motparter."
+
 #: src/exit/gnunet-daemon-exit.c:960
 #, fuzzy
 msgid "# TCP packets sent via TUN"
@@ -2542,204 +2562,204 @@ msgstr "# byte skickade via UDP"
 msgid "# ICMP packets sent via TUN"
 msgstr "# byte skickade via UDP"
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 #, fuzzy
 msgid "# UDP packets sent via TUN"
 msgstr "# byte skickade via UDP"
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 #, fuzzy
 msgid "# Bytes received from CADET"
 msgstr "# byte mottagna via HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 #, fuzzy
 msgid "# UDP IP-exit requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 #, fuzzy
 msgid "# UDP service requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 #, fuzzy
 msgid "# TCP service creation requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 #, fuzzy
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 #, fuzzy
 msgid "# TCP DATA requests dropped (no session)"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 #, fuzzy
 msgid "# TCP data requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 #, fuzzy
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr "# byte mottogs via TCP"
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 #, fuzzy
 msgid "# ICMP service requests received via cadet"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr "# PING-meddelanden skapade"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr "# byte skickade av typen %d"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 #, fuzzy
 msgid "# Packets received from TUN"
 msgstr "# byte mottagna via HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 #, fuzzy
 msgid "# Bytes received from TUN"
 msgstr "# byte mottagna via HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, fuzzy, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -2983,66 +3003,61 @@ msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, fuzzy, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr "Indexering av fil \"%s\" misslyckades. Försöker att infoga fil...\n"
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr ""
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr ""
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 #, fuzzy
 msgid "could not connect to `fs' service"
 msgstr "Kunde inte ansluta till gnunetd.\n"
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, fuzzy, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, fuzzy, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, fuzzy, c-format
 msgid "Recursive upload failed: %s"
 msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr ""
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr " Anslutning misslyckades (fel?)\n"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -3116,154 +3131,154 @@ msgstr "Misslyckades att ansluta till gnunetd.\n"
 msgid "Failed to compute hash of file."
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, fuzzy, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 #, fuzzy
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 #, fuzzy
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 #, fuzzy
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr "Ogiltig URL \"%s\" (måste börja med \"%s\")\n"
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr ""
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr "Inga nyckelord angivna!\n"
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, fuzzy, c-format
 msgid "Failed to load state: %s\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, fuzzy, c-format
 msgid "Failed to save state to file %s\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, fuzzy, c-format
 msgid "Publishing `%s'\n"
 msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, fuzzy, c-format
 msgid "Failed to run `%s'\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, fuzzy, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr "Du måste ange en och endast en fil att avindexera.\n"
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr "ange prioritet för innehållet"
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr ""
 
@@ -3334,7 +3349,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr "Uppladdning vägrades!"
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr ""
@@ -3358,12 +3373,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, fuzzy, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr ""
 
@@ -3371,7 +3386,7 @@ msgstr ""
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr ""
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3397,15 +3412,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-#, fuzzy
-msgid "Special file-sharing operations"
-msgstr "Visa alla alternativ"
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3422,6 +3428,15 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+#, fuzzy
+msgid "Special file-sharing operations"
+msgstr "Visa alla alternativ"
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3513,7 +3528,7 @@ msgstr ""
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "=\tFel vid läsning av katalog.\n"
 
 #: src/fs/gnunet-publish.c:715
@@ -3553,15 +3568,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr ""
 
-#: src/fs/gnunet-publish.c:911
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3620,34 +3631,34 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, fuzzy, c-format
 msgid "Error searching: %s.\n"
 msgstr "Fel vid lämning av DHT.\n"
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 #, fuzzy
 msgid "Could not create keyword URI from arguments.\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 #, fuzzy
 msgid "Could not start searching.\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr ""
 
@@ -3688,18 +3699,18 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "GNUnet-konfiguration"
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, fuzzy, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 #, fuzzy
 msgid "# replies received via cadet"
 msgstr "# byte mottagna av typen %d"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 #, fuzzy
 msgid "# replies received via cadet dropped"
 msgstr "# byte mottagna av typen %d"
@@ -3883,111 +3894,111 @@ msgstr "# byte mottogs via TCP"
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 #, fuzzy
 msgid "# Pending requests created"
 msgstr "# byte mottogs via TCP"
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 msgid "# Pending requests active"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 #, fuzzy
 msgid "# replies received and matched"
 msgstr "# byte mottagna av typen %d"
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 #, fuzzy
 msgid "# storage requests dropped due to high load"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 #, fuzzy
 msgid "# Replies received from DHT"
 msgstr "# byte mottagna via HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 #, fuzzy
 msgid "# Replies received from CADET"
 msgstr "# byte mottagna via HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 #, fuzzy
 msgid "# GAP PUT messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
@@ -4027,7 +4038,7 @@ msgstr "Kunde inte komma åt namnrymdsinformation.\n"
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -4059,40 +4070,40 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 #, fuzzy
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, fuzzy, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, fuzzy, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n"
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, fuzzy, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr "Mottog okänd typ av begäran %d vid %s:%d\n"
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 #, fuzzy
 msgid "No DNS server specified!\n"
 msgstr "Inga nyckelord angivna!\n"
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -4108,39 +4119,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "\"%s\" är inte tillgänglig."
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-#, fuzzy
-msgid "Specify the type of the record to lookup"
-msgstr "ange prioritet för innehållet"
-
-#: src/gns/gnunet-gns.c:272
-#, fuzzy
-msgid "Specify a timeout for the lookup"
-msgstr "ange prioritet för innehållet"
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-#, fuzzy
-msgid "GNUnet GNS resolver tool"
-msgstr "Spåra GNUnets nätverkstopologi."
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -4160,122 +4138,145 @@ msgstr "Misslyckades att ansluta till gnunetd.\n"
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, fuzzy, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, fuzzy, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, fuzzy, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, fuzzy, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr "Kunde inte initiera SQLite.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, fuzzy, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, fuzzy, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, fuzzy, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, fuzzy, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr "Kunde inte skapa användarkonto:"
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, fuzzy, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 #, fuzzy
 msgid "Failed to pass client to MHD\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, fuzzy, c-format
 msgid "Unsupported socks version %d\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, fuzzy, c-format
 msgid "Unsupported socks command %d\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, fuzzy, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, fuzzy, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+#, fuzzy
+msgid "Specify the type of the record to lookup"
+msgstr "ange prioritet för innehållet"
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+#, fuzzy
+msgid "GNUnet GNS resolver tool"
+msgstr "Spåra GNUnets nätverkstopologi."
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4287,8 +4288,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 #, fuzzy
 msgid "Could not connect to DHT!\n"
 msgstr "Kunde inte ansluta till gnunetd.\n"
@@ -4381,82 +4382,72 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gns/plugin_rest_gns.c:442
-#, fuzzy
-msgid "Gns REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, fuzzy, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr "Ogiltigt svar på \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, fuzzy, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, fuzzy, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, fuzzy, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, fuzzy, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, fuzzy, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, fuzzy, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, fuzzy, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, fuzzy, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, fuzzy, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr "Ogiltigt svar på \"%s\".\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, fuzzy, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4496,262 +4487,262 @@ msgstr "Fel vid skapandet av användare"
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 #, fuzzy
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr "Kunde inte spara konfiguration!"
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 #, fuzzy
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr "Kunde inte spara konfiguration!"
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 #, fuzzy
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 #, fuzzy
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr ""
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, fuzzy, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, fuzzy, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr "Ogiltigt meddelande mottogs den %s:%d."
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, fuzzy, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, fuzzy, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr ""
 "Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, fuzzy, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr ""
 "Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 #, fuzzy
 msgid "# active connections"
 msgstr "Nätverksanslutning"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, fuzzy, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, fuzzy, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr "antal meddelanden att använda per iteration"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, fuzzy, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, fuzzy, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, fuzzy, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 #, fuzzy
 msgid "bytes in hostlist"
 msgstr "# byte krypterade"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, fuzzy, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr ""
 
@@ -4763,181 +4754,171 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 msgid "hostlist requests processed"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 msgid "# hostlist advertisements send"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 #, fuzzy
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr "Kunde inte komma åt namnrymdsinformation.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, fuzzy, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr "Ogiltiga argument. Avslutar.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, fuzzy, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, fuzzy, c-format
 msgid "Failed to create ego: %s\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, fuzzy, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-msgid "reduce output"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-msgid "display private keys as well"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, fuzzy, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, fuzzy, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, fuzzy, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, fuzzy, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/identity/plugin_rest_identity.c:1311
-#, fuzzy
-msgid "Identity REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, fuzzy, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr "Försöker använda fil \"%s\" för MySQL-konfiguration.\n"
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, fuzzy, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr "Kunde inte köra \"%s\": %s\n"
@@ -4947,7 +4928,7 @@ msgstr "Kunde inte köra \"%s\": %s\n"
 msgid "No records found for `%s'"
 msgstr "%d filer hittades i katalog.\n"
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -4967,390 +4948,364 @@ msgstr "Ogiltigt argument: \"%s\"\n"
 msgid "You must specify a name\n"
 msgstr "Du måste ange en mottagare!\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:238
+#: src/namecache/gnunet-namecache.c:238
+#, fuzzy
+msgid "spezifies the public key of the zone to look in"
+msgstr "ange prioritet för innehållet"
+
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
+#, fuzzy
+msgid "GNUnet zone manipulation tool"
+msgstr "GNUnet-konfiguration"
+
+#: src/namecache/namecache_api.c:296
+msgid "Namecache failed to cache block"
+msgstr ""
+
+#: src/namecache/namecache_api.c:383
+#, fuzzy
+msgid "Error communicating with namecache service"
+msgstr "Skriv ut information om GNUnets motparter."
+
+#: src/namecache/plugin_namecache_flat.c:121
+#: src/namecache/plugin_namecache_flat.c:255
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
+#: src/peerstore/plugin_peerstore_flat.c:379
+#: src/peerstore/plugin_peerstore_flat.c:538
+#, fuzzy, c-format
+msgid "Unable to initialize file: %s.\n"
+msgstr "Kunde inte initiera SQLite.\n"
+
+#: src/namecache/plugin_namecache_flat.c:132
+#: src/namestore/plugin_namestore_heap.c:159
+#: src/peerstore/plugin_peerstore_flat.c:394
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
+#: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
+#: src/peerstore/plugin_peerstore_flat.c:406
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
+#: src/namecache/plugin_namecache_flat.c:410
+msgid "flat plugin running\n"
+msgstr ""
+
+#: src/namecache/plugin_namecache_sqlite.c:183
+#: src/namecache/plugin_namecache_sqlite.c:197
+#: src/namestore/plugin_namestore_sqlite.c:219
+#: src/namestore/plugin_namestore_sqlite.c:230
+#, fuzzy, c-format
+msgid "Failed to setup database at `%s'\n"
+msgstr "Fel vid %s:%d.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, fuzzy, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, fuzzy, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, fuzzy, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, fuzzy, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
 #, fuzzy
-msgid "specifies the public key of the zone to look in"
-msgstr "ange prioritet för innehållet"
+msgid "Failed to start HTTP server\n"
+msgstr "Misslyckades att starta samling.\n"
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
 #, fuzzy
-msgid "GNUnet zone manipulation tool"
-msgstr "GNUnet-konfiguration"
+msgid "Failed to connect to identity\n"
+msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/namecache/namecache_api.c:296
-msgid "Namecache failed to cache block"
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
 msgstr ""
 
-#: src/namecache/namecache_api.c:383
-#, fuzzy
-msgid "Error communicating with namecache service"
-msgstr "Skriv ut information om GNUnets motparter."
-
-#: src/namecache/plugin_namecache_flat.c:121
-#: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
-#: src/peerstore/plugin_peerstore_flat.c:379
-#: src/peerstore/plugin_peerstore_flat.c:538
-#, fuzzy, c-format
-msgid "Unable to initialize file: %s.\n"
-msgstr "Kunde inte initiera SQLite.\n"
-
-#: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
-#: src/peerstore/plugin_peerstore_flat.c:394
-#, fuzzy, c-format
-msgid "Unable to get filesize: %s.\n"
-msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-
-#: src/namecache/plugin_namecache_flat.c:151
-#: src/peerstore/plugin_peerstore_flat.c:406
-#, fuzzy, c-format
-msgid "Unable to read file: %s.\n"
-msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-
-#: src/namecache/plugin_namecache_flat.c:410
-msgid "flat plugin running\n"
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
 msgstr ""
 
-#: src/namecache/plugin_namecache_sqlite.c:183
-#: src/namecache/plugin_namecache_sqlite.c:197
-#: src/namestore/plugin_namestore_sqlite.c:219
-#: src/namestore/plugin_namestore_sqlite.c:230
-#, fuzzy, c-format
-msgid "Failed to setup database at `%s'\n"
-msgstr "Fel vid %s:%d.\n"
-
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore.c:341
 #, fuzzy, c-format
 msgid "Adding record failed: %s\n"
 msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, fuzzy, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, fuzzy, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr ""
 "\n"
 "Fel vid uppladdning av fil: %s\n"
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, fuzzy, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr "Konfigurationsfil \"%s\" skapad.\n"
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, fuzzy, c-format
 msgid "Unsupported type `%s'\n"
 msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, fuzzy, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr "%s: symbolvärde \"%s\" ogiltigt för %s\n"
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, fuzzy, c-format
 msgid "Invalid time format `%s'\n"
 msgstr "Ogiltigt format för IP: \"%s\"\n"
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, fuzzy, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Ogiltiga argument: "
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, fuzzy, c-format
 msgid "Invalid nick `%s'\n"
 msgstr "Ogiltiga argument: "
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, fuzzy, c-format
 msgid "No default ego configured in identity service\n"
 msgstr "\"%s\": okänd tjänst: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, fuzzy, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr "Onödiga argument (ignorerade).\n"
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, fuzzy, c-format
 msgid "Cannot connect to identity service\n"
 msgstr "Kunde inte ansluta till gnunetd.\n"
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, fuzzy, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Okänd operation \"%s\"\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "Ogiltigt format för IP: \"%s\"\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 #, fuzzy
 msgid "set the desired nick name for the zone"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 #, fuzzy
 msgid "monitor changes in the namestore"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 #, fuzzy
 msgid "determine our name for the given PKEY"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 #, fuzzy
 msgid "name of the ego controlling the zone"
 msgstr "Visa värde av alternativet"
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, fuzzy, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, fuzzy, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, fuzzy, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, fuzzy, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-#, fuzzy
-msgid "Failed to start HTTP server\n"
-msgstr "Misslyckades att starta samling.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-#, fuzzy
-msgid "Failed to connect to identity\n"
-msgstr "Misslyckades att ansluta till gnunetd.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, fuzzy, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
-msgid "Flat file database running\n"
+#: src/namestore/plugin_namestore_heap.c:778
+msgid "heap file database running\n"
 msgstr ""
 
-#: src/namestore/plugin_rest_namestore.c:919
-#, fuzzy
-msgid "Namestore REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
 #: src/nat-auto/gnunet-nat-auto.c:193
 #, fuzzy
 msgid "Suggested configuration changes:\n"
@@ -5394,7 +5349,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr "GNUnet-konfiguration"
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 #, fuzzy
 msgid "Failed to connect to `gnunet-nat-server'\n"
@@ -5434,39 +5389,39 @@ msgstr "Skriv ut information om GNUnets motparter."
 msgid "Detected external IP `%s'\n"
 msgstr "Mottog ogiltig RPC \"%s\".\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 #, fuzzy
 msgid "upnpc not found\n"
 msgstr "Kommando \"%s\" hittades inte!\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5588,43 +5543,43 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 #, fuzzy
 msgid "Connection reversal request failed\n"
 msgstr "Samling stoppad.\n"
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, fuzzy, c-format
 msgid "Failed to start %s\n"
 msgstr "Misslyckades att starta samling.\n"
@@ -5637,11 +5592,6 @@ msgstr ""
 msgid "`upnpc' command not found\n"
 msgstr ""
 
-#: src/nse/gnunet-nse.c:123
-#, fuzzy
-msgid "Show network size estimates from NSE service."
-msgstr "# byte mottogs via TCP"
-
 #: src/nse/gnunet-nse-profiler.c:849
 #, fuzzy
 msgid "limit to the number of connections to NSE services, 0 for none"
@@ -5668,66 +5618,16 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr "Kan inte tillgå tjänsten"
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
-msgid "Value is too large.\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, fuzzy, c-format
-msgid "Removing expired address of transport `%s'\n"
-msgstr "Tillgängliga transport(er): %s\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:313
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:492
-#, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:658
-#, fuzzy, c-format
-msgid "Scanning directory `%s'\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:666
-#, c-format
-msgid "Still no peers found in `%s'!\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
-#, fuzzy, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr ""
+#: src/nse/gnunet-nse.c:122
+#, fuzzy
+msgid "Show network size estimates from NSE service."
+msgstr "# byte mottogs via TCP"
 
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
+msgid "Value is too large.\n"
 msgstr ""
 
-#: src/peerinfo/peerinfo_api.c:220
-#, fuzzy
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
-
 #: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, fuzzy, c-format
 msgid "%sPeer `%s'\n"
@@ -5739,7 +5639,7 @@ msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, fuzzy, c-format
 msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
@@ -5792,62 +5692,113 @@ msgstr ""
 msgid "also output HELLO uri(s)"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:879
-msgid "add given HELLO uri to the database"
+#: src/peerinfo-tool/gnunet-peerinfo.c:879
+msgid "add given HELLO uri to the database"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:897
+#, fuzzy
+msgid "Print information about peers."
+msgstr "Skriv ut information om GNUnets motparter."
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
+#: src/transport/gnunet-service-transport_plugins.c:168
+#, fuzzy, c-format
+msgid "Starting transport plugins `%s'\n"
+msgstr "Testar transport(er) %s\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
+#: src/transport/gnunet-service-transport_plugins.c:173
+#, fuzzy, c-format
+msgid "Loading `%s' transport plugin\n"
+msgstr "Testar transport(er) %s\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
+#: src/transport/gnunet-service-transport_plugins.c:208
+#, fuzzy, c-format
+msgid "Failed to load transport plugin for `%s'\n"
+msgstr "Kunde inte slå upp \"%s\": %s\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, fuzzy, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr "Tillgängliga transport(er): %s\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, fuzzy, c-format
+msgid "Scanning directory `%s'\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:667
+#, c-format
+msgid "Still no peers found in `%s'!\n"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:897
-#, fuzzy
-msgid "Print information about peers."
-msgstr "Skriv ut information om GNUnets motparter."
-
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
-#: src/transport/gnunet-service-transport_plugins.c:168
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
 #, fuzzy, c-format
-msgid "Starting transport plugins `%s'\n"
-msgstr "Testar transport(er) %s\n"
+msgid "Cleaning up directory `%s'\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
-#: src/transport/gnunet-service-transport_plugins.c:173
-#, fuzzy, c-format
-msgid "Loading `%s' transport plugin\n"
-msgstr "Testar transport(er) %s\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
-#: src/transport/gnunet-service-transport_plugins.c:208
-#, fuzzy, c-format
-msgid "Failed to load transport plugin for `%s'\n"
-msgstr "Kunde inte slå upp \"%s\": %s\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
+#: src/peerinfo/peerinfo_api.c:220
 #, fuzzy
-msgid "Peerinfo REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
+msgid "Failed to receive response from `PEERINFO' service."
+msgstr "Misslyckades att ta emot svar till \"%s\" meddelande från gnunetd\n"
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 #, fuzzy
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr "Utdataformat är inte känt, detta bör inte hända.\n"
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 #, fuzzy
 msgid "Received a malformed response from service."
 msgstr "Mottog ogiltig \"%s\" begäran (storlek %d)\n"
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, fuzzy, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5855,6 +5806,8 @@ msgid ""
 msgstr "Fel vid skapandet av användare"
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, fuzzy, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5871,6 +5824,113 @@ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr "\"%s\" till \"%s\" misslyckades vid %s:%d med fel: %s\n"
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "Ogiltigt argument: \"%s\"\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Misslyckades att starta samling.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Misslyckades att starta samling.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Misslyckades att starta samling.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Misslyckades att starta samling.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "Kunde inte skapa värdnyckel!\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "Kunde inte initiera SQLite.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, fuzzy, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+msgid "SQLite database running\n"
+msgstr ""
+
 #: src/pt/gnunet-daemon-pt.c:423
 #, fuzzy
 msgid "Failed to pack DNS request.  Dropping.\n"
@@ -5924,96 +5984,73 @@ msgstr "# byte mottogs via TCP"
 msgid "# DNS replies dropped (too late?)"
 msgstr "# byte mottagna av typen %d"
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, fuzzy, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, fuzzy, c-format
 msgid "Ego is required\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, fuzzy, c-format
 msgid "Requesting party key is required!\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-#, fuzzy
-msgid "The EGO to use"
-msgstr "meddelandestorlek"
-
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-#, fuzzy
-msgid "OpenID Connect REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-#, fuzzy
-msgid "Identity Provider REST API initialized\n"
-msgstr " Anslutning misslyckades\n"
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "Misslyckades att starta samling.\n"
@@ -6108,21 +6145,51 @@ msgstr "\"%s\" är inte en fil.\n"
 msgid "Search string `%s' is too long!\n"
 msgstr "\"%s\" är inte en fil.\n"
 
-#: src/rest/gnunet-rest-server.c:1039
+#: src/rest-plugins/plugin_rest_copying.c:209
 #, fuzzy
-msgid "GNUnet REST server"
-msgstr "Spåra GNUnets nätverkstopologi."
+msgid "COPYING REST API initialized\n"
+msgstr " Anslutning misslyckades\n"
 
-#: src/rest/plugin_rest_config.c:265
+#: src/rest-plugins/plugin_rest_credential.c:1128
 #, fuzzy
-msgid "CONFIG REST API initialized\n"
+msgid "GNS REST API initialized\n"
 msgstr " Anslutning misslyckades\n"
 
-#: src/rest/plugin_rest_copying.c:209
+#: src/rest-plugins/plugin_rest_gns.c:452
 #, fuzzy
-msgid "COPYING REST API initialized\n"
+msgid "Gns REST API initialized\n"
+msgstr " Anslutning misslyckades\n"
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+#, fuzzy
+msgid "Identity REST API initialized\n"
+msgstr " Anslutning misslyckades\n"
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+#, fuzzy
+msgid "Namestore REST API initialized\n"
+msgstr " Anslutning misslyckades\n"
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+#, fuzzy
+msgid "Identity Provider REST API initialized\n"
+msgstr " Anslutning misslyckades\n"
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+#, fuzzy
+msgid "Peerinfo REST API initialized\n"
 msgstr " Anslutning misslyckades\n"
 
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:944
+#, fuzzy
+msgid "GNUnet REST server"
+msgstr "Spåra GNUnets nätverkstopologi."
+
 #: src/revocation/gnunet-revocation.c:129
 #, fuzzy, c-format
 msgid "Key `%s' is valid\n"
@@ -6171,59 +6238,59 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, fuzzy, c-format
 msgid "Public key `%s' malformed\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 #, fuzzy
 msgid "No filename to store revocation certificate given.\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, fuzzy, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 #, fuzzy
 msgid "No action specified. Nothing to do.\n"
 msgstr "Inget tabellnamn angivet, använder \"%s\".\n"
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -6256,42 +6323,42 @@ msgstr "# klartext PONG-meddelanden mottagna"
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 #, fuzzy
 msgid "Could not open revocation database file!"
 msgstr "Kunde inte ansluta till gnunetd.\n"
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 #, fuzzy
 msgid "timeout for the profiling"
 msgstr "ange prioritet för innehållet"
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "antal iterationer"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 #, fuzzy
 msgid "Measure quality and performance of the RPS service."
 msgstr "Kan inte tillgå tjänsten"
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 #, fuzzy
 msgid "You must specify at least one message ID to check!\n"
@@ -6347,10 +6414,10 @@ msgstr ""
 msgid "Calculate the Vectorproduct with a GNUnet peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
 #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
 #, fuzzy
 msgid "Connect to CADET failed\n"
 msgstr " Anslutning misslyckades (fel?)\n"
@@ -6375,30 +6442,30 @@ msgstr ""
 msgid "also profile decryption"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
+#: src/set/gnunet-service-set.c:2005
 #, fuzzy
 msgid "Could not connect to CADET service\n"
 msgstr "Kunde inte ansluta till gnunetd.\n"
 
-#: src/set/gnunet-set-ibf-profiler.c:267
+#: src/set/gnunet-set-ibf-profiler.c:252
 #, fuzzy
 msgid "number of element in set A-B"
 msgstr "antal iterationer"
 
-#: src/set/gnunet-set-ibf-profiler.c:273
+#: src/set/gnunet-set-ibf-profiler.c:258
 #, fuzzy
 msgid "number of element in set B-A"
 msgstr "antal iterationer"
 
-#: src/set/gnunet-set-ibf-profiler.c:280
+#: src/set/gnunet-set-ibf-profiler.c:264
 msgid "number of common elements in A and B"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
+#: src/set/gnunet-set-ibf-profiler.c:270
 msgid "hash num"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:292
+#: src/set/gnunet-set-ibf-profiler.c:276
 msgid "ibf size"
 msgstr ""
 
@@ -6422,6 +6489,134 @@ msgstr ""
 msgid "element size"
 msgstr ""
 
+#: src/social/gnunet-social.c:1166
+#, fuzzy
+msgid "--place missing or invalid.\n"
+msgstr "Ogiltigt argument: \"%s\"\n"
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
+msgstr ""
+
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
+msgstr ""
+
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
+msgstr ""
+
+#: src/social/gnunet-social.c:1304
+#, fuzzy
+msgid "name or public key of ego"
+msgstr "Ogiltigt argument: \"%s\"\n"
+
+#: src/social/gnunet-social.c:1309
+#, fuzzy
+msgid "wait for incoming messages"
+msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
+
+#: src/social/gnunet-social.c:1315
+#, fuzzy
+msgid "GNS name"
+msgstr "Visa _namn"
+
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
+msgstr ""
+
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
+msgstr ""
+
+#: src/social/gnunet-social.c:1333
+#, fuzzy
+msgid "method name"
+msgstr "Visa _namn"
+
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "antal meddelanden att använda per iteration"
+
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
+msgstr ""
+
 #: src/sq/sq.c:54
 #, c-format
 msgid "Failure to bind %u-th SQL parameter\n"
@@ -6446,93 +6641,93 @@ msgstr "Ladda ner filer från GNUnet."
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr "Ladda ner filer från GNUnet."
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 #, fuzzy
 msgid "Failed to obtain statistics.\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, fuzzy, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, fuzzy, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, fuzzy, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, fuzzy, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr "Kan inte ansluta till %u.%u.%u.%u:%u: %s\n"
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr "Skriv ut statistik om GNUnet-operationer."
 
@@ -6585,7 +6780,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6624,7 +6819,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6694,6 +6889,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
+#: src/testbed/gnunet-testbed-profiler.c:289
+msgid "tolerate COUNT number of continious timeout failures"
+msgstr ""
+
+#: src/testbed/gnunet-testbed-profiler.c:294
+msgid ""
+"run profiler in non-interactive mode where upon testbed setup the profiler "
+"does not wait for a keystroke but continues to run until a termination "
+"signal is received"
+msgstr ""
+
 #: src/testbed/gnunet_testbed_mpi_spawn.c:118
 #, fuzzy
 msgid "Waiting for child to exit.\n"
@@ -6704,18 +6910,7 @@ msgstr "Väntar på att motparter ska ansluta (%u iterationer kvar)...\n"
 msgid "Spawning process `%s'\n"
 msgstr "Startade samling \"%s\".\n"
 
-#: src/testbed/gnunet-testbed-profiler.c:287
-msgid "tolerate COUNT number of continious timeout failures"
-msgstr ""
-
-#: src/testbed/gnunet-testbed-profiler.c:291
-msgid ""
-"run profiler in non-interactive mode where upon testbed setup the profiler "
-"does not wait for a keystroke but continues to run until a termination "
-"signal is received"
-msgstr ""
-
-#: src/testbed/testbed_api.c:400
+#: src/testbed/testbed_api.c:410
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
@@ -6735,7 +6930,7 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6891,49 +7086,49 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr "antal meddelanden att använda per iteration"
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 #, fuzzy
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr "Inga applikationer definierade i konfiguration!\n"
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "Kunde inte komma åt namnrymdsinformation.\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Kunde inte skapa värdnyckel!\n"
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Kunde inte skapa användarkonto:"
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Fel vid %s:%d.\n"
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
@@ -6948,148 +7143,148 @@ msgstr "Syntaxfel i konfigurationsfil \"%s\" på rad %d.\n"
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 #, fuzzy
 msgid "# connect requests issued to ATS"
 msgstr "# byte mottogs via TCP"
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 msgid "# HELLO messages gossipped"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 #, fuzzy
 msgid "# friends connected"
 msgstr "# av anslutna parter"
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, fuzzy, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr " gconfig\tGTK-konfiguration\n"
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 #, fuzzy
 msgid "# friends in configuration"
 msgstr " gconfig\tGTK-konfiguration\n"
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 #, fuzzy
 msgid "# HELLO messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "GNUnet-konfiguration"
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 #, fuzzy
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr "Maximalt antal chattklienter uppnått.\n"
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, fuzzy, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 #, fuzzy
 msgid "# bytes payload discarded due to not connected peer"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 #, fuzzy
 msgid "# bytes total received"
 msgstr "# byte krypterade"
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 #, fuzzy
 msgid "# bytes payload received"
 msgstr "# byte dekrypterade"
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, fuzzy, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, fuzzy, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -7099,213 +7294,213 @@ msgstr ""
 msgid "# session creation failed"
 msgstr "# sessionsnycklar accepterade"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 #, fuzzy
 msgid "# DISCONNECT messages sent"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 msgid "# bytes in message queue for other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 #, fuzzy
 msgid "# messages transmitted to other peers"
 msgstr "# byte skickade av typen %d"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 #, fuzzy
 msgid "# transmission failures for messages to other peers"
 msgstr "# byte skickade av typen %d"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 #, fuzzy
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 #, fuzzy
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 #, fuzzy
 msgid "# messages discarded due to lack of neighbour record"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 msgid "# bandwidth quota violations by other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 #, fuzzy
 msgid "# SYN_ACK messages sent"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 #, fuzzy
 msgid "# SYN messages received"
 msgstr "# PING-meddelanden skapade"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 #, fuzzy
 msgid "# SYN_ACK messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr "skicka ANTAL meddelanden"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr "skicka ANTAL meddelanden"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr "skicka ANTAL meddelanden"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr "skicka ANTAL meddelanden"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 #, fuzzy
 msgid "# ACK messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 #, fuzzy
 msgid "# unexpected ACK messages"
 msgstr "# krypterade PONG-meddelanden skickade"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 #, fuzzy
 msgid "# quota messages ignored (malformed)"
 msgstr "# byte mottogs via TCP"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 #, fuzzy
 msgid "# QUOTA messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 #, fuzzy
 msgid "# DISCONNECT messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 #, fuzzy
 msgid "# disconnected from peer upon explicit request"
 msgstr "# av anslutna parter"
@@ -7341,7 +7536,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 msgid "# validations running"
 msgstr ""
 
@@ -7366,280 +7561,282 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 #, fuzzy
 msgid "# PING message for different peer received"
 msgstr "# PING-meddelanden skapade"
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, fuzzy, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 #, fuzzy
 msgid "# HELLOs given to peerinfo"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+#, fuzzy
+msgid "receive data from peer"
+msgstr "# byte mottagna av typen %d"
+
+#: src/transport/gnunet-transport-profiler.c:626
+#, fuzzy
+msgid "iterations"
+msgstr "Visa alla alternativ"
+
+#: src/transport/gnunet-transport-profiler.c:631
+#, fuzzy
+msgid "number of messages to send"
+msgstr "antal meddelanden att använda per iteration"
+
+#: src/transport/gnunet-transport-profiler.c:636
+#, fuzzy
+msgid "message size to use"
+msgstr "meddelandestorlek"
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+#, fuzzy
+msgid "Direct access to transport service."
+msgstr "Misslyckades att ansluta till gnunetd.\n"
+
+#: src/transport/gnunet-transport.c:413
 #, fuzzy, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, fuzzy, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, fuzzy, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, fuzzy, c-format
 msgid "Transmitting %u bytes\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, fuzzy, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr "\"%s\" ansluten till \"%s\".\n"
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 #, fuzzy
 msgid "Connected to"
 msgstr "\"%s\" ansluten till \"%s\".\n"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 #, fuzzy
 msgid "Disconnected from"
 msgstr "\"%s\" ansluten till \"%s\".\n"
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, fuzzy, c-format
 msgid "Received %u bytes\n"
 msgstr "mottog ogiltigt \"%s\" meddelande\n"
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, fuzzy, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr "Jag är ändpunkt \"%s\".\n"
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 #, fuzzy
 msgid "Failed to connect to transport service\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 #, fuzzy
 msgid "print information for all peers (instead of only connected peers)"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 #, fuzzy
 msgid "disconnect from a peer"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 #, fuzzy
 msgid "provide information about all current connections (once)"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 #, fuzzy
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr "Skriv ut information om GNUnets motparter."
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 #, fuzzy
 msgid "do not resolve hostnames"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-#, fuzzy
-msgid "Direct access to transport service."
-msgstr "Misslyckades att ansluta till gnunetd.\n"
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-#, fuzzy
-msgid "receive data from peer"
-msgstr "# byte mottagna av typen %d"
-
-#: src/transport/gnunet-transport-profiler.c:586
-#, fuzzy
-msgid "iterations"
-msgstr "Visa alla alternativ"
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "antal meddelanden att använda per iteration"
-
-#: src/transport/gnunet-transport-profiler.c:596
-#, fuzzy
-msgid "message size to use"
-msgstr "meddelandestorlek"
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, fuzzy, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr "Testar transport(er) %s\n"
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, fuzzy, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr ""
 "Uppladdning av \"%s\" klar, aktuell genomsnittshastighet är %8.3f kbps.\n"
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, fuzzy, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr "Maximalt antal chattklienter uppnått.\n"
@@ -7689,6 +7886,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7798,123 +7996,134 @@ msgstr "# byte skickades via TCP"
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr "# byte kastade via TCP (utgående)"
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 #, fuzzy
 msgid "# TCP sessions active"
 msgstr "# sessionsnycklar accepterade"
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 #, fuzzy
 msgid "# bytes currently in TCP buffers"
 msgstr "# byte skickades via TCP"
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 #, fuzzy
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr "# byte kastade via TCP (utgående)"
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 #, fuzzy
 msgid "# bytes discarded by TCP (timeout)"
 msgstr "# byte kastade via TCP (utgående)"
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 #, fuzzy
 msgid "# bytes transmitted via TCP"
 msgstr "# byte skickade av typen %d"
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 #, fuzzy
 msgid "# TCP WELCOME messages received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr "# byte mottogs via TCP"
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr "Nätverksanslutning"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 #, fuzzy
 msgid "# TCP server connect events"
 msgstr "# av anslutna parter"
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 #, fuzzy
 msgid "Failed to start service.\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-#, fuzzy
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr "# krypterade PONG-meddelanden mottagna"
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7935,6 +8144,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "Misslyckades att binda till UDP6-port %d.\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7945,15 +8155,19 @@ msgstr "Misslyckades att binda till UDP6-port %d.\n"
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "\"%s\" är inte tillgänglig."
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "\"%s\" är inte tillgänglig."
@@ -7963,6 +8177,21 @@ msgstr "\"%s\" är inte tillgänglig."
 msgid "Failed to create UDP network sockets\n"
 msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+#, fuzzy
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr "# krypterade PONG-meddelanden mottagna"
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -8040,6 +8269,54 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr "# sessionsnycklar accepterade"
 
+#: src/transport/plugin_transport_xt.c:4010
+#, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4014
+msgid "XT transport not listening on any port (client only)\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4018
+#, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# sessionsnycklar accepterade"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "Misslyckades att binda till UDP6-port %d.\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "Misslyckades att binda till UDP6-port %d.\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, fuzzy, c-format
 msgid "Access denied to `%s'\n"
@@ -8051,17 +8328,17 @@ msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
 # drive = hard drive ?
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "\"%s\" misslyckades för enhet %s: %u\n"
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
@@ -8073,7 +8350,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, fuzzy, c-format
 msgid "Unknown address family %d\n"
 msgstr "Okänd operation \"%s\"\n"
@@ -8083,27 +8360,27 @@ msgstr "Okänd operation \"%s\"\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8118,45 +8395,44 @@ msgstr "Fel vid %s:%d.\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, fuzzy, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Kan inte ändra användare/grupp till \"%s\": %s\n"
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
@@ -8166,7 +8442,7 @@ msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 msgid "Could not access configuration file `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -8200,67 +8476,67 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "FELSÖKNING"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr "MEDDELANDE"
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "VARNING"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "FEL"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "Konfigurationsfil \"%s\" skapad.\n"
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8308,26 +8584,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, fuzzy, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, fuzzy, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, fuzzy, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, fuzzy, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
@@ -8362,7 +8638,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr "libgcrypt har inte den förväntande versionen (version %s krävs).\n"
@@ -8377,7 +8653,7 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, fuzzy, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n"
@@ -8387,7 +8663,7 @@ msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n"
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, fuzzy, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
@@ -8412,7 +8688,7 @@ msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 msgid "Sent DNS request to %s\n"
 msgstr "Misslyckades att skicka HTTP-begäran till värd \"%s\": %s\n"
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
@@ -8422,71 +8698,66 @@ msgstr "%s: flagga \"%s\" är tvetydig\n"
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr "%s: flagga \"--%s\" tillåter inte ett argument\n"
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr "%s: flagga \"%c%s\" tillåter inte ett argument\n"
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: flagga \"%s\" kräver ett argument\n"
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: okänd flagga \"--%s\"\n"
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: okänd flagga \"%c%s\"\n"
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: otillåten flagga -- %c\n"
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: ogiltig flagga -- %c\n"
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: flagga kräver ett argument -- %c\n"
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: flagga \"-W %s\" är tvetydig\n"
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr "%s: flagga \"-W %s\" tillåter inte ett argument\n"
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, fuzzy, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr "Använd --help för att få en lista på flaggor.\n"
 
-#: src/util/getopt.c:987
-#, fuzzy, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, fuzzy, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr "Konfigurationsfil \"%s\" skapad.\n"
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr "skriv ut versionsnummer"
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8494,109 +8765,105 @@ msgstr ""
 "Argument som är obligatoriska för långa flaggor är också obligatoriska för "
 "korta flaggor.\n"
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr "skriv ut denna hjälp"
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr "var informativ"
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, fuzzy, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, fuzzy, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, fuzzy, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr "Du måste skicka med ett nummer till flaggan \"%s\".\n"
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, fuzzy, c-format
 msgid "%s or %s argument is required\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 #, fuzzy
 msgid "name of the option to access"
 msgstr "Visa värde av alternativet"
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 #, fuzzy
 msgid "print available configuration sections"
 msgstr "GNUnet-konfiguration"
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
@@ -8606,116 +8873,89 @@ msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
 msgid "Failed to open `%s': %s\n"
 msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Failed to write to `%s': %s\n"
 msgstr "Fel vid %s:%d.\n"
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Finished!\n"
 msgstr "Slutför"
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr "antal meddelanden att använda per iteration"
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, fuzzy, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr "Kunde inte skapa värdnyckel!\n"
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 #, fuzzy
 msgid "Manipulate GNUnet private ECC key files"
 msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, fuzzy, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n"
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8724,42 +8964,57 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, fuzzy, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr "Tolkning av HTTP-svar för URL \"%s\" misslyckades.\n"
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 #, fuzzy
 msgid "Manipulate GNUnet proof of work files"
 msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, fuzzy, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n"
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8778,12 +9033,12 @@ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 msgid "Error writing to `%s': %s\n"
 msgstr "Fel vid skapandet av användare"
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8796,23 +9051,23 @@ msgid ""
 "variable.\n"
 msgstr ""
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, fuzzy, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr "Kunde inte hitta motpart \"%s\" i routingtabell!\n"
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
 # drive = hard drive ?
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, fuzzy, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr "\"%s\" misslyckades för enhet %s: %u\n"
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8837,17 +9092,17 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, fuzzy, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
@@ -8892,16 +9147,16 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8909,12 +9164,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr "Anrop till \"%s\" returnerade %d.\n"
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8923,236 +9178,236 @@ msgstr ""
 msgid "b"
 msgstr "b"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr ""
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr ""
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr ""
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "ms"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "s"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "m"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "h"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 #, fuzzy
 msgid "day"
 msgstr " dagar"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 #, fuzzy
 msgid "days"
 msgstr " dagar"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr ""
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr ""
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, fuzzy, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr "Ogiltigt svar på \"%s\".\n"
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, fuzzy, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr "Misslyckades att starta samling.\n"
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr "Ogiltigt format för IP: \"%s\"\n"
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr "Ogiltig nätverksnotation (\"/%d\" är inte giltig i IPv4 CIDR)."
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, fuzzy, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "Ogiltigt format för IP: \"%s\"\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr "Ogiltig nätverksnotation (slutar inte med \";\": \"%s\")\n"
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, fuzzy, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr "Fel format \"%s\" för nätmask: %s\n"
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, fuzzy, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr "Fel format \"%s\" för nätverk: %s\n"
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 #, fuzzy
 msgid "# Active channels"
 msgstr "Nätverksanslutning"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 #, fuzzy
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 #, fuzzy
 msgid "# ICMP packets received from cadet"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 #, fuzzy
 msgid "# UDP packets received from cadet"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 #, fuzzy
 msgid "# TCP packets received from cadet"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr "# PING-meddelanden skapade"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 #, fuzzy
 msgid "# Packets dropped (channel not yet online)"
 msgstr "# byte kastade via UDP (utgående)"
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 #, fuzzy
 msgid "# Packets received from TUN interface"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 #, fuzzy
 msgid "# Active destinations"
 msgstr "Nätverksanslutning"
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 #, fuzzy
 msgid "Must specify valid IPv6 address"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 #, fuzzy
 msgid "Must specify valid IPv4 address"
 msgstr "\"%s\" är inte tillgänglig."
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -9224,156 +9479,72 @@ msgstr "# byte mottagna via UDP"
 msgid "Setup tunnels via VPN."
 msgstr ""
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 #, fuzzy
 msgid "Failed to connect to the namestore!\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr "# sessionsnycklar accepterade"
-
-#, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "Misslyckades att binda till UDP6-port %d.\n"
-
-#, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "Misslyckades att binda till UDP6-port %d.\n"
-
-#, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
-#~ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
-
-#, fuzzy
-#~ msgid "Print information about DV state"
-#~ msgstr "Skriv ut information om GNUnets motparter."
-
-#, fuzzy
-#~ msgid "Invalid tunnel owner `%s'\n"
-#~ msgstr "Ogiltigt format för IP: \"%s\"\n"
-
-#, fuzzy
-#~ msgid "Provide information about a particular tunnel"
-#~ msgstr "Skriv ut information om GNUnets motparter."
-
-#, fuzzy
-#~ msgid "Failed to store membership information!\n"
-#~ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
-
-#, fuzzy
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "Ogiltigt argument: \"%s\"\n"
-
-#, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "Misslyckades att starta samling.\n"
-
-#, fuzzy
-#~ msgid "Failed to get fragment!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Failed to get message!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Failed to get message fragment!\n"
-#~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
-
-#, fuzzy
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr "Misslyckades att starta samling.\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "Misslyckades att starta samling.\n"
-
-#, fuzzy
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "Misslyckades att starta samling.\n"
-
-#, fuzzy
-#~ msgid "Failed to begin synchronizing state!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Failed to end synchronizing state!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
-
-#, fuzzy
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
 
 #, fuzzy
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr "Kunde inte skapa värdnyckel!\n"
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "\"%s\" är inte tillgänglig."
 
 #, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
-#~ msgstr "Kunde inte initiera SQLite.\n"
+#~ msgid "Specify a timeout for the lookup"
+#~ msgstr "ange prioritet för innehållet"
 
 #, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
+#~ msgid "Unable to parse CAA record string `%s'\n"
 #~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
 #, fuzzy
-#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
-#~ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
-
-#, fuzzy
-#~ msgid "--place missing or invalid.\n"
-#~ msgstr "Ogiltigt argument: \"%s\"\n"
+#~ msgid "The EGO to use"
+#~ msgstr "meddelandestorlek"
 
 #, fuzzy
-#~ msgid "name or public key of ego"
-#~ msgstr "Ogiltigt argument: \"%s\"\n"
+#~ msgid "OpenID Connect REST API initialized\n"
+#~ msgstr " Anslutning misslyckades\n"
 
 #, fuzzy
-#~ msgid "wait for incoming messages"
-#~ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
+#~ msgid "CONFIG REST API initialized\n"
+#~ msgstr " Anslutning misslyckades\n"
 
 #, fuzzy
-#~ msgid "GNS name"
-#~ msgstr "Visa _namn"
+#~ msgid "Option `%s' can't be used with other options.\n"
+#~ msgstr "Kommando \"%s\" kräver ett argument (\"%s\").\n"
 
 #, fuzzy
-#~ msgid "method name"
-#~ msgstr "Visa _namn"
+#~ msgid "Invalid tunnel owner `%s'\n"
+#~ msgstr "Ogiltigt format för IP: \"%s\"\n"
 
 #, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "antal meddelanden att använda per iteration"
+#~ msgid "Provide information about a particular tunnel"
+#~ msgstr "Skriv ut information om GNUnets motparter."
 
 #, fuzzy
 #~ msgid "Could not resolve `%s' (%s): %s\n"
@@ -10222,8 +10393,8 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 
 #, fuzzy
 #~ msgid ""
-#~ "%s service is lacking key configuration settings (%s). Using default "
-#~ "(%u).\n"
+#~ "%s service is lacking key configuration settings (%s). Using default (%"
+#~ "u).\n"
 #~ msgstr "GNUnet-konfiguration"
 
 #, fuzzy
@@ -11096,8 +11267,8 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 #, fuzzy
 #~ msgid "No interface specified in section `%s' under `%s'!\n"
 #~ msgstr ""
-#~ "Inga nätverksgränssnitt angivna i konfigurationssektionen \"%s\" under "
-#~ "\"%s\"!\n"
+#~ "Inga nätverksgränssnitt angivna i konfigurationssektionen \"%s\" under \"%"
+#~ "s\"!\n"
 
 #, fuzzy
 #~ msgid "`%s' returned with error code %u"
@@ -11115,8 +11286,8 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 #~ msgid ""
 #~ "No network interfaces defined in configuration section `%s' under `%s'!\n"
 #~ msgstr ""
-#~ "Inga nätverksgränssnitt angivna i konfigurationssektionen \"%s\" under "
-#~ "\"%s\"!\n"
+#~ "Inga nätverksgränssnitt angivna i konfigurationssektionen \"%s\" under \"%"
+#~ "s\"!\n"
 
 #, fuzzy
 #~ msgid "Command `%s' failed with error code %u\n"
@@ -11978,8 +12149,8 @@ msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 #~ msgstr "Kunde inte slå upp namnet för SMTP-server \"%s\": %s"
 
 #~ msgid ""
-#~ "You must specify the name of a pipe for the SMTP transport in section `"
-#~ "%s' under `%s'.\n"
+#~ "You must specify the name of a pipe for the SMTP transport in section `%"
+#~ "s' under `%s'.\n"
 #~ msgstr ""
 #~ "Du måste ange ett namn på röret för SMTP-transporten i sektion \"%s\" "
 #~ "under \"%s\".\n"
index cbc34149d2d05c3f0ef54d01d4ac482a93943d1c..58f55cebb2f07771d03432dda6ac6422a12c9996 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,101 +8,101 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.8.0a\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2008-09-10 22:05+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
-"Language: vi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: vi\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: LocFactoryEditor 1.7b3\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, fuzzy, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, fuzzy, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr "Lỗi truy cập đến thư mục nhà GNUnet « %s »\n"
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 #, fuzzy
 msgid "We disconnected from ARM before we could send a request"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 #, fuzzy
 msgid "Unknown request status"
 msgstr "Không rõ người dùng « %s »\n"
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "# các byte trong kho dữ liệu"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 #, fuzzy
 msgid "is starting"
 msgstr "« %s » đang đăng ký trình điều khiển %d\n"
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 #, fuzzy
 msgid "is stopping"
 msgstr "# các byte trong kho dữ liệu"
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 #, fuzzy
 msgid "is starting already"
 msgstr "« %s » đang đăng ký trình điều khiển %d\n"
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 #, fuzzy
 msgid "is stopping already"
 msgstr "« %s » đang đăng ký trình điều khiển %d\n"
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 #, fuzzy
 msgid "is started already"
 msgstr "« %s » đang đăng ký trình điều khiển %d\n"
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 #, fuzzy
 msgid "is stopped already"
 msgstr "« %s » đang đăng ký trình điều khiển %d\n"
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 #, fuzzy
 msgid "service is not known to ARM"
 msgstr "Không gian tên « %s » có đánh giá %d.\n"
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 #, fuzzy
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr "« %s » đang tắt.\n"
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "Không rõ người dùng « %s »\n"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, fuzzy, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
@@ -117,124 +117,125 @@ msgstr "Lỗi kết nối đến gnunetd.\n"
 msgid "Failed to stop the ARM service: %s\n"
 msgstr "Lỗi vào phòng « %s »\n"
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, fuzzy, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, fuzzy, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, fuzzy, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr "Lỗi chạy %s: %s %d\n"
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, fuzzy, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 #, fuzzy
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 #, fuzzy
 msgid "Running services:\n"
 msgstr "Đang nạp và khởi động dùng « %s ».\n"
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, fuzzy, c-format
 msgid "Starting %s...\n"
 msgstr "Đang bắt đầu tài về « %s »\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, fuzzy, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr "Không rõ người dùng « %s »\n"
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 #, fuzzy
 msgid "stop all GNUnet services"
 msgstr "hủy cài đặt dịch vụ GNUnet"
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 #, fuzzy
 msgid "start all GNUnet default services"
 msgstr "hủy cài đặt dịch vụ GNUnet"
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 #, fuzzy
 msgid "stop and start all GNUnet default services"
 msgstr "hủy cài đặt dịch vụ GNUnet"
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 #, fuzzy
 msgid "list currently running services"
 msgstr "Đang nạp và khởi động dùng « %s ».\n"
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -243,30 +244,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s: tùy chọn « %s » là mơ hồ\n"
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -274,7 +281,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -282,7 +290,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
@@ -290,7 +299,8 @@ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Lỗi đóng kết đến cổng %s %d.\n"
@@ -362,161 +372,26 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
+#: src/ats-tests/ats-testing-log.c:837
 #, fuzzy
-msgid "print logging"
+msgid "Stop logging\n"
 msgstr "Theo dõi"
 
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, fuzzy, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr "Không thể sơ khởi SQLite: %s.\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, fuzzy, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, fuzzy, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "Không thể lưu tập tin cấu hình « %s »:"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2699
-#, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr "Không thể lưu tập tin cấu hình « %s »:"
+msgid "Start logging `%s'\n"
+msgstr "Đang bắt đầu tài về « %s »\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, fuzzy, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/ats-tests/ats-testing-log.c:837
-#, fuzzy
-msgid "Stop logging\n"
-msgstr "Theo dõi"
-
-#: src/ats-tests/ats-testing-log.c:892
-#, fuzzy, c-format
-msgid "Start logging `%s'\n"
-msgstr "Đang bắt đầu tài về « %s »\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -524,6 +399,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr ""
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -646,6 +532,132 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
+msgid ""
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3306
+#, fuzzy
+msgid "print logging"
+msgstr "Theo dõi"
+
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
+msgstr ""
+
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, fuzzy, c-format
+msgid "Failed to initialize solver `%s'!\n"
+msgstr "Không thể sơ khởi SQLite: %s.\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:304
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:359
+#, c-format
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1870
+#, fuzzy, c-format
+msgid "Adding address for peer `%s' multiple times\n"
+msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
+
+#: src/ats/plugin_ats_mlp.c:1914
+#, fuzzy, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
+msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
+
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
+msgid ""
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
 #: src/auction/gnunet-auction-create.c:163
 msgid "description of the item to be sold"
 msgstr ""
@@ -684,7 +696,7 @@ msgstr ""
 
 #: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
 #: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
 msgid "help text"
 msgstr ""
 
@@ -697,40 +709,40 @@ msgstr "Dữ liệu nhập không hợp lệ.\n"
 msgid "Extra arguments are not applicable in combination with this option.\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/cadet/gnunet-cadet.c:795
 #, fuzzy, c-format
 msgid "Invalid target `%s'\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/cadet/gnunet-cadet.c:829
+#: src/cadet/gnunet-cadet.c:832
 #, fuzzy
 msgid "No action requested\n"
 msgstr "Thu thập bị dừng.\n"
 
-#: src/cadet/gnunet-cadet.c:854
+#: src/cadet/gnunet-cadet.c:857
 #, fuzzy
 msgid "Provide information about a particular connection"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/cadet/gnunet-cadet.c:858
+#: src/cadet/gnunet-cadet.c:861
 msgid "Activate echo mode"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
+#: src/cadet/gnunet-cadet.c:866
 msgid "Listen for connections using a shared secret among sender and recipient"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
+#: src/cadet/gnunet-cadet.c:871
 #, fuzzy
 msgid "Provide information about a patricular peer"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/cadet/gnunet-cadet.c:872
+#: src/cadet/gnunet-cadet.c:875
 #, fuzzy
 msgid "Provide information about all peers"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/cadet/gnunet-cadet.c:876
+#: src/cadet/gnunet-cadet.c:879
 #, fuzzy
 msgid "Provide information about all tunnels"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
@@ -780,6 +792,28 @@ msgstr ""
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1029,38 +1063,16 @@ msgstr "Lỗi bắt đầu thu thập.\n"
 msgid "sets the NAME of the ego to use for the caller ID"
 msgstr ""
 
-#: src/conversation/gnunet-conversation.c:1307
-msgid "sets the LINE to use for the phone"
-msgstr ""
-
-#: src/conversation/gnunet-conversation.c:1336
-msgid "Enables having a conversation with other GNUnet users."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
+#: src/conversation/gnunet-conversation.c:1307
+msgid "sets the LINE to use for the phone"
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
+#: src/conversation/gnunet-conversation.c:1336
+msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1190,7 +1202,7 @@ msgstr "SMTP: « %s » bị lỗi: %s\n"
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr "Lỗi tạo thư mục tạm thời."
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, fuzzy, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr "Không thể kết nối tới %s:%u: %s\n"
@@ -1216,49 +1228,49 @@ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 msgid "Could not start playback audio helper.\n"
 msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr "# của các đồng đẳng đã kết nối"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 #, fuzzy
 msgid "key received"
 msgstr "# các khoá phiên chạy bị từ chối"
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 #, fuzzy
 msgid "connection established"
 msgstr "Thu thập bị dừng.\n"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "« %.*s » được kết nối tới « %.*s ».\n"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "Lỗi không rõ"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, fuzzy, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
@@ -1268,241 +1280,241 @@ msgstr "Đối số không hợp lệ cho « %s ».\n"
 msgid "Failed to connect to CORE service!\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 #, fuzzy
 msgid "provide information about all current connections (continuously)"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 #, fuzzy
 msgid "Print information about connected peers."
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 #, fuzzy
 msgid "# send requests dropped (disconnected)"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, fuzzy, c-format
 msgid "# bytes of messages of type %u received"
 msgstr "# các byte nhiễu được nhận"
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 #, fuzzy
 msgid "# messages discarded (session disconnected)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, fuzzy, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr "# các byte nhiễu được nhận"
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 #, fuzzy
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "Lưu cấu hình ngay bây giờ không?"
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "Không gian tên « %s » có đánh giá %d.\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr "# các byte đã mã hoá"
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr "# các byte đã giải mã"
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 #, fuzzy
 msgid "# PAYLOAD dropped (out of order)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 #, fuzzy
 msgid "# PING messages transmitted"
 msgstr "# các thông báo PING được tạo"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 #, fuzzy
 msgid "# duplicate ephemeral keys ignored"
 msgstr "# các thông báo phát hiện dht được nhận"
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 #, fuzzy
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 #, fuzzy
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr "# các thông báo được chắp liền"
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "# các thông báo phát hiện dht được nhận"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 #, fuzzy
 msgid "# PING messages received"
 msgstr "# các thông báo PING được tạo"
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 #, fuzzy
 msgid "# PING messages dropped (out of order)"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 #, fuzzy
 msgid "# PONG messages created"
 msgstr "# các thông báo PING được tạo"
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 #, fuzzy
 msgid "# sessions terminated by timeout"
 msgstr "# các byte loại đi bởi TCP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 #, fuzzy
 msgid "# keepalive messages sent"
 msgstr "# các thông báo PING nhập thô được gửi"
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 #, fuzzy
 msgid "# PONG messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 #, fuzzy
 msgid "# PONG messages dropped (connection down)"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 #, fuzzy
 msgid "# PONG messages dropped (out of order)"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 #, fuzzy
 msgid "# PONG messages decrypted"
 msgstr "# các thông báo PING được tạo"
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 #, fuzzy
 msgid "# session keys confirmed via PONG"
 msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG"
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 #, fuzzy
 msgid "# timeouts prevented via PONG"
 msgstr "# các byte đã nhận qua TCP"
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 #, fuzzy
 msgid "# rekey operations confirmed via PONG"
 msgstr "# Các quảng cáo đồng đẳng được xác nhận qua PONG"
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 #, fuzzy
 msgid "# DATA message dropped (out of order)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 #, fuzzy
 msgid "# sessions terminated by key expiration"
 msgstr "# các byte loại đi bởi TCP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 #, fuzzy
 msgid "# bytes dropped (duplicates)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 #, fuzzy
 msgid "# bytes dropped (out of sequence)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 #, fuzzy
 msgid "# bytes dropped (ancient message)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 #, fuzzy
 msgid "# bytes of payload decrypted"
 msgstr "# các byte đã giải mã"
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 #, fuzzy
 msgid "# peers connected"
 msgstr "# của các đồng đẳng đã kết nối"
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 #, fuzzy
 msgid "# type map refreshes sent"
 msgstr "# tổng số yêu cầu lỗ hổng được gửi"
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 #, fuzzy
 msgid "# outdated typemap confirmations received"
 msgstr "Lỗi lưu cấu hình."
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 #, fuzzy
 msgid "# valid typemap confirmations received"
 msgstr "Lỗi lưu cấu hình."
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 #, fuzzy
 msgid "# type maps received"
 msgstr "# các thông báo phát hiện dht được nhận"
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1511,7 +1523,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr ""
@@ -1613,29 +1625,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr "Bản ghi lỗi GNUnet"
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, fuzzy, c-format
 msgid "Failed to connect to GNS\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, fuzzy, c-format
 msgid "Failed to connect to namestore\n"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-#, fuzzy
-msgid "GNS REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 #, fuzzy
@@ -1683,19 +1690,21 @@ msgstr "kho dữ liệu sqlite"
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1705,6 +1714,7 @@ msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -2010,7 +2020,7 @@ msgstr "kho dữ liệu sqlite"
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -2025,23 +2035,25 @@ msgstr "số lần lặp lại"
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 #, fuzzy
 msgid "Failed to drop table from database.\n"
 msgstr ""
 "\n"
 "Không nhận được đáp ứng từ gnunetd.\n"
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr ""
 
@@ -2057,6 +2069,8 @@ msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s"
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr "Không thể sơ khởi SQLite: %s.\n"
@@ -2078,7 +2092,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 #, fuzzy
 msgid "Sqlite database running\n"
 msgstr "kho dữ liệu sqlite"
@@ -2150,54 +2165,6 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, fuzzy, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr "tăng sổ tối đa các kết nối TCP/IP"
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-#, fuzzy
-msgid "number of peers to start"
-msgstr "số lần lặp lại"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:1009
-#, fuzzy
-msgid "Measure quality and performance of the DHT service."
-msgstr "Không thể truy cập đến dịch vụ"
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2326,107 +2293,107 @@ msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\
 msgid "# FIND PEER messages initiated"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 #, fuzzy
 msgid "# Peer selection failed"
 msgstr "# các cuộc gọi HTTP select (lựa chọn)"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 #, fuzzy
 msgid "# PUT messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 #, fuzzy
 msgid "# P2P messages dropped due to full queue"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 #, fuzzy
 msgid "# GET messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 #, fuzzy
 msgid "# RESULT messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 #, fuzzy
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 #, fuzzy
 msgid "# P2P FIND PEER requests processed"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 #, fuzzy
 msgid "# P2P RESULTS received"
 msgstr "# Tín hiệu HTTP PUT được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Tín hiệu HTTP PUT được nhận"
@@ -2460,15 +2427,63 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 #, fuzzy
 msgid "# DHT requests combined"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, fuzzy, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr "tăng sổ tối đa các kết nối TCP/IP"
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+#, fuzzy
+msgid "number of peers to start"
+msgstr "số lần lặp lại"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+#, fuzzy
+msgid "Measure quality and performance of the DHT service."
+msgstr "Không thể truy cập đến dịch vụ"
+
 #: src/dht/plugin_block_dht.c:189
 #, fuzzy, c-format
 msgid "Block not of type %u\n"
@@ -2545,16 +2560,21 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 #, fuzzy
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
 msgstr ""
 
+#: src/dv/gnunet-dv.c:175
+#, fuzzy
+msgid "Print information about DV state"
+msgstr "In ra thông tin về các đồng đẳng GNUnet."
+
 #: src/exit/gnunet-daemon-exit.c:960
 #, fuzzy
 msgid "# TCP packets sent via TUN"
@@ -2565,204 +2585,204 @@ msgstr "# các byte đã gửi qua UDP"
 msgid "# ICMP packets sent via TUN"
 msgstr "# các byte đã gửi qua UDP"
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 #, fuzzy
 msgid "# UDP packets sent via TUN"
 msgstr "# các byte đã gửi qua UDP"
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 #, fuzzy
 msgid "# Bytes received from CADET"
 msgstr "# các byte đã nhận qua HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 #, fuzzy
 msgid "# UDP IP-exit requests received via cadet"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 #, fuzzy
 msgid "# UDP service requests received via cadet"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 #, fuzzy
 msgid "# TCP service creation requests received via cadet"
 msgstr "# các yêu cầu danh sách máy được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 #, fuzzy
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr "# các yêu cầu danh sách máy được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 #, fuzzy
 msgid "# TCP DATA requests dropped (no session)"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 #, fuzzy
 msgid "# TCP data requests received via cadet"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 #, fuzzy
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 #, fuzzy
 msgid "# ICMP service requests received via cadet"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr "# các truy vấn lỗ hổng được định tuyến"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr "# các byte được gửi"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 #, fuzzy
 msgid "# Packets received from TUN"
 msgstr "# các byte đã nhận qua HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 #, fuzzy
 msgid "# Bytes received from TUN"
 msgstr "# các byte đã nhận qua HTTP"
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, fuzzy, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n"
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -3009,64 +3029,59 @@ msgstr "Không kết nối được đến trình nền gnunetd."
 msgid "Publishing failed: %s"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "Không thể mở tập tin « %s »: « %s »"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, fuzzy, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr "Lỗi đánh chỉ mục tập tin « %s ». Đề nghị: thử chèn tập tin.\n"
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr ""
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 #, fuzzy
 msgid "filename too long"
 msgstr "tên tập tin"
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 msgid "could not connect to `fs' service"
 msgstr ""
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, fuzzy, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, fuzzy, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr "%s bị lỗi tại %s:%d: « %s »\n"
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, fuzzy, c-format
 msgid "Recursive upload failed: %s"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr ""
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr "Kho dữ liệu đầy.\n"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -3140,149 +3155,149 @@ msgstr "Không kết nối được đến trình nền gnunetd."
 msgid "Failed to compute hash of file."
 msgstr "Không kết nối được đến trình nền gnunetd."
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr ""
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr ""
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr ""
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr ""
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr ""
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr "Chưa ghi rõ từ khoá.\n"
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr "Có dấu nháy kép thừa hay thiếu.\n"
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, fuzzy, c-format
 msgid "Failed to load state: %s\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, fuzzy, c-format
 msgid "Failed to save state to file %s\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, fuzzy, c-format
 msgid "Publishing `%s'\n"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, fuzzy, c-format
 msgid "Failed to run `%s'\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, fuzzy, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr "Phải ghi rõ chỉ một tên tập tin để chèn.\n"
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên"
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr "xác định mức ưu tiên của nội dung"
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 #, fuzzy
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr "Tự động chia sẻ một thư mục."
@@ -3354,7 +3369,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr "Tiến trình tải lên « %s » đã tiếp tục lại.\n"
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, fuzzy, c-format
 msgid "Unexpected status: %d\n"
 msgstr "Gặp sự kiện bất thường: %d\n"
@@ -3378,12 +3393,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, fuzzy, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 #, fuzzy
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người gửi"
@@ -3392,7 +3407,7 @@ msgstr "đặt CẤP mong muốn của tình trạng nặc danh của người g
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr "xoá việc tải về không hoàn thành (khi hủy bở dùng CTRL-C)"
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3420,15 +3435,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-#, fuzzy
-msgid "Special file-sharing operations"
-msgstr "Tùy chọn chia sẻ tập tin"
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3445,6 +3451,15 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+#, fuzzy
+msgid "Special file-sharing operations"
+msgstr "Tùy chọn chia sẻ tập tin"
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3535,7 +3550,7 @@ msgstr ""
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "=\tLỗi đọc thư mục.\n"
 
 #: src/fs/gnunet-publish.c:715
@@ -3575,16 +3590,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr "Tùy chọn « %s » cần thiết khi dùng tùy chọn « %s ».\n"
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
 
-#: src/fs/gnunet-publish.c:911
-#, fuzzy
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên"
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3657,34 +3667,34 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, fuzzy, c-format
 msgid "Error searching: %s.\n"
 msgstr "Gặp lỗi khi tải xuống: %s\n"
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 #, fuzzy
 msgid "Could not create keyword URI from arguments.\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 #, fuzzy
 msgid "Could not start searching.\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 #, fuzzy
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr "Không hiển thị kết quả tìm kiếm cho tập tin được chúng ta tải lên"
@@ -3727,18 +3737,18 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "Lưu cấu hình ngay bây giờ không?"
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, fuzzy, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 #, fuzzy
 msgid "# replies received via cadet"
 msgstr "# các byte kiểu %d được nhận"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 #, fuzzy
 msgid "# replies received via cadet dropped"
 msgstr "# các byte kiểu %d được nhận"
@@ -3928,113 +3938,113 @@ msgstr "# các yêu cầu get (lấy) dht được nhận"
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 #, fuzzy
 msgid "# Pending requests created"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 #, fuzzy
 msgid "# Pending requests active"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 #, fuzzy
 msgid "# replies received and matched"
 msgstr "# các byte kiểu %d được nhận"
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 #, fuzzy
 msgid "# results found locally"
 msgstr "# nội dung lỗ hổng được tìm cục bộ"
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 #, fuzzy
 msgid "# storage requests dropped due to high load"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 #, fuzzy
 msgid "# Replies received from DHT"
 msgstr "# các byte đã nhận qua HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 #, fuzzy
 msgid "# Replies received from CADET"
 msgstr "# các byte đã nhận qua HTTP"
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 #, fuzzy
 msgid "# GAP PUT messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
@@ -4074,7 +4084,7 @@ msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -4106,40 +4116,40 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 #, fuzzy
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, fuzzy, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, fuzzy, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 #, fuzzy
 msgid "No DNS server specified!\n"
 msgstr "Chưa ghi rõ từ khoá.\n"
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -4155,39 +4165,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "« %s » không sẵn sàng.\n"
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-#, fuzzy
-msgid "Specify the type of the record to lookup"
-msgstr "xác định mức ưu tiên của nội dung"
-
-#: src/gns/gnunet-gns.c:272
-#, fuzzy
-msgid "Specify a timeout for the lookup"
-msgstr "xác định mức ưu tiên của nội dung"
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-#, fuzzy
-msgid "GNUnet GNS resolver tool"
-msgstr "Bản ghi lỗi GNUnet"
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -4207,122 +4184,145 @@ msgstr "Lỗi kết nối đến gnunetd.\n"
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr "%s bị lỗi tại %s:%d: « %s »\n"
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, fuzzy, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, fuzzy, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, fuzzy, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr "Không thể sơ khởi SQLite: %s.\n"
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, fuzzy, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, fuzzy, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, fuzzy, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, fuzzy, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr "Không thể tạo tài khoản người dùng:"
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, fuzzy, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 #, fuzzy
 msgid "Failed to pass client to MHD\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, fuzzy, c-format
 msgid "Unsupported socks version %d\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, fuzzy, c-format
 msgid "Unsupported socks command %d\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, fuzzy, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, fuzzy, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+#, fuzzy
+msgid "Specify the type of the record to lookup"
+msgstr "xác định mức ưu tiên của nội dung"
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+#, fuzzy
+msgid "GNUnet GNS resolver tool"
+msgstr "Bản ghi lỗi GNUnet"
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4334,8 +4334,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 #, fuzzy
 msgid "Could not connect to DHT!\n"
 msgstr "Không thể kết nối tới %s:%u: %s\n"
@@ -4429,82 +4429,72 @@ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gns/plugin_rest_gns.c:442
-#, fuzzy
-msgid "Gns REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, fuzzy, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, fuzzy, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, fuzzy, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, fuzzy, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, fuzzy, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, fuzzy, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, fuzzy, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, fuzzy, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, fuzzy, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, fuzzy, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, fuzzy, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4544,269 +4534,269 @@ msgstr "Gặp lỗi khi tạo người dùng"
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 #, fuzzy
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr "Lỗi lưu cấu hình."
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 #, fuzzy
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr "Lỗi lưu cấu hình."
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 #, fuzzy
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 #, fuzzy
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr ""
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, fuzzy, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr "Lỗi đóng kết đến cổng %s %d.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 #, fuzzy
 msgid "advertise our hostlist to other peers"
 msgstr "Tắt quảng cáo máy này cho đồng đẳng khác"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 #, fuzzy
 msgid "enable learning about hostlist servers from other peers"
 msgstr "Tắt quảng cáo máy này cho đồng đẳng khác"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 #, fuzzy
 msgid "provide a hostlist server"
 msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 #, fuzzy
 msgid "# bytes downloaded from hostlist servers"
 msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 #, fuzzy
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr "# các HELLO tải xuống qua HTTP"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, fuzzy, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 #, fuzzy
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr "# các HELLO tải xuống qua HTTP"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, fuzzy, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, fuzzy, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, fuzzy, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, fuzzy, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr "Đang nạp và khởi động dùng « %s ».\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 #, fuzzy
 msgid "# active connections"
 msgstr "# các kết nối dht"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, fuzzy, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, fuzzy, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, fuzzy, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 #, fuzzy
 msgid "# hostlist URIs read from file"
 msgstr "# các byte danh sách máy được trả về"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, fuzzy, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, fuzzy, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 #, fuzzy
 msgid "# hostlist URIs written to file"
 msgstr "# các byte danh sách máy được trả về"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 #, fuzzy
 msgid "bytes in hostlist"
 msgstr "# các byte trong kho dữ liệu"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, fuzzy, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, fuzzy, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr "trình phục vụ danh sách máy HTTP hợp nhất"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 #, fuzzy
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr "# các yêu cầu danh sách máy được nhận"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 #, fuzzy
 msgid "hostlist requests refused (upload data)"
 msgstr "# các yêu cầu danh sách máy được nhận"
@@ -4820,185 +4810,174 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr "# các yêu cầu danh sách máy được nhận"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 #, fuzzy
 msgid "Received request for our hostlist\n"
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 #, fuzzy
 msgid "hostlist requests processed"
 msgstr "# các yêu cầu danh sách máy được nhận"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 #, fuzzy
 msgid "# hostlist advertisements send"
 msgstr "# Các quảng cáo ngoại được chuyển tiếp"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 #, fuzzy
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, fuzzy, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, fuzzy, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr "Cổng cho trình phục vụ HTTP danh sách máy chủ thống nhất"
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, fuzzy, c-format
 msgid "Failed to create ego: %s\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, fuzzy, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-msgid "reduce output"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-#, fuzzy
-msgid "display private keys as well"
-msgstr "hiển thị giá trị tổng kiểm của tập tin"
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, fuzzy, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, fuzzy, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, fuzzy, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, fuzzy, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/identity/plugin_rest_identity.c:1311
-#, fuzzy
-msgid "Identity REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, fuzzy, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr "Đang thử dùng tập tin « %s » cho cấu hình MySQL.\n"
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, fuzzy, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr "Không thể truy cập đến « %s »: %s\n"
@@ -5008,7 +4987,7 @@ msgstr "Không thể truy cập đến « %s »: %s\n"
 msgid "No records found for `%s'"
 msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -5028,16 +5007,16 @@ msgstr "Đối số không hợp lệ cho « %s ».\n"
 msgid "You must specify a name\n"
 msgstr "Phải ghi rõ tên hiệu\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
 #: src/namecache/gnunet-namecache.c:238
 #, fuzzy
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr "xác định mức ưu tiên của nội dung"
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 #, fuzzy
 msgid "GNUnet zone manipulation tool"
 msgstr "Cấu hình GNUnet"
@@ -5053,360 +5032,334 @@ msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
 
 #: src/namecache/plugin_namecache_flat.c:121
 #: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
 #: src/peerstore/plugin_peerstore_flat.c:379
 #: src/peerstore/plugin_peerstore_flat.c:538
 #, fuzzy, c-format
 msgid "Unable to initialize file: %s.\n"
 msgstr "Không thể sơ khởi SQLite: %s.\n"
 
-#: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
-#: src/peerstore/plugin_peerstore_flat.c:394
+#: src/namecache/plugin_namecache_flat.c:132
+#: src/namestore/plugin_namestore_heap.c:159
+#: src/peerstore/plugin_peerstore_flat.c:394
+#, fuzzy, c-format
+msgid "Unable to get filesize: %s.\n"
+msgstr "Không thể tạo miền tên.\n"
+
+#: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
+#: src/peerstore/plugin_peerstore_flat.c:406
+#, fuzzy, c-format
+msgid "Unable to read file: %s.\n"
+msgstr "Không thể tạo miền tên.\n"
+
+#: src/namecache/plugin_namecache_flat.c:410
+#, fuzzy
+msgid "flat plugin running\n"
+msgstr "kho dữ liệu sqlite"
+
+#: src/namecache/plugin_namecache_sqlite.c:183
+#: src/namecache/plugin_namecache_sqlite.c:197
+#: src/namestore/plugin_namestore_sqlite.c:219
+#: src/namestore/plugin_namestore_sqlite.c:230
+#, fuzzy, c-format
+msgid "Failed to setup database at `%s'\n"
+msgstr "Lỗi chạy %s: %s %d\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, fuzzy, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, fuzzy, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
 #, fuzzy, c-format
-msgid "Unable to get filesize: %s.\n"
+msgid "Failed to create page for `%s'\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/namecache/plugin_namecache_flat.c:151
-#: src/peerstore/plugin_peerstore_flat.c:406
+#: src/namestore/gnunet-namestore-fcfsd.c:796
 #, fuzzy, c-format
-msgid "Unable to read file: %s.\n"
-msgstr "Không thể tạo miền tên.\n"
+msgid "Failed to setup post processor for `%s'\n"
+msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
 
-#: src/namecache/plugin_namecache_flat.c:410
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
 #, fuzzy
-msgid "flat plugin running\n"
-msgstr "kho dữ liệu sqlite"
+msgid "Failed to start HTTP server\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/namecache/plugin_namecache_sqlite.c:183
-#: src/namecache/plugin_namecache_sqlite.c:197
-#: src/namestore/plugin_namestore_sqlite.c:219
-#: src/namestore/plugin_namestore_sqlite.c:230
-#, fuzzy, c-format
-msgid "Failed to setup database at `%s'\n"
-msgstr "Lỗi chạy %s: %s %d\n"
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
+#, fuzzy
+msgid "Failed to connect to identity\n"
+msgstr "Lỗi kết nối đến gnunetd.\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr ""
+
+#: src/namestore/gnunet-namestore.c:341
 #, fuzzy, c-format
 msgid "Adding record failed: %s\n"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, fuzzy, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, fuzzy, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr "Gặp lỗi khi tải lên tập tin: %s\n"
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, fuzzy, c-format
 msgid "No options given\n"
 msgstr "chưa đưa ra tên"
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, fuzzy, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, fuzzy, c-format
 msgid "Unsupported type `%s'\n"
 msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, fuzzy, c-format
 msgid "Invalid time format `%s'\n"
 msgstr "Địa chỉ IP định dạng sai: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, fuzzy, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Dữ liệu nhập không hợp lệ.\n"
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, fuzzy, c-format
 msgid "Invalid nick `%s'\n"
 msgstr "Dữ liệu nhập không hợp lệ.\n"
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, c-format
 msgid "No default ego configured in identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, fuzzy, c-format
 msgid "Cannot connect to identity service\n"
 msgstr "Không thể kết nối tới %s:%u: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, fuzzy, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "Không rõ câu lệnh « %s ».\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "Địa chỉ IP định dạng sai: %s\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 #, fuzzy
 msgid "set the desired nick name for the zone"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 #, fuzzy
 msgid "monitor changes in the namestore"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 #, fuzzy
 msgid "determine our name for the given PKEY"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 msgid "name of the ego controlling the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, fuzzy, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, fuzzy, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, fuzzy, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr "Không thể tạo miền tên.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, fuzzy, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-#, fuzzy
-msgid "Failed to start HTTP server\n"
-msgstr "Lỗi bắt đầu thu thập.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-#, fuzzy
-msgid "Failed to connect to identity\n"
-msgstr "Lỗi kết nối đến gnunetd.\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, fuzzy, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
+#: src/namestore/plugin_namestore_heap.c:778
 #, fuzzy
-msgid "Flat file database running\n"
+msgid "heap file database running\n"
 msgstr "kho dữ liệu sqlite"
 
-#: src/namestore/plugin_rest_namestore.c:919
-#, fuzzy
-msgid "Namestore REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
 #: src/nat-auto/gnunet-nat-auto.c:193
 #, fuzzy
 msgid "Suggested configuration changes:\n"
@@ -5451,7 +5404,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr "Cấu hình GNUnet"
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 #, fuzzy
 msgid "Failed to connect to `gnunet-nat-server'\n"
@@ -5490,38 +5443,38 @@ msgstr "Cổng để liên lạc với giao diện người dùng GNUnet"
 msgid "Detected external IP `%s'\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, fuzzy, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr "GNUnet bây giờ sử dụng địa chỉ IP %s.\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 msgid "upnpc not found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5640,43 +5593,43 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 #, fuzzy
 msgid "Connection reversal request failed\n"
 msgstr "Thu thập bị dừng.\n"
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, fuzzy, c-format
 msgid "Failed to start %s\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
@@ -5689,11 +5642,6 @@ msgstr ""
 msgid "`upnpc' command not found\n"
 msgstr ""
 
-#: src/nse/gnunet-nse.c:123
-#, fuzzy
-msgid "Show network size estimates from NSE service."
-msgstr "# các yêu cầu get (lấy) dht được nhận"
-
 #: src/nse/gnunet-nse-profiler.c:849
 #, fuzzy
 msgid "limit to the number of connections to NSE services, 0 for none"
@@ -5720,70 +5668,16 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr "Không thể truy cập đến dịch vụ"
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
+#: src/nse/gnunet-nse.c:122
 #, fuzzy
-msgid "Value is too large.\n"
-msgstr "Giá trị không nằm trong phạm vi được phép."
-
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, fuzzy, c-format
-msgid "Removing expired address of transport `%s'\n"
-msgstr "Đã nạp truyền tải « %s »\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:313
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
-msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:492
-#, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
-msgstr ""
-"Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ "
-"bỏ.\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:658
-#, fuzzy, c-format
-msgid "Scanning directory `%s'\n"
-msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:666
-#, c-format
-msgid "Still no peers found in `%s'!\n"
-msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
-#, fuzzy, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
-msgstr ""
+msgid "Show network size estimates from NSE service."
+msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/peerinfo/peerinfo_api.c:220
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
 #, fuzzy
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr ""
-"\n"
-"Không nhận được đáp ứng từ gnunetd.\n"
+msgid "Value is too large.\n"
+msgstr "Giá trị không nằm trong phạm vi được phép."
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, fuzzy, c-format
@@ -5796,7 +5690,7 @@ msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, fuzzy, c-format
 msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr "Lỗi đóng kết đến cổng %s %d.\n"
@@ -5850,62 +5744,117 @@ msgstr ""
 msgid "also output HELLO uri(s)"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:879
-msgid "add given HELLO uri to the database"
-msgstr ""
+#: src/peerinfo-tool/gnunet-peerinfo.c:879
+msgid "add given HELLO uri to the database"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:897
+#, fuzzy
+msgid "Print information about peers."
+msgstr "In ra thông tin về các đồng đẳng GNUnet."
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
+#: src/transport/gnunet-service-transport_plugins.c:168
+#, fuzzy, c-format
+msgid "Starting transport plugins `%s'\n"
+msgstr "Đang nạp các truyền tải « %s »\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
+#: src/transport/gnunet-service-transport_plugins.c:173
+#, fuzzy, c-format
+msgid "Loading `%s' transport plugin\n"
+msgstr "Đang nạp các truyền tải « %s »\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
+#: src/transport/gnunet-service-transport_plugins.c:208
+#, fuzzy, c-format
+msgid "Failed to load transport plugin for `%s'\n"
+msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, fuzzy, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr "Đã nạp truyền tải « %s »\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:492
+#, c-format
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
+msgstr ""
+"Tập tin « %s » trong thư mục « %s » không tùy theo quy ước đặt tên. Bị gỡ "
+"bỏ.\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, fuzzy, c-format
+msgid "Scanning directory `%s'\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:897
-#, fuzzy
-msgid "Print information about peers."
-msgstr "In ra thông tin về các đồng đẳng GNUnet."
+#: src/peerinfo/gnunet-service-peerinfo.c:667
+#, c-format
+msgid "Still no peers found in `%s'!\n"
+msgstr "Vẫn còn không tìm thấy đồng đẳng trong « %s ».\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
-#: src/transport/gnunet-service-transport_plugins.c:168
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
 #, fuzzy, c-format
-msgid "Starting transport plugins `%s'\n"
-msgstr "Đang nạp các truyền tải « %s »\n"
+msgid "Cleaning up directory `%s'\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
-#: src/transport/gnunet-service-transport_plugins.c:173
-#, fuzzy, c-format
-msgid "Loading `%s' transport plugin\n"
-msgstr "Đang nạp các truyền tải « %s »\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
-#: src/transport/gnunet-service-transport_plugins.c:208
-#, fuzzy, c-format
-msgid "Failed to load transport plugin for `%s'\n"
-msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
+#: src/peerinfo/peerinfo_api.c:220
 #, fuzzy
-msgid "Peerinfo REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
+msgid "Failed to receive response from `PEERINFO' service."
+msgstr ""
+"\n"
+"Không nhận được đáp ứng từ gnunetd.\n"
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "Không thể đọc danh sách bạn bè « %s »\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 #, fuzzy
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr "Định dạng kết xuất không rõ, điều này không nên xảy ra.\n"
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 #, fuzzy
 msgid "Received a malformed response from service."
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, fuzzy, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5913,6 +5862,8 @@ msgid ""
 msgstr "Gặp lỗi khi tạo người dùng"
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, fuzzy, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5929,6 +5880,114 @@ msgstr "Không thể tạo miền tên.\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "Đối số không hợp lệ cho « %s ».\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "Lỗi bắt đầu thu thập.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "Lỗi lấy thông kê về truyền tải.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "Không thể sơ khởi SQLite: %s.\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, fuzzy, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+#, fuzzy
+msgid "SQLite database running\n"
+msgstr "kho dữ liệu sqlite"
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr ""
@@ -5981,96 +6040,73 @@ msgstr "# các yêu cầu get (lấy) dht được nhận"
 msgid "# DNS replies dropped (too late?)"
 msgstr "# các đáp ứng dht được định tuyến"
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, fuzzy, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, fuzzy, c-format
 msgid "Ego is required\n"
 msgstr "Bị từ chối đặt tùy chọn « %s » trong phần « %s » thành « %s ».\n"
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, fuzzy, c-format
 msgid "Requesting party key is required!\n"
 msgstr "đặt tên hiệu cần dùng (cần thiết)"
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-#, fuzzy
-msgid "The EGO to use"
-msgstr "kích cỡ tin nhắn"
-
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-#, fuzzy
-msgid "OpenID Connect REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-#, fuzzy
-msgid "Identity Provider REST API initialized\n"
-msgstr "Lỗi sơ khởi lõi.\n"
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
@@ -6164,21 +6200,51 @@ msgstr "« %s » không phải là một tập tin.\n"
 msgid "Search string `%s' is too long!\n"
 msgstr "« %s » không phải là một tập tin.\n"
 
-#: src/rest/gnunet-rest-server.c:1039
+#: src/rest-plugins/plugin_rest_copying.c:209
 #, fuzzy
-msgid "GNUnet REST server"
-msgstr "Bản ghi lỗi GNUnet"
+msgid "COPYING REST API initialized\n"
+msgstr "Lỗi sơ khởi lõi.\n"
 
-#: src/rest/plugin_rest_config.c:265
+#: src/rest-plugins/plugin_rest_credential.c:1128
 #, fuzzy
-msgid "CONFIG REST API initialized\n"
+msgid "GNS REST API initialized\n"
 msgstr "Lỗi sơ khởi lõi.\n"
 
-#: src/rest/plugin_rest_copying.c:209
+#: src/rest-plugins/plugin_rest_gns.c:452
 #, fuzzy
-msgid "COPYING REST API initialized\n"
+msgid "Gns REST API initialized\n"
+msgstr "Lỗi sơ khởi lõi.\n"
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+#, fuzzy
+msgid "Identity REST API initialized\n"
+msgstr "Lỗi sơ khởi lõi.\n"
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+#, fuzzy
+msgid "Namestore REST API initialized\n"
+msgstr "Lỗi sơ khởi lõi.\n"
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+#, fuzzy
+msgid "Identity Provider REST API initialized\n"
+msgstr "Lỗi sơ khởi lõi.\n"
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+#, fuzzy
+msgid "Peerinfo REST API initialized\n"
 msgstr "Lỗi sơ khởi lõi.\n"
 
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:944
+#, fuzzy
+msgid "GNUnet REST server"
+msgstr "Bản ghi lỗi GNUnet"
+
 #: src/revocation/gnunet-revocation.c:129
 #, fuzzy, c-format
 msgid "Key `%s' is valid\n"
@@ -6227,59 +6293,59 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, fuzzy, c-format
 msgid "Public key `%s' malformed\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 #, fuzzy
 msgid "No filename to store revocation certificate given.\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, fuzzy, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 #, fuzzy
 msgid "No action specified. Nothing to do.\n"
 msgstr "Chưa xác định giao diện nên dùng mặc định.\n"
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -6312,42 +6378,42 @@ msgstr "# các sự truyền PONG bị lỗi"
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 #, fuzzy
 msgid "Could not open revocation database file!"
 msgstr "« %s »: Không thể kết nối.\n"
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 #, fuzzy
 msgid "timeout for the profiling"
 msgstr "xác định mức ưu tiên của nội dung"
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "số lần lặp lại"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 #, fuzzy
 msgid "Measure quality and performance of the RPS service."
 msgstr "Không thể truy cập đến dịch vụ"
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 #, fuzzy
 msgid "You must specify at least one message ID to check!\n"
@@ -6403,10 +6469,10 @@ msgstr ""
 msgid "Calculate the Vectorproduct with a GNUnet peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
 #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
 #, fuzzy
 msgid "Connect to CADET failed\n"
 msgstr " Không kết nối được (lỗi ?)\n"
@@ -6431,30 +6497,30 @@ msgstr ""
 msgid "also profile decryption"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
+#: src/set/gnunet-service-set.c:2005
 #, fuzzy
 msgid "Could not connect to CADET service\n"
 msgstr "Không thể kết nối tới %s:%u: %s\n"
 
-#: src/set/gnunet-set-ibf-profiler.c:267
+#: src/set/gnunet-set-ibf-profiler.c:252
 #, fuzzy
 msgid "number of element in set A-B"
 msgstr "số lần lặp lại"
 
-#: src/set/gnunet-set-ibf-profiler.c:273
+#: src/set/gnunet-set-ibf-profiler.c:258
 #, fuzzy
 msgid "number of element in set B-A"
 msgstr "số lần lặp lại"
 
-#: src/set/gnunet-set-ibf-profiler.c:280
+#: src/set/gnunet-set-ibf-profiler.c:264
 msgid "number of common elements in A and B"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
+#: src/set/gnunet-set-ibf-profiler.c:270
 msgid "hash num"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:292
+#: src/set/gnunet-set-ibf-profiler.c:276
 msgid "ibf size"
 msgstr ""
 
@@ -6478,6 +6544,132 @@ msgstr ""
 msgid "element size"
 msgstr ""
 
+#: src/social/gnunet-social.c:1166
+#, fuzzy
+msgid "--place missing or invalid.\n"
+msgstr "Đối số không hợp lệ cho « %s ».\n"
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
+msgstr ""
+
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
+msgstr ""
+
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
+msgstr ""
+
+#: src/social/gnunet-social.c:1304
+#, fuzzy
+msgid "name or public key of ego"
+msgstr "Đối số không hợp lệ cho « %s ».\n"
+
+#: src/social/gnunet-social.c:1309
+#, fuzzy
+msgid "wait for incoming messages"
+msgstr "Lỗi gửi tin nhẳn.\n"
+
+#: src/social/gnunet-social.c:1315
+msgid "GNS name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
+msgstr ""
+
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
+msgstr ""
+
+#: src/social/gnunet-social.c:1333
+msgid "method name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "số tin nhắn cần dùng mỗi lần lặp"
+
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
+msgstr ""
+
 #: src/sq/sq.c:54
 #, c-format
 msgid "Failure to bind %u-th SQL parameter\n"
@@ -6502,93 +6694,93 @@ msgstr "Đã tải %llu byte xuống « %s ».\n"
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr "Đã tải %llu byte xuống « %s ».\n"
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 #, fuzzy
 msgid "Failed to obtain statistics.\n"
 msgstr "Lỗi lấy thông kê về truyền tải.\n"
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, fuzzy, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr "Lỗi lấy thông kê về truyền tải.\n"
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, fuzzy, c-format
 msgid "No subsystem or name given\n"
 msgstr "chưa đưa ra tên"
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, fuzzy, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, fuzzy, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, fuzzy, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr "Không thể kết nối tới %s:%u: %s\n"
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr "In ra thống kê về các thao tác GNUnet."
 
@@ -6641,7 +6833,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6680,7 +6872,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6750,28 +6942,28 @@ msgstr "« %s » đang tắt.\n"
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:118
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr "Đang đợi các đồng đẳng kết nối"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:241
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Đang bắt đầu tài về « %s »\n"
-
-#: src/testbed/gnunet-testbed-profiler.c:287
+#: src/testbed/gnunet-testbed-profiler.c:289
 msgid "tolerate COUNT number of continious timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:291
+#: src/testbed/gnunet-testbed-profiler.c:294
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/testbed_api.c:400
+#: src/testbed/gnunet_testbed_mpi_spawn.c:118
+#, fuzzy
+msgid "Waiting for child to exit.\n"
+msgstr "Đang đợi các đồng đẳng kết nối"
+
+#: src/testbed/gnunet_testbed_mpi_spawn.c:241
+#, fuzzy, c-format
+msgid "Spawning process `%s'\n"
+msgstr "Đang bắt đầu tài về « %s »\n"
+
+#: src/testbed/testbed_api.c:410
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr "« %s » thất bại với mã lỗi %d: %s\n"
@@ -6791,7 +6983,7 @@ msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được
 msgid "Hosts file %s cannot be read\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6947,48 +7139,48 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr "đặt số trình nền cần khởi chạy"
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Không thể đọc danh sách bạn bè « %s »\n"
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Lỗi tạo thư mục tạm thời."
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Lỗi chạy %s: %s %d\n"
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
@@ -7004,155 +7196,155 @@ msgstr ""
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 #, fuzzy
 msgid "# connect requests issued to ATS"
 msgstr "# các yêu cầu máy/trình khách lỗ hổng được phun vào"
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 #, fuzzy
 msgid "# HELLO messages gossipped"
 msgstr "# các thông báo gửi đi bị loại bỏ"
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 #, fuzzy
 msgid "# friends connected"
 msgstr "# của các đồng đẳng đã kết nối"
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, fuzzy, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr ""
 "\n"
 "Kết thúc cấu hình.\n"
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 #, fuzzy
 msgid "# friends in configuration"
 msgstr ""
 "\n"
 "Kết thúc cấu hình.\n"
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 "Xác định quá ít bạn bè (dưới số tối thiểu). Sẽ chỉ kết nối tới bạn bè.\n"
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr "Cần thiết nhiều kết nối bạn bè hơn tổng số kết nối đích.\n"
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 #, fuzzy
 msgid "# HELLO messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "Lưu cấu hình ngay bây giờ không?"
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 #, fuzzy
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr "tăng sổ tối đa các kết nối TCP/IP"
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, fuzzy, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 #, fuzzy
 msgid "# messages dropped due to slow client"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 #, fuzzy
 msgid "# bytes payload discarded due to not connected peer"
 msgstr "# Các quảng cáo đồng đẳng bị hủy do trọng tải"
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 #, fuzzy
 msgid "# bytes total received"
 msgstr "# tổng số nội dung lỗ hổng được nhận"
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 #, fuzzy
 msgid "# bytes payload received"
 msgstr "# các byte đã giải mã"
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, fuzzy, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr "Không thể nạp phần bổ sung truyền tải « %s »\n"
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, fuzzy, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr "Không thể lấy địa chỉ của đồng đẳng « %s ».\n"
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -7162,215 +7354,215 @@ msgstr ""
 msgid "# session creation failed"
 msgstr "# các khoá phiên chạy được chấp nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 #, fuzzy
 msgid "# DISCONNECT messages sent"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 #, fuzzy
 msgid "# bytes in message queue for other peers"
 msgstr "# các byte thông báo gửi đi bị loại bỏ"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 #, fuzzy
 msgid "# messages transmitted to other peers"
 msgstr "# các byte kiểu %d được gửi "
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 #, fuzzy
 msgid "# transmission failures for messages to other peers"
 msgstr "# các byte thông báo gửi đi bị loại bỏ"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 #, fuzzy
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 #, fuzzy
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 #, fuzzy
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 #, fuzzy
 msgid "# messages discarded due to lack of neighbour record"
 msgstr "# các thông báo được chắp liền"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 #, fuzzy
 msgid "# bandwidth quota violations by other peers"
 msgstr "theo dõi gnunetd sử dụng dải thông"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 #, fuzzy
 msgid "# SYN_ACK messages sent"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 #, fuzzy
 msgid "# SYN messages received"
 msgstr "# các thông báo PING được tạo"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 #, fuzzy
 msgid "# SYN_ACK messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr "gửi ĐẾM thông báo"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr "gửi ĐẾM thông báo"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr "gửi ĐẾM thông báo"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 #, fuzzy
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr "gửi ĐẾM thông báo"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 #, fuzzy
 msgid "# ACK messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 #, fuzzy
 msgid "# unexpected ACK messages"
 msgstr "# các thông báo PONG đã mật mã được gửi"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 #, fuzzy
 msgid "# quota messages ignored (malformed)"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 #, fuzzy
 msgid "# QUOTA messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 #, fuzzy
 msgid "# DISCONNECT messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 #, fuzzy
 msgid "# disconnected from peer upon explicit request"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
@@ -7406,7 +7598,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 #, fuzzy
 msgid "# validations running"
 msgstr "kho dữ liệu sqlite"
@@ -7432,279 +7624,281 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 #, fuzzy
 msgid "# PING message for different peer received"
 msgstr "# các thông báo PING được tạo"
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, fuzzy, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr "Không thể tạo miền tên.\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 #, fuzzy
 msgid "# HELLOs given to peerinfo"
 msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+#, fuzzy
+msgid "receive data from peer"
+msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n"
+
+#: src/transport/gnunet-transport-profiler.c:626
+#, fuzzy
+msgid "iterations"
+msgstr "Tùy chọn chung"
+
+#: src/transport/gnunet-transport-profiler.c:631
+#, fuzzy
+msgid "number of messages to send"
+msgstr "số tin nhắn cần dùng mỗi lần lặp"
+
+#: src/transport/gnunet-transport-profiler.c:636
+#, fuzzy
+msgid "message size to use"
+msgstr "kích cỡ tin nhắn"
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+#, fuzzy
+msgid "Direct access to transport service."
+msgstr "Lỗi kết nối đến gnunetd.\n"
+
+#: src/transport/gnunet-transport.c:413
 #, fuzzy, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, fuzzy, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, fuzzy, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, fuzzy, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr "Lỗi đóng kết đến cổng %s %d.\n"
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, fuzzy, c-format
 msgid "Transmitting %u bytes\n"
 msgstr "Đang thử tải danh sách các máy xuống « %s »\n"
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, fuzzy, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr "« %.*s » được kết nối tới « %.*s ».\n"
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 #, fuzzy
 msgid "Connected to"
 msgstr "« %s » được kết nối tới « %s ».\n"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 #, fuzzy
 msgid "Disconnected from"
 msgstr "« %.*s » được kết nối tới « %.*s ».\n"
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, fuzzy, c-format
 msgid "Received %u bytes\n"
 msgstr "Nhận yêu cầu định tuyến\n"
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, fuzzy, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr "Tôi là đồng đẳng « %s ».\n"
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 #, fuzzy
 msgid "Failed to connect to transport service\n"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 #, fuzzy
 msgid "print information for all peers (instead of only connected peers)"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 #, fuzzy
 msgid "disconnect from a peer"
 msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 #, fuzzy
 msgid "provide information about all current connections (once)"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 #, fuzzy
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 #, fuzzy
 msgid "do not resolve hostnames"
 msgstr "không quyết định các tên máy"
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-#, fuzzy
-msgid "Direct access to transport service."
-msgstr "Lỗi kết nối đến gnunetd.\n"
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-#, fuzzy
-msgid "receive data from peer"
-msgstr "Yêu cầu cấp %d từ đồng đẳng %d\n"
-
-#: src/transport/gnunet-transport-profiler.c:586
-#, fuzzy
-msgid "iterations"
-msgstr "Tùy chọn chung"
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "số tin nhắn cần dùng mỗi lần lặp"
-
-#: src/transport/gnunet-transport-profiler.c:596
-#, fuzzy
-msgid "message size to use"
-msgstr "kích cỡ tin nhắn"
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, fuzzy, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr "Đang nạp các truyền tải « %s »\n"
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, fuzzy, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr "Tải lên « %s » hoàn thành, địa chỉ URI là « %s ».\n"
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, fuzzy, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr "tăng sổ tối đa các kết nối TCP/IP"
@@ -7754,6 +7948,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7855,123 +8050,134 @@ msgstr "# các byte đã gửi qua SMTP"
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr "# các byte loại đi bởi SMTP (đi ra)"
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, fuzzy, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr "Gặp sự kiện bất thường: %d\n"
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 #, fuzzy
 msgid "# TCP sessions active"
 msgstr "# các khoá phiên chạy được chấp nhận"
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 #, fuzzy
 msgid "# bytes currently in TCP buffers"
 msgstr "# các byte đã gừi qua TCP"
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 #, fuzzy
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr "# các byte loại đi bởi TCP (đi ra)"
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 #, fuzzy
 msgid "# bytes discarded by TCP (timeout)"
 msgstr "# các byte loại đi bởi TCP (đi ra)"
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 #, fuzzy
 msgid "# bytes transmitted via TCP"
 msgstr "# các byte được gửi"
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 #, fuzzy
 msgid "# TCP WELCOME messages received"
 msgstr "# các thông báo PONG đã mật mã được nhận"
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr "# các byte đã nhận qua TCP"
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr "# các kết nối dht"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 #, fuzzy
 msgid "# TCP server connect events"
 msgstr "# của các đồng đẳng đã kết nối"
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 #, fuzzy
 msgid "Failed to start service.\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-#, fuzzy
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr "# các thông báo PONG đã mật mã được nhận"
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7992,6 +8198,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -8002,15 +8209,19 @@ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "« %s » không sẵn sàng.\n"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "« %s » không sẵn sàng.\n"
@@ -8020,6 +8231,21 @@ msgstr "« %s » không sẵn sàng.\n"
 msgid "Failed to create UDP network sockets\n"
 msgstr "Không thể tạo miền tên.\n"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+#, fuzzy
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr "# các thông báo PONG đã mật mã được nhận"
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -8097,6 +8323,54 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr "# các khoá phiên chạy được chấp nhận"
 
+#: src/transport/plugin_transport_xt.c:4010
+#, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4014
+msgid "XT transport not listening on any port (client only)\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4018
+#, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr "# các khoá phiên chạy được chấp nhận"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "Không thể tạo miền tên.\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, fuzzy, c-format
 msgid "Access denied to `%s'\n"
@@ -8107,17 +8381,17 @@ msgstr "Không đủ quyền cho « %s ».\n"
 msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n"
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
@@ -8129,7 +8403,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, fuzzy, c-format
 msgid "Unknown address family %d\n"
 msgstr "\tKhông rõ miền tên « %s »\n"
@@ -8139,27 +8413,27 @@ msgstr "\tKhông rõ miền tên « %s »\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8174,45 +8448,44 @@ msgstr "Lỗi chạy %s: %s %d\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Đồng đẳng « %s » có mức tin cậy %8u\n"
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Không thể lấy thông tin về người dùng « %s »: %s\n"
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr "Không có người dùng như vậy"
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Không thể thay đổi người dùng/nhóm thành « %s »: %s\n"
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
@@ -8222,7 +8495,7 @@ msgstr "Không thể lưu tập tin cấu hình « %s »:"
 msgid "Could not access configuration file `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -8255,68 +8528,68 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "GỠ LỖI"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "TIN"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "CẢNH BÁO"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "LỖI"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, fuzzy, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "Thông điệp « %.*s » đã lặp lại %u lần trong %llu giây trước\n"
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 "Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n"
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8367,26 +8640,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, fuzzy, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr "%s bị lỗi tại %s:%d: « %s »\n"
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, fuzzy, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr "%s bị lỗi tại %s:%d: « %s »\n"
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, fuzzy, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, fuzzy, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
@@ -8421,7 +8694,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr "libgcrypt không có phiên bản mong đợi (yêu cầu phiên bản %s).\n"
@@ -8436,7 +8709,7 @@ msgstr "%s bị lỗi tại %s:%d: « %s »\n"
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr "Mong đợi « %s » là một thư mục.\n"
@@ -8446,7 +8719,7 @@ msgstr "Mong đợi « %s » là một thư mục.\n"
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, fuzzy, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
@@ -8471,7 +8744,7 @@ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 msgid "Sent DNS request to %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s: tùy chọn « %s » là mơ hồ\n"
@@ -8481,72 +8754,67 @@ msgstr "%s: tùy chọn « %s » là mơ hồ\n"
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr "%s: tùy chọn « --%s » không cho phép đối số\n"
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr "%s: tùy chọn « %c%s » không cho phép đối số\n"
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s: tùy chọn « %s » cần thiết đối số\n"
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s: không nhận ra tùy chọn « --%s »\n"
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s: không nhận ra tùy chọn « %c%s »\n"
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s: tùy chọn không được phép -- %c\n"
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s: tùy chọn không hợp lệ -- %c\n"
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: tùy chọn cần thiết đối số -- %c\n"
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s: tùy chọn « -W %s » là mơ hồ\n"
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr "%s: tùy chọn « -W %s » không cho phép đối số\n"
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, fuzzy, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr ""
 "Hãy sử dụng câu lệnh trợ giúp « --help » để xem danh sách các tùy chọn.\n"
 
-#: src/util/getopt.c:987
-#, fuzzy, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, fuzzy, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr "Giá trị cấu hình « %s » cho « %s » trong phần « %s » nên là con số\n"
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr "hiển thị số thứ tự phiên bản"
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
@@ -8554,109 +8822,105 @@ msgstr ""
 "Mọi đối số bắt buộc phải sử dụng với tùy chọn dài cũng bắt buộc với tùy chọn "
 "ngắn.\n"
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr "hiển thị trợ giúp này"
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr "xuất chi tiết"
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU"
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 #, fuzzy
 msgid "configure logging to write logs to FILENAME"
 msgstr "cấu hình chức năng ghi sự kiện để dùng CẤP_GHI_LƯU"
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "cập nhật một giá trị trong tập tin cấu hình"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, fuzzy, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, fuzzy, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, fuzzy, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr "Phải gửi một con số cho tùy chọn « %s ».\n"
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, fuzzy, c-format
 msgid "%s or %s argument is required\n"
 msgstr "đặt tên hiệu cần dùng (cần thiết)"
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 #, fuzzy
 msgid "print available configuration sections"
 msgstr "Lưu cấu hình ngay bây giờ không?"
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "cập nhật một giá trị trong tập tin cấu hình"
@@ -8666,116 +8930,89 @@ msgstr "cập nhật một giá trị trong tập tin cấu hình"
 msgid "Failed to open `%s': %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Failed to write to `%s': %s\n"
 msgstr "Lỗi chạy %s: %s %d\n"
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, c-format
 msgid ""
 "\n"
 "Finished!\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr "Định dạng của tập tin « %s » là không hợp lệ.\n"
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, fuzzy, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr "Không thể đọc danh sách bạn bè « %s »\n"
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 #, fuzzy
 msgid "Manipulate GNUnet private ECC key files"
 msgstr "cập nhật một giá trị trong tập tin cấu hình"
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, fuzzy, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n"
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8784,42 +9021,57 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 #, fuzzy
 msgid "Manipulate GNUnet proof of work files"
 msgstr "cập nhật một giá trị trong tập tin cấu hình"
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, fuzzy, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n"
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8838,12 +9090,12 @@ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 msgid "Error writing to `%s': %s\n"
 msgstr "Gặp lỗi khi tạo người dùng"
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8856,22 +9108,22 @@ msgid ""
 "variable.\n"
 msgstr ""
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, fuzzy, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr "Không thể đọc danh sách bạn bè « %s »\n"
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, fuzzy, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n"
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8896,17 +9148,17 @@ msgstr "« %s » thất bại cho thư viện « %s » với lỗi: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, fuzzy, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
@@ -8949,16 +9201,16 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "Không thể giải quyết « %s » (%s): %s\n"
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8966,12 +9218,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr ""
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8980,237 +9232,237 @@ msgstr ""
 msgid "b"
 msgstr "b"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr ""
 "Lỗi mở rộng biến môi trường « $HOME »: chưa đặt biến môi trường « HOME »"
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr ""
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr ""
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr ""
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "mg"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "g"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "p"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "g"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 #, fuzzy
 msgid "day"
 msgstr " ngày"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 #, fuzzy
 msgid "days"
 msgstr " ngày"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr ""
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr ""
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, fuzzy, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr "Mức ưu tiên tiến trình không hợp lê « %s ».\n"
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, fuzzy, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr "Lỗi bắt đầu thu thập.\n"
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr "Địa chỉ IP định dạng sai: %s\n"
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr "Ký hiệu mạng sai (« /%d » không hợp lệ trong CIDR IPv4)."
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, fuzzy, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "Địa chỉ IP định dạng sai: %s\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr "Ký hiệu mạng sai (không kết thúc với « ; »: « %s »)\n"
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, fuzzy, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr "Mặt nạ mạng có định dạng sai « %s »: %s\n"
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, fuzzy, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr "Mạng có định dạng sai « %s »: %s\n"
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 #, fuzzy
 msgid "# Active channels"
 msgstr "# các kết nối dht"
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 #, fuzzy
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 #, fuzzy
 msgid "# ICMP packets received from cadet"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 #, fuzzy
 msgid "# UDP packets received from cadet"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 #, fuzzy
 msgid "# TCP packets received from cadet"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr "# các truy vấn lỗ hổng được định tuyến"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 #, fuzzy
 msgid "# Packets dropped (channel not yet online)"
 msgstr "# các byte loại bỏ bởi UDP (đi ra)"
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 #, fuzzy
 msgid "# Packets received from TUN interface"
 msgstr "# các đáp ứng lỗ hổng được gửi cho trình/máy khách"
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 #, fuzzy
 msgid "# Active destinations"
 msgstr "# các kết nối dht"
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 #, fuzzy
 msgid "Must specify valid IPv6 address"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 #, fuzzy
 msgid "Must specify valid IPv4 address"
 msgstr "« %s » không sẵn sàng.\n"
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -9282,152 +9534,80 @@ msgstr "# các byte đã nhận qua UDP"
 msgid "Setup tunnels via VPN."
 msgstr ""
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 #, fuzzy
 msgid "Failed to connect to the namestore!\n"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, fuzzy, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr "Lỗi nội bộ : khẳng định không thành công tại %s:%d.\n"
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s\n"
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr "# các khoá phiên chạy được chấp nhận"
-
-#, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
-#~ msgstr "Không thể tạo miền tên.\n"
-
-#, fuzzy
-#~ msgid "Print information about DV state"
-#~ msgstr "In ra thông tin về các đồng đẳng GNUnet."
-
-#, fuzzy
-#~ msgid "Invalid tunnel owner `%s'\n"
-#~ msgstr "Địa chỉ IP định dạng sai: %s\n"
-
-#, fuzzy
-#~ msgid "Provide information about a particular tunnel"
-#~ msgstr "In ra thông tin về các đồng đẳng GNUnet."
-
-#, fuzzy
-#~ msgid "Failed to store membership information!\n"
-#~ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
-
-#, fuzzy
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
-
-#, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "Không thể mở tập tin « %s »: « %s »"
 
 #, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "Lỗi bắt đầu thu thập.\n"
+#~ msgid "enable adding the creation time to the metadata of the uploaded file"
+#~ msgstr "tắt thêm giờ tạo vào siêu dữ liệu của tập tin đã tải lên"
 
 #, fuzzy
-#~ msgid "Failed to get fragment!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "« %s » không sẵn sàng.\n"
 
 #, fuzzy
-#~ msgid "Failed to get message!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
+#~ msgid "Specify a timeout for the lookup"
+#~ msgstr "xác định mức ưu tiên của nội dung"
 
 #, fuzzy
-#~ msgid "Failed to get message fragment!\n"
+#~ msgid "Unable to parse CAA record string `%s'\n"
 #~ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
 #, fuzzy
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr "Lỗi bắt đầu thu thập.\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "Lỗi bắt đầu thu thập.\n"
-
-#, fuzzy
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "Lỗi bắt đầu thu thập.\n"
-
-#, fuzzy
-#~ msgid "Failed to begin synchronizing state!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
-
-#, fuzzy
-#~ msgid "Failed to end synchronizing state!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
-
-#, fuzzy
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
+#~ msgid "display private keys as well"
+#~ msgstr "hiển thị giá trị tổng kiểm của tập tin"
 
 #, fuzzy
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr "Lỗi lấy thông kê về truyền tải.\n"
-
-#, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
-#~ msgstr "Không thể sơ khởi SQLite: %s.\n"
-
-#, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
-#~ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
-
-#, fuzzy
-#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
-#~ msgstr "« %s » bị lỗi tại %s:%d với lỗi: %s\n"
+#~ msgid "The EGO to use"
+#~ msgstr "kích cỡ tin nhắn"
 
 #, fuzzy
-#~ msgid "SQLite database running\n"
-#~ msgstr "kho dữ liệu sqlite"
+#~ msgid "OpenID Connect REST API initialized\n"
+#~ msgstr "Lỗi sơ khởi lõi.\n"
 
 #, fuzzy
-#~ msgid "--place missing or invalid.\n"
-#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
+#~ msgid "CONFIG REST API initialized\n"
+#~ msgstr "Lỗi sơ khởi lõi.\n"
 
 #, fuzzy
-#~ msgid "name or public key of ego"
-#~ msgstr "Đối số không hợp lệ cho « %s ».\n"
+#~ msgid "Option `%s' can't be used with other options.\n"
+#~ msgstr "Tùy chọn « %s » không có nghĩa khi không có tùy chọn « %s ».\n"
 
 #, fuzzy
-#~ msgid "wait for incoming messages"
-#~ msgstr "Lỗi gửi tin nhẳn.\n"
+#~ msgid "Invalid tunnel owner `%s'\n"
+#~ msgstr "Địa chỉ IP định dạng sai: %s\n"
 
 #, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "số tin nhắn cần dùng mỗi lần lặp"
+#~ msgid "Provide information about a particular tunnel"
+#~ msgstr "In ra thông tin về các đồng đẳng GNUnet."
 
 #~ msgid "Could not resolve `%s' (%s): %s\n"
 #~ msgstr "Không thể giải quyết « %s » (%s): %s\n"
@@ -10325,8 +10505,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #, fuzzy
 #~ msgid ""
-#~ "%s service is lacking key configuration settings (%s). Using default "
-#~ "(%u).\n"
+#~ "%s service is lacking key configuration settings (%s). Using default (%"
+#~ "u).\n"
 #~ msgstr "Lưu cấu hình ngay bây giờ không?"
 
 #, fuzzy
@@ -10376,8 +10556,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #, fuzzy
 #~ msgid ""
-#~ "Syntax error in topology specification at offset %llu, skipping bytes `"
-#~ "%s'.\n"
+#~ "Syntax error in topology specification at offset %llu, skipping bytes `%"
+#~ "s'.\n"
 #~ msgstr ""
 #~ "Lỗi cú pháp trong sự xác định địa hình học, đang bỏ qua các byte « %s ».\n"
 
@@ -10731,8 +10911,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #, fuzzy
 #~ msgid ""
-#~ "(%s) `%s' was confirmed that you and only you received from him or her: "
-#~ "%s\n"
+#~ "(%s) `%s' was confirmed that you and only you received from him or her: %"
+#~ "s\n"
 #~ msgstr "« %s » xác nhận mà chỉ bạn đa nhận được từ họ : %s\n"
 
 #, fuzzy
@@ -11701,8 +11881,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #~ msgid "No interface specified in section `%s' under `%s'!\n"
 #~ msgstr ""
-#~ "Không có giao diện mạng được xác định trong cấu hình phần « %s » dưới « "
-#~ "%s ».\n"
+#~ "Không có giao diện mạng được xác định trong cấu hình phần « %s » dưới « %"
+#~ "s ».\n"
 
 #~ msgid ""
 #~ "Could not find interface `%s' using `%s', trying to find another "
@@ -11753,8 +11933,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 #~ msgid ""
 #~ "No network interfaces defined in configuration section `%s' under `%s'!\n"
 #~ msgstr ""
-#~ "Không có giao diện mạng được xác định trong cấu hình phần « %s » dưới « "
-#~ "%s ».\n"
+#~ "Không có giao diện mạng được xác định trong cấu hình phần « %s » dưới « %"
+#~ "s ».\n"
 
 #~ msgid "Setting open descriptor limit not supported.\n"
 #~ msgstr "Không hỗ trợ chức năng đặt giới hạn bộ mô tả còn mở.\n"
@@ -12122,8 +12302,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #~ msgid "setkey `%s' from `%s' fails CRC check (have: %u, want %u).\n"
 #~ msgstr ""
-#~ "Kiểm tra CRC setkey « %s » từ « %s » không thành công (có %u, còn muốn "
-#~ "%u).\n"
+#~ "Kiểm tra CRC setkey « %s » từ « %s » không thành công (có %u, còn muốn %"
+#~ "u).\n"
 
 #~ msgid ""
 #~ "Error parsing encrypted session key from `%s', given message part size is "
@@ -12266,8 +12446,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 #~ msgid ""
 #~ "%16llu of %16llu bytes inserted (estimating %6s to completion) - %s\n"
 #~ msgstr ""
-#~ "đã chèn %16llu trên %16llu byte (sẽ hoàn thành trong khoảng %6s giây) - "
-#~ "%s\n"
+#~ "đã chèn %16llu trên %16llu byte (sẽ hoàn thành trong khoảng %6s giây) - %"
+#~ "s\n"
 
 #~ msgid ""
 #~ "Upload of `%s' complete, %llu bytes took %llu seconds (%8.3f KiB/s).\n"
@@ -12418,8 +12598,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 #~ "`%s' registering client handlers %d %d %d %d %d %d %d %d and P2P handlers "
 #~ "%d %d\n"
 #~ msgstr ""
-#~ "« %s » đang đăng ký các trình điều khiển kiểu ứng dụng khách %d %d %d %d "
-#~ "%d %d %d %d và kiểu P2P %d %d\n"
+#~ "« %s » đang đăng ký các trình điều khiển kiểu ứng dụng khách %d %d %d %d %"
+#~ "d %d %d %d và kiểu P2P %d %d\n"
 
 #~ msgid "enables (anonymous) file-sharing"
 #~ msgstr "hiệu lực chia sẻ tập tin (nặc danh)"
@@ -12905,8 +13085,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 #~ "`%s' transport OK.  It took %ums to transmit %llu messages of %llu bytes "
 #~ "each.\n"
 #~ msgstr ""
-#~ "« %s » truyền tải OK.  Cần %u miligiây để truyền đi %llu thông báo với "
-#~ "%llu byte mỗi cái.\n"
+#~ "« %s » truyền tải OK.  Cần %u miligiây để truyền đi %llu thông báo với %"
+#~ "llu byte mỗi cái.\n"
 
 #~ msgid " Transport %d is not being tested\n"
 #~ msgstr " Truyền tải %d không đang thử\n"
@@ -12959,8 +13139,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 
 #~ msgid "%s failed for url `%s' and post-data `%s' at %s:%d: `%s'\n"
 #~ msgstr ""
-#~ "%s bị lỗi đối với địa chỉ URL « %s » và dữ liệu cuối « %s » tại %s:%d: « "
-#~ "%s »\n"
+#~ "%s bị lỗi đối với địa chỉ URL « %s » và dữ liệu cuối « %s » tại %s:%d: « %"
+#~ "s »\n"
 
 #~ msgid "upnp: NAT Returned IP: %s\n"
 #~ msgstr "upnp: địa chỉ IP được NAT trả về: %s\n"
@@ -14145,8 +14325,8 @@ msgstr "« %s » thất bại ở tập tin « %s » tại %s:%d với lỗi: %s
 #~ "insert sử dụng libextractor để trích các từ khoá khỏi tập tin. "
 #~ "libextractor cũng có thể mở rộng động để quản lý định dạng tập tin bổ "
 #~ "sung. Muốn sử dụng bộ trích bên ngoài tập hợp mặc định thì ghi rõ ở đây "
-#~ "những thư viện trích bổ sung. Định dạng là « [[-]tên_thư_viện[:"
-#~ "[-]tên_thư_viện]*] ».\n"
+#~ "những thư viện trích bổ sung. Định dạng là « [[-]tên_thư_viện[:[-]"
+#~ "tên_thư_viện]*] ».\n"
 #~ "\n"
 #~ "Mặc định là dùng tên tập tin, và ngắt từ lớn ở dấu cách, dấu gạch dưới v."
 #~ "v. Đây nên ổn cho phần lớn người dùng. Dấu gạch nối « - » đằng trước một "
index b8883b56982ec02e243cb57060bc4e25d45b0ba9..9a33b90d16403199731c84288266af992187380e 100644 (file)
@@ -7,91 +7,91 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet-0.8.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2019-07-24 17:45+0200\n"
+"POT-Creation-Date: 2019-02-09 22:07+0000\n"
 "PO-Revision-Date: 2011-07-09 12:12+0800\n"
 "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
-"Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
 
-#: src/arm/gnunet-arm.c:157
+#: src/arm/gnunet-arm.c:156
 #, fuzzy, c-format
 msgid "Failed to remove configuration file %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/arm/gnunet-arm.c:163
+#: src/arm/gnunet-arm.c:162
 #, c-format
 msgid "Failed to remove servicehome directory %s\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:223 src/testbed/gnunet-service-testbed_peers.c:1139
+#: src/arm/gnunet-arm.c:222 src/testbed/gnunet-service-testbed_peers.c:1139
 msgid "Message was sent successfully"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:225 src/testbed/gnunet-service-testbed_peers.c:1141
+#: src/arm/gnunet-arm.c:224 src/testbed/gnunet-service-testbed_peers.c:1141
 msgid "We disconnected from ARM before we could send a request"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:227 src/testbed/gnunet-service-testbed_peers.c:1143
+#: src/arm/gnunet-arm.c:226 src/testbed/gnunet-service-testbed_peers.c:1143
 #, fuzzy
 msgid "Unknown request status"
 msgstr "未知的用户“%s”\n"
 
-#: src/arm/gnunet-arm.c:243
+#: src/arm/gnunet-arm.c:242
 #, fuzzy
 msgid "is stopped"
 msgstr "服务已删除。\n"
 
-#: src/arm/gnunet-arm.c:245
+#: src/arm/gnunet-arm.c:244
 msgid "is starting"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:247
+#: src/arm/gnunet-arm.c:246
 msgid "is stopping"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:249
+#: src/arm/gnunet-arm.c:248
 msgid "is starting already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:251
+#: src/arm/gnunet-arm.c:250
 msgid "is stopping already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:253
+#: src/arm/gnunet-arm.c:252
 msgid "is started already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:255
+#: src/arm/gnunet-arm.c:254
 msgid "is stopped already"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:257
+#: src/arm/gnunet-arm.c:256
 #, fuzzy
 msgid "service is not known to ARM"
 msgstr "服务已删除。\n"
 
-#: src/arm/gnunet-arm.c:259
+#: src/arm/gnunet-arm.c:258
 #, fuzzy
 msgid "service failed to start"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/arm/gnunet-arm.c:261
+#: src/arm/gnunet-arm.c:260
 msgid "service cannot be manipulated because ARM is shutting down"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:263
+#: src/arm/gnunet-arm.c:262
 #, fuzzy
 msgid "Unknown result code."
 msgstr "未知的用户“%s”\n"
 
-#: src/arm/gnunet-arm.c:294
+#: src/arm/gnunet-arm.c:295
 msgid "Fatal error initializing ARM API.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:323 src/arm/gnunet-arm.c:332
+#: src/arm/gnunet-arm.c:324 src/arm/gnunet-arm.c:333
 #, fuzzy, c-format
 msgid "Failed to start the ARM service: %s\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -106,122 +106,123 @@ msgstr "初始化“%s”服务失败。\n"
 msgid "Failed to stop the ARM service: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/arm/gnunet-arm.c:417
+#: src/arm/gnunet-arm.c:419
 #, fuzzy, c-format
 msgid "Failed to send a request to start the `%s' service: %s\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/arm/gnunet-arm.c:427
+#: src/arm/gnunet-arm.c:429
 #, fuzzy, c-format
 msgid "Failed to start the `%s' service: %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/arm/gnunet-arm.c:466
+#: src/arm/gnunet-arm.c:467
 #, fuzzy, c-format
 msgid "Failed to send a request to kill the `%s' service: %%s\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/arm/gnunet-arm.c:477
+#: src/arm/gnunet-arm.c:478
 #, fuzzy, c-format
 msgid "Failed to kill the `%s' service: %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/arm/gnunet-arm.c:517
+#: src/arm/gnunet-arm.c:519
 #, fuzzy, c-format
 msgid "Failed to request a list of services: %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/arm/gnunet-arm.c:527
+#: src/arm/gnunet-arm.c:528
 #, fuzzy
 msgid "Error communicating with ARM. ARM not running?\n"
 msgstr "连接 %s:%u 出错。守护程序在运行吗?\n"
 
-#: src/arm/gnunet-arm.c:533
+#: src/arm/gnunet-arm.c:534
 msgid "Running services:\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:615
+#: src/arm/gnunet-arm.c:623
 #, c-format
 msgid "Now only monitoring, press CTRL-C to stop.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:649
+#: src/arm/gnunet-arm.c:656
 #, c-format
 msgid "Stopped %s.\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:652
+#: src/arm/gnunet-arm.c:659
 #, fuzzy, c-format
 msgid "Starting %s...\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/arm/gnunet-arm.c:655
+#: src/arm/gnunet-arm.c:662
 #, c-format
 msgid "Stopping %s...\n"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:667
+#: src/arm/gnunet-arm.c:676
 #, fuzzy, c-format
 msgid "Unknown status %u for service %s.\n"
 msgstr "未知的用户“%s”\n"
 
-#: src/arm/gnunet-arm.c:744
+#: src/arm/gnunet-arm.c:766
 #, fuzzy
 msgid "stop all GNUnet services"
 msgstr "卸载 GNUnet 服务"
 
-#: src/arm/gnunet-arm.c:749
+#: src/arm/gnunet-arm.c:771
 msgid "start a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:754
+#: src/arm/gnunet-arm.c:776
 msgid "stop a particular service"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:759
+#: src/arm/gnunet-arm.c:780
 #, fuzzy
 msgid "start all GNUnet default services"
 msgstr "卸载 GNUnet 服务"
 
-#: src/arm/gnunet-arm.c:764
+#: src/arm/gnunet-arm.c:784
 #, fuzzy
 msgid "stop and start all GNUnet default services"
 msgstr "卸载 GNUnet 服务"
 
-#: src/arm/gnunet-arm.c:769
+#: src/arm/gnunet-arm.c:788
 msgid "delete config file and directory on exit"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:773
+#: src/arm/gnunet-arm.c:792
 msgid "monitor ARM activities"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:777
+#: src/arm/gnunet-arm.c:796
 msgid "don't print status messages"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:784
+#: src/arm/gnunet-arm.c:801
 msgid "exit with error status if operation does not finish after DELAY"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:789
+#: src/arm/gnunet-arm.c:805
 msgid "list currently running services"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:794
+#: src/arm/gnunet-arm.c:809
 msgid "don't let gnunet-service-arm inherit standard output"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:799
+#: src/arm/gnunet-arm.c:813
 msgid "don't let gnunet-service-arm inherit standard error"
 msgstr ""
 
-#: src/arm/gnunet-arm.c:812
+#: src/arm/gnunet-arm.c:828
 msgid "Control services and the Automated Restart Manager (ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:388 src/transport/plugin_transport_tcp.c:1120
-#: src/transport/tcp_service_legacy.c:557
+#: src/transport/plugin_transport_xt.c:1120
+#: src/transport/tcp_service_legacy.c:557 src/util/service.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -230,30 +231,36 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:412 src/arm/gnunet-service-arm.c:418
 #: src/transport/plugin_transport_tcp.c:1139
 #: src/transport/plugin_transport_tcp.c:1145
-#: src/transport/plugin_transport_tcp.c:3835
+#: src/transport/plugin_transport_tcp.c:3829
+#: src/transport/plugin_transport_xt.c:1139
+#: src/transport/plugin_transport_xt.c:1145
+#: src/transport/plugin_transport_xt.c:3833
 #: src/transport/tcp_service_legacy.c:576
-#: src/transport/tcp_service_legacy.c:582 src/util/service.c:1150
-#: src/util/service.c:1156
+#: src/transport/tcp_service_legacy.c:582 src/util/service.c:637
+#: src/util/service.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:457 src/transport/plugin_transport_tcp.c:1176
-#: src/transport/tcp_service_legacy.c:613 src/util/client.c:521
-#: src/util/service.c:1195
+#: src/transport/plugin_transport_xt.c:1176
+#: src/transport/tcp_service_legacy.c:613 src/util/client.c:506
+#: src/util/service.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:462 src/transport/plugin_transport_tcp.c:1180
-#: src/transport/tcp_service_legacy.c:617 src/util/client.c:526
-#: src/util/service.c:1200
+#: src/transport/plugin_transport_xt.c:1180
+#: src/transport/tcp_service_legacy.c:617 src/util/client.c:511
+#: src/util/service.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s:选项“%s”有歧义\n"
 
 #: src/arm/gnunet-service-arm.c:495 src/transport/plugin_transport_tcp.c:1211
-#: src/transport/tcp_service_legacy.c:648 src/util/service.c:1236
+#: src/transport/plugin_transport_xt.c:1211
+#: src/transport/tcp_service_legacy.c:648 src/util/service.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -261,7 +268,8 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:517 src/transport/plugin_transport_tcp.c:1228
-#: src/transport/tcp_service_legacy.c:665 src/util/service.c:1254
+#: src/transport/plugin_transport_xt.c:1228
+#: src/transport/tcp_service_legacy.c:665 src/util/service.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -269,7 +277,8 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:556
 #: src/transport/plugin_transport_http_server.c:2688
 #: src/transport/plugin_transport_tcp.c:1259
-#: src/transport/tcp_service_legacy.c:696 src/util/service.c:1295
+#: src/transport/plugin_transport_xt.c:1259
+#: src/transport/tcp_service_legacy.c:696 src/util/service.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
@@ -277,7 +286,8 @@ msgstr "打开日志文件“%s”失败:%s\n"
 #: src/arm/gnunet-service-arm.c:575
 #: src/transport/plugin_transport_http_server.c:2706
 #: src/transport/plugin_transport_tcp.c:1278
-#: src/transport/tcp_service_legacy.c:715 src/util/service.c:1315
+#: src/transport/plugin_transport_xt.c:1278
+#: src/transport/tcp_service_legacy.c:715 src/util/service.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
@@ -349,160 +359,25 @@ msgstr ""
 msgid "Initiating shutdown as requested by client.\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
-#, c-format
-msgid ""
-"Could not load quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2799
-#, c-format
-msgid ""
-"No outbound quota configured for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:2840
-#, c-format
-msgid ""
-"No outbound quota configure for network `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3294 src/ats-tests/gnunet-solver-eval.c:939
-msgid "solver to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3299 src/ats-tests/gnunet-solver-eval.c:945
-#: src/ats-tests/gnunet-solver-eval.c:950
-msgid "experiment to use"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3306
-#, fuzzy
-msgid "print logging"
-msgstr "未知的命令“%s”。\n"
-
-#: src/ats/gnunet-ats-solver-eval.c:3311
-msgid "save logging to disk"
-msgstr ""
-
-#: src/ats/gnunet-ats-solver-eval.c:3316
-msgid "disable normalization"
-msgstr ""
-
-#: src/ats/gnunet-service-ats-new.c:755
-#: src/ats/gnunet-service-ats_plugins.c:451
-#, fuzzy, c-format
-msgid "Failed to initialize solver `%s'!\n"
-msgstr "无法初始化 SQLite:%s。\n"
-
-#: src/ats/gnunet-service-ats_plugins.c:304
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:314
-#, c-format
-msgid "%s quota configured for network `%s' is %llu\n"
-msgstr ""
-
-#: src/ats/gnunet-service-ats_plugins.c:359
-#, c-format
-msgid ""
-"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats2_common.c:90
-#, c-format
-msgid ""
-"Could not load %s quota for network `%s': `%s', assigning default bandwidth "
-"%llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1274
-msgid "Problem size too large, cannot allocate memory!\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1870
-#, c-format
-msgid "Adding address for peer `%s' multiple times\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:1914
-#, c-format
-msgid "Updating address property for peer `%s' %p not added before\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2476
-msgid ""
-"MLP solver is not optimizing for anything, changing to feasibility check\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
-#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
-#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
-#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
-#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
-#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
-#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
-#, fuzzy, c-format
-msgid "Invalid %s configuration %f \n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/ats/plugin_ats_mlp.c:2671
-#, c-format
-msgid ""
-"Adjusting inconsistent outbound quota configuration for network `%s', is "
-"%llu must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2680
-#, c-format
-msgid ""
-"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
-"must be at least %llu\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2690
-#, c-format
-msgid ""
-"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
-msgstr ""
-
-#: src/ats/plugin_ats_mlp.c:2699
-#, c-format
-msgid ""
-"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+#: src/ats-tests/ats-testing-log.c:837
+msgid "Stop logging\n"
 msgstr ""
 
-#: src/ats/plugin_ats_proportional.c:1164
+#: src/ats-tests/ats-testing-log.c:892
 #, fuzzy, c-format
-msgid "Invalid %s configuration %f\n"
-msgstr "解析配置文件“%s”失败\n"
+msgid "Start logging `%s'\n"
+msgstr "未知的命令“%s”。\n"
 
-#: src/ats-tests/ats-testing.c:419
+#: src/ats-tests/ats-testing.c:422
 #, c-format
 msgid "Connected master [%u] with slave [%u]\n"
 msgstr ""
 
-#: src/ats-tests/ats-testing.c:426
+#: src/ats-tests/ats-testing.c:429
 #, fuzzy, c-format
 msgid "Failed to connect master peer [%u] with slave [%u]\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/ats-tests/ats-testing-log.c:837
-msgid "Stop logging\n"
-msgstr ""
-
-#: src/ats-tests/ats-testing-log.c:892
-#, fuzzy, c-format
-msgid "Start logging `%s'\n"
-msgstr "未知的命令“%s”。\n"
-
 #: src/ats-tests/gnunet-ats-sim.c:90
 #, c-format
 msgid ""
@@ -510,6 +385,17 @@ msgid ""
 "= %u KiB/s\n"
 msgstr ""
 
+#: src/ats-tests/gnunet-solver-eval.c:939
+#: src/ats/gnunet-ats-solver-eval.c:3294
+msgid "solver to use"
+msgstr ""
+
+#: src/ats-tests/gnunet-solver-eval.c:945
+#: src/ats-tests/gnunet-solver-eval.c:950
+#: src/ats/gnunet-ats-solver-eval.c:3299
+msgid "experiment to use"
+msgstr ""
+
 #: src/ats-tool/gnunet-ats.c:307
 #, c-format
 msgid "%u address resolutions had a timeout\n"
@@ -631,6 +517,132 @@ msgstr ""
 msgid "Print information about ATS state"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
+#: src/ats/gnunet-ats-solver-eval.c:2781 src/ats/gnunet-ats-solver-eval.c:2822
+#, c-format
+msgid ""
+"Could not load quota for network `%s':  `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2799
+#, c-format
+msgid ""
+"No outbound quota configured for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:2840
+#, c-format
+msgid ""
+"No outbound quota configure for network `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3306
+#, fuzzy
+msgid "print logging"
+msgstr "未知的命令“%s”。\n"
+
+#: src/ats/gnunet-ats-solver-eval.c:3311
+msgid "save logging to disk"
+msgstr ""
+
+#: src/ats/gnunet-ats-solver-eval.c:3316
+msgid "disable normalization"
+msgstr ""
+
+#: src/ats/gnunet-service-ats-new.c:733
+#: src/ats/gnunet-service-ats_plugins.c:451
+#, fuzzy, c-format
+msgid "Failed to initialize solver `%s'!\n"
+msgstr "无法初始化 SQLite:%s。\n"
+
+#: src/ats/gnunet-service-ats_plugins.c:304
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s':  `%s', assigning default bandwidth "
+"%llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:314
+#, c-format
+msgid "%s quota configured for network `%s' is %llu\n"
+msgstr ""
+
+#: src/ats/gnunet-service-ats_plugins.c:359
+#, c-format
+msgid ""
+"No %s-quota configured for network `%s', assigning default bandwidth %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats2_common.c:90
+#, c-format
+msgid ""
+"Could not load %s quota for network `%s': `%s', assigning default bandwidth %"
+"llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1274
+msgid "Problem size too large, cannot allocate memory!\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1870
+#, c-format
+msgid "Adding address for peer `%s' multiple times\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:1914
+#, c-format
+msgid "Updating address property for peer `%s' %p not added before\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2476
+msgid ""
+"MLP solver is not optimizing for anything, changing to feasibility check\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2516 src/ats/plugin_ats_mlp.c:2533
+#: src/ats/plugin_ats_mlp.c:2565 src/ats/plugin_ats_mlp.c:2583
+#: src/ats/plugin_ats_mlp.c:2602 src/ats/plugin_ats_proportional.c:1141
+#: src/ats/plugin_ats_ril.c:2612 src/ats/plugin_ats_ril.c:2629
+#: src/ats/plugin_ats_ril.c:2646 src/ats/plugin_ats_ril.c:2663
+#: src/ats/plugin_ats_ril.c:2680 src/ats/plugin_ats_ril.c:2697
+#: src/ats/plugin_ats_ril.c:2714 src/ats/plugin_ats_ril.c:2731
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f \n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/ats/plugin_ats_mlp.c:2671
+#, c-format
+msgid ""
+"Adjusting inconsistent outbound quota configuration for network `%s', is %"
+"llu must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2680
+#, c-format
+msgid ""
+"Adjusting inconsistent inbound quota configuration for network `%s', is %llu "
+"must be at least %llu\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2690
+#, c-format
+msgid ""
+"Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_mlp.c:2699
+#, c-format
+msgid ""
+"Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
+msgstr ""
+
+#: src/ats/plugin_ats_proportional.c:1164
+#, fuzzy, c-format
+msgid "Invalid %s configuration %f\n"
+msgstr "解析配置文件“%s”失败\n"
+
 #: src/auction/gnunet-auction-create.c:163
 msgid "description of the item to be sold"
 msgstr ""
@@ -668,7 +680,7 @@ msgstr ""
 
 #: src/auction/gnunet-auction-info.c:76 src/auction/gnunet-auction-join.c:76
 #: src/conversation/gnunet-conversation-test.c:254
-#: src/revocation/gnunet-revocation.c:561 src/template/gnunet-template.c:73
+#: src/revocation/gnunet-revocation.c:562 src/template/gnunet-template.c:76
 msgid "help text"
 msgstr ""
 
@@ -681,39 +693,39 @@ msgstr "无效条目。\n"
 msgid "Extra arguments are not applicable in combination with this option.\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:794
+#: src/cadet/gnunet-cadet.c:795
 #, fuzzy, c-format
 msgid "Invalid target `%s'\n"
 msgstr "“%s”的参数无效。\n"
 
-#: src/cadet/gnunet-cadet.c:829
+#: src/cadet/gnunet-cadet.c:832
 msgid "No action requested\n"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:854
+#: src/cadet/gnunet-cadet.c:857
 #, fuzzy
 msgid "Provide information about a particular connection"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/cadet/gnunet-cadet.c:858
+#: src/cadet/gnunet-cadet.c:861
 msgid "Activate echo mode"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:863
+#: src/cadet/gnunet-cadet.c:866
 msgid "Listen for connections using a shared secret among sender and recipient"
 msgstr ""
 
-#: src/cadet/gnunet-cadet.c:868
+#: src/cadet/gnunet-cadet.c:871
 #, fuzzy
 msgid "Provide information about a patricular peer"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/cadet/gnunet-cadet.c:872
+#: src/cadet/gnunet-cadet.c:875
 #, fuzzy
 msgid "Provide information about all peers"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/cadet/gnunet-cadet.c:876
+#: src/cadet/gnunet-cadet.c:879
 #, fuzzy
 msgid "Provide information about all tunnels"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
@@ -762,6 +774,28 @@ msgstr ""
 msgid "Connection to conversation service lost, trying to reconnect\n"
 msgstr ""
 
+#: src/conversation/gnunet-conversation-test.c:120
+#, c-format
+msgid ""
+"\n"
+"End of transmission.  Have a GNU day.\n"
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:145
+#, c-format
+msgid ""
+"\n"
+"We are now playing your recording back.  If you can hear it, your audio "
+"settings are working..."
+msgstr ""
+
+#: src/conversation/gnunet-conversation-test.c:216
+#, c-format
+msgid ""
+"We will now be recording you for %s. After that time, the recording will be "
+"played back to you..."
+msgstr ""
+
 #: src/conversation/gnunet-conversation.c:277
 #, c-format
 msgid "Incoming call from `%s'. Please /accept %u or /cancel %u the call.\n"
@@ -1018,30 +1052,8 @@ msgstr ""
 msgid "Enables having a conversation with other GNUnet users."
 msgstr ""
 
-#: src/conversation/gnunet-conversation-test.c:120
-#, c-format
-msgid ""
-"\n"
-"End of transmission.  Have a GNU day.\n"
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:145
-#, c-format
-msgid ""
-"\n"
-"We are now playing your recording back.  If you can hear it, your audio "
-"settings are working..."
-msgstr ""
-
-#: src/conversation/gnunet-conversation-test.c:216
-#, c-format
-msgid ""
-"We will now be recording you for %s. After that time, the recording will be "
-"played back to you..."
-msgstr ""
-
-#: src/conversation/gnunet_gst.c:622
 #: src/conversation/gnunet-helper-audio-playback-gst.c:361
+#: src/conversation/gnunet_gst.c:622
 #, c-format
 msgid "Read error from STDIN: %d %s\n"
 msgstr ""
@@ -1167,7 +1179,7 @@ msgstr "“%s”说:%s\n"
 msgid "Failed to allocate %u bytes for second packet\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/conversation/gnunet-service-conversation.c:1238
+#: src/conversation/gnunet-service-conversation.c:1305
 #, fuzzy, c-format
 msgid "Could not open line, port %s already in use!\n"
 msgstr "无法连接到 %s:%u:%s\n"
@@ -1192,50 +1204,50 @@ msgstr "解析配置文件“%s”失败\n"
 msgid "Could not start playback audio helper.\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:91
+#: src/core/gnunet-core.c:90
 #, fuzzy
 msgid "fresh connection"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/core/gnunet-core.c:94
+#: src/core/gnunet-core.c:93
 msgid "key sent"
 msgstr ""
 
-#: src/core/gnunet-core.c:97
+#: src/core/gnunet-core.c:96
 msgid "key received"
 msgstr ""
 
-#: src/core/gnunet-core.c:100
+#: src/core/gnunet-core.c:99
 #, fuzzy
 msgid "connection established"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/core/gnunet-core.c:103
+#: src/core/gnunet-core.c:102
 msgid "rekeying"
 msgstr ""
 
-#: src/core/gnunet-core.c:106
+#: src/core/gnunet-core.c:105
 #, fuzzy
 msgid "disconnected"
 msgstr "“%s”已连接到“%s”。\n"
 
-#: src/core/gnunet-core.c:113
+#: src/core/gnunet-core.c:112
 msgid "Connection to CORE service lost (reconnecting)"
 msgstr ""
 
-#: src/core/gnunet-core.c:116
+#: src/core/gnunet-core.c:115
 #, fuzzy
 msgid "unknown state"
 msgstr "未知错误"
 
-#: src/core/gnunet-core.c:121
+#: src/core/gnunet-core.c:120
 #, c-format
 msgid "%24s: %-30s %4s (timeout in %6s)\n"
 msgstr ""
 
-#: src/core/gnunet-core.c:149 src/peerinfo-tool/gnunet-peerinfo.c:728
+#: src/core/gnunet-core.c:144 src/peerinfo-tool/gnunet-peerinfo.c:728
 #, fuzzy, c-format
 msgid "Invalid command line argument `%s'\n"
 msgstr "“%s”的参数无效。\n"
@@ -1245,212 +1257,212 @@ msgstr "“%s”的参数无效。\n"
 msgid "Failed to connect to CORE service!\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/core/gnunet-core.c:178 src/transport/gnunet-transport.c:1385
+#: src/core/gnunet-core.c:177 src/transport/gnunet-transport.c:1449
 msgid "provide information about all current connections (continuously)"
 msgstr ""
 
-#: src/core/gnunet-core.c:188
+#: src/core/gnunet-core.c:186
 msgid "Print information about connected peers."
 msgstr ""
 
-#: src/core/gnunet-service-core.c:329
+#: src/core/gnunet-service-core.c:347
 msgid "# send requests dropped (disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:355
+#: src/core/gnunet-service-core.c:371
 msgid "# dequeuing CAR (duplicate request)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:420
+#: src/core/gnunet-service-core.c:443
 #, c-format
 msgid "# bytes of messages of type %u received"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:508
+#: src/core/gnunet-service-core.c:541
 msgid "# messages discarded (session disconnected)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:828
+#: src/core/gnunet-service-core.c:879
 #, c-format
 msgid "# messages of type %u discarded (client busy)"
 msgstr ""
 
-#: src/core/gnunet-service-core.c:929
+#: src/core/gnunet-service-core.c:988
 #, fuzzy
 msgid "Core service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "立即保存配置?"
 
-#: src/core/gnunet-service-core.c:948
+#: src/core/gnunet-service-core.c:1009
 #, fuzzy, c-format
 msgid "Core service of `%s' ready.\n"
 msgstr "服务已删除。\n"
 
-#: src/core/gnunet-service-core_kx.c:623
+#: src/core/gnunet-service-core_kx.c:617
 msgid "# bytes encrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:681
+#: src/core/gnunet-service-core_kx.c:677
 msgid "# bytes decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:778
+#: src/core/gnunet-service-core_kx.c:779
 msgid "# PAYLOAD dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:828
+#: src/core/gnunet-service-core_kx.c:829
 msgid "# key exchanges initiated"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:884
+#: src/core/gnunet-service-core_kx.c:891
 msgid "# key exchanges stopped"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:916
+#: src/core/gnunet-service-core_kx.c:925
 #, fuzzy
 msgid "# PING messages transmitted"
 msgstr "消息尺寸"
 
-#: src/core/gnunet-service-core_kx.c:974
+#: src/core/gnunet-service-core_kx.c:992
 msgid "# old ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:988
+#: src/core/gnunet-service-core_kx.c:1005
 msgid "# duplicate ephemeral keys ignored"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1023
+#: src/core/gnunet-service-core_kx.c:1040
 msgid "# EPHEMERAL_KEYs rejected (bad signature)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1041
+#: src/core/gnunet-service-core_kx.c:1054
 #, c-format
 msgid ""
 "EPHEMERAL_KEY from peer `%s' rejected as its validity range does not match "
 "our system time (%llu not in [%llu,%llu]).\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1048
+#: src/core/gnunet-service-core_kx.c:1060
 msgid "# EPHEMERAL_KEY messages rejected due to time"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1066
+#: src/core/gnunet-service-core_kx.c:1080
 #, fuzzy
 msgid "# valid ephemeral keys received"
 msgstr "保存配置失败。"
 
-#: src/core/gnunet-service-core_kx.c:1165
-#: src/transport/gnunet-service-transport_validation.c:1129
+#: src/core/gnunet-service-core_kx.c:1180
+#: src/transport/gnunet-service-transport_validation.c:1128
 msgid "# PING messages received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1175
+#: src/core/gnunet-service-core_kx.c:1189
 msgid "# PING messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1224
+#: src/core/gnunet-service-core_kx.c:1248
 msgid "# PONG messages created"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1249
+#: src/core/gnunet-service-core_kx.c:1274
 msgid "# sessions terminated by timeout"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1262
+#: src/core/gnunet-service-core_kx.c:1287
 msgid "# keepalive messages sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1319
-#: src/transport/gnunet-service-transport_validation.c:1462
+#: src/core/gnunet-service-core_kx.c:1351
+#: src/transport/gnunet-service-transport_validation.c:1461
 msgid "# PONG messages received"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1327
+#: src/core/gnunet-service-core_kx.c:1358
 msgid "# PONG messages dropped (connection down)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1334
+#: src/core/gnunet-service-core_kx.c:1363
 msgid "# PONG messages dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1369
+#: src/core/gnunet-service-core_kx.c:1398
 msgid "# PONG messages decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1407
+#: src/core/gnunet-service-core_kx.c:1436
 msgid "# session keys confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1418
+#: src/core/gnunet-service-core_kx.c:1447
 msgid "# timeouts prevented via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1426
+#: src/core/gnunet-service-core_kx.c:1454
 msgid "# rekey operations confirmed via PONG"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1601
+#: src/core/gnunet-service-core_kx.c:1642
 msgid "# DATA message dropped (out of order)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1612
+#: src/core/gnunet-service-core_kx.c:1650
 #, c-format
 msgid ""
 "Session to peer `%s' went down due to key expiration (should not happen)\n"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1616
+#: src/core/gnunet-service-core_kx.c:1653
 msgid "# sessions terminated by key expiration"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1694
-#: src/core/gnunet-service-core_kx.c:1721
+#: src/core/gnunet-service-core_kx.c:1742
+#: src/core/gnunet-service-core_kx.c:1768
 msgid "# bytes dropped (duplicates)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1707
+#: src/core/gnunet-service-core_kx.c:1755
 msgid "# bytes dropped (out of sequence)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1752
+#: src/core/gnunet-service-core_kx.c:1797
 msgid "# bytes dropped (ancient message)"
 msgstr ""
 
-#: src/core/gnunet-service-core_kx.c:1761
+#: src/core/gnunet-service-core_kx.c:1805
 msgid "# bytes of payload decrypted"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:254
-#: src/core/gnunet-service-core_sessions.c:339
-#: src/dht/gnunet-service-dht_neighbours.c:740
-#: src/dht/gnunet-service-dht_neighbours.c:803
+#: src/core/gnunet-service-core_sessions.c:260
+#: src/core/gnunet-service-core_sessions.c:350
+#: src/dht/gnunet-service-dht_neighbours.c:741
+#: src/dht/gnunet-service-dht_neighbours.c:804
 #: src/fs/gnunet-service-fs_cp.c:615 src/fs/gnunet-service-fs_cp.c:1521
-#: src/topology/gnunet-daemon-topology.c:581
-#: src/topology/gnunet-daemon-topology.c:673
+#: src/topology/gnunet-daemon-topology.c:617
+#: src/topology/gnunet-daemon-topology.c:719
 #: src/transport/gnunet-service-transport_neighbours.c:720
 #: src/transport/gnunet-service-transport_neighbours.c:728
 msgid "# peers connected"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:287
+#: src/core/gnunet-service-core_sessions.c:296
 msgid "# type map refreshes sent"
 msgstr ""
 
-#: src/core/gnunet-service-core_sessions.c:402
+#: src/core/gnunet-service-core_sessions.c:416
 #, fuzzy
 msgid "# outdated typemap confirmations received"
 msgstr "保存配置失败。"
 
-#: src/core/gnunet-service-core_sessions.c:420
+#: src/core/gnunet-service-core_sessions.c:433
 #, fuzzy
 msgid "# valid typemap confirmations received"
 msgstr "保存配置失败。"
 
-#: src/core/gnunet-service-core_typemap.c:170
-#: src/core/gnunet-service-core_typemap.c:183
+#: src/core/gnunet-service-core_typemap.c:169
+#: src/core/gnunet-service-core_typemap.c:181
 msgid "# type maps received"
 msgstr ""
 
-#: src/core/gnunet-service-core_typemap.c:216
+#: src/core/gnunet-service-core_typemap.c:212
 msgid "# updates to my type map"
 msgstr ""
 
@@ -1459,7 +1471,7 @@ msgstr ""
 msgid "Unable to parse CRED record string `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:1267
+#: src/credential/gnunet-credential.c:264 src/namestore/gnunet-namestore.c:994
 #, c-format
 msgid "Ego `%s' not known to identity service\n"
 msgstr ""
@@ -1559,28 +1571,24 @@ msgstr ""
 msgid "GNUnet credential resolver tool"
 msgstr "GNUnet 错误日志"
 
-#: src/credential/gnunet-service-credential.c:1067 src/gns/gnunet-gns.c:214
-#: src/gns/gnunet-gns-helper-service-w32.c:727
+#: src/credential/gnunet-service-credential.c:1138
+#: src/gns/gnunet-gns-helper-service-w32.c:727 src/gns/gnunet-gns.c:185
 #, fuzzy, c-format
 msgid "Failed to connect to GNS\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/credential/gnunet-service-credential.c:1071
-#: src/namestore/gnunet-namestore.c:997
+#: src/credential/gnunet-service-credential.c:1144
 #: src/namestore/gnunet-namestore-fcfsd.c:1138
+#: src/namestore/gnunet-namestore.c:1019
 #, fuzzy, c-format
 msgid "Failed to connect to namestore\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/credential/plugin_gnsrecord_credential.c:153
+#: src/credential/plugin_gnsrecord_credential.c:186
 #, fuzzy, c-format
 msgid "Unable to parse ATTR record string `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/credential/plugin_rest_credential.c:1128
-msgid "GNS REST API initialized\n"
-msgstr ""
-
 #: src/datacache/datacache.c:119 src/datacache/datacache.c:311
 #: src/datastore/gnunet-service-datastore.c:757
 msgid "# bytes stored"
@@ -1623,19 +1631,21 @@ msgstr "sqlite 数据仓库"
 
 #: src/datacache/plugin_datacache_sqlite.c:118
 #: src/datacache/plugin_datacache_sqlite.c:127
-#: src/datastore/plugin_datastore_mysql.c:891
+#: src/datastore/plugin_datastore_mysql.c:892
 #: src/datastore/plugin_datastore_sqlite.c:58
 #: src/datastore/plugin_datastore_sqlite.c:66 src/my/my.c:81 src/my/my.c:93
-#: src/mysql/mysql.c:47 src/mysql/mysql.c:65
+#: src/mysql/mysql.c:42 src/mysql/mysql.c:49
 #: src/namecache/plugin_namecache_sqlite.c:52
 #: src/namestore/plugin_namestore_sqlite.c:53
 #: src/peerstore/plugin_peerstore_sqlite.c:52
+#: src/psycstore/plugin_psycstore_mysql.c:62
+#: src/reclaim/plugin_reclaim_sqlite.c:52
 #: src/testbed/generate-underlay-topology.c:47
 #: src/testbed/gnunet-daemon-latency-logger.c:52
 #: src/testbed/gnunet-daemon-testbed-underlay.c:56
-#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:59
+#: src/testbed/testbed_api_hosts.c:69 src/util/crypto_ecc.c:53
 #: src/util/crypto_ecc_setup.c:41 src/util/crypto_mpi.c:39
-#: src/include/gnunet_common.h:963 src/include/gnunet_common.h:982
+#: src/include/gnunet_common.h:818 src/include/gnunet_common.h:827
 #: src/scalarproduct/scalarproduct.h:35
 #, fuzzy, c-format
 msgid "`%s' failed at %s:%d with error: %s\n"
@@ -1645,6 +1655,7 @@ msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
 #: src/datastore/plugin_datastore_sqlite.c:508
 #: src/namecache/plugin_namecache_sqlite.c:229
 #: src/namestore/plugin_namestore_sqlite.c:265
+#: src/reclaim/plugin_reclaim_sqlite.c:336
 msgid "Tried to close sqlite without finalizing all prepared statements.\n"
 msgstr ""
 
@@ -1932,7 +1943,7 @@ msgstr "sqlite 数据仓库"
 
 #: src/datastore/plugin_datastore_mysql.c:371
 #: src/datastore/plugin_datastore_mysql.c:423
-#: src/datastore/plugin_datastore_mysql.c:1074
+#: src/datastore/plugin_datastore_mysql.c:1075
 msgid "MySQL statement run failure"
 msgstr ""
 
@@ -1947,21 +1958,23 @@ msgstr "迭代次数"
 msgid "`%s' for `%s' failed at %s:%d with error: %s\n"
 msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
 
-#: src/datastore/plugin_datastore_mysql.c:1179
+#: src/datastore/plugin_datastore_mysql.c:1180
+#: src/psycstore/plugin_psycstore_mysql.c:1936
 msgid "Mysql database running\n"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:280
-#: src/datastore/plugin_datastore_postgres.c:897
+#: src/datastore/plugin_datastore_postgres.c:276
+#: src/datastore/plugin_datastore_postgres.c:893
 msgid "Postgress exec failure"
 msgstr ""
 
-#: src/datastore/plugin_datastore_postgres.c:858
+#: src/datastore/plugin_datastore_postgres.c:854
 #, fuzzy
 msgid "Failed to drop table from database.\n"
 msgstr "发送消息失败。\n"
 
-#: src/datastore/plugin_datastore_postgres.c:956
+#: src/datastore/plugin_datastore_postgres.c:952
+#: src/psycstore/plugin_psycstore_postgres.c:1506
 msgid "Postgres database running\n"
 msgstr ""
 
@@ -1977,6 +1990,8 @@ msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
 #: src/namecache/plugin_namecache_sqlite.c:173
 #: src/namestore/plugin_namestore_sqlite.c:206
 #: src/peerstore/plugin_peerstore_sqlite.c:535
+#: src/psycstore/plugin_psycstore_sqlite.c:325
+#: src/reclaim/plugin_reclaim_sqlite.c:212
 #, c-format
 msgid "Unable to initialize SQLite: %s.\n"
 msgstr "无法初始化 SQLite:%s。\n"
@@ -1998,7 +2013,8 @@ msgstr ""
 
 #: src/datastore/plugin_datastore_sqlite.c:1405
 #: src/namecache/plugin_namecache_sqlite.c:557
-#: src/namestore/plugin_namestore_sqlite.c:751
+#: src/namestore/plugin_namestore_sqlite.c:750
+#: src/reclaim/plugin_reclaim_sqlite.c:711
 #, fuzzy
 msgid "Sqlite database running\n"
 msgstr "sqlite 数据仓库"
@@ -2070,54 +2086,6 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
-#, fuzzy, c-format
-msgid "Exiting as the number of peers is %u\n"
-msgstr "增加 TCP/IP 的最大连接数"
-
-#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:3081
-#, fuzzy
-msgid "number of peers to start"
-msgstr "迭代次数"
-
-#: src/dht/gnunet_dht_profiler.c:954
-msgid "number of PUTs to perform per peer"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
-#: src/testbed/gnunet-testbed-profiler.c:300
-msgid "name of the file with the login information for the testbed"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:964
-msgid "delay between rounds for collecting statistics (default: 30 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:969
-msgid "delay to start doing PUTs (default: 1 sec)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:974
-msgid "delay to start doing GETs (default: 5 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:979
-msgid "replication degree for DHT PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:984
-msgid "chance that a peer is selected at random for PUTs"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:989
-msgid "timeout for DHT PUT and GET requests (default: 1 min)"
-msgstr ""
-
-#: src/dht/gnunet_dht_profiler.c:1009
-#, fuzzy
-msgid "Measure quality and performance of the DHT service."
-msgstr "无法访问该服务"
-
 #: src/dht/gnunet-dht-put.c:134
 msgid "Must provide KEY and DATA for DHT put!\n"
 msgstr ""
@@ -2239,91 +2207,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:852
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1053
-#: src/dht/gnunet-service-dht_neighbours.c:1096
+#: src/dht/gnunet-service-dht_neighbours.c:1055
+#: src/dht/gnunet-service-dht_neighbours.c:1098
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1070
-#: src/dht/gnunet-service-dht_neighbours.c:1112
+#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1114
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1269
+#: src/dht/gnunet-service-dht_neighbours.c:1271
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1302
+#: src/dht/gnunet-service-dht_neighbours.c:1304
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1313
-#: src/dht/gnunet-service-dht_neighbours.c:1453
-#: src/dht/gnunet-service-dht_neighbours.c:1556
+#: src/dht/gnunet-service-dht_neighbours.c:1315
+#: src/dht/gnunet-service-dht_neighbours.c:1455
+#: src/dht/gnunet-service-dht_neighbours.c:1558
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1398
+#: src/dht/gnunet-service-dht_neighbours.c:1400
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1443
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1571
+#: src/dht/gnunet-service-dht_neighbours.c:1573
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1674
+#: src/dht/gnunet-service-dht_neighbours.c:1676
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1682
+#: src/dht/gnunet-service-dht_neighbours.c:1684
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1686
+#: src/dht/gnunet-service-dht_neighbours.c:1688
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1912
+#: src/dht/gnunet-service-dht_neighbours.c:1914
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1920
+#: src/dht/gnunet-service-dht_neighbours.c:1922
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2082
+#: src/dht/gnunet-service-dht_neighbours.c:2084
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2086
+#: src/dht/gnunet-service-dht_neighbours.c:2088
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2151
+#: src/dht/gnunet-service-dht_neighbours.c:2153
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2172
+#: src/dht/gnunet-service-dht_neighbours.c:2174
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2349
+#: src/dht/gnunet-service-dht_neighbours.c:2351
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2365
+#: src/dht/gnunet-service-dht_neighbours.c:2367
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2369
+#: src/dht/gnunet-service-dht_neighbours.c:2371
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2355,14 +2323,62 @@ msgstr ""
 msgid "# Entries removed from routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:414
+#: src/dht/gnunet-service-dht_routing.c:415
 msgid "# Entries added to routing table"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_routing.c:436
+#: src/dht/gnunet-service-dht_routing.c:437
 msgid "# DHT requests combined"
 msgstr ""
 
+#: src/dht/gnunet_dht_profiler.c:916 src/testbed/gnunet-testbed-profiler.c:253
+#, fuzzy, c-format
+msgid "Exiting as the number of peers is %u\n"
+msgstr "增加 TCP/IP 的最大连接数"
+
+#: src/dht/gnunet_dht_profiler.c:949 src/rps/gnunet-rps-profiler.c:2953
+#, fuzzy
+msgid "number of peers to start"
+msgstr "迭代次数"
+
+#: src/dht/gnunet_dht_profiler.c:954
+msgid "number of PUTs to perform per peer"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:959 src/nse/gnunet-nse-profiler.c:860
+#: src/testbed/gnunet-testbed-profiler.c:304
+msgid "name of the file with the login information for the testbed"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:964
+msgid "delay between rounds for collecting statistics (default: 30 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:969
+msgid "delay to start doing PUTs (default: 1 sec)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:974
+msgid "delay to start doing GETs (default: 5 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:979
+msgid "replication degree for DHT PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:984
+msgid "chance that a peer is selected at random for PUTs"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:989
+msgid "timeout for DHT PUT and GET requests (default: 1 min)"
+msgstr ""
+
+#: src/dht/gnunet_dht_profiler.c:1009
+#, fuzzy
+msgid "Measure quality and performance of the DHT service."
+msgstr "无法访问该服务"
+
 #: src/dht/plugin_block_dht.c:189
 #, c-format
 msgid "Block not of type %u\n"
@@ -2438,16 +2454,21 @@ msgstr ""
 msgid "# DNS requests received via TUN interface"
 msgstr ""
 
-#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3563
+#: src/dns/gnunet-service-dns.c:1082 src/exit/gnunet-daemon-exit.c:3565
 #, fuzzy
 msgid "need a valid IPv4 or IPv6 address\n"
 msgstr "无效的进程优先级“%s”\n"
 
-#: src/dns/gnunet-service-dns.c:1093
+#: src/dns/gnunet-service-dns.c:1092
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, will not run DNS interceptor\n"
+msgid "`%s' must be installed SUID, will not run DNS interceptor\n"
 msgstr ""
 
+#: src/dv/gnunet-dv.c:175
+#, fuzzy
+msgid "Print information about DV state"
+msgstr "无法获取有关用户“%s”的信息:%s\n"
+
 #: src/exit/gnunet-daemon-exit.c:960
 msgid "# TCP packets sent via TUN"
 msgstr ""
@@ -2456,196 +2477,196 @@ msgstr ""
 msgid "# ICMP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1338
+#: src/exit/gnunet-daemon-exit.c:1340
 msgid "# UDP packets sent via TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1462 src/exit/gnunet-daemon-exit.c:1570
-#: src/exit/gnunet-daemon-exit.c:1617 src/exit/gnunet-daemon-exit.c:1699
-#: src/exit/gnunet-daemon-exit.c:1820 src/exit/gnunet-daemon-exit.c:1951
-#: src/exit/gnunet-daemon-exit.c:2205
+#: src/exit/gnunet-daemon-exit.c:1464 src/exit/gnunet-daemon-exit.c:1572
+#: src/exit/gnunet-daemon-exit.c:1619 src/exit/gnunet-daemon-exit.c:1701
+#: src/exit/gnunet-daemon-exit.c:1822 src/exit/gnunet-daemon-exit.c:1953
+#: src/exit/gnunet-daemon-exit.c:2207
 msgid "# Bytes received from CADET"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1465
+#: src/exit/gnunet-daemon-exit.c:1467
 msgid "# UDP IP-exit requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1573
+#: src/exit/gnunet-daemon-exit.c:1575
 msgid "# UDP service requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1613
+#: src/exit/gnunet-daemon-exit.c:1615
 msgid "# TCP service creation requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1702
+#: src/exit/gnunet-daemon-exit.c:1704
 msgid "# TCP IP-exit creation requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1786
+#: src/exit/gnunet-daemon-exit.c:1788
 msgid "# TCP DATA requests dropped (no session)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1823
+#: src/exit/gnunet-daemon-exit.c:1825
 msgid "# TCP data requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:1954
+#: src/exit/gnunet-daemon-exit.c:1956
 msgid "# ICMP IP-exit requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2020 src/exit/gnunet-daemon-exit.c:2277
-#: src/exit/gnunet-daemon-exit.c:2632 src/vpn/gnunet-service-vpn.c:818
-#: src/vpn/gnunet-service-vpn.c:992 src/vpn/gnunet-service-vpn.c:2088
+#: src/exit/gnunet-daemon-exit.c:2022 src/exit/gnunet-daemon-exit.c:2279
+#: src/exit/gnunet-daemon-exit.c:2634 src/vpn/gnunet-service-vpn.c:828
+#: src/vpn/gnunet-service-vpn.c:991 src/vpn/gnunet-service-vpn.c:2105
 msgid "# ICMPv4 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2079 src/exit/gnunet-daemon-exit.c:2336
-#: src/exit/gnunet-daemon-exit.c:2669 src/vpn/gnunet-service-vpn.c:885
-#: src/vpn/gnunet-service-vpn.c:1028 src/vpn/gnunet-service-vpn.c:2147
+#: src/exit/gnunet-daemon-exit.c:2081 src/exit/gnunet-daemon-exit.c:2338
+#: src/exit/gnunet-daemon-exit.c:2671 src/vpn/gnunet-service-vpn.c:887
+#: src/vpn/gnunet-service-vpn.c:1024 src/vpn/gnunet-service-vpn.c:2158
 msgid "# ICMPv6 packets dropped (type not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2208
+#: src/exit/gnunet-daemon-exit.c:2210
 msgid "# ICMP service requests received via cadet"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2262 src/vpn/gnunet-service-vpn.c:984
-#: src/vpn/gnunet-service-vpn.c:2077
+#: src/exit/gnunet-daemon-exit.c:2264 src/vpn/gnunet-service-vpn.c:985
+#: src/vpn/gnunet-service-vpn.c:2096
 msgid "# ICMPv4 packets dropped (impossible PT to v6)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2321 src/vpn/gnunet-service-vpn.c:871
-#: src/vpn/gnunet-service-vpn.c:2115 src/vpn/gnunet-service-vpn.c:2128
+#: src/exit/gnunet-daemon-exit.c:2323 src/vpn/gnunet-service-vpn.c:875
+#: src/vpn/gnunet-service-vpn.c:2130 src/vpn/gnunet-service-vpn.c:2141
 msgid "# ICMPv6 packets dropped (impossible PT to v4)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2400 src/exit/gnunet-daemon-exit.c:3066
+#: src/exit/gnunet-daemon-exit.c:2402 src/exit/gnunet-daemon-exit.c:3068
 #, fuzzy
 msgid "# Inbound CADET channels created"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/exit/gnunet-daemon-exit.c:2520
+#: src/exit/gnunet-daemon-exit.c:2522
 #, c-format
 msgid "Got duplicate service records for `%s:%u'\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2539
+#: src/exit/gnunet-daemon-exit.c:2541
 #, fuzzy
 msgid "# Messages transmitted via cadet channels"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/exit/gnunet-daemon-exit.c:2717
+#: src/exit/gnunet-daemon-exit.c:2719
 msgid "# ICMP packets dropped (not allowed)"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2725
+#: src/exit/gnunet-daemon-exit.c:2727
 msgid "ICMP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2799
+#: src/exit/gnunet-daemon-exit.c:2801
 msgid "UDP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2871
+#: src/exit/gnunet-daemon-exit.c:2873
 msgid "TCP Packet dropped, have no matching connection information\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2919
+#: src/exit/gnunet-daemon-exit.c:2921
 msgid "# Packets received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2933
+#: src/exit/gnunet-daemon-exit.c:2935
 msgid "# Bytes received from TUN"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2959
+#: src/exit/gnunet-daemon-exit.c:2961
 msgid "IPv4 packet options received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:2986
+#: src/exit/gnunet-daemon-exit.c:2988
 #, c-format
 msgid "IPv4 packet with unsupported next header %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3032
+#: src/exit/gnunet-daemon-exit.c:3034
 #, c-format
 msgid "IPv6 packet with unsupported next header %d received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3040
+#: src/exit/gnunet-daemon-exit.c:3042
 #, c-format
 msgid "Packet from unknown protocol %u received.  Ignored.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3243 src/exit/gnunet-daemon-exit.c:3253
+#: src/exit/gnunet-daemon-exit.c:3245 src/exit/gnunet-daemon-exit.c:3255
 #, fuzzy, c-format
 msgid "Option `%s' for domain `%s' is not formatted correctly!\n"
 msgstr "%s:选项“%s”有歧义\n"
 
-#: src/exit/gnunet-daemon-exit.c:3267 src/exit/gnunet-daemon-exit.c:3275
+#: src/exit/gnunet-daemon-exit.c:3269 src/exit/gnunet-daemon-exit.c:3277
 #, c-format
 msgid "`%s' is not a valid port number (for domain `%s')!"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3316
+#: src/exit/gnunet-daemon-exit.c:3318
 #, c-format
 msgid "No addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3330 src/exit/gnunet-daemon-exit.c:3343
+#: src/exit/gnunet-daemon-exit.c:3332 src/exit/gnunet-daemon-exit.c:3345
 #, c-format
 msgid "Service `%s' configured for IPv4, but IPv4 is disabled!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3355
+#: src/exit/gnunet-daemon-exit.c:3357
 #, c-format
 msgid "No IP addresses found for hostname `%s' of service `%s'!\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3499
+#: src/exit/gnunet-daemon-exit.c:3501
 msgid ""
 "This system does not support IPv4, will disable IPv4 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3507
+#: src/exit/gnunet-daemon-exit.c:3509
 msgid ""
 "This system does not support IPv6, will disable IPv6 functions despite them "
 "being enabled in the configuration\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3514
+#: src/exit/gnunet-daemon-exit.c:3516
 msgid ""
 "Cannot enable IPv4 exit but disable IPv4 on TUN interface, will use "
 "ENABLE_IPv4=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3520
+#: src/exit/gnunet-daemon-exit.c:3522
 msgid ""
 "Cannot enable IPv6 exit but disable IPv6 on TUN interface, will use "
 "ENABLE_IPv6=YES\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3688
+#: src/exit/gnunet-daemon-exit.c:3690
 msgid "Must be a number"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3803
+#: src/exit/gnunet-daemon-exit.c:3805
 #, c-format
-msgid "`%s' is not SUID or the path is invalid, EXIT will not work\n"
+msgid "`%s' must be installed SUID, EXIT will not work\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3815 src/pt/gnunet-daemon-pt.c:1202
+#: src/exit/gnunet-daemon-exit.c:3817 src/pt/gnunet-daemon-pt.c:1204
 msgid "No useful service enabled.  Exiting.\n"
 msgstr ""
 
-#: src/exit/gnunet-daemon-exit.c:3967
+#: src/exit/gnunet-daemon-exit.c:3966
 msgid "Daemon to run to provide an IP exit node for the VPN"
 msgstr ""
 
@@ -2879,63 +2900,58 @@ msgstr ""
 msgid "Publishing failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:725
-#, fuzzy, c-format
-msgid "Can not index file `%s': %s.\n"
-msgstr "找不到接口“%s”的一个 IP 地址。\n"
-
-#: src/fs/fs_publish.c:782 src/fs/fs_publish.c:827 src/fs/fs_publish.c:848
-#: src/fs/fs_publish.c:878 src/fs/fs_publish.c:1144
+#: src/fs/fs_publish.c:724 src/fs/fs_publish.c:778 src/fs/fs_publish.c:823
+#: src/fs/fs_publish.c:844 src/fs/fs_publish.c:874 src/fs/fs_publish.c:1140
 #, c-format
 msgid "Can not index file `%s': %s.  Will try to insert instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:784
+#: src/fs/fs_publish.c:780
 #, fuzzy
 msgid "error on index-start request to `fs' service"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/fs/fs_publish.c:829
+#: src/fs/fs_publish.c:825
 msgid "failed to compute hash"
 msgstr ""
 
-#: src/fs/fs_publish.c:849
+#: src/fs/fs_publish.c:845
 msgid "filename too long"
 msgstr ""
 
-#: src/fs/fs_publish.c:880
+#: src/fs/fs_publish.c:876
 msgid "could not connect to `fs' service"
 msgstr ""
 
-#: src/fs/fs_publish.c:906
+#: src/fs/fs_publish.c:902
 #, fuzzy, c-format
 msgid "Failed to get file identifiers for `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/fs/fs_publish.c:995 src/fs/fs_publish.c:1031
+#: src/fs/fs_publish.c:991 src/fs/fs_publish.c:1027
 msgid "Can not create LOC URI. Will continue with CHK instead.\n"
 msgstr ""
 
-#: src/fs/fs_publish.c:1098
+#: src/fs/fs_publish.c:1094
 #, c-format
 msgid "Recursive upload failed at `%s': %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1106
+#: src/fs/fs_publish.c:1102
 #, c-format
 msgid "Recursive upload failed: %s"
 msgstr ""
 
-#: src/fs/fs_publish.c:1146
+#: src/fs/fs_publish.c:1142
 msgid "needs to be an actual file"
 msgstr ""
 
-#: src/fs/fs_publish.c:1385
+#: src/fs/fs_publish.c:1381
 #, fuzzy, c-format
 msgid "Datastore failure: %s"
 msgstr "“%s”已连接到“%s”。\n"
 
-#: src/fs/fs_publish.c:1476
+#: src/fs/fs_publish.c:1472
 #, c-format
 msgid "Reserving space for %u entries and %llu bytes for publication\n"
 msgstr ""
@@ -3006,149 +3022,149 @@ msgstr "打开日志文件“%s”失败:%s\n"
 msgid "Failed to compute hash of file."
 msgstr ""
 
-#: src/fs/fs_uri.c:236
+#: src/fs/fs_uri.c:234
 #, no-c-format
 msgid "Malformed KSK URI (`%' must be followed by HEX number)"
 msgstr ""
 
-#: src/fs/fs_uri.c:295
+#: src/fs/fs_uri.c:293
 msgid "Malformed KSK URI (must not begin or end with `+')"
 msgstr ""
 
-#: src/fs/fs_uri.c:313
+#: src/fs/fs_uri.c:311
 msgid "Malformed KSK URI (`++' not allowed)"
 msgstr ""
 
-#: src/fs/fs_uri.c:320
+#: src/fs/fs_uri.c:318
 msgid "Malformed KSK URI (quotes not balanced)"
 msgstr ""
 
-#: src/fs/fs_uri.c:390
+#: src/fs/fs_uri.c:388
 msgid "Malformed SKS URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:431
+#: src/fs/fs_uri.c:429
 msgid "Malformed CHK URI (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:446
+#: src/fs/fs_uri.c:444
 msgid "Malformed CHK URI (failed to decode CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:525
+#: src/fs/fs_uri.c:523
 msgid "LOC URI malformed (wrong syntax)"
 msgstr ""
 
-#: src/fs/fs_uri.c:540
+#: src/fs/fs_uri.c:538
 msgid "LOC URI malformed (no CHK)"
 msgstr ""
 
-#: src/fs/fs_uri.c:550
+#: src/fs/fs_uri.c:548
 msgid "LOC URI malformed (missing LOC)"
 msgstr ""
 
-#: src/fs/fs_uri.c:558
+#: src/fs/fs_uri.c:556
 msgid "LOC URI malformed (wrong syntax for public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:566
+#: src/fs/fs_uri.c:564
 msgid "LOC URI malformed (could not decode public key)"
 msgstr ""
 
-#: src/fs/fs_uri.c:572
+#: src/fs/fs_uri.c:570
 msgid "LOC URI malformed (could not find signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:578
+#: src/fs/fs_uri.c:576
 msgid "LOC URI malformed (wrong syntax for signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:587
+#: src/fs/fs_uri.c:585
 msgid "LOC URI malformed (could not decode signature)"
 msgstr ""
 
-#: src/fs/fs_uri.c:593
+#: src/fs/fs_uri.c:591
 msgid "LOC URI malformed (wrong syntax for expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:599
+#: src/fs/fs_uri.c:597
 msgid "LOC URI malformed (could not parse expiration time)"
 msgstr ""
 
-#: src/fs/fs_uri.c:611
+#: src/fs/fs_uri.c:609
 msgid "LOC URI malformed (signature failed validation)"
 msgstr ""
 
-#: src/fs/fs_uri.c:645
+#: src/fs/fs_uri.c:643
 #, fuzzy
 msgid "invalid argument"
 msgstr "“%s”的参数无效。\n"
 
-#: src/fs/fs_uri.c:657
+#: src/fs/fs_uri.c:655
 msgid "Unrecognized URI type"
 msgstr ""
 
-#: src/fs/fs_uri.c:1061 src/fs/fs_uri.c:1088
+#: src/fs/fs_uri.c:1059 src/fs/fs_uri.c:1086
 msgid "No keywords specified!\n"
 msgstr ""
 
-#: src/fs/fs_uri.c:1094
+#: src/fs/fs_uri.c:1092
 msgid "Number of double-quotes not balanced!\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:231
+#: src/fs/gnunet-auto-share.c:232
 #, fuzzy, c-format
 msgid "Failed to load state: %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/fs/gnunet-auto-share.c:279 src/fs/gnunet-auto-share.c:288
-#: src/fs/gnunet-auto-share.c:296
+#: src/fs/gnunet-auto-share.c:285 src/fs/gnunet-auto-share.c:295
+#: src/fs/gnunet-auto-share.c:305
 #, fuzzy, c-format
 msgid "Failed to save state to file %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/fs/gnunet-auto-share.c:393
+#: src/fs/gnunet-auto-share.c:407
 #, c-format
 msgid "Publication of `%s' done\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:472
+#: src/fs/gnunet-auto-share.c:494
 #, c-format
 msgid "Publishing `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:484
+#: src/fs/gnunet-auto-share.c:504
 #, fuzzy, c-format
 msgid "Failed to run `%s'\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/fs/gnunet-auto-share.c:654
+#: src/fs/gnunet-auto-share.c:713
 #, c-format
 msgid ""
 "You must specify one and only one directory name for automatic publication.\n"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:705 src/fs/gnunet-publish.c:903
+#: src/fs/gnunet-auto-share.c:767 src/fs/gnunet-publish.c:903
 msgid "set the desired LEVEL of sender-anonymity"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:712
+#: src/fs/gnunet-auto-share.c:772 src/fs/gnunet-publish.c:907
 msgid "disable adding the creation time to the metadata of the uploaded file"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:718 src/fs/gnunet-publish.c:907
+#: src/fs/gnunet-auto-share.c:777 src/fs/gnunet-publish.c:912
 msgid "do not use libextractor to add keywords or metadata"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:725 src/fs/gnunet-publish.c:944
+#: src/fs/gnunet-auto-share.c:783 src/fs/gnunet-publish.c:944
 msgid "specify the priority of the content"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:732 src/fs/gnunet-publish.c:955
+#: src/fs/gnunet-auto-share.c:789 src/fs/gnunet-publish.c:955
 msgid "set the desired replication LEVEL"
 msgstr ""
 
-#: src/fs/gnunet-auto-share.c:754
+#: src/fs/gnunet-auto-share.c:813
 msgid "Automatically publish files from a directory on GNUnet"
 msgstr ""
 
@@ -3219,7 +3235,7 @@ msgid "Downloading `%s' done (%s/s).\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:216 src/fs/gnunet-publish.c:295
-#: src/fs/gnunet-search.c:215 src/fs/gnunet-unindex.c:107
+#: src/fs/gnunet-search.c:212 src/fs/gnunet-unindex.c:107
 #, c-format
 msgid "Unexpected status: %d\n"
 msgstr ""
@@ -3243,12 +3259,12 @@ msgid "Target filename must be specified.\n"
 msgstr ""
 
 #: src/fs/gnunet-download.c:291 src/fs/gnunet-publish.c:872
-#: src/fs/gnunet-search.c:273 src/fs/gnunet-unindex.c:139
+#: src/fs/gnunet-search.c:270 src/fs/gnunet-unindex.c:139
 #, fuzzy, c-format
 msgid "Could not initialize `%s' subsystem.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:315
+#: src/fs/gnunet-download.c:339 src/fs/gnunet-search.c:312
 msgid "set the desired LEVEL of receiver-anonymity"
 msgstr ""
 
@@ -3256,7 +3272,7 @@ msgstr ""
 msgid "delete incomplete downloads (when aborted with CTRL-C)"
 msgstr ""
 
-#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:319
+#: src/fs/gnunet-download.c:349 src/fs/gnunet-search.c:316
 msgid "only search the local peer (no P2P network search)"
 msgstr ""
 
@@ -3282,14 +3298,6 @@ msgid ""
 "chk/...)"
 msgstr ""
 
-#: src/fs/gnunet-fs.c:119
-msgid "print a list of all indexed files"
-msgstr ""
-
-#: src/fs/gnunet-fs.c:130
-msgid "Special file-sharing operations"
-msgstr ""
-
 #: src/fs/gnunet-fs-profiler.c:211
 msgid "run the experiment with COUNT peers"
 msgstr ""
@@ -3306,6 +3314,14 @@ msgstr ""
 msgid "run a testbed to measure file-sharing performance"
 msgstr ""
 
+#: src/fs/gnunet-fs.c:119
+msgid "print a list of all indexed files"
+msgstr ""
+
+#: src/fs/gnunet-fs.c:130
+msgid "Special file-sharing operations"
+msgstr ""
+
 #: src/fs/gnunet-publish.c:219 src/fs/gnunet-publish.c:231
 #, c-format
 msgid "Publishing `%s' at %llu/%llu (%s remaining)\n"
@@ -3392,7 +3408,7 @@ msgstr ""
 
 #: src/fs/gnunet-publish.c:687
 #, fuzzy
-msgid "Error scanning directory.\n"
+msgid "Internal error scanning directory.\n"
 msgstr "未知错误。\n"
 
 #: src/fs/gnunet-publish.c:715
@@ -3432,15 +3448,11 @@ msgid "Option `%s' is required when using option `%s'.\n"
 msgstr ""
 
 #: src/fs/gnunet-publish.c:851 src/fs/gnunet-publish.c:859
-#: src/transport/gnunet-transport.c:1226 src/transport/gnunet-transport.c:1251
+#: src/transport/gnunet-transport.c:1282 src/transport/gnunet-transport.c:1309
 #, c-format
 msgid "Option `%s' makes no sense without option `%s'.\n"
 msgstr ""
 
-#: src/fs/gnunet-publish.c:911
-msgid "enable adding the creation time to the metadata of the uploaded file"
-msgstr ""
-
 #: src/fs/gnunet-publish.c:916
 msgid ""
 "print list of extracted keywords that would be used, but do not perform "
@@ -3499,32 +3511,32 @@ msgstr ""
 msgid "Failed to write directory with search results to `%s'\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:207
+#: src/fs/gnunet-search.c:204
 #, fuzzy, c-format
 msgid "Error searching: %s.\n"
 msgstr "创建用户出错"
 
-#: src/fs/gnunet-search.c:263
+#: src/fs/gnunet-search.c:260
 msgid "Could not create keyword URI from arguments.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:287
+#: src/fs/gnunet-search.c:284
 msgid "Could not start searching.\n"
 msgstr ""
 
-#: src/fs/gnunet-search.c:324
+#: src/fs/gnunet-search.c:321
 msgid "write search results to file starting with PREFIX"
 msgstr ""
 
-#: src/fs/gnunet-search.c:329
+#: src/fs/gnunet-search.c:326
 msgid "automatically terminate search after DELAY"
 msgstr ""
 
-#: src/fs/gnunet-search.c:335
+#: src/fs/gnunet-search.c:332
 msgid "automatically terminate search after VALUE results are found"
 msgstr ""
 
-#: src/fs/gnunet-search.c:351
+#: src/fs/gnunet-search.c:348
 msgid "Search GNUnet for files that were published on GNUnet"
 msgstr ""
 
@@ -3562,17 +3574,17 @@ msgstr ""
 msgid "FS service is lacking HOSTKEY configuration setting.  Exiting.\n"
 msgstr "立即保存配置?"
 
-#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:353
-#: src/topology/gnunet-daemon-topology.c:1100
+#: src/fs/gnunet-service-fs.c:1305 src/hostlist/gnunet-daemon-hostlist.c:355
+#: src/topology/gnunet-daemon-topology.c:1202
 #, fuzzy, c-format
 msgid "Failed to connect to `%s' service.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/fs/gnunet-service-fs_cadet_client.c:355
+#: src/fs/gnunet-service-fs_cadet_client.c:370
 msgid "# replies received via cadet"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_cadet_client.c:371
+#: src/fs/gnunet-service-fs_cadet_client.c:384
 msgid "# replies received via cadet dropped"
 msgstr ""
 
@@ -3746,106 +3758,106 @@ msgstr ""
 msgid "# query plan entries"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:328
+#: src/fs/gnunet-service-fs_pr.c:330
 msgid "# Pending requests created"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:420 src/fs/gnunet-service-fs_pr.c:654
+#: src/fs/gnunet-service-fs_pr.c:430 src/fs/gnunet-service-fs_pr.c:677
 msgid "# Pending requests active"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:830
+#: src/fs/gnunet-service-fs_pr.c:858
 msgid "# replies received and matched"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:876
+#: src/fs/gnunet-service-fs_pr.c:894
 msgid "# duplicate replies discarded (bloomfilter)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:884
+#: src/fs/gnunet-service-fs_pr.c:903
 msgid "# irrelevant replies discarded"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:899
+#: src/fs/gnunet-service-fs_pr.c:918
 #, c-format
 msgid "Unsupported block type %u\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:912
+#: src/fs/gnunet-service-fs_pr.c:935
 msgid "# results found locally"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1047
+#: src/fs/gnunet-service-fs_pr.c:1065
 msgid "# Datastore `PUT' failures"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1076
+#: src/fs/gnunet-service-fs_pr.c:1093
 msgid "# storage requests dropped due to high load"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1115
+#: src/fs/gnunet-service-fs_pr.c:1131
 msgid "# Replies received from DHT"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1256
+#: src/fs/gnunet-service-fs_pr.c:1262
 msgid "# Replies received from CADET"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1310
+#: src/fs/gnunet-service-fs_pr.c:1314
 #, c-format
 msgid "Datastore lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1331
+#: src/fs/gnunet-service-fs_pr.c:1335
 #, c-format
 msgid "On-demand lookup already took %s!\n"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1394
+#: src/fs/gnunet-service-fs_pr.c:1395
 msgid "# requested DBLOCK or IBLOCK not found"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1456
+#: src/fs/gnunet-service-fs_pr.c:1454
 msgid "# Datastore lookups concluded (error queueing)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1511
+#: src/fs/gnunet-service-fs_pr.c:1509
 msgid "# Datastore lookups concluded (no results)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1526
+#: src/fs/gnunet-service-fs_pr.c:1524
 msgid "# Datastore lookups concluded (seen all)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1549
+#: src/fs/gnunet-service-fs_pr.c:1548
 msgid "# Datastore lookups aborted (more than MAX_RESULTS)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1566
+#: src/fs/gnunet-service-fs_pr.c:1562
 msgid "# on-demand blocks matched requests"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1587
+#: src/fs/gnunet-service-fs_pr.c:1583
 msgid "# on-demand lookups performed successfully"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1593
+#: src/fs/gnunet-service-fs_pr.c:1588
 msgid "# on-demand lookups failed"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1634
+#: src/fs/gnunet-service-fs_pr.c:1626
 msgid "# Datastore lookups concluded (found last result)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1647
+#: src/fs/gnunet-service-fs_pr.c:1639
 msgid "# Datastore lookups concluded (load too high)"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1698
+#: src/fs/gnunet-service-fs_pr.c:1693
 msgid "# Datastore lookups initiated"
 msgstr ""
 
-#: src/fs/gnunet-service-fs_pr.c:1748
+#: src/fs/gnunet-service-fs_pr.c:1749
 msgid "# GAP PUT messages received"
 msgstr ""
 
@@ -3880,7 +3892,7 @@ msgstr ""
 msgid "Unindex a file that was previously indexed with gnunet-publish."
 msgstr ""
 
-#: src/gns/gns_tld_api.c:293
+#: src/gns/gns_tld_api.c:348
 msgid "Expected a base32-encoded public zone key\n"
 msgstr ""
 
@@ -3912,39 +3924,39 @@ msgstr ""
 msgid "GNUnet HTTP server to create business cards"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:214
+#: src/gns/gnunet-dns2gns.c:203
 #, fuzzy
 msgid "Failed to pack DNS response into UDP packet!\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/gns/gnunet-dns2gns.c:416
+#: src/gns/gnunet-dns2gns.c:405
 #, c-format
 msgid "Cannot parse DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:432
+#: src/gns/gnunet-dns2gns.c:421
 #, c-format
 msgid "Received malformed DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:440
+#: src/gns/gnunet-dns2gns.c:429
 #, c-format
 msgid "Received unsupported DNS request from %s\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:600
+#: src/gns/gnunet-dns2gns.c:588
 msgid "No DNS server specified!\n"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:748
+#: src/gns/gnunet-dns2gns.c:688
 msgid "IP of recursive DNS resolver to use (required)"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:753
+#: src/gns/gnunet-dns2gns.c:693
 msgid "UDP port to listen on for inbound DNS requests; default: 2853"
 msgstr ""
 
-#: src/gns/gnunet-dns2gns.c:770
+#: src/gns/gnunet-dns2gns.c:710
 msgid "GNUnet DNS-to-GNS proxy (a DNS server)"
 msgstr ""
 
@@ -3960,37 +3972,6 @@ msgstr ""
 msgid "look for GNS2DNS records instead of ANY"
 msgstr ""
 
-#: src/gns/gnunet-gns.c:206
-#, fuzzy, c-format
-msgid "`%s' is not a valid domain name\n"
-msgstr "“%s”不可用。\n"
-
-#: src/gns/gnunet-gns.c:225
-#, c-format
-msgid "Invalid typename specified, assuming `ANY'\n"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:260
-msgid "Lookup a record for the given name"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:266
-msgid "Specify the type of the record to lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:272
-msgid "Specify a timeout for the lookup"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:276
-msgid "No unneeded output"
-msgstr ""
-
-#: src/gns/gnunet-gns.c:288
-#, fuzzy
-msgid "GNUnet GNS resolver tool"
-msgstr "GNUnet 错误日志"
-
 #: src/gns/gnunet-gns-helper-service-w32.c:602
 msgid "Not ready to process requests, lacking ego data\n"
 msgstr ""
@@ -4010,122 +3991,144 @@ msgstr "初始化“%s”服务失败。\n"
 msgid "This program will import some GNS authorities into your GNS namestore."
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:115
-#: src/hostlist/gnunet-daemon-hostlist_client.c:532
-#: src/hostlist/gnunet-daemon-hostlist_client.c:750
-#: src/hostlist/gnunet-daemon-hostlist_client.c:756
-#: src/hostlist/gnunet-daemon-hostlist_client.c:808
-#: src/hostlist/gnunet-daemon-hostlist_client.c:817
-#: src/hostlist/gnunet-daemon-hostlist_client.c:928
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1023
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1028
-#: src/transport/plugin_transport_http_client.c:595
-#: src/transport/plugin_transport_http_client.c:613
+#: src/gns/gnunet-gns-proxy.c:118
+#: src/hostlist/gnunet-daemon-hostlist_client.c:535
+#: src/hostlist/gnunet-daemon-hostlist_client.c:753
+#: src/hostlist/gnunet-daemon-hostlist_client.c:759
+#: src/hostlist/gnunet-daemon-hostlist_client.c:811
+#: src/hostlist/gnunet-daemon-hostlist_client.c:820
+#: src/hostlist/gnunet-daemon-hostlist_client.c:931
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1026
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1031
+#: src/transport/plugin_transport_http_client.c:598
+#: src/transport/plugin_transport_http_client.c:616
 #, c-format
 msgid "%s failed at %s:%d: `%s'\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:986
+#: src/gns/gnunet-gns-proxy.c:980
 #, fuzzy, c-format
 msgid "Unsupported CURL TLS backend %d\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/gns/gnunet-gns-proxy.c:1011
+#: src/gns/gnunet-gns-proxy.c:1005
 #, fuzzy, c-format
 msgid "Failed to fetch CN from cert: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1032
+#: src/gns/gnunet-gns-proxy.c:1026
 #, fuzzy, c-format
 msgid "Failed to initialize DANE: %s\n"
 msgstr "无法初始化 SQLite:%s。\n"
 
-#: src/gns/gnunet-gns-proxy.c:1047
+#: src/gns/gnunet-gns-proxy.c:1041
 #, fuzzy, c-format
 msgid "Failed to parse DANE record: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/gns/gnunet-gns-proxy.c:1062
+#: src/gns/gnunet-gns-proxy.c:1056
 #, fuzzy, c-format
 msgid "Failed to verify TLS connection using DANE: %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gns/gnunet-gns-proxy.c:1072
+#: src/gns/gnunet-gns-proxy.c:1066
 #, c-format
 msgid "Failed DANE verification failed with GnuTLS verify status code: %u\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1096
+#: src/gns/gnunet-gns-proxy.c:1090
 #, c-format
 msgid "TLS certificate subject name (%s) does not match `%s': %d\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:1227
+#: src/gns/gnunet-gns-proxy.c:1221
 #, c-format
 msgid "Cookie domain `%s' supplied by server is invalid\n"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:2128
+#: src/gns/gnunet-gns-proxy.c:2121
 #, fuzzy, c-format
 msgid "Unsupported HTTP method `%s'\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/gns/gnunet-gns-proxy.c:2649
+#: src/gns/gnunet-gns-proxy.c:2642
 #, fuzzy, c-format
 msgid "Unable to import private key from file `%s'\n"
 msgstr "无法创建用户账户:"
 
-#: src/gns/gnunet-gns-proxy.c:2681
+#: src/gns/gnunet-gns-proxy.c:2674
 #, fuzzy, c-format
 msgid "Unable to import certificate from `%s'\n"
 msgstr "无法保存配置文件“%s”:"
 
-#: src/gns/gnunet-gns-proxy.c:2882
+#: src/gns/gnunet-gns-proxy.c:2875
 #, fuzzy, c-format
 msgid "Failed to start HTTPS server for `%s'\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/gns/gnunet-gns-proxy.c:2904 src/rest/gnunet-rest-server.c:704
+#: src/gns/gnunet-gns-proxy.c:2897 src/rest/gnunet-rest-server.c:658
 #, fuzzy
 msgid "Failed to pass client to MHD\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/gns/gnunet-gns-proxy.c:3240
+#: src/gns/gnunet-gns-proxy.c:3233
 #, fuzzy, c-format
 msgid "Unsupported socks version %d\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/gns/gnunet-gns-proxy.c:3269
+#: src/gns/gnunet-gns-proxy.c:3262
 #, fuzzy, c-format
 msgid "Unsupported socks command %d\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/gns/gnunet-gns-proxy.c:3352
+#: src/gns/gnunet-gns-proxy.c:3345
 #, fuzzy, c-format
 msgid "Unsupported socks address type %d\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/gns/gnunet-gns-proxy.c:3690
+#: src/gns/gnunet-gns-proxy.c:3635
 #, fuzzy, c-format
 msgid "Failed to load X.509 key and certificate from `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gns/gnunet-gns-proxy.c:3818
+#: src/gns/gnunet-gns-proxy.c:3763
 msgid "listen on specified port (default: 7777)"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3823
+#: src/gns/gnunet-gns-proxy.c:3768
 msgid "pem file to use as CA"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3827
+#: src/gns/gnunet-gns-proxy.c:3772
 msgid "disable use of IPv6"
 msgstr ""
 
-#: src/gns/gnunet-gns-proxy.c:3853
+#: src/gns/gnunet-gns-proxy.c:3798
 msgid "GNUnet GNS proxy"
 msgstr ""
 
+#: src/gns/gnunet-gns.c:199
+#, c-format
+msgid "Invalid typename specified, assuming `ANY'\n"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:233
+msgid "Lookup a record for the given name"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:238
+msgid "Specify the type of the record to lookup"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:242
+msgid "No unneeded output"
+msgstr ""
+
+#: src/gns/gnunet-gns.c:258
+#, fuzzy
+msgid "GNUnet GNS resolver tool"
+msgstr "GNUnet 错误日志"
+
 #: src/gns/gnunet-service-gns.c:506
 #, fuzzy
 msgid "Properly base32-encoded public key required"
@@ -4137,8 +4140,8 @@ msgid "Failed to connect to the namecache!\n"
 msgstr "初始化“%s”服务失败。\n"
 
 #: src/gns/gnunet-service-gns.c:561
-#: src/zonemaster/gnunet-service-zonemaster.c:875
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:440
+#: src/zonemaster/gnunet-service-zonemaster.c:875
 #, fuzzy
 msgid "Could not connect to DHT!\n"
 msgstr "无法连接到 %s:%u:%s\n"
@@ -4231,81 +4234,72 @@ msgstr "解析配置文件“%s”失败\n"
 msgid "Unable to parse BOX record string `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gns/plugin_rest_gns.c:442
-msgid "Gns REST API initialized\n"
-msgstr ""
-
-#: src/gnsrecord/plugin_gnsrecord_dns.c:355
+#: src/gnsrecord/plugin_gnsrecord_dns.c:359
 #, fuzzy, c-format
 msgid "Unable to parse IPv4 address `%s'\n"
 msgstr "无效的进程优先级“%s”\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:372
+#: src/gnsrecord/plugin_gnsrecord_dns.c:380
 #, fuzzy, c-format
 msgid "Failed to serialize NS record with value `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:392
+#: src/gnsrecord/plugin_gnsrecord_dns.c:402
 #, fuzzy, c-format
 msgid "Failed to serialize CNAME record with value `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:465
+#: src/gnsrecord/plugin_gnsrecord_dns.c:487
 #, fuzzy, c-format
 msgid "Failed to serialize CERT record with %u bytes\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:500
+#: src/gnsrecord/plugin_gnsrecord_dns.c:523
 #, fuzzy, c-format
 msgid "Unable to parse SOA record `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:517
+#: src/gnsrecord/plugin_gnsrecord_dns.c:542
 #, fuzzy, c-format
 msgid "Failed to serialize SOA record with mname `%s' and rname `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:536
+#: src/gnsrecord/plugin_gnsrecord_dns.c:565
 #, fuzzy, c-format
 msgid "Failed to serialize PTR record with value `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:555
+#: src/gnsrecord/plugin_gnsrecord_dns.c:588
 #, fuzzy, c-format
 msgid "Unable to parse MX record `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:567
+#: src/gnsrecord/plugin_gnsrecord_dns.c:603
 #, fuzzy, c-format
 msgid "Failed to serialize MX record with hostname `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:588
+#: src/gnsrecord/plugin_gnsrecord_dns.c:630
 #, fuzzy, c-format
 msgid "Unable to parse SRV record `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:601
+#: src/gnsrecord/plugin_gnsrecord_dns.c:646
 #, fuzzy, c-format
 msgid "Failed to serialize SRV record with target `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:618
+#: src/gnsrecord/plugin_gnsrecord_dns.c:663
 #, fuzzy, c-format
 msgid "Unable to parse IPv6 address `%s'\n"
 msgstr "无效的进程优先级“%s”\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:636
-#: src/gnsrecord/plugin_gnsrecord_dns.c:650
+#: src/gnsrecord/plugin_gnsrecord_dns.c:687
+#: src/gnsrecord/plugin_gnsrecord_dns.c:703
 #, fuzzy, c-format
 msgid "Unable to parse TLSA record string `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/gnsrecord/plugin_gnsrecord_dns.c:668
-#, fuzzy, c-format
-msgid "Unable to parse CAA record string `%s'\n"
-msgstr "解析配置文件“%s”失败\n"
-
 #: src/hello/gnunet-hello.c:126
 msgid "Call with name of HELLO file to modify.\n"
 msgstr ""
@@ -4345,257 +4339,257 @@ msgstr "创建用户出错"
 msgid "Modified %u addresses, wrote %u bytes\n"
 msgstr ""
 
-#: src/hello/hello.c:1109
+#: src/hello/hello.c:1110
 #, fuzzy
 msgid "Failed to parse HELLO message: missing expiration time\n"
 msgstr "保存配置失败。"
 
-#: src/hello/hello.c:1118
+#: src/hello/hello.c:1119
 #, fuzzy
 msgid "Failed to parse HELLO message: invalid expiration time\n"
 msgstr "保存配置失败。"
 
-#: src/hello/hello.c:1128
+#: src/hello/hello.c:1129
 #, fuzzy
 msgid "Failed to parse HELLO message: malformed\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/hello/hello.c:1139
+#: src/hello/hello.c:1140
 msgid "Failed to parse HELLO message: missing transport plugin\n"
 msgstr ""
 
-#: src/hello/hello.c:1157
+#: src/hello/hello.c:1158
 #, c-format
 msgid "Plugin `%s' not found, skipping address\n"
 msgstr ""
 
-#: src/hello/hello.c:1165
+#: src/hello/hello.c:1166
 #, c-format
 msgid "Plugin `%s' does not support URIs yet\n"
 msgstr ""
 
-#: src/hello/hello.c:1180
+#: src/hello/hello.c:1181
 #, fuzzy, c-format
 msgid "Failed to parse `%s' as an address for plugin `%s'\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/hostlist/gnunet-daemon-hostlist.c:314
+#: src/hostlist/gnunet-daemon-hostlist.c:316
 msgid ""
 "None of the functions for the hostlist daemon were enabled.  I have no "
 "reason to run!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:374
+#: src/hostlist/gnunet-daemon-hostlist.c:376
 msgid "advertise our hostlist to other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:379
+#: src/hostlist/gnunet-daemon-hostlist.c:381
 msgid ""
 "bootstrap using hostlists (it is highly recommended that you always use this "
 "option)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:383
+#: src/hostlist/gnunet-daemon-hostlist.c:385
 msgid "enable learning about hostlist servers from other peers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:388
+#: src/hostlist/gnunet-daemon-hostlist.c:390
 msgid "provide a hostlist server"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist.c:404
+#: src/hostlist/gnunet-daemon-hostlist.c:406
 msgid "GNUnet hostlist server and client"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:346
+#: src/hostlist/gnunet-daemon-hostlist_client.c:349
 msgid "# bytes downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:367
-#: src/hostlist/gnunet-daemon-hostlist_client.c:400
+#: src/hostlist/gnunet-daemon-hostlist_client.c:370
+#: src/hostlist/gnunet-daemon-hostlist_client.c:403
 msgid "# invalid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:370
-#: src/hostlist/gnunet-daemon-hostlist_client.c:403
+#: src/hostlist/gnunet-daemon-hostlist_client.c:373
+#: src/hostlist/gnunet-daemon-hostlist_client.c:406
 #, c-format
 msgid "Invalid `%s' message received from hostlist at `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:388
+#: src/hostlist/gnunet-daemon-hostlist_client.c:391
 msgid "# valid HELLOs downloaded from hostlist servers"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:658
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
+#: src/hostlist/gnunet-daemon-hostlist_client.c:661
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1407
 msgid "# advertised hostlist URIs"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:688
+#: src/hostlist/gnunet-daemon-hostlist_client.c:691
 #, c-format
 msgid "# advertised URI `%s' downloaded"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:731
+#: src/hostlist/gnunet-daemon-hostlist_client.c:734
 #, c-format
 msgid ""
 "Advertised hostlist with URI `%s' could not be downloaded. Advertised URI "
 "gets dismissed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:859
+#: src/hostlist/gnunet-daemon-hostlist_client.c:862
 #, c-format
 msgid "Timeout trying to download hostlist from `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:873
+#: src/hostlist/gnunet-daemon-hostlist_client.c:876
 #, c-format
 msgid "Download limit of %u bytes exceeded, stopping download\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:893
+#: src/hostlist/gnunet-daemon-hostlist_client.c:896
 #, fuzzy, c-format
 msgid "Download of hostlist from `%s' failed: `%s'\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:899
+#: src/hostlist/gnunet-daemon-hostlist_client.c:902
 #, c-format
 msgid "Download of hostlist `%s' completed.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:907
+#: src/hostlist/gnunet-daemon-hostlist_client.c:910
 #, c-format
 msgid "Adding successfully tested hostlist `%s' datastore.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:960
+#: src/hostlist/gnunet-daemon-hostlist_client.c:963
 #, c-format
 msgid "Bootstrapping using hostlist at `%s'.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:968
+#: src/hostlist/gnunet-daemon-hostlist_client.c:971
 msgid "# hostlist downloads initiated"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1095
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1662
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1098
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1665
 msgid "# milliseconds between hostlist downloads"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1104
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1107
 #, c-format
 msgid "Have %u/%u connections.  Will consider downloading hostlist in %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1163
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1184
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1166
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1187
 msgid "# active connections"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1350
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1353
 #, c-format
 msgid "Loading saved hostlist entries from file `%s' \n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1355
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1358
 #, c-format
 msgid "Hostlist file `%s' does not exist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1364
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1367
 #, fuzzy, c-format
 msgid "Could not open file `%s' for reading to load hostlists: %s\n"
 msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1398
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
 #, c-format
 msgid "%u hostlist URIs loaded from file\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1401
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1404
 msgid "# hostlist URIs read from file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1447
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1450
 #, fuzzy, c-format
 msgid "Could not open file `%s' for writing to save hostlists: %s\n"
 msgstr "无法解析“%s”来确定已方的 IP 地址:%s\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1454
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1457
 #, c-format
 msgid "Writing %u hostlist URIs to `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1478
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1495
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1481
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1498
 #, c-format
 msgid "Error writing hostlist URIs to file `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1490
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1493
 msgid "# hostlist URIs written to file"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1592
-#: src/transport/plugin_transport_http_client.c:2271
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1595
+#: src/transport/plugin_transport_http_client.c:2274
 #, c-format
 msgid "Invalid proxy type: `%s', disabling proxy! Check configuration!\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1621
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1624
 msgid "Learning is enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1635
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1638
 msgid "Learning is not enabled on this peer\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_client.c:1648
+#: src/hostlist/gnunet-daemon-hostlist_client.c:1651
 #, c-format
 msgid ""
 "Since learning is not enabled on this peer, hostlist file `%s' was removed\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:172
+#: src/hostlist/gnunet-daemon-hostlist_server.c:176
 msgid "bytes in hostlist"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:198
+#: src/hostlist/gnunet-daemon-hostlist_server.c:201
 msgid "expired addresses encountered"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:235
-#: src/hostlist/gnunet-daemon-hostlist_server.c:526
+#: src/hostlist/gnunet-daemon-hostlist_server.c:237
+#: src/hostlist/gnunet-daemon-hostlist_server.c:531
 #: src/peerinfo-tool/gnunet-peerinfo.c:385
 #: src/peerinfo-tool/gnunet-peerinfo.c:534
-#: src/topology/gnunet-daemon-topology.c:801
+#: src/topology/gnunet-daemon-topology.c:862
 #, c-format
 msgid "Error in communication with PEERINFO service: %s\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:256
+#: src/hostlist/gnunet-daemon-hostlist_server.c:261
 msgid "HELLOs without addresses encountered (ignored)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:274
+#: src/hostlist/gnunet-daemon-hostlist_server.c:278
 msgid "bytes not included in hostlist (size limit)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:376
+#: src/hostlist/gnunet-daemon-hostlist_server.c:382
 #, c-format
 msgid "Refusing `%s' request to hostlist server\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:380
+#: src/hostlist/gnunet-daemon-hostlist_server.c:385
 msgid "hostlist requests refused (not HTTP GET)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:393
+#: src/hostlist/gnunet-daemon-hostlist_server.c:397
 #, c-format
 msgid "Refusing `%s' request with %llu bytes of upload data\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:398
+#: src/hostlist/gnunet-daemon-hostlist_server.c:401
 msgid "hostlist requests refused (upload data)"
 msgstr ""
 
@@ -4607,180 +4601,170 @@ msgstr ""
 msgid "hostlist requests refused (not ready)"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:417
+#: src/hostlist/gnunet-daemon-hostlist_server.c:416
 msgid "Received request for our hostlist\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:419
+#: src/hostlist/gnunet-daemon-hostlist_server.c:418
 msgid "hostlist requests processed"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:460
+#: src/hostlist/gnunet-daemon-hostlist_server.c:466
 msgid "# hostlist advertisements send"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:673
-#: src/transport/gnunet-service-transport.c:2651
+#: src/hostlist/gnunet-daemon-hostlist_server.c:679
+#: src/transport/gnunet-service-transport.c:2814
 msgid "Could not access PEERINFO service.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:684
+#: src/hostlist/gnunet-daemon-hostlist_server.c:691
 #, c-format
 msgid "Invalid port number %llu.  Exiting.\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:696
+#: src/hostlist/gnunet-daemon-hostlist_server.c:703
 #, c-format
 msgid "Hostlist service starts on %s:%llu\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:713
+#: src/hostlist/gnunet-daemon-hostlist_server.c:718
 #, c-format
 msgid "Address to obtain hostlist: `%s'\n"
 msgstr ""
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:728
+#: src/hostlist/gnunet-daemon-hostlist_server.c:731
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "“%s”不可用。\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:742
+#: src/hostlist/gnunet-daemon-hostlist_server.c:748
 #, fuzzy
 msgid "BINDTOIP does not a valid IPv4 address! Ignoring BINDTOIPV6.\n"
 msgstr "“%s”不可用。\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:764
+#: src/hostlist/gnunet-daemon-hostlist_server.c:769
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv4 address! Ignoring BINDTOIPV4.\n"
 msgstr "“%s”不可用。\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:785
+#: src/hostlist/gnunet-daemon-hostlist_server.c:789
 #, fuzzy, c-format
 msgid "`%s' is not a valid IPv6 address! Ignoring BINDTOIPV6.\n"
 msgstr "“%s”不可用。\n"
 
-#: src/hostlist/gnunet-daemon-hostlist_server.c:828
+#: src/hostlist/gnunet-daemon-hostlist_server.c:829
 #, c-format
 msgid "Could not start hostlist HTTP server on port %u\n"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:193
+#: src/identity/gnunet-identity.c:179
 #, fuzzy, c-format
 msgid "Failed to create ego: %s\n"
 msgstr "发送消息失败。\n"
 
-#: src/identity/gnunet-identity.c:233
+#: src/identity/gnunet-identity.c:201
 #, fuzzy, c-format
 msgid "Failed to set default ego: %s\n"
 msgstr "发送消息失败。\n"
 
-#: src/identity/gnunet-identity.c:391
+#: src/identity/gnunet-identity.c:356
 msgid "create ego NAME"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:396
+#: src/identity/gnunet-identity.c:362
 msgid "delete ego NAME "
 msgstr ""
 
-#: src/identity/gnunet-identity.c:400
+#: src/identity/gnunet-identity.c:367
 msgid "display all egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:404
-msgid "reduce output"
-msgstr ""
-
-#: src/identity/gnunet-identity.c:411
+#: src/identity/gnunet-identity.c:373
 msgid ""
-"set default identity to NAME for a subsystem SUBSYSTEM (use together with -"
-"s) or restrict results to NAME (use together with -d)"
+"set default identity to EGO for a subsystem SUBSYSTEM (use together with -s)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:415
+#: src/identity/gnunet-identity.c:378
 msgid "run in monitor mode egos"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:419
-#, fuzzy
-msgid "display private keys as well"
-msgstr "显示一个文件的散列值"
-
-#: src/identity/gnunet-identity.c:426
+#: src/identity/gnunet-identity.c:384
 msgid ""
 "set default identity to EGO for a subsystem SUBSYSTEM (use together with -e)"
 msgstr ""
 
-#: src/identity/gnunet-identity.c:438
+#: src/identity/gnunet-identity.c:398
 msgid "Maintain egos"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:511
+#: src/identity/gnunet-service-identity.c:391
 msgid "no default known"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:536
+#: src/identity/gnunet-service-identity.c:416
 msgid "default configured, but ego unknown (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:627
-#: src/identity/gnunet-service-identity.c:910
-#: src/identity/gnunet-service-identity.c:1038
+#: src/identity/gnunet-service-identity.c:507
+#: src/identity/gnunet-service-identity.c:790
+#: src/identity/gnunet-service-identity.c:918
 #, fuzzy, c-format
 msgid "Failed to write subsystem default identifier map to `%s'.\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/identity/gnunet-service-identity.c:635
+#: src/identity/gnunet-service-identity.c:515
 msgid "Unknown ego specified for service (internal error)"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:730
+#: src/identity/gnunet-service-identity.c:610
 msgid "identifier already in use for another ego"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:885
+#: src/identity/gnunet-service-identity.c:765
 msgid "target name already exists"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:928
-#: src/identity/gnunet-service-identity.c:1056
+#: src/identity/gnunet-service-identity.c:808
+#: src/identity/gnunet-service-identity.c:936
 msgid "no matching ego found"
 msgstr ""
 
-#: src/identity/gnunet-service-identity.c:1091
+#: src/identity/gnunet-service-identity.c:971
 #, fuzzy, c-format
 msgid "Failed to parse ego information in `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/identity/gnunet-service-identity.c:1149
+#: src/identity/gnunet-service-identity.c:1029
 #, fuzzy, c-format
 msgid "Failed to parse subsystem identity configuration file `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/identity/gnunet-service-identity.c:1159
+#: src/identity/gnunet-service-identity.c:1039
 #, fuzzy, c-format
 msgid "Failed to create directory `%s' for storing egos\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/identity/plugin_rest_identity.c:1311
-msgid "Identity REST API initialized\n"
-msgstr ""
-
-#: src/json/json.c:133
+#: src/json/json.c:123
 #, fuzzy, c-format
 msgid "Failed to parse JSON in option `%s': %s (%s)\n"
 msgstr "解析配置文件“%s”失败\n"
 
+#: src/multicast/gnunet-multicast.c:48 src/multicast/gnunet-multicast.c:72
+msgid "This command doesn't do anything yet."
+msgstr ""
+
 #: src/my/my.c:196 src/my/my.c:215
 #, fuzzy, c-format
 msgid "%s failed at %s:%d with error: %s\n"
 msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
 
-#: src/mysql/mysql.c:201
+#: src/mysql/mysql.c:180
 #, c-format
 msgid "Trying to use file `%s' for MySQL configuration.\n"
 msgstr ""
 
-#: src/mysql/mysql.c:209
+#: src/mysql/mysql.c:187
 #, fuzzy, c-format
 msgid "Could not access file `%s': %s\n"
 msgstr "无法解析“%s”(%s):%s\n"
@@ -4790,7 +4774,7 @@ msgstr "无法解析“%s”(%s):%s\n"
 msgid "No records found for `%s'"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:459
+#: src/namecache/gnunet-namecache.c:122 src/namestore/gnunet-namestore.c:454
 #, c-format
 msgid "\tCorrupt or unsupported record of type %u\n"
 msgstr ""
@@ -4810,15 +4794,15 @@ msgstr "“%s”的参数无效。\n"
 msgid "You must specify a name\n"
 msgstr "您必须指定一个接收方!\n"
 
-#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1601
+#: src/namecache/gnunet-namecache.c:232 src/namestore/gnunet-namestore.c:1575
 msgid "name of the record to add/delete/display"
 msgstr ""
 
 #: src/namecache/gnunet-namecache.c:238
-msgid "specifies the public key of the zone to look in"
+msgid "spezifies the public key of the zone to look in"
 msgstr ""
 
-#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1662
+#: src/namecache/gnunet-namecache.c:250 src/namestore/gnunet-namestore.c:1632
 #, fuzzy
 msgid "GNUnet zone manipulation tool"
 msgstr "GNUnet 配置"
@@ -4834,8 +4818,8 @@ msgstr "连接 %s:%u 出错。守护程序在运行吗?\n"
 
 #: src/namecache/plugin_namecache_flat.c:121
 #: src/namecache/plugin_namecache_flat.c:255
-#: src/namestore/plugin_namestore_flat.c:179
-#: src/namestore/plugin_namestore_flat.c:427
+#: src/namestore/plugin_namestore_heap.c:148
+#: src/namestore/plugin_namestore_heap.c:395
 #: src/peerstore/plugin_peerstore_flat.c:379
 #: src/peerstore/plugin_peerstore_flat.c:538
 #, fuzzy, c-format
@@ -4843,13 +4827,14 @@ msgid "Unable to initialize file: %s.\n"
 msgstr "无法初始化 SQLite:%s。\n"
 
 #: src/namecache/plugin_namecache_flat.c:132
-#: src/namestore/plugin_namestore_flat.c:190
+#: src/namestore/plugin_namestore_heap.c:159
 #: src/peerstore/plugin_peerstore_flat.c:394
 #, fuzzy, c-format
 msgid "Unable to get filesize: %s.\n"
 msgstr "发送消息失败。\n"
 
 #: src/namecache/plugin_namecache_flat.c:151
+#: src/namestore/plugin_namestore_heap.c:172
 #: src/peerstore/plugin_peerstore_flat.c:406
 #, fuzzy, c-format
 msgid "Unable to read file: %s.\n"
@@ -4868,325 +4853,299 @@ msgstr "sqlite 数据仓库"
 msgid "Failed to setup database at `%s'\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/namestore/gnunet-namestore.c:334
+#: src/namestore/gnunet-namestore-fcfsd.c:549
+#, fuzzy, c-format
+msgid "Unsupported form value `%s'\n"
+msgstr "未知的命令“%s”。\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:576
+#, fuzzy, c-format
+msgid "Failed to create record for domain `%s': %s\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:597
+msgid "Error when mapping zone to name\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:629
+#, c-format
+msgid "Found existing name `%s' for the given key\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:689
+#, c-format
+msgid "Found %u existing records for domain `%s'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:777
+#, fuzzy, c-format
+msgid "Failed to create page for `%s'\n"
+msgstr "发送消息失败。\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:796
+#, fuzzy, c-format
+msgid "Failed to setup post processor for `%s'\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:832
+msgid "Domain name must not contain `.'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:841
+msgid "Domain name must not contain `+'\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1071
+msgid "No ego configured for `fcfsd` subsystem\n"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1099
+#, fuzzy
+msgid "Failed to start HTTP server\n"
+msgstr "初始化“%s”服务失败。\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1147
+#, fuzzy
+msgid "Failed to connect to identity\n"
+msgstr "初始化“%s”服务失败。\n"
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1173
+msgid "name of the zone that is to be managed by FCFSD"
+msgstr ""
+
+#: src/namestore/gnunet-namestore-fcfsd.c:1192
+msgid "GNU Name System First Come First Serve name registration service"
+msgstr ""
+
+#: src/namestore/gnunet-namestore.c:341
 #, c-format
 msgid "Adding record failed: %s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:362
+#: src/namestore/gnunet-namestore.c:371
 #, c-format
 msgid "Deleting record failed, record does not exist%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:369
+#: src/namestore/gnunet-namestore.c:378
 #, c-format
 msgid "Deleting record failed%s%s\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:656 src/namestore/gnunet-namestore.c:666
+#: src/namestore/gnunet-namestore.c:660 src/namestore/gnunet-namestore.c:668
 #, c-format
 msgid "A %s record exists already under `%s', no other records can be added.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:678
-#, c-format
-msgid ""
-"A SOA record exists already under `%s', cannot add a second SOA to the same "
-"zone.\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:694 src/namestore/gnunet-namestore.c:707
+#: src/namestore/gnunet-namestore.c:682 src/namestore/gnunet-namestore.c:694
 #, c-format
 msgid "Records already exist under `%s', cannot add `%s' record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:722
+#: src/namestore/gnunet-namestore.c:707
 #, c-format
 msgid ""
 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:842
+#: src/namestore/gnunet-namestore.c:837
 #, c-format
 msgid "There are no records under label `%s' that could be deleted.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:885
+#: src/namestore/gnunet-namestore.c:878
 #, c-format
 msgid ""
 "There are no records under label `%s' that match the request for deletion.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:966
+#: src/namestore/gnunet-namestore.c:965
 #, fuzzy, c-format
 msgid "Failed to replace records: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/namestore/gnunet-namestore.c:989
+#: src/namestore/gnunet-namestore.c:1009
 #, c-format
 msgid "No options given\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1010 src/namestore/gnunet-namestore.c:1043
-#: src/namestore/gnunet-namestore.c:1053 src/namestore/gnunet-namestore.c:1071
-#: src/namestore/gnunet-namestore.c:1092 src/namestore/gnunet-namestore.c:1119
+#: src/namestore/gnunet-namestore.c:1032 src/namestore/gnunet-namestore.c:1065
+#: src/namestore/gnunet-namestore.c:1074 src/namestore/gnunet-namestore.c:1093
+#: src/namestore/gnunet-namestore.c:1116 src/namestore/gnunet-namestore.c:1148
 #, fuzzy, c-format
 msgid "Missing option `%s' for operation `%s'\n"
 msgstr "配置文件“%s”已写入。\n"
 
-#: src/namestore/gnunet-namestore.c:1012
+#: src/namestore/gnunet-namestore.c:1033
 msgid "replace"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1045 src/namestore/gnunet-namestore.c:1055
-#: src/namestore/gnunet-namestore.c:1073 src/namestore/gnunet-namestore.c:1094
+#: src/namestore/gnunet-namestore.c:1066 src/namestore/gnunet-namestore.c:1075
+#: src/namestore/gnunet-namestore.c:1094 src/namestore/gnunet-namestore.c:1118
 msgid "add"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1063
+#: src/namestore/gnunet-namestore.c:1084
 #, fuzzy, c-format
 msgid "Unsupported type `%s'\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/namestore/gnunet-namestore.c:1082
+#: src/namestore/gnunet-namestore.c:1106
 #, c-format
 msgid "Value `%s' invalid for record type `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1101
+#: src/namestore/gnunet-namestore.c:1129
 #, fuzzy, c-format
 msgid "Invalid time format `%s'\n"
 msgstr "IP 格式无效:“%s”\n"
 
-#: src/namestore/gnunet-namestore.c:1121
+#: src/namestore/gnunet-namestore.c:1149
 msgid "del"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1164
+#: src/namestore/gnunet-namestore.c:1192
 #, fuzzy, c-format
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "“%s”的参数无效。\n"
 
-#: src/namestore/gnunet-namestore.c:1187
+#: src/namestore/gnunet-namestore.c:1221
 #: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "无效条目。\n"
 
-#: src/namestore/gnunet-namestore.c:1213
+#: src/namestore/gnunet-namestore.c:1249
 #, fuzzy, c-format
 msgid "Invalid nick `%s'\n"
 msgstr "无效条目。\n"
 
-#: src/namestore/gnunet-namestore.c:1255
-#, c-format
-msgid "Label `%s' contains `.' which is not allowed\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore.c:1304
+#: src/namestore/gnunet-namestore.c:1289
 #, c-format
 msgid "No default ego configured in identity service\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1367
+#: src/namestore/gnunet-namestore.c:1341
 #, c-format
 msgid "Superfluous command line arguments (starting with `%s') ignored\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1396
+#: src/namestore/gnunet-namestore.c:1357
 #, fuzzy, c-format
 msgid "Cannot connect to identity service\n"
 msgstr "无法连接到 %s:%u:%s\n"
 
-#: src/namestore/gnunet-namestore.c:1443
+#: src/namestore/gnunet-namestore.c:1407
 msgid "Empty record line argument is not allowed.\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1455
+#: src/namestore/gnunet-namestore.c:1423
 #, c-format
 msgid "Invalid expiration time `%s' (must be without unit)\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1467 src/namestore/gnunet-namestore.c:1483
-#: src/namestore/gnunet-namestore.c:1500
+#: src/namestore/gnunet-namestore.c:1435 src/namestore/gnunet-namestore.c:1453
+#: src/namestore/gnunet-namestore.c:1470
 #, fuzzy, c-format
 msgid "Missing entries in record line `%s'.\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/namestore/gnunet-namestore.c:1475
+#: src/namestore/gnunet-namestore.c:1444
 #, fuzzy, c-format
 msgid "Unknown record type `%s'\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/namestore/gnunet-namestore.c:1513
+#: src/namestore/gnunet-namestore.c:1484
 #, fuzzy, c-format
 msgid "Invalid record data for type %s: `%s'.\n"
 msgstr "IP 格式无效:“%s”\n"
 
-#: src/namestore/gnunet-namestore.c:1570
+#: src/namestore/gnunet-namestore.c:1548
 msgid "add record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1573
+#: src/namestore/gnunet-namestore.c:1552
 msgid "delete record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1577
+#: src/namestore/gnunet-namestore.c:1556
 msgid "display records"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1584
+#: src/namestore/gnunet-namestore.c:1561
 msgid ""
 "expiration time for record to use (for adding only), \"never\" is possible"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1590
+#: src/namestore/gnunet-namestore.c:1566
 #, fuzzy
 msgid "set the desired nick name for the zone"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/namestore/gnunet-namestore.c:1595
+#: src/namestore/gnunet-namestore.c:1570
 #, fuzzy
 msgid "monitor changes in the namestore"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/namestore/gnunet-namestore.c:1607
+#: src/namestore/gnunet-namestore.c:1580
 #, fuzzy
 msgid "determine our name for the given PKEY"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/namestore/gnunet-namestore.c:1614
+#: src/namestore/gnunet-namestore.c:1585
 msgid ""
 "set record set to values given by (possibly multiple) RECORDLINES; can be "
 "specified multiple times"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1620
+#: src/namestore/gnunet-namestore.c:1590
 msgid "type of the record to add/delete/display"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1625
+#: src/namestore/gnunet-namestore.c:1595
 msgid "URI to import into our zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1631
+#: src/namestore/gnunet-namestore.c:1600
 msgid "value of the record to add/delete"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1635
+#: src/namestore/gnunet-namestore.c:1604
 msgid "create or list public record"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1641
+#: src/namestore/gnunet-namestore.c:1608
 msgid ""
 "create shadow record (only valid if all other records of the same type have "
 "expired"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:1647
+#: src/namestore/gnunet-namestore.c:1613
 msgid "name of the ego controlling the zone"
 msgstr ""
 
-#: src/namestore/gnunet-namestore-fcfsd.c:549
-#, fuzzy, c-format
-msgid "Unsupported form value `%s'\n"
-msgstr "未知的命令“%s”。\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:576
-#, fuzzy, c-format
-msgid "Failed to create record for domain `%s': %s\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:597
-msgid "Error when mapping zone to name\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:629
-#, c-format
-msgid "Found existing name `%s' for the given key\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:689
-#, c-format
-msgid "Found %u existing records for domain `%s'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:777
-#, fuzzy, c-format
-msgid "Failed to create page for `%s'\n"
-msgstr "发送消息失败。\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:796
-#, fuzzy, c-format
-msgid "Failed to setup post processor for `%s'\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:832
-msgid "Domain name must not contain `.'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:841
-msgid "Domain name must not contain `+'\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1071
-msgid "No ego configured for `fcfsd` subsystem\n"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1099
-#, fuzzy
-msgid "Failed to start HTTP server\n"
-msgstr "初始化“%s”服务失败。\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1147
-#, fuzzy
-msgid "Failed to connect to identity\n"
-msgstr "初始化“%s”服务失败。\n"
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1173
-msgid "name of the zone that is to be managed by FCFSD"
-msgstr ""
-
-#: src/namestore/gnunet-namestore-fcfsd.c:1192
-msgid "GNU Name System First Come First Serve name registration service"
-msgstr ""
-
-#: src/namestore/gnunet-service-namestore.c:916
+#: src/namestore/gnunet-service-namestore.c:900
 #, fuzzy, c-format
 msgid "Failed to replicate block in namecache: %s\n"
 msgstr "发送消息失败。\n"
 
-#: src/namestore/gnunet-zoneimport.c:1838
+#: src/namestore/gnunet-zoneimport.c:2038
 msgid "size to use for the main hash map"
 msgstr ""
 
-#: src/namestore/gnunet-zoneimport.c:1844
+#: src/namestore/gnunet-zoneimport.c:2043
 msgid "minimum expiration time we assume for imported records"
 msgstr ""
 
-#: src/namestore/namestore_api.c:376
+#: src/namestore/namestore_api.c:391
 msgid "Namestore failed to store record\n"
 msgstr ""
 
-#: src/namestore/plugin_namestore_flat.c:198
-#, c-format
-msgid "File too big to map: %llu bytes.\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:222
-#, c-format
-msgid "Namestore database file `%s' malformed\n"
-msgstr ""
-
-#: src/namestore/plugin_namestore_flat.c:790
+#: src/namestore/plugin_namestore_heap.c:778
 #, fuzzy
-msgid "Flat file database running\n"
+msgid "heap file database running\n"
 msgstr "sqlite 数据仓库"
 
-#: src/namestore/plugin_rest_namestore.c:919
-msgid "Namestore REST API initialized\n"
-msgstr ""
-
 #: src/nat-auto/gnunet-nat-auto.c:193
 #, fuzzy
 msgid "Suggested configuration changes:\n"
@@ -5231,7 +5190,7 @@ msgid "GNUnet NAT traversal autoconfiguration"
 msgstr "GNUnet 配置"
 
 #: src/nat-auto/gnunet-nat-auto_legacy.c:403
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:680
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:681
 #: src/nat-auto/nat_auto_api_test.c:409
 msgid "Failed to connect to `gnunet-nat-server'\n"
 msgstr ""
@@ -5268,38 +5227,38 @@ msgstr ""
 msgid "Detected external IP `%s'\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:571
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:572
 msgid "This system has a global IPv6 address, setting IPv6 to supported.\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:589
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:590
 #, fuzzy, c-format
 msgid "Detected internal network address `%s'.\n"
 msgstr "GNUnet 现在使用 IP 地址 %s。\n"
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:723
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
 msgid "upnpc found, enabling its use\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:724
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:725
 msgid "upnpc not found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:761
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:762
 msgid "test_icmp_server not possible, as we have no public IPv4 address\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:773
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:833
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:774
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:834
 msgid "test_icmp_server not possible, as we are not behind NAT\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:785
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:845
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:786
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:846
 msgid "No working gnunet-helper-nat-server found\n"
 msgstr ""
 
-#: src/nat-auto/gnunet-service-nat-auto_legacy.c:822
+#: src/nat-auto/gnunet-service-nat-auto_legacy.c:823
 msgid "test_icmp_client not possible, as we have no internal IPv4 address\n"
 msgstr ""
 
@@ -5418,42 +5377,42 @@ msgstr ""
 msgid "GNUnet NAT traversal autoconfigure daemon"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1332
+#: src/nat/gnunet-service-nat.c:1339
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1342
+#: src/nat/gnunet-service-nat.c:1349
 #, c-format
 msgid "Invalid port number in punched hole specification `%s' (lacks port)\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1358
+#: src/nat/gnunet-service-nat.c:1365
 #, c-format
 msgid "Malformed punched hole specification `%s' (lacks `]')\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1369
+#: src/nat/gnunet-service-nat.c:1376
 #, c-format
 msgid "Malformed punched hole specification `%s' (IPv6 address invalid)"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1834
+#: src/nat/gnunet-service-nat.c:1841
 msgid "Connection reversal request failed\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat.c:1907
+#: src/nat/gnunet-service-nat.c:1914
 msgid ""
 "UPnP enabled in configuration, but UPnP client `upnpc` command not found, "
 "disabling UPnP\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:191
+#: src/nat/gnunet-service-nat_helper.c:186
 #, c-format
 msgid "gnunet-helper-nat-server generated malformed address `%s'\n"
 msgstr ""
 
-#: src/nat/gnunet-service-nat_helper.c:277
+#: src/nat/gnunet-service-nat_helper.c:273
 #, fuzzy, c-format
 msgid "Failed to start %s\n"
 msgstr "运行 %s失败:%s %d\n"
@@ -5466,10 +5425,6 @@ msgstr ""
 msgid "`upnpc' command not found\n"
 msgstr ""
 
-#: src/nse/gnunet-nse.c:123
-msgid "Show network size estimates from NSE service."
-msgstr ""
-
 #: src/nse/gnunet-nse-profiler.c:849
 msgid "limit to the number of connections to NSE services, 0 for none"
 msgstr ""
@@ -5495,66 +5450,16 @@ msgstr ""
 msgid "Measure quality and performance of the NSE service."
 msgstr "无法访问该服务"
 
-#: src/nse/gnunet-service-nse.c:1452
-#: src/revocation/gnunet-service-revocation.c:841 src/util/gnunet-scrypt.c:267
+#: src/nse/gnunet-nse.c:122
+msgid "Show network size estimates from NSE service."
+msgstr ""
+
+#: src/nse/gnunet-service-nse.c:1534
+#: src/revocation/gnunet-service-revocation.c:843 src/util/gnunet-scrypt.c:276
 #, fuzzy
 msgid "Value is too large.\n"
 msgstr "值不在合法范围内。"
 
-#: src/peerinfo/gnunet-service-peerinfo.c:178
-#, c-format
-msgid "Removing expired address of transport `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:313
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s': %s\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:334
-#: src/peerinfo/gnunet-service-peerinfo.c:365
-#, fuzzy, c-format
-msgid "Failed to parse HELLO in file `%s'\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:449
-msgid "# peers known"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:492
-#, c-format
-msgid ""
-"File `%s' in directory `%s' does not match naming convention. Removed.\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:658
-#, fuzzy, c-format
-msgid "Scanning directory `%s'\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:666
-#, c-format
-msgid "Still no peers found in `%s'!\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1099
-#, fuzzy, c-format
-msgid "Cleaning up directory `%s'\n"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1437
-#, c-format
-msgid "Importing HELLOs from `%s'\n"
-msgstr ""
-
-#: src/peerinfo/gnunet-service-peerinfo.c:1450
-msgid "Skipping import of included HELLOs\n"
-msgstr ""
-
-#: src/peerinfo/peerinfo_api.c:220
-msgid "Failed to receive response from `PEERINFO' service."
-msgstr ""
-
 #: src/peerinfo-tool/gnunet-peerinfo.c:239
 #, fuzzy, c-format
 msgid "%sPeer `%s'\n"
@@ -5566,7 +5471,7 @@ msgid "\tExpires: %s \t %s\n"
 msgstr ""
 
 #: src/peerinfo-tool/gnunet-peerinfo.c:299
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:501
+#: src/rest-plugins/plugin_rest_peerinfo.c:501
 #, fuzzy, c-format
 msgid "Failure: Cannot convert address to string for peer `%s'\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
@@ -5616,65 +5521,116 @@ msgstr "列出所有网络适配器"
 msgid "dump hello to file"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:873
-msgid "also output HELLO uri(s)"
-msgstr ""
+#: src/peerinfo-tool/gnunet-peerinfo.c:873
+msgid "also output HELLO uri(s)"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:879
+msgid "add given HELLO uri to the database"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo.c:897
+#, fuzzy
+msgid "Print information about peers."
+msgstr "无法获取有关用户“%s”的信息:%s\n"
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
+#: src/transport/gnunet-service-transport_plugins.c:168
+#, c-format
+msgid "Starting transport plugins `%s'\n"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
+#: src/transport/gnunet-service-transport_plugins.c:173
+#, c-format
+msgid "Loading `%s' transport plugin\n"
+msgstr ""
+
+#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
+#: src/transport/gnunet-service-transport_plugins.c:208
+#, fuzzy, c-format
+msgid "Failed to load transport plugin for `%s'\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:178
+#, c-format
+msgid "Removing expired address of transport `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:313
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s': %s\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:334
+#: src/peerinfo/gnunet-service-peerinfo.c:365
+#, fuzzy, c-format
+msgid "Failed to parse HELLO in file `%s'\n"
+msgstr "解析配置文件“%s”失败\n"
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:879
-msgid "add given HELLO uri to the database"
+#: src/peerinfo/gnunet-service-peerinfo.c:449
+msgid "# peers known"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo.c:897
-#, fuzzy
-msgid "Print information about peers."
-msgstr "无法获取有关用户“%s”的信息:%s\n"
-
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:105
-#: src/transport/gnunet-service-transport_plugins.c:168
+#: src/peerinfo/gnunet-service-peerinfo.c:492
 #, c-format
-msgid "Starting transport plugins `%s'\n"
+msgid ""
+"File `%s' in directory `%s' does not match naming convention. Removed.\n"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:109
-#: src/transport/gnunet-service-transport_plugins.c:173
+#: src/peerinfo/gnunet-service-peerinfo.c:659
+#, fuzzy, c-format
+msgid "Scanning directory `%s'\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/peerinfo/gnunet-service-peerinfo.c:667
 #, c-format
-msgid "Loading `%s' transport plugin\n"
+msgid "Still no peers found in `%s'!\n"
 msgstr ""
 
-#: src/peerinfo-tool/gnunet-peerinfo_plugins.c:129
-#: src/transport/gnunet-service-transport_plugins.c:208
+#: src/peerinfo/gnunet-service-peerinfo.c:1100
 #, fuzzy, c-format
-msgid "Failed to load transport plugin for `%s'\n"
+msgid "Cleaning up directory `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/peerinfo-tool/plugin_rest_peerinfo.c:796
-msgid "Peerinfo REST API initialized\n"
+#: src/peerinfo/gnunet-service-peerinfo.c:1438
+#, c-format
+msgid "Importing HELLOs from `%s'\n"
+msgstr ""
+
+#: src/peerinfo/gnunet-service-peerinfo.c:1451
+msgid "Skipping import of included HELLOs\n"
+msgstr ""
+
+#: src/peerinfo/peerinfo_api.c:220
+msgid "Failed to receive response from `PEERINFO' service."
 msgstr ""
 
 #: src/peerstore/gnunet-peerstore.c:91
 msgid "peerstore"
 msgstr ""
 
-#: src/peerstore/gnunet-service-peerstore.c:561
+#: src/peerstore/gnunet-service-peerstore.c:598
 #, fuzzy, c-format
 msgid "Could not load database backend `%s'\n"
 msgstr "无法解析“%s”(%s):%s\n"
 
-#: src/peerstore/peerstore_api.c:595 src/peerstore/peerstore_api.c:643
+#: src/peerstore/peerstore_api.c:532 src/peerstore/peerstore_api.c:581
 #, fuzzy
 msgid "Unexpected iteration response, this should not happen.\n"
 msgstr "输出格式未知,不应出现这种情况。\n"
 
-#: src/peerstore/peerstore_api.c:657
+#: src/peerstore/peerstore_api.c:595
 #, fuzzy
 msgid "Received a malformed response from service."
 msgstr "“%s”的参数无效。\n"
 
-#: src/peerstore/peerstore_api.c:782
+#: src/peerstore/peerstore_api.c:731
 msgid "Received a watch result for a non existing watch.\n"
 msgstr ""
 
 #: src/peerstore/plugin_peerstore_sqlite.c:453
+#: src/psycstore/plugin_psycstore_sqlite.c:282
 #, fuzzy, c-format
 msgid ""
 "Error executing SQL query: %s\n"
@@ -5682,6 +5638,8 @@ msgid ""
 msgstr "创建用户出错"
 
 #: src/peerstore/plugin_peerstore_sqlite.c:488
+#: src/psycstore/plugin_psycstore_mysql.c:250
+#: src/psycstore/plugin_psycstore_sqlite.c:259
 #, fuzzy, c-format
 msgid ""
 "Error preparing SQL query: %s\n"
@@ -5698,6 +5656,114 @@ msgstr "发送消息失败。\n"
 msgid "PQprepare (`%s' as `%s') failed with error: %s\n"
 msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
 
+#: src/psycstore/gnunet-service-psycstore.c:249
+#, fuzzy
+msgid "Failed to store membership information!\n"
+msgstr "打开日志文件“%s”失败:%s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:271
+#, fuzzy
+msgid "Failed to test membership!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:300
+#, fuzzy
+msgid "Dropping invalid fragment\n"
+msgstr "“%s”的参数无效。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:311
+#, fuzzy
+msgid "Failed to store fragment\n"
+msgstr "运行 %s失败:%s %d\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:368
+#, fuzzy
+msgid "Failed to get fragment!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:434
+#, fuzzy
+msgid "Failed to get message!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:464
+#, fuzzy
+msgid "Failed to get message fragment!\n"
+msgstr "打开日志文件“%s”失败:%s\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:494
+#, fuzzy
+msgid "Failed to get master counters!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:675
+#, fuzzy, c-format
+msgid "Failed to begin modifying state: %d\n"
+msgstr "运行 %s失败:%s %d\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:685
+#, fuzzy, c-format
+msgid "Failed to modify state: %d\n"
+msgstr "运行 %s失败:%s %d\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:693
+#, fuzzy
+msgid "Failed to end modifying state!\n"
+msgstr "运行 %s失败:%s %d\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:730
+#, fuzzy
+msgid "Tried to set invalid state variable name!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:744
+#, fuzzy
+msgid "Failed to begin synchronizing state!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:761
+#, fuzzy
+msgid "Failed to end synchronizing state!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:779
+#: src/psycstore/gnunet-service-psycstore.c:795
+#, fuzzy
+msgid "Failed to reset state!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:824
+#: src/psycstore/gnunet-service-psycstore.c:881
+#, fuzzy
+msgid "Tried to get invalid state variable name!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/gnunet-service-psycstore.c:851
+#: src/psycstore/gnunet-service-psycstore.c:896
+#, fuzzy
+msgid "Failed to get state variable!\n"
+msgstr "发送消息失败。\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:281
+#, fuzzy
+msgid "Unable to initialize Mysql.\n"
+msgstr "无法初始化 SQLite:%s。\n"
+
+#: src/psycstore/plugin_psycstore_mysql.c:291
+#, fuzzy, c-format
+msgid "Failed to run SQL statement `%s'\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:61
+#, fuzzy, c-format
+msgid "`%s' failed at %s:%d with error: %s (%d)\n"
+msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
+
+#: src/psycstore/plugin_psycstore_sqlite.c:1924
+#, fuzzy
+msgid "SQLite database running\n"
+msgstr "sqlite 数据仓库"
+
 #: src/pt/gnunet-daemon-pt.c:423
 msgid "Failed to pack DNS request.  Dropping.\n"
 msgstr ""
@@ -5742,94 +5808,73 @@ msgstr ""
 msgid "# DNS replies dropped (too late?)"
 msgstr ""
 
-#: src/pt/gnunet-daemon-pt.c:1217 src/pt/gnunet-daemon-pt.c:1226
-#: src/pt/gnunet-daemon-pt.c:1242 src/pt/gnunet-daemon-pt.c:1251
-#: src/pt/gnunet-daemon-pt.c:1260
+#: src/pt/gnunet-daemon-pt.c:1219 src/pt/gnunet-daemon-pt.c:1228
+#: src/pt/gnunet-daemon-pt.c:1244 src/pt/gnunet-daemon-pt.c:1253
+#: src/pt/gnunet-daemon-pt.c:1262
 #, fuzzy, c-format
 msgid "Failed to connect to %s service.  Exiting.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/pt/gnunet-daemon-pt.c:1305
+#: src/pt/gnunet-daemon-pt.c:1307
 msgid "Daemon to run to perform IP protocol translation to GNUnet"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:600
+#: src/reclaim/gnunet-reclaim.c:467
 #, fuzzy, c-format
 msgid "Ego is required\n"
 msgstr "%s:选项“%s”有歧义\n"
 
-#: src/reclaim/gnunet-reclaim.c:607
+#: src/reclaim/gnunet-reclaim.c:475
 #, c-format
 msgid "Attribute value missing!\n"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:614
+#: src/reclaim/gnunet-reclaim.c:483
 #, fuzzy, c-format
 msgid "Requesting party key is required!\n"
 msgstr "设置要使用的昵称(必须)"
 
-#: src/reclaim/gnunet-reclaim.c:633
-msgid "Add an attribute NAME"
+#: src/reclaim/gnunet-reclaim.c:506
+msgid "Add attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:638
-msgid "Delete the attribute with ID"
+#: src/reclaim/gnunet-reclaim.c:512
+msgid "Attribute value"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:643
-msgid "The attribute VALUE"
+#: src/reclaim/gnunet-reclaim.c:517
+msgid "Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:648
-#, fuzzy
-msgid "The EGO to use"
-msgstr "消息尺寸"
-
-#: src/reclaim/gnunet-reclaim.c:654
-msgid "Specify the relying party for issue"
+#: src/reclaim/gnunet-reclaim.c:522
+msgid "Audience (relying party)"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:658
-msgid "List attributes for EGO"
+#: src/reclaim/gnunet-reclaim.c:526
+msgid "List attributes for Ego"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:665
-msgid "Issue a ticket for a set of attributes separated by comma"
+#: src/reclaim/gnunet-reclaim.c:531
+msgid "Issue a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:670
+#: src/reclaim/gnunet-reclaim.c:536
 msgid "Consume a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:675
+#: src/reclaim/gnunet-reclaim.c:541
 msgid "Revoke a ticket"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:680
+#: src/reclaim/gnunet-reclaim.c:546
 msgid "Type of attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:684
-msgid "List tickets of ego"
-msgstr ""
-
-#: src/reclaim/gnunet-reclaim.c:690
+#: src/reclaim/gnunet-reclaim.c:551
 msgid "Expiration interval of the attribute"
 msgstr ""
 
-#: src/reclaim/gnunet-reclaim.c:697
-msgid "re:claimID command line tool"
-msgstr ""
-
-#: src/reclaim/plugin_rest_openid_connect.c:2121
-msgid "OpenID Connect REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/plugin_rest_reclaim.c:1098
-msgid "Identity Provider REST API initialized\n"
-msgstr ""
-
-#: src/reclaim/reclaim_api.c:437
+#: src/reclaim/reclaim_api.c:436
 #, fuzzy
 msgid "failed to store record\n"
 msgstr "运行 %s失败:%s %d\n"
@@ -5922,19 +5967,44 @@ msgstr "服务已删除。\n"
 msgid "Search string `%s' is too long!\n"
 msgstr "服务已删除。\n"
 
-#: src/rest/gnunet-rest-server.c:1039
-#, fuzzy
-msgid "GNUnet REST server"
-msgstr "GNUnet 错误日志"
+#: src/rest-plugins/plugin_rest_copying.c:209
+msgid "COPYING REST API initialized\n"
+msgstr ""
 
-#: src/rest/plugin_rest_config.c:265
-msgid "CONFIG REST API initialized\n"
+#: src/rest-plugins/plugin_rest_credential.c:1128
+msgid "GNS REST API initialized\n"
 msgstr ""
 
-#: src/rest/plugin_rest_copying.c:209
-msgid "COPYING REST API initialized\n"
+#: src/rest-plugins/plugin_rest_gns.c:452
+msgid "Gns REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_identity.c:1297
+msgid "Identity REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_namestore.c:1079
+msgid "Namestore REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_openid_connect.c:2245
+#: src/rest-plugins/plugin_rest_reclaim.c:1079
+msgid "Identity Provider REST API initialized\n"
+msgstr ""
+
+#: src/rest-plugins/plugin_rest_peerinfo.c:796
+msgid "Peerinfo REST API initialized\n"
+msgstr ""
+
+#: src/rest/gnunet-rest-server.c:927
+msgid "listen on specified port (default: 7776)"
 msgstr ""
 
+#: src/rest/gnunet-rest-server.c:944
+#, fuzzy
+msgid "GNUnet REST server"
+msgstr "GNUnet 错误日志"
+
 #: src/revocation/gnunet-revocation.c:129
 #, c-format
 msgid "Key `%s' is valid\n"
@@ -5982,59 +6052,59 @@ msgstr ""
 msgid "Ego `%s' not found.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:372
+#: src/revocation/gnunet-revocation.c:373
 #, c-format
 msgid "Error: revocation certificate in `%s' is not for `%s'\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:392
+#: src/revocation/gnunet-revocation.c:393
 msgid "Revocation certificate ready\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:402
+#: src/revocation/gnunet-revocation.c:403
 msgid "Revocation certificate not ready, calculating proof of work\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:436
+#: src/revocation/gnunet-revocation.c:437 src/social/gnunet-social.c:1180
 #, fuzzy, c-format
 msgid "Public key `%s' malformed\n"
 msgstr "“%s”的参数无效。\n"
 
-#: src/revocation/gnunet-revocation.c:449
+#: src/revocation/gnunet-revocation.c:450
 msgid ""
 "Testing and revoking at the same time is not allowed, only executing test.\n"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:469
+#: src/revocation/gnunet-revocation.c:470
 #, fuzzy
 msgid "No filename to store revocation certificate given.\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/revocation/gnunet-revocation.c:490
+#: src/revocation/gnunet-revocation.c:491
 #, fuzzy, c-format
 msgid "Failed to read revocation certificate from `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/revocation/gnunet-revocation.c:515
+#: src/revocation/gnunet-revocation.c:516
 #, fuzzy
 msgid "No action specified. Nothing to do.\n"
 msgstr "没有指定接口,将使用默认。\n"
 
-#: src/revocation/gnunet-revocation.c:534
+#: src/revocation/gnunet-revocation.c:535
 msgid "use NAME for the name of the revocation file"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:540
+#: src/revocation/gnunet-revocation.c:541
 msgid ""
 "revoke the private key associated for the the private key associated with "
 "the ego NAME "
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:545
+#: src/revocation/gnunet-revocation.c:546
 msgid "actually perform revocation, otherwise we just do the precomputation"
 msgstr ""
 
-#: src/revocation/gnunet-revocation.c:551
+#: src/revocation/gnunet-revocation.c:552
 msgid "test if the public key KEY has been revoked"
 msgstr ""
 
@@ -6066,41 +6136,41 @@ msgstr ""
 msgid "SET service crashed, terminating revocation service\n"
 msgstr ""
 
-#: src/revocation/gnunet-service-revocation.c:865
+#: src/revocation/gnunet-service-revocation.c:867
 #, fuzzy
 msgid "Could not open revocation database file!"
 msgstr "无法连接到 %s:%u:%s\n"
 
-#: src/rps/gnunet-rps.c:260
-msgid "Seed a PeerID"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:264
-msgid "Get updates of view (0 for infinite updates)"
-msgstr ""
-
-#: src/rps/gnunet-rps.c:268
-msgid "Get peers from biased stream"
-msgstr ""
-
-#: src/rps/gnunet-rps-profiler.c:3086
+#: src/rps/gnunet-rps-profiler.c:2959
 msgid "duration of the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3091
+#: src/rps/gnunet-rps-profiler.c:2965
 msgid "timeout for the profiling"
 msgstr ""
 
-#: src/rps/gnunet-rps-profiler.c:3096
+#: src/rps/gnunet-rps-profiler.c:2971
 #, fuzzy
 msgid "number of PeerIDs to request"
 msgstr "迭代次数"
 
-#: src/rps/gnunet-rps-profiler.c:3112
+#: src/rps/gnunet-rps-profiler.c:2986
 #, fuzzy
 msgid "Measure quality and performance of the RPS service."
 msgstr "无法访问该服务"
 
+#: src/rps/gnunet-rps.c:260
+msgid "Seed a PeerID"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:264
+msgid "Get updates of view (0 for infinite updates)"
+msgstr ""
+
+#: src/rps/gnunet-rps.c:268
+msgid "Get peers from biased stream"
+msgstr ""
+
 #: src/scalarproduct/gnunet-scalarproduct.c:220
 #, fuzzy
 msgid "You must specify at least one message ID to check!\n"
@@ -6156,10 +6226,10 @@ msgstr ""
 msgid "Calculate the Vectorproduct with a GNUnet peer."
 msgstr ""
 
-#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1359
-#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
-#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1124
+#: src/scalarproduct/gnunet-service-scalarproduct-ecc_alice.c:1172
 #: src/scalarproduct/gnunet-service-scalarproduct-ecc_bob.c:1063
+#: src/scalarproduct/gnunet-service-scalarproduct_alice.c:1401
+#: src/scalarproduct/gnunet-service-scalarproduct_bob.c:1345
 #, fuzzy
 msgid "Connect to CADET failed\n"
 msgstr "“%s”已连接到“%s”。\n"
@@ -6184,30 +6254,30 @@ msgstr ""
 msgid "also profile decryption"
 msgstr ""
 
-#: src/set/gnunet-service-set.c:1911
+#: src/set/gnunet-service-set.c:2005
 #, fuzzy
 msgid "Could not connect to CADET service\n"
 msgstr "无法连接到 %s:%u:%s\n"
 
-#: src/set/gnunet-set-ibf-profiler.c:267
+#: src/set/gnunet-set-ibf-profiler.c:252
 #, fuzzy
 msgid "number of element in set A-B"
 msgstr "迭代次数"
 
-#: src/set/gnunet-set-ibf-profiler.c:273
+#: src/set/gnunet-set-ibf-profiler.c:258
 #, fuzzy
 msgid "number of element in set B-A"
 msgstr "迭代次数"
 
-#: src/set/gnunet-set-ibf-profiler.c:280
+#: src/set/gnunet-set-ibf-profiler.c:264
 msgid "number of common elements in A and B"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:286
+#: src/set/gnunet-set-ibf-profiler.c:270
 msgid "hash num"
 msgstr ""
 
-#: src/set/gnunet-set-ibf-profiler.c:292
+#: src/set/gnunet-set-ibf-profiler.c:276
 msgid "ibf size"
 msgstr ""
 
@@ -6231,6 +6301,132 @@ msgstr ""
 msgid "element size"
 msgstr ""
 
+#: src/social/gnunet-social.c:1166
+#, fuzzy
+msgid "--place missing or invalid.\n"
+msgstr "“%s”的参数无效。\n"
+
+#: src/social/gnunet-social.c:1217
+msgid "assign --name in state to --data"
+msgstr ""
+
+#: src/social/gnunet-social.c:1222
+msgid "say good-bye and leave somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1227
+msgid "create a place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1232
+msgid "destroy a place we were hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1237
+msgid "enter somebody else's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1243
+msgid "find state matching name prefix"
+msgstr ""
+
+#: src/social/gnunet-social.c:1248
+msgid "replay history of messages up to the given --limit"
+msgstr ""
+
+#: src/social/gnunet-social.c:1253
+msgid "reconnect to a previously created place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1258
+msgid "publish something to a place we are hosting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1263
+msgid "reconnect to a previously entered place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1268
+msgid "search for state matching exact name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1273
+msgid "submit something to somebody's place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1278
+msgid "list of egos and subscribed places"
+msgstr ""
+
+#: src/social/gnunet-social.c:1283
+msgid "extract and replay history between message IDs --start and --until"
+msgstr ""
+
+#: src/social/gnunet-social.c:1292
+msgid "application ID to use when connecting"
+msgstr ""
+
+#: src/social/gnunet-social.c:1298
+msgid "message body or state value"
+msgstr ""
+
+#: src/social/gnunet-social.c:1304
+#, fuzzy
+msgid "name or public key of ego"
+msgstr "“%s”的参数无效。\n"
+
+#: src/social/gnunet-social.c:1309
+#, fuzzy
+msgid "wait for incoming messages"
+msgstr "发送消息失败。\n"
+
+#: src/social/gnunet-social.c:1315
+msgid "GNS name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1321
+msgid "peer ID for --guest-enter"
+msgstr ""
+
+#: src/social/gnunet-social.c:1327
+msgid "name (key) to query from state"
+msgstr ""
+
+#: src/social/gnunet-social.c:1333
+msgid "method name"
+msgstr ""
+
+#: src/social/gnunet-social.c:1339
+#, fuzzy
+msgid "number of messages to replay from history"
+msgstr "每次迭代所使用的消息数量"
+
+#: src/social/gnunet-social.c:1345
+msgid "key address of place"
+msgstr ""
+
+#: src/social/gnunet-social.c:1351
+msgid "start message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1356
+msgid "respond to entry requests by admitting all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1362
+msgid "end message ID for history replay"
+msgstr ""
+
+#: src/social/gnunet-social.c:1367
+msgid "respond to entry requests by refusing all guests"
+msgstr ""
+
+#: src/social/gnunet-social.c:1377
+msgid ""
+"gnunet-social - Interact with the social service: enter/leave, send/receive "
+"messages, access history and state.\n"
+msgstr ""
+
 #: src/sq/sq.c:54
 #, c-format
 msgid "Failure to bind %u-th SQL parameter\n"
@@ -6255,93 +6451,93 @@ msgstr ""
 msgid "Loading %llu bytes of statistics from `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:404
-#: src/statistics/gnunet-statistics.c:442
+#: src/statistics/gnunet-statistics.c:409
+#: src/statistics/gnunet-statistics.c:450
 #, fuzzy
 msgid "Failed to obtain statistics.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/statistics/gnunet-statistics.c:407
-#: src/statistics/gnunet-statistics.c:445
+#: src/statistics/gnunet-statistics.c:412
+#: src/statistics/gnunet-statistics.c:453
 #, fuzzy, c-format
 msgid "Failed to obtain statistics from host `%s:%llu'\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/statistics/gnunet-statistics.c:518
+#: src/statistics/gnunet-statistics.c:528
 msgid "Missing argument: subsystem \n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:524
+#: src/statistics/gnunet-statistics.c:536
 msgid "Missing argument: name\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:563
+#: src/statistics/gnunet-statistics.c:579
 #, c-format
 msgid "No subsystem or name given\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:575
+#: src/statistics/gnunet-statistics.c:594
 #, fuzzy, c-format
 msgid "Failed to initialize watch routine\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/statistics/gnunet-statistics.c:698
+#: src/statistics/gnunet-statistics.c:729
 #, fuzzy, c-format
 msgid "Invalid argument `%s'\n"
 msgstr "“%s”的参数无效。\n"
 
-#: src/statistics/gnunet-statistics.c:714
+#: src/statistics/gnunet-statistics.c:747
 #, fuzzy, c-format
 msgid "A port is required to connect to host `%s'\n"
 msgstr "无法连接到 %s:%u:%s\n"
 
-#: src/statistics/gnunet-statistics.c:723
+#: src/statistics/gnunet-statistics.c:755
 #, c-format
 msgid "A port has to be between 1 and 65535 to connect to host `%s'\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:752
+#: src/statistics/gnunet-statistics.c:786
 #, c-format
 msgid "Not able to watch testbed nodes (yet - feel free to implement)\n"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:785
+#: src/statistics/gnunet-statistics.c:819
 msgid "limit output to statistics for the given NAME"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:791
+#: src/statistics/gnunet-statistics.c:824
 msgid "make the value being set persistent"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:798
+#: src/statistics/gnunet-statistics.c:830
 msgid "limit output to the given SUBSYSTEM"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:804
+#: src/statistics/gnunet-statistics.c:836
 msgid "use as csv separator"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:811
+#: src/statistics/gnunet-statistics.c:842
 msgid "path to the folder containing the testbed data"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:817
+#: src/statistics/gnunet-statistics.c:847
 msgid "just print the statistics value"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:822
+#: src/statistics/gnunet-statistics.c:852
 msgid "watch value continuously"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:828
+#: src/statistics/gnunet-statistics.c:858
 msgid "connect to remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:834
+#: src/statistics/gnunet-statistics.c:864
 msgid "port for remote host"
 msgstr ""
 
-#: src/statistics/gnunet-statistics.c:848
+#: src/statistics/gnunet-statistics.c:881
 msgid "Print statistics about GNUnet operations."
 msgstr ""
 
@@ -6394,7 +6590,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "“%s”的参数无效。\n"
 
 #: src/testbed/generate-underlay-topology.c:342
-#: src/testbed/gnunet-testbed-profiler.c:282
+#: src/testbed/gnunet-testbed-profiler.c:283
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6433,7 +6629,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:233 src/testing/list-keys.c:46
-#: src/testing/testing.c:288 src/util/gnunet-ecc.c:311
+#: src/testing/testing.c:288 src/util/gnunet-ecc.c:312
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6503,27 +6699,27 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:118
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:241
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "卸载 GNUnet 服务"
-
-#: src/testbed/gnunet-testbed-profiler.c:287
+#: src/testbed/gnunet-testbed-profiler.c:289
 msgid "tolerate COUNT number of continious timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:291
+#: src/testbed/gnunet-testbed-profiler.c:294
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/testbed_api.c:400
+#: src/testbed/gnunet_testbed_mpi_spawn.c:118
+msgid "Waiting for child to exit.\n"
+msgstr ""
+
+#: src/testbed/gnunet_testbed_mpi_spawn.c:241
+#, fuzzy, c-format
+msgid "Spawning process `%s'\n"
+msgstr "卸载 GNUnet 服务"
+
+#: src/testbed/testbed_api.c:410
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
 msgstr "“%s”以错误码 %d 失败:%s\n"
@@ -6543,7 +6739,7 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:571
+#: src/testbed/testbed_api_hosts.c:569
 #, c-format
 msgid "The function %s is only available when compiled with (--with-ll)\n"
 msgstr ""
@@ -6699,48 +6895,48 @@ msgstr ""
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1161
+#: src/testing/testing.c:1159
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1170
+#: src/testing/testing.c:1168
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/testing/testing.c:1180
+#: src/testing/testing.c:1178
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1193
+#: src/testing/testing.c:1191
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1205
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/testing/testing.c:1219
+#: src/testing/testing.c:1217
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "发送消息失败。\n"
 
-#: src/testing/testing.c:1244
+#: src/testing/testing.c:1242
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/testing/testing.c:1346
+#: src/testing/testing.c:1344
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/testing/testing.c:1649
+#: src/testing/testing.c:1647
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -6755,146 +6951,146 @@ msgstr "配置文件“%s”第 %d 行有语法错误。\n"
 msgid "Directory for file `%s' does not seem to be writable.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:228
+#: src/topology/gnunet-daemon-topology.c:230
 msgid "# peers blacklisted"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:334
+#: src/topology/gnunet-daemon-topology.c:344
 msgid "# connect requests issued to ATS"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:513
+#: src/topology/gnunet-daemon-topology.c:538
 msgid "# HELLO messages gossipped"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:600
-#: src/topology/gnunet-daemon-topology.c:680
+#: src/topology/gnunet-daemon-topology.c:640
+#: src/topology/gnunet-daemon-topology.c:726
 msgid "# friends connected"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:851
+#: src/topology/gnunet-daemon-topology.c:923
 msgid "Failed to connect to core service, can not manage topology!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:877
+#: src/topology/gnunet-daemon-topology.c:956
 #, c-format
 msgid "Found myself `%s' in friend list (useless, ignored)\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:884
+#: src/topology/gnunet-daemon-topology.c:963
 #, fuzzy, c-format
 msgid "Found friend `%s' in configuration\n"
 msgstr ""
 "\n"
 "结束配置。\n"
 
-#: src/topology/gnunet-daemon-topology.c:902
+#: src/topology/gnunet-daemon-topology.c:985
 msgid "Encountered errors parsing friends list!\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:905
+#: src/topology/gnunet-daemon-topology.c:988
 #, fuzzy
 msgid "# friends in configuration"
 msgstr ""
 "\n"
 "结束配置。\n"
 
-#: src/topology/gnunet-daemon-topology.c:913
+#: src/topology/gnunet-daemon-topology.c:995
 msgid ""
 "Fewer friends specified than required by minimum friend count. Will only "
 "connect to friends.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:921
+#: src/topology/gnunet-daemon-topology.c:1001
 msgid ""
 "More friendly connections required than target total number of connections.\n"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:968
+#: src/topology/gnunet-daemon-topology.c:1054
 #: src/transport/plugin_transport_wlan.c:1517
 msgid "# HELLO messages received"
 msgstr ""
 
-#: src/topology/gnunet-daemon-topology.c:1128
+#: src/topology/gnunet-daemon-topology.c:1233
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:2154
-#: src/transport/gnunet-communicator-udp.c:2678
-#: src/transport/gnunet-service-tng.c:10043
-#: src/transport/gnunet-service-transport.c:2621
+#: src/transport/gnunet-communicator-tcp.c:2329
+#: src/transport/gnunet-communicator-udp.c:2883
+#: src/transport/gnunet-service-tng.c:4679
+#: src/transport/gnunet-service-transport.c:2782
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "立即保存配置?"
 
-#: src/transport/gnunet-communicator-tcp.c:2211
+#: src/transport/gnunet-communicator-tcp.c:2393
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:2749
+#: src/transport/gnunet-communicator-udp.c:2954
 msgid "GNUnet UDP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-unix.c:763
+#: src/transport/gnunet-communicator-unix.c:802
 #, fuzzy
 msgid ""
 "Maximum number of UNIX connections exceeded, dropping incoming message\n"
 msgstr "增加 TCP/IP 的最大连接数"
 
-#: src/transport/gnunet-communicator-unix.c:1017
+#: src/transport/gnunet-communicator-unix.c:1073
 #: src/transport/plugin_transport_unix.c:1403
 #, fuzzy, c-format
 msgid "Cannot create path to `%s'\n"
 msgstr "发送消息失败。\n"
 
-#: src/transport/gnunet-communicator-unix.c:1094
+#: src/transport/gnunet-communicator-unix.c:1162
 msgid "GNUnet UNIX domain socket communicator"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_ats.c:141
-msgid "# Addresses given to ATS"
-msgstr ""
-
-#: src/transport/gnunet-service-transport.c:452
+#: src/transport/gnunet-service-transport.c:448
 msgid "# messages dropped due to slow client"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:794
+#: src/transport/gnunet-service-transport.c:817
 msgid "# bytes payload dropped (other peer was not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1477
+#: src/transport/gnunet-service-transport.c:1550
 msgid "# bytes payload discarded due to not connected peer"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1622
+#: src/transport/gnunet-service-transport.c:1710
 msgid "# bytes total received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:1701
+#: src/transport/gnunet-service-transport.c:1807
 msgid "# bytes payload received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2005
-#: src/transport/gnunet-service-transport.c:2446
+#: src/transport/gnunet-service-transport.c:2124
+#: src/transport/gnunet-service-transport.c:2596
 msgid "# disconnects due to blacklist"
 msgstr ""
 
-#: src/transport/gnunet-service-transport.c:2450
+#: src/transport/gnunet-service-transport.c:2600
 #, fuzzy, c-format
 msgid "Disallowing connection to peer `%s' on transport %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/transport/gnunet-service-transport.c:2545
+#: src/transport/gnunet-service-transport.c:2708
 #, fuzzy, c-format
 msgid "Adding blacklisting entry for peer `%s'\n"
 msgstr "卸载 GNUnet 服务"
 
-#: src/transport/gnunet-service-transport.c:2554
+#: src/transport/gnunet-service-transport.c:2717
 #, c-format
 msgid "Adding blacklisting entry for peer `%s':`%s'\n"
 msgstr ""
 
+#: src/transport/gnunet-service-transport_ats.c:141
+msgid "# Addresses given to ATS"
+msgstr ""
+
 #: src/transport/gnunet-service-transport_hello.c:195
 msgid "# refreshed my HELLO"
 msgstr ""
@@ -6903,189 +7099,189 @@ msgstr ""
 msgid "# session creation failed"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1053
+#: src/transport/gnunet-service-transport_neighbours.c:1052
 msgid "# DISCONNECT messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1176
+#: src/transport/gnunet-service-transport_neighbours.c:1175
 msgid "# disconnects due to quota of 0"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1324
-#: src/transport/gnunet-service-transport_neighbours.c:1785
+#: src/transport/gnunet-service-transport_neighbours.c:1323
+#: src/transport/gnunet-service-transport_neighbours.c:1784
 msgid "# bytes in message queue for other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1329
+#: src/transport/gnunet-service-transport_neighbours.c:1328
 msgid "# messages transmitted to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1335
+#: src/transport/gnunet-service-transport_neighbours.c:1334
 msgid "# transmission failures for messages to other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1395
+#: src/transport/gnunet-service-transport_neighbours.c:1394
 msgid "# messages timed out while in transport queue"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1479
+#: src/transport/gnunet-service-transport_neighbours.c:1478
 msgid "# KEEPALIVES sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1515
+#: src/transport/gnunet-service-transport_neighbours.c:1514
 msgid "# KEEPALIVE messages discarded (peer unknown)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1523
+#: src/transport/gnunet-service-transport_neighbours.c:1522
 msgid "# KEEPALIVE messages discarded (no session)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1533
+#: src/transport/gnunet-service-transport_neighbours.c:1532
 msgid "# KEEPALIVES received in good order"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1578
+#: src/transport/gnunet-service-transport_neighbours.c:1577
 msgid "# KEEPALIVE_RESPONSEs discarded (not connected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1587
+#: src/transport/gnunet-service-transport_neighbours.c:1586
 msgid "# KEEPALIVE_RESPONSEs discarded (not expected)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1595
+#: src/transport/gnunet-service-transport_neighbours.c:1594
 msgid "# KEEPALIVE_RESPONSEs discarded (address changed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1604
+#: src/transport/gnunet-service-transport_neighbours.c:1603
 msgid "# KEEPALIVE_RESPONSEs discarded (no nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1609
+#: src/transport/gnunet-service-transport_neighbours.c:1608
 msgid "# KEEPALIVE_RESPONSEs discarded (bad nonce)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1615
+#: src/transport/gnunet-service-transport_neighbours.c:1614
 msgid "# KEEPALIVE_RESPONSEs received (OK)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1682
+#: src/transport/gnunet-service-transport_neighbours.c:1681
 msgid "# messages discarded due to lack of neighbour record"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1716
+#: src/transport/gnunet-service-transport_neighbours.c:1715
 msgid "# bandwidth quota violations by other peers"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1731
+#: src/transport/gnunet-service-transport_neighbours.c:1730
 msgid "# ms throttling suggested"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:1854
+#: src/transport/gnunet-service-transport_neighbours.c:1853
 #, fuzzy, c-format
 msgid "Failed to send SYN message to peer `%s'\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1874
+#: src/transport/gnunet-service-transport_neighbours.c:1873
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN CONT)"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1913
+#: src/transport/gnunet-service-transport_neighbours.c:1912
 #, fuzzy
 msgid "# SYN messages sent"
 msgstr "消息尺寸"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1930
+#: src/transport/gnunet-service-transport_neighbours.c:1929
 #, fuzzy, c-format
 msgid "Failed to transmit SYN message to %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:1960
+#: src/transport/gnunet-service-transport_neighbours.c:1959
 #, fuzzy
 msgid "# Failed attempts to switch addresses (failed to send SYN)"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2028
+#: src/transport/gnunet-service-transport_neighbours.c:2027
 #, fuzzy, c-format
 msgid "Failed to send SYN_ACK message to peer `%s' using address `%s'\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2082
+#: src/transport/gnunet-service-transport_neighbours.c:2081
 msgid "# SYN_ACK messages sent"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2099
+#: src/transport/gnunet-service-transport_neighbours.c:2098
 #, fuzzy, c-format
 msgid "Failed to transmit SYN_ACK message to %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/transport/gnunet-service-transport_neighbours.c:2262
+#: src/transport/gnunet-service-transport_neighbours.c:2261
 msgid "# SYN messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2267
+#: src/transport/gnunet-service-transport_neighbours.c:2266
 #, c-format
 msgid "SYN request from peer `%s' ignored due impending shutdown\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:2654
+#: src/transport/gnunet-service-transport_neighbours.c:2653
 msgid "# Attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3139
+#: src/transport/gnunet-service-transport_neighbours.c:3138
 msgid "# SYN_ACK messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3147
+#: src/transport/gnunet-service-transport_neighbours.c:3146
 msgid "# unexpected SYN_ACK messages (no peer)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3165
-#: src/transport/gnunet-service-transport_neighbours.c:3189
+#: src/transport/gnunet-service-transport_neighbours.c:3164
+#: src/transport/gnunet-service-transport_neighbours.c:3188
 msgid "# unexpected SYN_ACK messages (not ready)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3201
+#: src/transport/gnunet-service-transport_neighbours.c:3200
 msgid "# unexpected SYN_ACK messages (waiting on ATS)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3226
+#: src/transport/gnunet-service-transport_neighbours.c:3225
 msgid "# Successful attempts to switch addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3239
+#: src/transport/gnunet-service-transport_neighbours.c:3238
 msgid "# unexpected SYN_ACK messages (disconnecting)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3412
+#: src/transport/gnunet-service-transport_neighbours.c:3411
 msgid "# ACK messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3448
+#: src/transport/gnunet-service-transport_neighbours.c:3447
 msgid "# unexpected ACK messages"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3536
+#: src/transport/gnunet-service-transport_neighbours.c:3535
 msgid "# quota messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3543
+#: src/transport/gnunet-service-transport_neighbours.c:3542
 msgid "# QUOTA messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3583
+#: src/transport/gnunet-service-transport_neighbours.c:3582
 msgid "# disconnect messages ignored (malformed)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3590
+#: src/transport/gnunet-service-transport_neighbours.c:3589
 msgid "# DISCONNECT messages received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3601
+#: src/transport/gnunet-service-transport_neighbours.c:3600
 msgid "# disconnect messages ignored (timestamp)"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_neighbours.c:3736
+#: src/transport/gnunet-service-transport_neighbours.c:3735
 msgid "# disconnected from peer upon explicit request"
 msgstr ""
 
@@ -7120,7 +7316,7 @@ msgstr ""
 #: src/transport/gnunet-service-transport_validation.c:491
 #: src/transport/gnunet-service-transport_validation.c:677
 #: src/transport/gnunet-service-transport_validation.c:997
-#: src/transport/gnunet-service-transport_validation.c:1610
+#: src/transport/gnunet-service-transport_validation.c:1609
 #, fuzzy
 msgid "# validations running"
 msgstr "sqlite 数据仓库"
@@ -7145,272 +7341,274 @@ msgstr ""
 msgid "# address revalidations started"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1124
+#: src/transport/gnunet-service-transport_validation.c:1123
 msgid "# PING message for different peer received"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1175
+#: src/transport/gnunet-service-transport_validation.c:1174
 #, c-format
 msgid "Plugin `%s' not available, cannot confirm having this address\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1188
+#: src/transport/gnunet-service-transport_validation.c:1187
 msgid "# failed address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1191
+#: src/transport/gnunet-service-transport_validation.c:1190
 #, c-format
 msgid "Address `%s' is not one of my addresses, not confirming PING\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1199
+#: src/transport/gnunet-service-transport_validation.c:1198
 msgid "# successful address checks during validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1212
+#: src/transport/gnunet-service-transport_validation.c:1211
 #, c-format
 msgid ""
 "Not confirming PING from peer `%s' with address `%s' since I cannot confirm "
 "having this address.\n"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1267
+#: src/transport/gnunet-service-transport_validation.c:1266
 #, fuzzy, c-format
 msgid "Failed to create PONG signature for peer `%s'\n"
 msgstr "发送消息失败。\n"
 
-#: src/transport/gnunet-service-transport_validation.c:1318
+#: src/transport/gnunet-service-transport_validation.c:1317
 msgid "# PONGs unicast via reliable transport"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1327
+#: src/transport/gnunet-service-transport_validation.c:1326
 msgid "# PONGs multicast to all available addresses"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1500
+#: src/transport/gnunet-service-transport_validation.c:1499
 msgid "# PONGs dropped, no matching pending validation"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1518
+#: src/transport/gnunet-service-transport_validation.c:1517
 msgid "# PONGs dropped, signature expired"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1573
+#: src/transport/gnunet-service-transport_validation.c:1572
 msgid "# validations succeeded"
 msgstr ""
 
-#: src/transport/gnunet-service-transport_validation.c:1628
+#: src/transport/gnunet-service-transport_validation.c:1627
 msgid "# HELLOs given to peerinfo"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:406
+#: src/transport/gnunet-transport-profiler.c:219
+#, c-format
+msgid "%llu B in %llu ms == %.2f KB/s!\n"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:617
+msgid "send data to peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:621
+msgid "receive data from peer"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:626
+msgid "iterations"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:631
+#, fuzzy
+msgid "number of messages to send"
+msgstr "每次迭代所使用的消息数量"
+
+#: src/transport/gnunet-transport-profiler.c:636
+#, fuzzy
+msgid "message size to use"
+msgstr "消息尺寸"
+
+#: src/transport/gnunet-transport-profiler.c:641
+#: src/transport/gnunet-transport.c:1462
+msgid "peer identity"
+msgstr ""
+
+#: src/transport/gnunet-transport-profiler.c:652
+#: src/transport/gnunet-transport.c:1482
+#, fuzzy
+msgid "Direct access to transport service."
+msgstr "初始化“%s”服务失败。\n"
+
+#: src/transport/gnunet-transport.c:413
 #, c-format
 msgid "Transmitted %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:415
+#: src/transport/gnunet-transport.c:423
 #, c-format
 msgid "Received %llu bytes/s (%llu bytes in %s)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:454
+#: src/transport/gnunet-transport.c:467
 #, fuzzy, c-format
 msgid "Failed to connect to `%s'\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:466
+#: src/transport/gnunet-transport.c:480
 #, fuzzy, c-format
 msgid "Failed to resolve address for peer `%s'\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/transport/gnunet-transport.c:477
+#: src/transport/gnunet-transport.c:494
 #, fuzzy
 msgid "Failed to list connections, timeout occurred\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:504
+#: src/transport/gnunet-transport.c:527
 #, c-format
 msgid "Transmitting %u bytes\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:537
+#: src/transport/gnunet-transport.c:561
 #, c-format
 msgid ""
 "Successfully connected to `%s', starting to send benchmark data in %u Kb "
 "blocks\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:566
+#: src/transport/gnunet-transport.c:592
 #, fuzzy, c-format
 msgid "Disconnected from peer `%s' while benchmarking\n"
 msgstr "“%s”已连接到“%s”。\n"
 
-#: src/transport/gnunet-transport.c:590 src/transport/gnunet-transport.c:619
+#: src/transport/gnunet-transport.c:616 src/transport/gnunet-transport.c:645
 #, c-format
 msgid "%24s: %-17s %4s   (%u connections in total)\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:592
+#: src/transport/gnunet-transport.c:618
 #, fuzzy
 msgid "Connected to"
 msgstr "“%s”已连接到“%s”。\n"
 
-#: src/transport/gnunet-transport.c:621
+#: src/transport/gnunet-transport.c:647
 #, fuzzy
 msgid "Disconnected from"
 msgstr "“%s”已连接到“%s”。\n"
 
-#: src/transport/gnunet-transport.c:654
+#: src/transport/gnunet-transport.c:682
 #, c-format
 msgid "Received %u bytes\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:690
+#: src/transport/gnunet-transport.c:719
 #, c-format
 msgid "Peer `%s': %s %s in state `%s' until %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:702
+#: src/transport/gnunet-transport.c:731
 #, fuzzy, c-format
 msgid "Peer `%s': %s %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/transport/gnunet-transport.c:1100
+#: src/transport/gnunet-transport.c:1144
 #, fuzzy
 msgid "Monitor disconnected from transport service. Reconnecting.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:1195
+#: src/transport/gnunet-transport.c:1251
 #, c-format
 msgid ""
 "Multiple operations given. Please choose only one operation: %s, %s, %s, %s, "
 "%s, %s %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1210
+#: src/transport/gnunet-transport.c:1264
 #, c-format
 msgid ""
 "No operation given. Please choose one operation: %s, %s, %s, %s, %s, %s, %s\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1238
+#: src/transport/gnunet-transport.c:1294
 #, fuzzy
 msgid "Failed to connect to transport service for disconnection\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:1244
+#: src/transport/gnunet-transport.c:1300
 msgid "Blacklisting request in place, stop with CTRL-C\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1266 src/transport/gnunet-transport.c:1292
-#: src/transport/gnunet-transport.c:1338
+#: src/transport/gnunet-transport.c:1325 src/transport/gnunet-transport.c:1355
+#: src/transport/gnunet-transport.c:1408
 #, fuzzy
 msgid "Failed to connect to transport service\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:1297
+#: src/transport/gnunet-transport.c:1362
 msgid "Starting to receive benchmark data\n"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1363
+#: src/transport/gnunet-transport.c:1433
 #, fuzzy
 msgid "print information for all peers (instead of only connected peers)"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/transport/gnunet-transport.c:1369
+#: src/transport/gnunet-transport.c:1437
 msgid "measure how fast we are receiving data from all peers (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1373
+#: src/transport/gnunet-transport.c:1441
 #, fuzzy
 msgid "disconnect from a peer"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/gnunet-transport.c:1379
+#: src/transport/gnunet-transport.c:1445
 msgid "provide information about all current connections (once)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1391
+#: src/transport/gnunet-transport.c:1453
 msgid ""
 "provide information about all connects and disconnect events (continuously)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1395
+#: src/transport/gnunet-transport.c:1457
 msgid "do not resolve hostnames"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1400
-#: src/transport/gnunet-transport-profiler.c:601
-msgid "peer identity"
-msgstr ""
-
-#: src/transport/gnunet-transport.c:1404
+#: src/transport/gnunet-transport.c:1466
 msgid "monitor plugin sessions"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1410
+#: src/transport/gnunet-transport.c:1471
 msgid "send data for benchmarking to the other peer (until CTRL-C)"
 msgstr ""
 
-#: src/transport/gnunet-transport.c:1422
-#: src/transport/gnunet-transport-profiler.c:613
-#, fuzzy
-msgid "Direct access to transport service."
-msgstr "初始化“%s”服务失败。\n"
-
-#: src/transport/gnunet-transport-profiler.c:220
-#, c-format
-msgid "%llu B in %llu ms == %.2f KB/s!\n"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:577
-msgid "send data to peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:581
-msgid "receive data from peer"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:586
-msgid "iterations"
-msgstr ""
-
-#: src/transport/gnunet-transport-profiler.c:591
-#, fuzzy
-msgid "number of messages to send"
-msgstr "每次迭代所使用的消息数量"
-
-#: src/transport/gnunet-transport-profiler.c:596
-#, fuzzy
-msgid "message size to use"
-msgstr "消息尺寸"
-
-#: src/transport/plugin_transport_http_client.c:1471
+#: src/transport/plugin_transport_http_client.c:1474
 #: src/transport/plugin_transport_http_server.c:2312
 #: src/transport/plugin_transport_http_server.c:3530
-#: src/transport/plugin_transport_tcp.c:3901
-#: src/transport/plugin_transport_tcp.c:3908
+#: src/transport/plugin_transport_tcp.c:3895
+#: src/transport/plugin_transport_tcp.c:3902
+#: src/transport/plugin_transport_xt.c:3899
+#: src/transport/plugin_transport_xt.c:3906
 msgid "TCP_STEALTH not supported on this platform.\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2112
+#: src/transport/plugin_transport_http_client.c:2115
 #, c-format
 msgid "Could not initialize curl multi handle, failed to start %s plugin!\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2161
+#: src/transport/plugin_transport_http_client.c:2164
 #: src/transport/plugin_transport_http_server.c:3245
 #, fuzzy, c-format
 msgid "Shutting down plugin `%s'\n"
 msgstr "未知的命令“%s”。\n"
 
-#: src/transport/plugin_transport_http_client.c:2178
+#: src/transport/plugin_transport_http_client.c:2181
 #: src/transport/plugin_transport_http_server.c:3315
 #, c-format
 msgid "Shutdown for plugin `%s' complete\n"
 msgstr ""
 
-#: src/transport/plugin_transport_http_client.c:2212
+#: src/transport/plugin_transport_http_client.c:2215
 #, fuzzy, c-format
 msgid "Maximum number of requests is %u\n"
 msgstr "增加 TCP/IP 的最大连接数"
@@ -7460,6 +7658,7 @@ msgstr ""
 
 #: src/transport/plugin_transport_http_server.c:2905
 #: src/transport/plugin_transport_udp.c:3627
+#: src/transport/plugin_transport_xu.c:2049
 msgid "Disabling IPv6 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7561,120 +7760,132 @@ msgstr ""
 msgid "# bytes dropped by SMTP (outgoing)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1557
-#: src/transport/plugin_transport_tcp.c:2883
+#: src/transport/plugin_transport_tcp.c:1551
+#: src/transport/plugin_transport_tcp.c:2877
+#: src/transport/plugin_transport_xt.c:1553
+#: src/transport/plugin_transport_xt.c:2879
 #, c-format
 msgid "Unexpected address length: %u bytes\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1740
-#: src/transport/plugin_transport_tcp.c:1964
-#: src/transport/plugin_transport_tcp.c:3147
-#: src/transport/plugin_transport_tcp.c:4024
+#: src/transport/plugin_transport_tcp.c:1734
+#: src/transport/plugin_transport_tcp.c:1958
+#: src/transport/plugin_transport_tcp.c:3141
+#: src/transport/plugin_transport_tcp.c:4018
+#: src/transport/plugin_transport_xt.c:1736
+#: src/transport/plugin_transport_xt.c:1960
+#: src/transport/plugin_transport_xt.c:3143
 msgid "# TCP sessions active"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1782
-#: src/transport/plugin_transport_tcp.c:1946
-#: src/transport/plugin_transport_tcp.c:2070
-#: src/transport/plugin_transport_tcp.c:2143
-#: src/transport/plugin_transport_tcp.c:2243
-#: src/transport/plugin_transport_tcp.c:2268
+#: src/transport/plugin_transport_tcp.c:1776
+#: src/transport/plugin_transport_tcp.c:1940
+#: src/transport/plugin_transport_tcp.c:2064
+#: src/transport/plugin_transport_tcp.c:2137
+#: src/transport/plugin_transport_tcp.c:2237
+#: src/transport/plugin_transport_tcp.c:2262
+#: src/transport/plugin_transport_xt.c:1778
+#: src/transport/plugin_transport_xt.c:1942
+#: src/transport/plugin_transport_xt.c:2066
+#: src/transport/plugin_transport_xt.c:2139
+#: src/transport/plugin_transport_xt.c:2239
+#: src/transport/plugin_transport_xt.c:2264
 msgid "# bytes currently in TCP buffers"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:1785
+#: src/transport/plugin_transport_tcp.c:1779
+#: src/transport/plugin_transport_xt.c:1781
 msgid "# bytes discarded by TCP (disconnect)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2073
+#: src/transport/plugin_transport_tcp.c:2067
+#: src/transport/plugin_transport_xt.c:2069
 msgid "# bytes discarded by TCP (timeout)"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2147
+#: src/transport/plugin_transport_tcp.c:2141
+#: src/transport/plugin_transport_xt.c:2143
 msgid "# bytes transmitted via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2545
+#: src/transport/plugin_transport_tcp.c:2539
+#: src/transport/plugin_transport_xt.c:2541
 msgid "# requests to create session with invalid address"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:2721
+#: src/transport/plugin_transport_tcp.c:2715
+#: src/transport/plugin_transport_xt.c:2717
 msgid "# transport-service disconnect requests for TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3213
+#: src/transport/plugin_transport_tcp.c:3207
+#: src/transport/plugin_transport_xt.c:3209
 msgid "# TCP WELCOME messages received"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3419
+#: src/transport/plugin_transport_tcp.c:3413
+#: src/transport/plugin_transport_xt.c:3415
 msgid "# bytes received via TCP"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3470
-#: src/transport/plugin_transport_tcp.c:3528
+#: src/transport/plugin_transport_tcp.c:3464
+#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_xt.c:3466
+#: src/transport/plugin_transport_xt.c:3524
 #, fuzzy
 msgid "# TCP server connections active"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_tcp.c:3468
+#: src/transport/plugin_transport_xt.c:3470
 #, fuzzy
 msgid "# TCP server connect events"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/transport/plugin_transport_tcp.c:3480
+#: src/transport/plugin_transport_tcp.c:3474
+#: src/transport/plugin_transport_xt.c:3476
 msgid "TCP connection limit reached, suspending server\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3482
+#: src/transport/plugin_transport_tcp.c:3476
+#: src/transport/plugin_transport_xt.c:3478
 msgid "# TCP service suspended"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3522
+#: src/transport/plugin_transport_tcp.c:3516
+#: src/transport/plugin_transport_xt.c:3518
 msgid "# TCP service resumed"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3532
+#: src/transport/plugin_transport_tcp.c:3526
+#: src/transport/plugin_transport_xt.c:3528
 msgid "# network-level TCP disconnect events"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:3851
+#: src/transport/plugin_transport_tcp.c:3845
+#: src/transport/plugin_transport_xt.c:3849
 #, fuzzy
 msgid "Failed to start service.\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/transport/plugin_transport_tcp.c:4012
+#: src/transport/plugin_transport_tcp.c:4006
 #, c-format
 msgid "TCP transport listening on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4016
+#: src/transport/plugin_transport_tcp.c:4010
 msgid "TCP transport not listening on any port (client only)\n"
 msgstr ""
 
-#: src/transport/plugin_transport_tcp.c:4020
+#: src/transport/plugin_transport_tcp.c:4014
 #, c-format
 msgid "TCP transport advertises itself as being on port %llu\n"
 msgstr ""
 
-#: src/transport/plugin_transport_udp_broadcasting.c:168
-msgid "# Multicast HELLO beacons received via UDP"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:548
-msgid ""
-"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
-msgstr ""
-
-#: src/transport/plugin_transport_udp_broadcasting.c:565
-#, c-format
-msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
-msgstr ""
-
 #: src/transport/plugin_transport_udp.c:3371
 #, c-format
 msgid ""
@@ -7695,6 +7906,7 @@ msgid "Failed to bind UDP socket to %s: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
 #: src/transport/plugin_transport_udp.c:3721
+#: src/transport/plugin_transport_xu.c:2143
 msgid "Disabling IPv4 since it is not supported on this system!\n"
 msgstr ""
 
@@ -7705,15 +7917,19 @@ msgstr "打开日志文件“%s”失败:%s\n"
 
 #: src/transport/plugin_transport_udp.c:3883
 #: src/transport/plugin_transport_udp.c:3897
+#: src/transport/plugin_transport_xu.c:2301
+#: src/transport/plugin_transport_xu.c:2315
 msgid "must be in [0,65535]"
 msgstr ""
 
 #: src/transport/plugin_transport_udp.c:3929
+#: src/transport/plugin_transport_xu.c:2347
 #, fuzzy
 msgid "must be valid IPv4 address"
 msgstr "“%s”不可用。\n"
 
 #: src/transport/plugin_transport_udp.c:3956
+#: src/transport/plugin_transport_xu.c:2374
 #, fuzzy
 msgid "must be valid IPv6 address"
 msgstr "“%s”不可用。\n"
@@ -7723,6 +7939,20 @@ msgstr "“%s”不可用。\n"
 msgid "Failed to create UDP network sockets\n"
 msgstr "发送消息失败。\n"
 
+#: src/transport/plugin_transport_udp_broadcasting.c:168
+msgid "# Multicast HELLO beacons received via UDP"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:548
+msgid ""
+"Disabling HELLO broadcasting due to friend-to-friend only configuration!\n"
+msgstr ""
+
+#: src/transport/plugin_transport_udp_broadcasting.c:565
+#, c-format
+msgid "Failed to set IPv4 broadcast option for broadcast socket on port %d\n"
+msgstr ""
+
 #: src/transport/plugin_transport_unix.c:1416
 #, fuzzy, c-format
 msgid "Cannot bind to `%s'\n"
@@ -7790,6 +8020,56 @@ msgstr ""
 msgid "# sessions allocated"
 msgstr ""
 
+#: src/transport/plugin_transport_xt.c:4010
+#, c-format
+msgid "XT transport listening on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4014
+msgid "XT transport not listening on any port (client only)\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4018
+#, c-format
+msgid "XT transport advertises itself as being on port %llu\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xt.c:4022
+#, fuzzy
+msgid "# XT sessions active"
+msgstr ""
+"\n"
+"按任意键继续\n"
+
+#: src/transport/plugin_transport_xu.c:1237
+#, c-format
+msgid ""
+"XU could not transmit message to `%s': Network seems down, please check your "
+"network configuration\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:1251
+msgid ""
+"XU could not transmit IPv6 message! Please check your network configuration "
+"and disable IPv6 if your connection does not have a global IPv6 address\n"
+msgstr ""
+
+#: src/transport/plugin_transport_xu.c:2125
+#: src/transport/plugin_transport_xu.c:2224
+#, fuzzy, c-format
+msgid "Failed to bind XU socket to %s: %s\n"
+msgstr "打开日志文件“%s”失败:%s\n"
+
+#: src/transport/plugin_transport_xu.c:2234
+#, fuzzy
+msgid "Failed to open XU sockets\n"
+msgstr "打开日志文件“%s”失败:%s\n"
+
+#: src/transport/plugin_transport_xu.c:2398
+#, fuzzy
+msgid "Failed to create XU network sockets\n"
+msgstr "发送消息失败。\n"
+
 #: src/transport/tcp_connection_legacy.c:452
 #, fuzzy, c-format
 msgid "Access denied to `%s'\n"
@@ -7800,17 +8080,17 @@ msgstr "“%s”已连接到“%s”。\n"
 msgid "Accepting connection from `%s': %p\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1624
+#: src/transport/tcp_server_legacy.c:474 src/util/service.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1634
+#: src/transport/tcp_server_legacy.c:484 src/util/service.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr ""
 
-#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1640
+#: src/transport/tcp_server_legacy.c:490 src/util/service.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
@@ -7822,7 +8102,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:339 src/util/service.c:864
+#: src/transport/tcp_service_legacy.c:339 src/util/service.c:2396
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -7832,27 +8112,27 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:402 src/util/service.c:988
+#: src/transport/tcp_service_legacy.c:402 src/util/service.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:440 src/util/service.c:1031
+#: src/transport/tcp_service_legacy.c:440 src/util/service.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1555
+#: src/transport/tcp_service_legacy.c:904 src/util/service.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
 #: src/transport/tcp_service_legacy.c:953
-#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1708
+#: src/transport/tcp_service_legacy.c:971 src/util/service.c:1195
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1741
+#: src/transport/tcp_service_legacy.c:996 src/util/service.c:1228
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -7867,45 +8147,44 @@ msgstr "运行 %s失败:%s %d\n"
 msgid "Service `%s' runs at %s\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:2015
+#: src/transport/tcp_service_legacy.c:1251 src/util/service.c:1502
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:2019
+#: src/transport/tcp_service_legacy.c:1255 src/util/service.c:1506
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:2023
+#: src/transport/tcp_service_legacy.c:1259 src/util/service.c:1510
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1535
-#: src/util/service.c:1893
+#: src/transport/tcp_service_legacy.c:1313 src/util/disk.c:1525
+#: src/util/service.c:1380
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1895
+#: src/transport/tcp_service_legacy.c:1314 src/util/service.c:1382
 msgid "No such user"
 msgstr "无此用户"
 
-#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1914
+#: src/transport/tcp_service_legacy.c:1327 src/util/service.c:1401
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "无法更改用户/组为“%s”:%s\n"
 
-#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:2276
+#: src/transport/tcp_service_legacy.c:1398 src/util/service.c:1762
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/transport/tcp_service_legacy.c:1448
-#: src/transport/transport-testing2.c:706 src/util/service.c:2340
-#: src/util/service.c:2355
+#: src/transport/tcp_service_legacy.c:1448 src/util/service.c:1826
+#: src/util/service.c:1841
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:2367
+#: src/transport/tcp_service_legacy.c:1458 src/util/service.c:1853
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -7915,7 +8194,7 @@ msgstr "解析配置文件“%s”失败\n"
 msgid "Could not access configuration file `%s'\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/transport/transport_api2_communication.c:707
+#: src/transport/transport_api2_communication.c:764
 msgid "Dropped backchanel message: handler not provided by communicator\n"
 msgstr ""
 
@@ -7948,67 +8227,67 @@ msgstr ""
 msgid "Metadata `%s' failed to deserialize"
 msgstr ""
 
-#: src/util/client.c:749
+#: src/util/client.c:734
 msgid "not a valid filename"
 msgstr ""
 
-#: src/util/client.c:941
+#: src/util/client.c:925
 #, c-format
 msgid "Need a non-empty hostname for service `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:267 src/util/common_logging.c:1159
+#: src/util/common_logging.c:259 src/util/common_logging.c:1162
 msgid "DEBUG"
 msgstr "调试"
 
-#: src/util/common_logging.c:269 src/util/common_logging.c:1157
+#: src/util/common_logging.c:261 src/util/common_logging.c:1160
 msgid "INFO"
 msgstr "信息"
 
-#: src/util/common_logging.c:271 src/util/common_logging.c:1155
+#: src/util/common_logging.c:263 src/util/common_logging.c:1158
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:273 src/util/common_logging.c:1153
+#: src/util/common_logging.c:265 src/util/common_logging.c:1156
 msgid "WARNING"
 msgstr "警告"
 
-#: src/util/common_logging.c:275 src/util/common_logging.c:1151
+#: src/util/common_logging.c:267 src/util/common_logging.c:1154
 msgid "ERROR"
 msgstr "错误"
 
-#: src/util/common_logging.c:277 src/util/common_logging.c:1161
+#: src/util/common_logging.c:269 src/util/common_logging.c:1164
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:639 src/util/common_logging.c:675
+#: src/util/common_logging.c:633 src/util/common_logging.c:663
 #, c-format
 msgid "ERROR: Unable to parse log definition: Syntax error at `%s'.\n"
 msgstr ""
 
-#: src/util/common_logging.c:923
+#: src/util/common_logging.c:898
 #, fuzzy, c-format
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "消息“%.*s”重复了 %u 次,在最近 %llu 秒内\n"
 
-#: src/util/common_logging.c:1162
+#: src/util/common_logging.c:1165
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1447
+#: src/util/common_logging.c:1458
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1489
+#: src/util/common_logging.c:1500
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1508
+#: src/util/common_logging.c:1518
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "配置不满足配置规范文件“%s”的约束!\n"
 
-#: src/util/common_logging.c:1531
+#: src/util/common_logging.c:1539
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8056,26 +8335,26 @@ msgstr ""
 #: src/util/container_bloomfilter.c:532
 #, c-format
 msgid ""
-"Size of file on disk is incorrect for this Bloom filter (want %llu, have "
-"%llu)\n"
+"Size of file on disk is incorrect for this Bloom filter (want %llu, have %"
+"llu)\n"
 msgstr ""
 
-#: src/util/crypto_ecc.c:949
+#: src/util/crypto_ecc.c:862
 #, fuzzy, c-format
 msgid "ECC signing failed at %s:%d: %s\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/crypto_ecc.c:1007
+#: src/util/crypto_ecc.c:917
 #, fuzzy, c-format
 msgid "EdDSA signing failed at %s:%d: %s\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/crypto_ecc.c:1094
+#: src/util/crypto_ecc.c:996
 #, fuzzy, c-format
 msgid "ECDSA signature verification failed at %s:%d: %s\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/crypto_ecc.c:1163
+#: src/util/crypto_ecc.c:1057
 #, fuzzy, c-format
 msgid "EdDSA signature verification failed at %s:%d: %s\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
@@ -8110,7 +8389,7 @@ msgstr ""
 msgid "Could not load peer's private key\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/util/crypto_random.c:329
+#: src/util/crypto_random.c:306
 #, c-format
 msgid "libgcrypt has not the expected version (version %s is required).\n"
 msgstr "libgcrypt 的版本不符合预期(要求版本 %s)。\n"
@@ -8125,7 +8404,7 @@ msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 msgid "RSA signature verification failed at %s:%d: %s\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/disk.c:1265
+#: src/util/disk.c:1255
 #, c-format
 msgid "Expected `%s' to be a directory!\n"
 msgstr "“%s”应为目录!\n"
@@ -8135,7 +8414,7 @@ msgstr "“%s”应为目录!\n"
 msgid "Failed to convert DNS IDNA name `%s' to UTF-8: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/util/dnsparser.c:910
+#: src/util/dnsparser.c:950
 #, fuzzy, c-format
 msgid "Failed to convert UTF-8 name `%s' to DNS IDNA format: %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
@@ -8160,7 +8439,7 @@ msgstr "打开日志文件“%s”失败:%s\n"
 msgid "Sent DNS request to %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/util/getopt.c:567
+#: src/util/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr "%s:选项“%s”有歧义\n"
@@ -8170,178 +8449,169 @@ msgstr "%s:选项“%s”有歧义\n"
 msgid "%s: option `--%s' does not allow an argument\n"
 msgstr "%s:选项“--%s”不允许有参数\n"
 
-#: src/util/getopt.c:598
+#: src/util/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' does not allow an argument\n"
 msgstr "%s:选项“%c%s”不允许有参数\n"
 
-#: src/util/getopt.c:618 src/util/getopt.c:799
+#: src/util/getopt.c:614 src/util/getopt.c:781
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr "%s:选项“%s”要求有一个参数\n"
 
-#: src/util/getopt.c:649
+#: src/util/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr "%s:无法识别的选项“--%s”\n"
 
-#: src/util/getopt.c:655
+#: src/util/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr "%s:无法识别的选项“%c%s”\n"
 
-#: src/util/getopt.c:682
+#: src/util/getopt.c:672
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr "%s:非法选项 -- %c\n"
 
-#: src/util/getopt.c:684
+#: src/util/getopt.c:674
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr "%s:无效选项 -- %c\n"
 
-#: src/util/getopt.c:713 src/util/getopt.c:849
+#: src/util/getopt.c:702 src/util/getopt.c:829
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s:选项要求有一个参数 -- %c\n"
 
-#: src/util/getopt.c:763
+#: src/util/getopt.c:750
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr "%s:选项“-W %s”有歧义\n"
 
-#: src/util/getopt.c:783
+#: src/util/getopt.c:768
 #, c-format
 msgid "%s: option `-W %s' does not allow an argument\n"
 msgstr "%s:选项“-W %s” 不允许有参数\n"
 
-#: src/util/getopt.c:975
+#: src/util/getopt.c:947
 #, fuzzy, c-format
 msgid "Use %s to get a list of options.\n"
 msgstr "请使用 --help 获取选项列表。\n"
 
-#: src/util/getopt.c:987
-#, c-format
-msgid "Option `%s' can't be used with other options.\n"
-msgstr ""
-
-#: src/util/getopt.c:999
+#: src/util/getopt.c:962
 #, fuzzy, c-format
 msgid "Missing mandatory option `%s'.\n"
 msgstr "配置文件“%s”已写入。\n"
 
-#: src/util/getopt_helpers.c:68
+#: src/util/getopt_helpers.c:70
 msgid "print the version number"
 msgstr ""
 
-#: src/util/getopt_helpers.c:113
+#: src/util/getopt_helpers.c:116
 #, c-format
 msgid ""
 "Arguments mandatory for long options are also mandatory for short options.\n"
 msgstr "长选项的必选参数对短选项也是必选的。\n"
 
-#: src/util/getopt_helpers.c:201
+#: src/util/getopt_helpers.c:204
 msgid "print this help"
 msgstr ""
 
-#: src/util/getopt_helpers.c:277 src/util/gnunet-qr.c:296
+#: src/util/getopt_helpers.c:282
 msgid "be verbose"
 msgstr ""
 
-#: src/util/getopt_helpers.c:413
+#: src/util/getopt_helpers.c:423
 msgid "configure logging to use LOGLEVEL"
 msgstr ""
 
-#: src/util/getopt_helpers.c:491
+#: src/util/getopt_helpers.c:503
 msgid "configure logging to write logs to FILENAME"
 msgstr ""
 
-#: src/util/getopt_helpers.c:512
+#: src/util/getopt_helpers.c:525
 #, fuzzy
 msgid "use configuration file FILENAME"
 msgstr "更改配置文件中的一个值"
 
-#: src/util/getopt_helpers.c:547 src/util/getopt_helpers.c:741
-#: src/util/getopt_helpers.c:804
+#: src/util/getopt_helpers.c:564 src/util/getopt_helpers.c:770
+#: src/util/getopt_helpers.c:839
 #, c-format
 msgid "You must pass a number to the `%s' option.\n"
 msgstr "您必须向“%s”选项传递一个数字。\n"
 
-#: src/util/getopt_helpers.c:608
+#: src/util/getopt_helpers.c:629
 #, fuzzy, c-format
 msgid "You must pass relative time to the `%s' option.\n"
 msgstr "您必须向“%s”选项传递一个数字。\n"
 
-#: src/util/getopt_helpers.c:670
+#: src/util/getopt_helpers.c:695
 #, fuzzy, c-format
 msgid "You must pass absolute time to the `%s' option.\n"
 msgstr "您必须向“%s”选项传递一个数字。\n"
 
-#: src/util/getopt_helpers.c:734
+#: src/util/getopt_helpers.c:760
 #, c-format
 msgid "Your input for the '%s' option has to be a non negative number \n"
 msgstr ""
 
-#: src/util/getopt_helpers.c:811
+#: src/util/getopt_helpers.c:846
 #, fuzzy, c-format
 msgid "You must pass a number below %u to the `%s' option.\n"
 msgstr "您必须向“%s”选项传递一个数字。\n"
 
-#: src/util/getopt_helpers.c:896
+#: src/util/getopt_helpers.c:932
 #, c-format
 msgid "Argument `%s' malformed. Expected base32 (Crockford) encoded value.\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:167
+#: src/util/gnunet-config.c:160
 #, fuzzy, c-format
 msgid "failed to load configuration defaults"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/gnunet-config.c:179
+#: src/util/gnunet-config.c:173
 #, fuzzy, c-format
 msgid "%s or %s argument is required\n"
 msgstr "设置要使用的昵称(必须)"
 
-#: src/util/gnunet-config.c:186
+#: src/util/gnunet-config.c:181
 #, c-format
 msgid "The following sections are available:\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:234
+#: src/util/gnunet-config.c:232
 #, c-format
 msgid "--option argument required to set value\n"
 msgstr ""
 
-#: src/util/gnunet-config.c:284
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:286
+msgid "obtain option of value as a filename (with $-expansion)"
 msgstr ""
 
 #: src/util/gnunet-config.c:291
-msgid "test if the current installation supports the specified BACKEND"
-msgstr ""
-
-#: src/util/gnunet-config.c:297
 msgid "name of the section to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:302
+#: src/util/gnunet-config.c:296
 msgid "name of the option to access"
 msgstr ""
 
-#: src/util/gnunet-config.c:307
+#: src/util/gnunet-config.c:301
 msgid "value to set"
 msgstr ""
 
-#: src/util/gnunet-config.c:312
+#: src/util/gnunet-config.c:305
 #, fuzzy
 msgid "print available configuration sections"
 msgstr "立即保存配置?"
 
-#: src/util/gnunet-config.c:318
+#: src/util/gnunet-config.c:309
 msgid "write configuration file that only contains delta to defaults"
 msgstr ""
 
-#: src/util/gnunet-config.c:330
+#: src/util/gnunet-config.c:322
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "更改配置文件中的一个值"
@@ -8351,116 +8621,89 @@ msgstr "更改配置文件中的一个值"
 msgid "Failed to open `%s': %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/util/gnunet-ecc.c:129
+#: src/util/gnunet-ecc.c:130
 #, c-format
 msgid "Generating %u keys like %s, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:142
+#: src/util/gnunet-ecc.c:143
 #, c-format
 msgid "Generating %u keys, please wait"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:183
+#: src/util/gnunet-ecc.c:184
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Failed to write to `%s': %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/util/gnunet-ecc.c:193
+#: src/util/gnunet-ecc.c:194
 #, c-format
 msgid ""
 "\n"
 "Finished!\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:196
+#: src/util/gnunet-ecc.c:197
 #, c-format
 msgid ""
 "\n"
 "Error, %u keys not generated\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:289
+#: src/util/gnunet-ecc.c:290
 #, c-format
 msgid "Hostkeys file `%s' not found\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:304
+#: src/util/gnunet-ecc.c:305
 #, fuzzy, c-format
 msgid "Hostkeys file `%s' is empty\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/util/gnunet-ecc.c:333
+#: src/util/gnunet-ecc.c:334
 #, fuzzy, c-format
 msgid "Could not read hostkey file: %s\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/util/gnunet-ecc.c:390
+#: src/util/gnunet-ecc.c:391
 msgid "No hostkey file specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:455
+#: src/util/gnunet-ecc.c:456
 msgid "list keys included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:460
+#: src/util/gnunet-ecc.c:461
 msgid "number of keys to list included in a file (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:465
+#: src/util/gnunet-ecc.c:466
 msgid "create COUNT public-private key pairs (for testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:469
+#: src/util/gnunet-ecc.c:470
 msgid "print the public key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:473
+#: src/util/gnunet-ecc.c:474
 msgid "print the private key in ASCII format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:477
+#: src/util/gnunet-ecc.c:478
 msgid "print the public key in HEX format"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:481
+#: src/util/gnunet-ecc.c:482
 msgid "print examples of ECC operations (used for compatibility testing)"
 msgstr ""
 
-#: src/util/gnunet-ecc.c:497
+#: src/util/gnunet-ecc.c:498
 #, fuzzy
 msgid "Manipulate GNUnet private ECC key files"
 msgstr "更改配置文件中的一个值"
 
-#: src/util/gnunet-qr.c:110 src/util/gnunet-uri.c:94
-#, fuzzy, c-format
-msgid "Invalid URI: does not start with `%s'\n"
-msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n"
-
-#: src/util/gnunet-qr.c:117 src/util/gnunet-uri.c:101
-#, c-format
-msgid "Invalid URI: fails to specify subsystem\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:124 src/util/gnunet-uri.c:108
-#, c-format
-msgid "No handler known for subsystem `%s'\n"
-msgstr ""
-
-#: src/util/gnunet-qr.c:292
-msgid "use video-device DEVICE (default: /dev/video0"
-msgstr ""
-
-#: src/util/gnunet-qr.c:300
-msgid "do not show preview windows"
-msgstr ""
-
-#: src/util/gnunet-qr.c:309
-msgid "Scan a QR code using a video device and import the uri read"
-msgstr ""
-
 #: src/util/gnunet-resolver.c:168
 msgid "perform a reverse lookup"
 msgstr ""
@@ -8469,42 +8712,57 @@ msgstr ""
 msgid "Use build-in GNUnet stub resolver"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:239
+#: src/util/gnunet-scrypt.c:242
 #, c-format
 msgid "Loading hostkey from `%s' failed.\n"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:305
+#: src/util/gnunet-scrypt.c:317
 msgid "number of bits to require for the proof of work"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:311
+#: src/util/gnunet-scrypt.c:322
 msgid "file with private key, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:317
+#: src/util/gnunet-scrypt.c:327
 msgid "file with proof of work, otherwise default is used"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:323
+#: src/util/gnunet-scrypt.c:332
 msgid "time to wait between calculations"
 msgstr ""
 
-#: src/util/gnunet-scrypt.c:336
+#: src/util/gnunet-scrypt.c:345
 #, fuzzy
 msgid "Manipulate GNUnet proof of work files"
 msgstr "更改配置文件中的一个值"
 
-#: src/util/gnunet-service-resolver.c:1272
+#: src/util/gnunet-service-resolver.c:1443
 msgid "No DNS server available. DNS resolution will not be possible.\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:88
+#: src/util/gnunet-uri.c:85
 #, c-format
 msgid "No URI specified on command line\n"
 msgstr ""
 
-#: src/util/gnunet-uri.c:178
+#: src/util/gnunet-uri.c:91
+#, fuzzy, c-format
+msgid "Invalid URI: does not start with `%s'\n"
+msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n"
+
+#: src/util/gnunet-uri.c:98
+#, c-format
+msgid "Invalid URI: fails to specify subsystem\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:108
+#, c-format
+msgid "No handler known for subsystem `%s'\n"
+msgstr ""
+
+#: src/util/gnunet-uri.c:170
 msgid "Perform default-actions for GNUnet URIs"
 msgstr ""
 
@@ -8523,12 +8781,12 @@ msgstr "打开日志文件“%s”失败:%s\n"
 msgid "Error writing to `%s': %s\n"
 msgstr "创建用户出错"
 
-#: src/util/network.c:176
+#: src/util/network.c:136
 #, c-format
 msgid "Unable to shorten unix path `%s' while keeping name unique\n"
 msgstr ""
 
-#: src/util/network.c:1835 src/util/network.c:2019
+#: src/util/network.c:1795 src/util/network.c:1979
 #, c-format
 msgid ""
 "Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"
@@ -8541,22 +8799,22 @@ msgid ""
 "variable.\n"
 msgstr "无法确定安装路径。请尝试设置“%s”\n"
 
-#: src/util/os_installation.c:929
+#: src/util/os_installation.c:881
 #, fuzzy, c-format
 msgid "Could not find binary `%s' in PATH!\n"
 msgstr "找不到主机“%s”的 IP:%s\n"
 
-#: src/util/os_installation.c:970
+#: src/util/os_installation.c:922
 #, c-format
 msgid "Binary `%s' exists, but is not SUID\n"
 msgstr ""
 
-#: src/util/os_installation.c:1001
+#: src/util/os_installation.c:953
 #, fuzzy, c-format
 msgid "CreateProcess failed for binary %s (%d).\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/os_installation.c:1011
+#: src/util/os_installation.c:963
 #, c-format
 msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 msgstr ""
@@ -8581,17 +8839,17 @@ msgstr ""
 msgid "Could not determine plugin installation path.\n"
 msgstr "无法确定用户界面定义文件。"
 
-#: src/util/program.c:255
+#: src/util/program.c:283
 #, fuzzy, c-format
 msgid "Unreadable or malformed configuration file `%s', exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:301
 #, fuzzy, c-format
 msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/program.c:287
+#: src/util/program.c:318
 #, fuzzy
 msgid "Unreadable or malformed configuration, exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -8634,16 +8892,16 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "无法解析“%s”(%s):%s\n"
 
-#: src/util/service.c:668
-#, c-format
+#: src/util/service.c:1307
 msgid ""
-"Processing code for message of type %u did not call "
-"`GNUNET_SERVICE_client_continue' after %s\n"
+"Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service.c:1820
+#: src/util/service.c:2141
+#, c-format
 msgid ""
-"Could not bind to any of the ports I was supposed to, refusing to run!\n"
+"Processing code for message of type %u did not call "
+"`GNUNET_SERVICE_client_continue' after %s\n"
 msgstr ""
 
 #: src/util/signal.c:89
@@ -8651,12 +8909,12 @@ msgstr ""
 msgid "signal (%d, %p) returned %d.\n"
 msgstr ""
 
-#: src/util/socks.c:617
+#: src/util/socks.c:597
 #, c-format
 msgid "Attempting to use invalid port %d as SOCKS proxy for service `%s'.\n"
 msgstr ""
 
-#: src/util/socks.c:634
+#: src/util/socks.c:616
 #, c-format
 msgid "Attempting to proxy service `%s' to invalid port %d or hostname.\n"
 msgstr ""
@@ -8665,230 +8923,230 @@ msgstr ""
 msgid "b"
 msgstr "b"
 
-#: src/util/strings.c:500
+#: src/util/strings.c:475
 #, c-format
 msgid "Character sets requested were `%s'->`%s'\n"
 msgstr ""
 
-#: src/util/strings.c:627
+#: src/util/strings.c:602
 msgid "Failed to expand `$HOME': environment variable `HOME' not set"
 msgstr "扩展“$HOME”失败:没有设置环境变量“HOME”"
 
-#: src/util/strings.c:731
+#: src/util/strings.c:706
 msgid "µs"
 msgstr ""
 
-#: src/util/strings.c:735
+#: src/util/strings.c:710
 msgid "forever"
 msgstr ""
 
-#: src/util/strings.c:737
+#: src/util/strings.c:712
 msgid "0 ms"
 msgstr ""
 
-#: src/util/strings.c:743
+#: src/util/strings.c:718
 msgid "ms"
 msgstr "毫秒"
 
-#: src/util/strings.c:749
+#: src/util/strings.c:724
 msgid "s"
 msgstr "秒"
 
-#: src/util/strings.c:755
+#: src/util/strings.c:730
 msgid "m"
 msgstr "分"
 
-#: src/util/strings.c:761
+#: src/util/strings.c:736
 msgid "h"
 msgstr "时"
 
-#: src/util/strings.c:768
+#: src/util/strings.c:743
 #, fuzzy
 msgid "day"
 msgstr " 天"
 
-#: src/util/strings.c:770
+#: src/util/strings.c:745
 #, fuzzy
 msgid "days"
 msgstr " 天"
 
-#: src/util/strings.c:799
+#: src/util/strings.c:774
 msgid "end of time"
 msgstr ""
 
-#: src/util/strings.c:1301
+#: src/util/strings.c:1277
 msgid "IPv6 address did not start with `['\n"
 msgstr ""
 
-#: src/util/strings.c:1309
+#: src/util/strings.c:1285
 msgid "IPv6 address did contain ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1315
+#: src/util/strings.c:1291
 msgid "IPv6 address did contain ']' before ':' to separate port number\n"
 msgstr ""
 
-#: src/util/strings.c:1325
+#: src/util/strings.c:1301
 msgid "IPv6 address did contain a valid port number after the last ':'\n"
 msgstr ""
 
-#: src/util/strings.c:1334
+#: src/util/strings.c:1310
 #, fuzzy, c-format
 msgid "Invalid IPv6 address `%s': %s\n"
 msgstr "无效的进程优先级“%s”\n"
 
-#: src/util/strings.c:1610 src/util/strings.c:1626
+#: src/util/strings.c:1586 src/util/strings.c:1602
 msgid "Port not in range\n"
 msgstr ""
 
-#: src/util/strings.c:1635
+#: src/util/strings.c:1611
 #, fuzzy, c-format
 msgid "Malformed port policy `%s'\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/strings.c:1720 src/util/strings.c:1752 src/util/strings.c:1801
-#: src/util/strings.c:1822
+#: src/util/strings.c:1696 src/util/strings.c:1728 src/util/strings.c:1777
+#: src/util/strings.c:1798
 #, c-format
 msgid "Invalid format for IP: `%s'\n"
 msgstr "IP 格式无效:“%s”\n"
 
-#: src/util/strings.c:1778
+#: src/util/strings.c:1754
 #, c-format
 msgid "Invalid network notation ('/%d' is not legal in IPv4 CIDR)."
 msgstr "网络表示法无效(“/%d” 在 IPv4 CIDR 中是非法的)。"
 
-#: src/util/strings.c:1831
+#: src/util/strings.c:1807
 #, fuzzy, c-format
 msgid "Invalid format: `%s'\n"
 msgstr "IP 格式无效:“%s”\n"
 
-#: src/util/strings.c:1884
+#: src/util/strings.c:1860
 #, c-format
 msgid "Invalid network notation (does not end with ';': `%s')\n"
 msgstr "无效的网络表示法(没有以“;”结尾:“%s”)\n"
 
-#: src/util/strings.c:1938
+#: src/util/strings.c:1914
 #, c-format
 msgid "Wrong format `%s' for netmask\n"
 msgstr "网络掩码的格式“%s”错误\n"
 
-#: src/util/strings.c:1969
+#: src/util/strings.c:1945
 #, c-format
 msgid "Wrong format `%s' for network\n"
 msgstr "网络的格式“%s”错误\n"
 
-#: src/util/time.c:844 src/util/time.c:876
+#: src/util/time.c:828 src/util/time.c:860
 #, c-format
 msgid "Failed to map `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/util/time.c:882
+#: src/util/time.c:866
 #, c-format
 msgid ""
 "Failed to setup monotonic time file `%s', cannot assure monotonic time!\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:527 src/vpn/gnunet-service-vpn.c:1770
+#: src/vpn/gnunet-service-vpn.c:540 src/vpn/gnunet-service-vpn.c:1807
 msgid "# Active channels"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:586
+#: src/vpn/gnunet-service-vpn.c:599
 msgid "# Messages dropped in cadet queue (overflow)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:739
+#: src/vpn/gnunet-service-vpn.c:753
 msgid "# ICMP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1095
+#: src/vpn/gnunet-service-vpn.c:1096
 msgid "# UDP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1243
+#: src/vpn/gnunet-service-vpn.c:1255
 msgid "# TCP packets received from cadet"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1439
+#: src/vpn/gnunet-service-vpn.c:1467
 #, fuzzy
 msgid "# Cadet channels created"
 msgstr ""
 "\n"
 "按任意键继续\n"
 
-#: src/vpn/gnunet-service-vpn.c:1658
+#: src/vpn/gnunet-service-vpn.c:1687
 #, c-format
 msgid "Protocol %u not supported, dropping\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1792
+#: src/vpn/gnunet-service-vpn.c:1826
 msgid "# Packets dropped (channel not yet online)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:1982
+#: src/vpn/gnunet-service-vpn.c:2006
 msgid "# ICMPv4 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2005
+#: src/vpn/gnunet-service-vpn.c:2027
 msgid "# ICMPv6 packets dropped (not allowed)"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2225
+#: src/vpn/gnunet-service-vpn.c:2235
 msgid "# Packets received from TUN interface"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2259 src/vpn/gnunet-service-vpn.c:2290
+#: src/vpn/gnunet-service-vpn.c:2268 src/vpn/gnunet-service-vpn.c:2304
 #, c-format
 msgid "Packet received for unmapped destination `%s' (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2297
+#: src/vpn/gnunet-service-vpn.c:2314
 msgid "Received IPv4 packet with options (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2312
+#: src/vpn/gnunet-service-vpn.c:2328
 #, c-format
 msgid "Received packet of unknown protocol %d from TUN (dropping it)\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2352
+#: src/vpn/gnunet-service-vpn.c:2367
 msgid "Failed to find unallocated IPv4 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2403
+#: src/vpn/gnunet-service-vpn.c:2422
 msgid "Failed to find unallocated IPv6 address in VPN's range\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2436 src/vpn/gnunet-service-vpn.c:2639
+#: src/vpn/gnunet-service-vpn.c:2464 src/vpn/gnunet-service-vpn.c:2686
 msgid "# Active destinations"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2684
+#: src/vpn/gnunet-service-vpn.c:2735
 msgid "Failed to allocate IP address for new destination\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2942
+#: src/vpn/gnunet-service-vpn.c:2998
 #, fuzzy
 msgid "Must specify valid IPv6 address"
 msgstr "“%s”不可用。\n"
 
-#: src/vpn/gnunet-service-vpn.c:2969
+#: src/vpn/gnunet-service-vpn.c:3022
 msgid "Must specify valid IPv6 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2978
+#: src/vpn/gnunet-service-vpn.c:3030
 msgid "IPv6 support disabled as this system does not support IPv6\n"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:2994
+#: src/vpn/gnunet-service-vpn.c:3043
 #, fuzzy
 msgid "Must specify valid IPv4 address"
 msgstr "“%s”不可用。\n"
 
-#: src/vpn/gnunet-service-vpn.c:3010
+#: src/vpn/gnunet-service-vpn.c:3056
 msgid "Must specify valid IPv4 mask"
 msgstr ""
 
-#: src/vpn/gnunet-service-vpn.c:3021
+#: src/vpn/gnunet-service-vpn.c:3066
 msgid "IPv4 support disabled as this system does not support IPv4\n"
 msgstr ""
 
@@ -8958,54 +9216,52 @@ msgstr ""
 msgid "Setup tunnels via VPN."
 msgstr ""
 
-#: src/zonemaster/gnunet-service-zonemaster.c:838
 #: src/zonemaster/gnunet-service-zonemaster-monitor.c:416
+#: src/zonemaster/gnunet-service-zonemaster.c:838
 #, fuzzy
 msgid "Failed to connect to the namestore!\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/include/gnunet_common.h:865 src/include/gnunet_common.h:883
-#: src/include/gnunet_common.h:905
+#: src/include/gnunet_common.h:772 src/include/gnunet_common.h:779
+#: src/include/gnunet_common.h:789
 #, fuzzy, c-format
 msgid "Assertion failed at %s:%d. Aborting.\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/include/gnunet_common.h:924
+#: src/include/gnunet_common.h:797
 #, c-format
 msgid "Assertion failed at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:946
+#: src/include/gnunet_common.h:809
 #, c-format
 msgid "External protocol violation detected at %s:%d.\n"
 msgstr ""
 
-#: src/include/gnunet_common.h:1000 src/include/gnunet_common.h:1020
+#: src/include/gnunet_common.h:836 src/include/gnunet_common.h:845
 #, c-format
 msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 msgstr ""
 
 #, fuzzy
-#~ msgid "# XT sessions active"
-#~ msgstr ""
-#~ "\n"
-#~ "按任意键继续\n"
+#~ msgid "Can not index file `%s': %s.\n"
+#~ msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
 #, fuzzy
-#~ msgid "Failed to bind XU socket to %s: %s\n"
-#~ msgstr "打开日志文件“%s”失败:%s\n"
+#~ msgid "`%s' is not a valid domain name\n"
+#~ msgstr "“%s”不可用。\n"
 
 #, fuzzy
-#~ msgid "Failed to open XU sockets\n"
-#~ msgstr "打开日志文件“%s”失败:%s\n"
+#~ msgid "Unable to parse CAA record string `%s'\n"
+#~ msgstr "解析配置文件“%s”失败\n"
 
 #, fuzzy
-#~ msgid "Failed to create XU network sockets\n"
-#~ msgstr "发送消息失败。\n"
+#~ msgid "display private keys as well"
+#~ msgstr "显示一个文件的散列值"
 
 #, fuzzy
-#~ msgid "Print information about DV state"
-#~ msgstr "æ\97 æ³\95è\8e·å\8f\96æ\9c\89å\85³ç\94¨æ\88·â\80\9c%sâ\80\9dç\9a\84ä¿¡æ\81¯ï¼\9a%s\n"
+#~ msgid "The EGO to use"
+#~ msgstr "æ\88æ\81¯å°ºå¯¸"
 
 #, fuzzy
 #~ msgid "Invalid tunnel owner `%s'\n"
@@ -9015,98 +9271,6 @@ msgstr ""
 #~ msgid "Provide information about a particular tunnel"
 #~ msgstr "无法获取有关用户“%s”的信息:%s\n"
 
-#, fuzzy
-#~ msgid "Failed to store membership information!\n"
-#~ msgstr "打开日志文件“%s”失败:%s\n"
-
-#, fuzzy
-#~ msgid "Failed to test membership!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Dropping invalid fragment\n"
-#~ msgstr "“%s”的参数无效。\n"
-
-#, fuzzy
-#~ msgid "Failed to store fragment\n"
-#~ msgstr "运行 %s失败:%s %d\n"
-
-#, fuzzy
-#~ msgid "Failed to get fragment!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to get message!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to get message fragment!\n"
-#~ msgstr "打开日志文件“%s”失败:%s\n"
-
-#, fuzzy
-#~ msgid "Failed to get master counters!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to begin modifying state: %d\n"
-#~ msgstr "运行 %s失败:%s %d\n"
-
-#, fuzzy
-#~ msgid "Failed to modify state: %d\n"
-#~ msgstr "运行 %s失败:%s %d\n"
-
-#, fuzzy
-#~ msgid "Failed to end modifying state!\n"
-#~ msgstr "运行 %s失败:%s %d\n"
-
-#, fuzzy
-#~ msgid "Failed to begin synchronizing state!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to end synchronizing state!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to reset state!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Failed to get state variable!\n"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "Unable to initialize Mysql.\n"
-#~ msgstr "无法初始化 SQLite:%s。\n"
-
-#, fuzzy
-#~ msgid "Failed to run SQL statement `%s'\n"
-#~ msgstr "解析配置文件“%s”失败\n"
-
-#, fuzzy
-#~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
-#~ msgstr "“%s”于 %s:%d 处失败,错误为:%s\n"
-
-#, fuzzy
-#~ msgid "SQLite database running\n"
-#~ msgstr "sqlite 数据仓库"
-
-#, fuzzy
-#~ msgid "--place missing or invalid.\n"
-#~ msgstr "“%s”的参数无效。\n"
-
-#, fuzzy
-#~ msgid "name or public key of ego"
-#~ msgstr "“%s”的参数无效。\n"
-
-#, fuzzy
-#~ msgid "wait for incoming messages"
-#~ msgstr "发送消息失败。\n"
-
-#, fuzzy
-#~ msgid "number of messages to replay from history"
-#~ msgstr "每次迭代所使用的消息数量"
-
 #~ msgid "Could not resolve `%s' (%s): %s\n"
 #~ msgstr "无法解析“%s”(%s):%s\n"
 
@@ -9658,8 +9822,8 @@ msgstr ""
 
 #, fuzzy
 #~ msgid ""
-#~ "%s service is lacking key configuration settings (%s). Using default "
-#~ "(%u).\n"
+#~ "%s service is lacking key configuration settings (%s). Using default (%"
+#~ "u).\n"
 #~ msgstr "立即保存配置?"
 
 #, fuzzy
index b1706a4793a8ec6ed287ddc9bef51853cdb873e4..28440d8577e500c8c5aeaf894b391da6f6aa27cf 100644 (file)
@@ -8,10 +8,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   arm.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 83f9e1b6ab2aadb6cbeb9385df36029c934a51b6..1804a43bf4f698c272ce542d39681f6d8518e4fb 100644 (file)
@@ -5,10 +5,6 @@ pkgcfgdir= $(pkgdatadir)/config.d/
 
 libexecdir= $(pkglibdir)/libexec/
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index 55bfe1322d09e9a128daae1d92c6bae94acbbd4b..3bb99aa08f2d9594051c1169a13beb27c5245fcd 100644 (file)
@@ -1,23 +1,19 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols 
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
 
 bin_PROGRAMS = \
- gnunet-ats 
+ gnunet-ats
 
 gnunet_ats_SOURCES = \
- gnunet-ats.c 
+ gnunet-ats.c
 gnunet_ats_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/ats/libgnunetats.la \
   $(top_builddir)/src/nt/libgnunetnt.la \
   $(top_builddir)/src/transport/libgnunettransport.la \
   $(top_builddir)/src/hello/libgnunethello.la \
-  $(GN_LIBINTL)  
+  $(GN_LIBINTL)
index ac8a411ebcacdbd6908bfb273a5528a9edafde86..d7e5b68c76eef9a33e4757933d5d269ca2460e61 100644 (file)
@@ -10,10 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   ats.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index f86e846e2e4142080341b62603e71842149d0278..0cb5d5a84b010c8f5359914c4514ac6c3f833b91 100644 (file)
@@ -9,10 +9,6 @@ libexecdir = $(pkglibdir)/libexec/
 pkgcfg_DATA = \
        auction.conf
 
-if MINGW
-       WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
        AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index 05df7541dc2de0ff0edeedad7e9d6aa5b2b21b42..d769f7d475052b71236690cfe7fe58307133b917 100644 (file)
@@ -3,10 +3,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
 plugindir = $(libdir)/gnunet
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index e7d42f60f1173d01b6f2194f09382b18fec28077..cd4beb4b7f7b68bb8e43734dc0639b44bed3926c 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
@@ -38,7 +34,7 @@ libgnunetcadet_la_SOURCES = \
   cadet_api_get_path.c \
   cadet_api_list_peers.c \
   cadet_api_list_tunnels.c \
-  cadet_api_helper.c 
+  cadet_api_helper.c
 libgnunetcadet_la_LIBADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(XLIB) \
index 991e36a955ca8cd15e0cdf8d1279c8ea181ebd92..4ad224aa3fc7ee0698627390c94a95783c22618d 100644 (file)
@@ -10,10 +10,6 @@ plugindir = $(libdir)/gnunet
 pkgcfg_DATA = \
   consensus.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index c329bebf517b85f1c204b99a21bb43a053947eed..dc8283e9b31adfd7fa254ba15197947820152634 100644 (file)
@@ -3,10 +3,6 @@ SUBDIRS = .
 
 plugindir = $(libdir)/gnunet
 
-if MINGW
-  WINFLAGS = -no-undefined -Wl,--export-all-symbols
-endif
-
 AM_CPPFLAGS = \
   $(GNUNET_CPPFLAGS) \
   -I$(top_srcdir)/src/include \
index 341341f2463bfb6c2564b03803eb79658bc9e3fa..5f591012168fbe6e1e6ca57a56fd33c0779e2748 100644 (file)
 #include <gst/app/gstappsink.h>
 
 // sockets
-#ifndef MINGW
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
 #include <sys/socket.h>
 #include <arpa/inet.h>
 #include <netdb.h>
-#endif
 
 #include <sys/types.h>
 #include <fcntl.h>
index 70ec91fbcfd3437b9d4654c3722d51078a61e830..902be35991ff7ab39fd328c95437b5d9de12aae3 100644 (file)
@@ -8,10 +8,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   core.conf
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 898b51563618299117d28dd0e13b4c35e376c1a3..9fc00bace632d43b6a307f48ffaf4322fdb61362 100644 (file)
@@ -8,10 +8,6 @@ pkgcfgdir= $(pkgdatadir)/config.d/
 dist_pkgcfg_DATA = \
   datacache.conf
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov
index 240abbc6742d968dcd1077343eeb8dc563690d93..ba65143af181b298a58388bda3ebb25b37109b35 100644 (file)
@@ -10,10 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   datastore.conf
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov
index c52ac93c76af329679a35097c5acc4683a05711e..82d76f33cb02a64b2d9c1b3129f228ffb8842908 100644 (file)
@@ -1,8 +1,5 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols -lole32 -lshell32 -liconv -lstdc++ -lcomdlg32 -lgdi32
-endif
 
 plugindir = $(libdir)/gnunet
 
index ca2685765e57467039304abf9beb5bff17862f12..33ec8ef85cddb74ac151347a6471ed49a6ac08b6 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
 endif
index ea4f08c73a4e4b36ddd8fc8048b23c6efc4a4778..b7286349dfc752bd0c61c9a6f1dbb0fdfd28a884 100644 (file)
@@ -1,11 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined,--export-all-symbols
-  EXITBIN = gnunet-helper-exit
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
 endif
@@ -32,20 +27,10 @@ libexec_PROGRAMS = \
   gnunet-daemon-exit \
   $(EXITBIN)
 
-if MINGW
-  gnunet_helper_exit_LDFLAGS = \
-    -no-undefined -Wl,--export-all-symbols
 
-  gnunet_helper_exit_LDADD = \
-    -lsetupapi -lnewdev -lshell32 -liconv -lstdc++ \
-    -lcomdlg32 -lgdi32 -liphlpapi
+gnunet_helper_exit_SOURCES = \
+  gnunet-helper-exit.c
 
-  gnunet_helper_exit_SOURCES = \
-    gnunet-helper-exit-windows.c
-else
-  gnunet_helper_exit_SOURCES = \
-   gnunet-helper-exit.c
-endif
 gnunet_daemon_exit_SOURCES = \
  gnunet-daemon-exit.c exit.h
 gnunet_daemon_exit_LDADD = \
diff --git a/src/exit/gnunet-helper-exit-windows.c b/src/exit/gnunet-helper-exit-windows.c
deleted file mode 100644 (file)
index 0ffd281..0000000
+++ /dev/null
@@ -1,1699 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010, 2012 Christian Grothoff
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file exit/gnunet-helper-exit-windows.c
- * @brief the helper for the EXIT service in win32 builds.
- * Opens a virtual network-interface, sends data received on the if to stdout,
- * sends data received on stdin to the interface
- * @author Christian M. Fuchs
- *
- * The following list of people have reviewed this code and considered
- * it safe since the last modification (if you reviewed it, please
- * have your name added to the list):
- *
- */
-
-#include <stdio.h>
-#include <Winsock2.h>
-#include <windows.h>
-#include <setupapi.h>
-#ifndef __MINGW64_VERSION_MAJOR
-#include <ddk/cfgmgr32.h>
-#include <ddk/newdev.h>
-#else
-#include <cfgmgr32.h>
-#include <newdev.h>
-#endif
-#include <time.h>
-#include "platform.h"
-#include "tap-windows.h"
-/**
- * Need 'struct GNUNET_HashCode' and 'struct GNUNET_PeerIdentity'.
- */
-#include "gnunet_crypto_lib.h"
-/**
- * Need 'struct GNUNET_MessageHeader'.
- */
-#include "gnunet_common.h"
-
-/**
- * Need VPN message types.
- */
-#include "gnunet_protocols.h"
-
-/**
- * Should we print (interesting|debug) messages that can happen during
- * normal operation?
- */
-#define DEBUG GNUNET_NO
-
-#if DEBUG
-/* FIXME: define with varargs... */
-#define LOG_DEBUG(msg) fprintf(stderr, "%s", msg);
-#else
-#define LOG_DEBUG(msg) do {} while (0)
-#endif
-
-/**
- * Will this binary be run in permissions testing mode?
- */
-static boolean privilege_testing = FALSE;
-
-/**
- * Maximum size of a GNUnet message (GNUNET_MAX_MESSAGE_SIZE)
- */
-#define MAX_SIZE 65536
-
-/**
- * Name or Path+Name of our win32 driver.
- * The .sys and .cat files HAVE to be in the same location as this file!
- */
-#define INF_FILE "share/gnunet/openvpn-tap32/tapw32/OemWin2k.inf"
-
-/**
- * Name or Path+Name of our win64 driver.
- * The .sys and .cat files HAVE to be in the same location as this file!
- */
-#define INF_FILE64 "share/gnunet/openvpn-tap32/tapw64/OemWin2k.inf"
-
-/**
- * Hardware ID used in the inf-file.
- * This might change over time, as openvpn advances their driver
- */
-#define HARDWARE_ID "tap0901"
-
-/**
- * Minimum major-id of the driver version we can work with
- */
-#define TAP_WIN_MIN_MAJOR 9
-
-/**
- * Minimum minor-id of the driver version we can work with.
- * v <= 7 has buggy IPv6.
- * v == 8 is broken for small IPv4 Packets
- */
-#define TAP_WIN_MIN_MINOR 9
-
-/**
- * Time in seconds to wait for our virtual device to go up after telling it to do so.
- *
- * openvpn doesn't specify a value, 4 seems sane for testing, even for openwrt
- * (in fact, 4 was chosen by a fair dice roll...)
- */
-#define TAP32_POSTUP_WAITTIME 4
-
-/**
- * Location of the network interface list resides in registry.
- */
-#define INTERFACE_REGISTRY_LOCATION "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-
-/**
- * Our local process' PID. Used for creating a sufficiently unique additional
- * hardware ID for our device.
- */
-static char secondary_hwid[LINE_LEN / 2];
-
-/**
- * Device's visible Name, used to identify a network device in netsh.
- * eg: "Local Area Connection 9"
- */
-static char device_visible_name[256];
-
-/**
- * This is our own local instance of a virtual network interface
- * It is (somewhat) equivalent to using tun/tap in unixoid systems
- *
- * Upon initialization, we create such an device node.
- * Upon termination, we remove it again.
- *
- * If we crash this device might stay around.
- */
-static HDEVINFO DeviceInfo = INVALID_HANDLE_VALUE;
-
-/**
- * Registry Key we hand over to windows to spawn a new virtual interface
- */
-static SP_DEVINFO_DATA DeviceNode;
-
-/**
- * GUID of our virtual device in the form of
- * {12345678-1234-1234-1234-123456789abc} - in hex
- */
-static char device_guid[256];
-
-
-/**
- * Possible states of an IO facility.
- */
-enum IO_State {
-  /**
-   * overlapped I/O is ready for work
-   */
-  IOSTATE_READY = 0,
-
-  /**
-   * overlapped I/O has been queued
-   */
-  IOSTATE_QUEUED,
-
-  /**
-   * overlapped I/O has finished, but is waiting for it's write-partner
-   */
-  IOSTATE_WAITING,
-
-  /**
-   * there is a full buffer waiting
-   */
-  IOSTATE_RESUME,
-
-  /**
-   * Operlapped IO states for facility objects
-   * overlapped I/O has failed, stop processing
-   */
-  IOSTATE_FAILED
-};
-
-
-/**
- * A IO Object + read/writebuffer + buffer-size for windows asynchronous IO handling
- */
-struct io_facility {
-  /**
-   * The mode the state machine associated with this object is in.
-   */
-  enum IO_State facility_state;
-
-  /**
-   * If the path is open or blocked in general (used for quickly checking)
-   */
-  BOOL path_open; // BOOL is winbool (int), NOT boolean (unsigned char)!
-
-  /**
-   * Windows Object-Handle (used for accessing TAP and STDIN/STDOUT)
-   */
-  HANDLE handle;
-
-  /**
-   * Overlaped IO structure used for asynchronous IO in windows.
-   */
-  OVERLAPPED overlapped;
-
-  /**
-   * Buffer for reading things to and writing from...
-   */
-  unsigned char buffer[MAX_SIZE];
-
-  /**
-   * How much of this buffer was used when reading or how much data can be written
-   */
-  DWORD buffer_size;
-
-  /**
-   * Amount of data actually written or read by readfile/writefile.
-   */
-  DWORD buffer_size_processed;
-
-  /**
-   * How much of this buffer we have written in total
-   */
-  DWORD buffer_size_written;
-};
-
-/**
- * ReOpenFile is only available as of XP SP2 and 2003 SP1
- */
-WINBASEAPI HANDLE WINAPI ReOpenFile(HANDLE, DWORD, DWORD, DWORD);
-
-/**
- * IsWow64Process definition for our is_win64, as this is a kernel function
- */
-typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
-
-
-/**
- * Like strlcpy but portable. The given string @a src is copied until its null
- * byte or until @a n - 1 bytes have been read. The destination buffer is
- * guaranteed to be null-terminated.
- *
- * @param dst destination of the copy (must be @a n bytes long)
- * @param src source of the copy (at most @a n - 1 bytes will be read)
- * @param n the length of the string to copy, including its terminating null
- *          byte
- * @return the length of the string that was copied, excluding the terminating
- *         null byte
- */
-size_t
-GNUNET_strlcpy(char *dst, const char *src, size_t n)
-{
-  size_t ret;
-  size_t slen;
-
-  GNUNET_assert(0 != n);
-  slen = strnlen(src, n - 1);
-  memcpy(dst, src, slen);
-  dst[slen] = '\0';
-  return slen;
-}
-
-
-/**
- * Determines if the host OS is win32 or win64
- *
- * @return true if
- */
-BOOL
-is_win64()
-{
-#if defined(_WIN64)
-  //this is a win64 binary,
-  return TRUE;
-#elif defined(_WIN32)
-  //this is a 32bit binary, and we need to check if we are running in WOW64
-  BOOL success = FALSE;
-  BOOL on_wow64 = FALSE;
-  LPFN_ISWOW64PROCESS IsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process");
-
-  if (NULL != IsWow64Process)
-    success = IsWow64Process(GetCurrentProcess(), &on_wow64);
-
-  return success && on_wow64;
-#endif
-}
-/**
- * Wrapper for executing a shellcommand in windows.
- *
- * @param command - the command + parameters to execute
- * @return * exitcode of the program executed,
- *         * EINVAL (cmd/file not found)
- *         * EPIPE (could not read STDOUT)
- */
-static int
-execute_shellcommand(const char *command)
-{
-  FILE *pipe;
-
-  if ((NULL == command) ||
-      (NULL == (pipe = _popen(command, "rt"))))
-    return EINVAL;
-
-#if DEBUG
-  fprintf(stderr, "DEBUG: Command output: \n");
-  char output[LINE_LEN];
-  while (NULL != fgets(output, sizeof(output), pipe))
-    fprintf(stderr, "%s", output);
-#endif
-
-  return _pclose(pipe);
-}
-
-
-/**
- * @brief Sets the IPv6-Address given in address on the interface dev
- *
- * @param address the IPv6-Address
- * @param prefix_len the length of the network-prefix
- */
-static int
-set_address6(const char *address, unsigned long prefix_len)
-{
-  int ret = EINVAL;
-  char command[LINE_LEN];
-  struct sockaddr_in6 sa6;
-
-  /*
-   * parse the new address
-   */
-  memset(&sa6, 0, sizeof(struct sockaddr_in6));
-  sa6.sin6_family = AF_INET6;
-  if (1 != inet_pton(AF_INET6, address, &sa6.sin6_addr.s6_addr))
-    {
-      fprintf(stderr, "ERROR: Failed to parse address `%s': %s\n", address,
-              strerror(errno));
-      return -1;
-    }
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv6 add address \"%s\" %s/%d store=active",
-           device_visible_name, address, prefix_len);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: Setting IPv6 address failed: %s\n", strerror(ret));
-  return ret;
-}
-
-
-/**
- * @brief Removes the IPv6-Address given in address from the interface dev
- *
- * @param address the IPv4-Address
- */
-static void
-remove_address6(const char *address)
-{
-  char command[LINE_LEN];
-  int ret = EINVAL;
-
-  // sanity checking was already done in set_address6
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv6 delete address \"%s\" store=persistent",
-           device_visible_name);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: removing IPv6 address failed: %s\n", strerror(ret));
-}
-
-
-/**
- * @brief Sets the IPv4-Address given in address on the interface dev
- *
- * @param address the IPv4-Address
- * @param mask the netmask
- */
-static int
-set_address4(const char *address, const char *mask)
-{
-  int ret = EINVAL;
-  char command[LINE_LEN];
-
-  struct sockaddr_in addr;
-
-  addr.sin_family = AF_INET;
-
-  /*
-   * Parse the address
-   */
-  if (1 != inet_pton(AF_INET, address, &addr.sin_addr.s_addr))
-    {
-      fprintf(stderr, "ERROR: Failed to parse address `%s': %s\n", address,
-              strerror(errno));
-      return -1;
-    }
-  // Set Device to Subnet-Mode?
-  // do we really need tun.c:2925 ?
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv4 add address \"%s\" %s %s store=active",
-           device_visible_name, address, mask);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: Setting IPv4 address failed: %s\n", strerror(ret));
-  return ret;
-}
-
-
-/**
- * @brief Removes the IPv4-Address given in address from the interface dev
- *
- * @param address the IPv4-Address
- */
-static void
-remove_address4(const char *address)
-{
-  char command[LINE_LEN];
-  int ret = EINVAL;
-
-  // sanity checking was already done in set_address4
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv4 delete address \"%s\" gateway=all store=persistent",
-           device_visible_name);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: removing IPv4 address failed: %s\n", strerror(ret));
-}
-
-
-/**
- * Setup a new virtual interface to use for tunneling.
- *
- * @return: TRUE if setup was successful, else FALSE
- */
-static BOOL
-setup_interface()
-{
-  /*
-   * where to find our inf-file. (+ the "full" path, after windows found")
-   *
-   * We do not directly input all the props here, because openvpn will update
-   * these details over time.
-   */
-  char inf_file_path[MAX_PATH];
-  char * temp_inf_filename;
-  char hwidlist[LINE_LEN + 4];
-  char class_name[128];
-  GUID class_guid;
-  int str_length = 0;
-
-  /**
-   * Set the device's hardware ID and add it to a list.
-   * This information will later on identify this device in registry.
-   */
-  str_length = GNUNET_strlcpy(hwidlist,
-                              HARDWARE_ID,
-                              sizeof(hwidlist)) + 1;
-  /**
-   * this is kind of over-complicated, but allows keeps things independent of
-   * how the openvpn-hwid is actually stored.
-   *
-   * A HWID list is double-\0 terminated and \0 separated
-   */
-  str_length = strlen(hwidlist) + 1;
-  str_length += GNUNET_strlcpy(&hwidlist[str_length],
-                               secondary_hwid,
-                               sizeof(hwidlist) - str_length) + 1;
-  GNUNET_assert(str_length < sizeof(hwidlist));
-  hwidlist[str_length] = '\0';
-  ++str_length;
-
-  /**
-   * Locate the inf-file, we need to store it somewhere where the system can
-   * find it. We need to pick the correct driver for win32/win64.
-   */
-  if (is_win64())
-    GetFullPathNameA(INF_FILE64, MAX_PATH, inf_file_path, &temp_inf_filename);
-  else
-    GetFullPathNameA(INF_FILE, MAX_PATH, inf_file_path, &temp_inf_filename);
-
-  fprintf(stderr, "INFO: Located our driver's .inf file at %s\n", inf_file_path);
-  /**
-   * Bootstrap our device info using the drivers inf-file
-   */
-  if (!SetupDiGetINFClassA(inf_file_path,
-                           &class_guid,
-                           class_name, sizeof(class_name) / sizeof(char),
-                           NULL))
-    return FALSE;
-
-  /**
-   * Collect all the other needed information...
-   * let the system fill our this form
-   */
-  DeviceInfo = SetupDiCreateDeviceInfoList(&class_guid, NULL);
-  if (DeviceInfo == INVALID_HANDLE_VALUE)
-    return FALSE;
-
-  DeviceNode.cbSize = sizeof(SP_DEVINFO_DATA);
-  if (!SetupDiCreateDeviceInfoA(DeviceInfo,
-                                class_name,
-                                &class_guid,
-                                NULL,
-                                0,
-                                DICD_GENERATE_ID,
-                                &DeviceNode))
-    return FALSE;
-
-  /* Deploy all the information collected into the registry */
-  if (!SetupDiSetDeviceRegistryPropertyA(DeviceInfo,
-                                         &DeviceNode,
-                                         SPDRP_HARDWAREID,
-                                         (LPBYTE)hwidlist,
-                                         str_length * sizeof(char)))
-    return FALSE;
-
-  /* Install our new class(=device) into the system */
-  if (!SetupDiCallClassInstaller(DIF_REGISTERDEVICE,
-                                 DeviceInfo,
-                                 &DeviceNode))
-    return FALSE;
-
-  /* This system call tends to take a while (several seconds!) on
-     "modern" Windoze systems */
-  if (!UpdateDriverForPlugAndPlayDevicesA(NULL,
-                                          secondary_hwid,
-                                          inf_file_path,
-                                          INSTALLFLAG_FORCE | INSTALLFLAG_NONINTERACTIVE,
-                                          NULL))  //reboot required? NEVER!
-    return FALSE;
-
-  fprintf(stderr, "DEBUG: successfully created a network device\n");
-  return TRUE;
-}
-
-
-/**
- * Remove our new virtual interface to use for tunneling.
- * This function must be called AFTER setup_interface!
- *
- * @return: TRUE if destruction was successful, else FALSE
- */
-static BOOL
-remove_interface()
-{
-  SP_REMOVEDEVICE_PARAMS remove;
-
-  if (INVALID_HANDLE_VALUE == DeviceInfo)
-    return FALSE;
-
-  remove.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
-  remove.HwProfile = 0;
-  remove.Scope = DI_REMOVEDEVICE_GLOBAL;
-  remove.ClassInstallHeader.InstallFunction = DIF_REMOVE;
-  /*
-   * 1. Prepare our existing device information set, and place the
-   *    uninstall related information into the structure
-   */
-  if (!SetupDiSetClassInstallParamsA(DeviceInfo,
-                                     (PSP_DEVINFO_DATA)&DeviceNode,
-                                     &remove.ClassInstallHeader,
-                                     sizeof(remove)))
-    return FALSE;
-  /*
-   * 2. Uninstall the virtual interface using the class installer
-   */
-  if (!SetupDiCallClassInstaller(DIF_REMOVE,
-                                 DeviceInfo,
-                                 (PSP_DEVINFO_DATA)&DeviceNode))
-    return FALSE;
-
-  SetupDiDestroyDeviceInfoList(DeviceInfo);
-
-  fprintf(stderr, "DEBUG: removed interface successfully\n");
-
-  return TRUE;
-}
-
-
-/**
- * Do all the lookup necessary to retrieve the inteface's actual name
- * off the registry.
- *
- * @return: TRUE if we were able to lookup the interface's name, else FALSE
- */
-static BOOL
-resolve_interface_name()
-{
-  SP_DEVINFO_LIST_DETAIL_DATA device_details;
-  char pnp_instance_id [MAX_DEVICE_ID_LEN];
-  HKEY adapter_key_handle;
-  LONG status;
-  DWORD len;
-  int i = 0;
-  int retrys;
-  BOOL retval = FALSE;
-  char adapter[] = INTERFACE_REGISTRY_LOCATION;
-
-  /* We can obtain the PNP instance ID from our setupapi handle */
-  device_details.cbSize = sizeof(device_details);
-  if (CR_SUCCESS != CM_Get_Device_ID_ExA(DeviceNode.DevInst,
-                                         (PCHAR)pnp_instance_id,
-                                         MAX_DEVICE_ID_LEN,
-                                         0,  //must be 0
-                                         NULL))  //hMachine, we are local
-    return FALSE;
-
-  fprintf(stderr, "DEBUG: Resolving interface name for network device %s\n", pnp_instance_id);
-
-  /* Registry is incredibly slow, retry for up to 30 seconds to allow registry to refresh */
-  for (retrys = 0; retrys < 120 && !retval; retrys++)
-    {
-      /* sleep for 250ms*/
-      Sleep(250);
-
-      /* Now we can use this ID to locate the correct networks interface in registry */
-      if (ERROR_SUCCESS != RegOpenKeyExA(
-            HKEY_LOCAL_MACHINE,
-            adapter,
-            0,
-            KEY_READ,
-            &adapter_key_handle))
-        return FALSE;
-
-      /* Of course there is a multitude of entries here, with arbitrary names,
-       * thus we need to iterate through there.
-       */
-      while (!retval)
-        {
-          char instance_key[256];
-          char query_key [256];
-          HKEY instance_key_handle;
-          char pnpinstanceid_name[] = "PnpInstanceID";
-          char pnpinstanceid_value[256];
-          char adaptername_name[] = "Name";
-          DWORD data_type;
-
-          len = 256 * sizeof(char);
-          /* optain a subkey of {4D36E972-E325-11CE-BFC1-08002BE10318} */
-          status = RegEnumKeyExA(
-            adapter_key_handle,
-            i,
-            instance_key,
-            &len,
-            NULL,
-            NULL,
-            NULL,
-            NULL);
-
-          /* this may fail due to one of two reasons:
-           * we are at the end of the list*/
-          if (ERROR_NO_MORE_ITEMS == status)
-            break;
-          // * we found a broken registry key, continue with the next key.
-          if (ERROR_SUCCESS != status)
-            goto cleanup;
-
-          /* prepare our new query string: */
-          snprintf(query_key, 256, "%s\\%s\\Connection",
-                   adapter,
-                   instance_key);
-
-          /* look inside instance_key\\Connection */
-          if (ERROR_SUCCESS != RegOpenKeyExA(
-                HKEY_LOCAL_MACHINE,
-                query_key,
-                0,
-                KEY_READ,
-                &instance_key_handle))
-            goto cleanup;
-
-          /* now, read our PnpInstanceID */
-          len = sizeof(pnpinstanceid_value);
-          status = RegQueryValueExA(instance_key_handle,
-                                    pnpinstanceid_name,
-                                    NULL,  //reserved, always NULL according to MSDN
-                                    &data_type,
-                                    (LPBYTE)pnpinstanceid_value,
-                                    &len);
-
-          if (status != ERROR_SUCCESS || data_type != REG_SZ)
-            goto cleanup;
-
-          /* compare the value we got to our devices PNPInstanceID*/
-          if (0 != strncmp(pnpinstanceid_value, pnp_instance_id,
-                           sizeof(pnpinstanceid_value) / sizeof(char)))
-            goto cleanup;
-
-          len = sizeof(device_visible_name);
-          status = RegQueryValueExA(
-            instance_key_handle,
-            adaptername_name,
-            NULL,                          //reserved, always NULL according to MSDN
-            &data_type,
-            (LPBYTE)device_visible_name,
-            &len);
-
-          if (status != ERROR_SUCCESS || data_type != REG_SZ)
-            goto cleanup;
-
-          /*
-           * we have successfully found OUR instance,
-           * save the device GUID before exiting
-           */
-          GNUNET_strlcpy(device_guid, instance_key, sizeof(device_guid));
-          retval = TRUE;
-          fprintf(stderr, "DEBUG: Interface Name lookup succeeded on retry %d, got \"%s\" %s\n", retrys, device_visible_name, device_guid);
-
-cleanup:
-          RegCloseKey(instance_key_handle);
-
-          ++i;
-        }
-
-      RegCloseKey(adapter_key_handle);
-    }
-  return retval;
-}
-
-
-/**
- * Determines the version of the installed TAP32 driver and checks if it's sufficiently new for GNUNET
- *
- * @param handle the handle to our tap device
- * @return TRUE if the version is sufficient, else FALSE
- */
-static BOOL
-check_tapw32_version(HANDLE handle)
-{
-  ULONG version[3];
-  DWORD len;
-
-  memset(&(version), 0, sizeof(version));
-
-  if (DeviceIoControl(handle, TAP_WIN_IOCTL_GET_VERSION,
-                      &version, sizeof(version),
-                      &version, sizeof(version), &len, NULL))
-    fprintf(stderr, "INFO: TAP-Windows Driver Version %d.%d %s\n",
-            (int)version[0],
-            (int)version[1],
-            (version[2] ? "(DEBUG)" : ""));
-
-  if ((version[0] != TAP_WIN_MIN_MAJOR) ||
-      (version[1] < TAP_WIN_MIN_MINOR))
-    {
-      fprintf(stderr, "FATAL:  This version of gnunet requires a TAP-Windows driver that is at least version %d.%d\n",
-              TAP_WIN_MIN_MAJOR,
-              TAP_WIN_MIN_MINOR);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-
-/**
- * Creates a tun-interface called dev;
- *
- * @return the fd to the tun or -1 on error
- */
-static HANDLE
-init_tun()
-{
-  char device_path[256];
-  HANDLE handle;
-
-  if (!setup_interface())
-    {
-      errno = ENODEV;
-      return INVALID_HANDLE_VALUE;
-    }
-
-  if (!resolve_interface_name())
-    {
-      errno = ENODEV;
-      return INVALID_HANDLE_VALUE;
-    }
-
-  /* Open Windows TAP-Windows adapter */
-  snprintf(device_path, sizeof(device_path), "%s%s%s",
-           USERMODEDEVICEDIR,
-           device_guid,
-           TAP_WIN_SUFFIX);
-
-  handle = CreateFile(
-    device_path,
-    GENERIC_READ | GENERIC_WRITE,
-    0,                    /* was: FILE_SHARE_READ */
-    0,
-    OPEN_EXISTING,
-    FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED,
-    0
-    );
-
-  if (INVALID_HANDLE_VALUE == handle)
-    {
-      fprintf(stderr, "FATAL: CreateFile failed on TAP device: %s\n", device_path);
-      return handle;
-    }
-
-  /* get driver version info */
-  if (!check_tapw32_version(handle))
-    {
-      CloseHandle(handle);
-      return INVALID_HANDLE_VALUE;
-    }
-
-  /* TODO (opt?): get MTU-Size */
-
-  fprintf(stderr, "DEBUG: successfully opened TAP device\n");
-  return handle;
-}
-
-
-/**
- * Brings a TAP device up and sets it to connected state.
- *
- * @param handle the handle to our TAP device
- * @return True if the operation succeeded, else false
- */
-static BOOL
-tun_up(HANDLE handle)
-{
-  ULONG status = TRUE;
-  DWORD len;
-
-  if (!DeviceIoControl(handle, TAP_WIN_IOCTL_SET_MEDIA_STATUS,
-                       &status, sizeof(status),
-                       &status, sizeof(status), &len, NULL))
-    {
-      fprintf(stderr, "FATAL: TAP driver ignored request to UP interface (DeviceIoControl call)\n");
-      return FALSE;
-    }
-
-  /* Wait for the device to go UP, might take some time. */
-  Sleep(TAP32_POSTUP_WAITTIME * 1000);
-  fprintf(stderr, "DEBUG: successfully set TAP device to UP\n");
-
-  return TRUE;
-}
-
-
-/**
- * Attempts to read off an input facility (tap or named pipe) in overlapped mode.
- *
- * 1.
- * If the input facility is in IOSTATE_READY, it will issue a new read operation to the
- * input handle. Then it goes into IOSTATE_QUEUED state.
- * In case the read succeeded instantly the input facility enters 3.
- *
- * 2.
- * If the input facility is in IOSTATE_QUEUED state, it will check if the queued read has finished already.
- * If it has finished, go to state 3.
- * If it has failed, set IOSTATE_FAILED
- *
- * 3.
- * If the output facility is in state IOSTATE_READY, the read-buffer is copied to the output buffer.
- *   The input facility enters state IOSTATE_READY
- *   The output facility enters state IOSTATE_READY
- * If the output facility is in state IOSTATE_QUEUED, the input facility enters IOSTATE_WAITING
- *
- * IOSTATE_WAITING is reset by the output facility, once it has completed.
- *
- * @param input_facility input named pipe or file to work with.
- * @param output_facility output pipe or file to hand over data to.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_read_tap(struct io_facility * input_facility,
-                 struct io_facility * output_facility)
-{
-  struct GNUNET_MessageHeader * hdr;
-  unsigned short size;
-
-  switch (input_facility->facility_state)
-    {
-    case IOSTATE_READY:
-    {
-      if (!ResetEvent(input_facility->overlapped.hEvent))
-        {
-          return FALSE;
-        }
-
-      input_facility->buffer_size = 0;
-
-      /* Check how the task is handled */
-      if (ReadFile(input_facility->handle,
-                   input_facility->buffer,
-                   sizeof(input_facility->buffer) - sizeof(struct GNUNET_MessageHeader),
-                   &input_facility->buffer_size,
-                   &input_facility->overlapped))
-        {  /* async event processed immediately*/
-          /* reset event manually*/
-          if (!SetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: tap read succeeded immediately\n");
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && (0 < input_facility->buffer_size))
-            {   /* hand over this buffers content and apply message header for gnunet */
-              hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-              size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-              GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer,
-                            input_facility->buffer_size);
-
-              output_facility->buffer_size = size;
-              hdr->size = htons(size);
-              hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-              output_facility->facility_state = IOSTATE_READY;
-            }
-          else if (0 < input_facility->buffer_size)
-            /* If we have have read our buffer, wait for our write-partner*/
-            input_facility->facility_state = IOSTATE_WAITING;
-        }
-      else   /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)
-            {   /* operation queued */
-              input_facility->facility_state = IOSTATE_QUEUED;
-            }
-          else
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    // We are queued and should check if the read has finished
-    case IOSTATE_QUEUED:
-    {
-      // there was an operation going on already, check if that has completed now.
-
-      if (GetOverlappedResult(input_facility->handle,
-                              &input_facility->overlapped,
-                              &input_facility->buffer_size,
-                              FALSE))
-        {  /* successful return for a queued operation */
-          if (!ResetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: tap read succeeded delayed\n");
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && 0 < input_facility->buffer_size)
-            {   /* hand over this buffers content and apply message header for gnunet */
-              hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-              size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-              GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer,
-                            input_facility->buffer_size);
-
-              output_facility->buffer_size = size;
-              hdr->size = htons(size);
-              hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (0 < input_facility->buffer_size)
-            {   /* If we have have read our buffer, wait for our write-partner*/
-              input_facility->facility_state = IOSTATE_WAITING;
-              // TODO: shall we attempt to fill our buffer or should we wait for our write-partner to finish?
-            }
-        }
-      else
-        {   /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    case IOSTATE_RESUME:
-      hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-      size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-      GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                    input_facility->buffer,
-                    input_facility->buffer_size);
-
-      output_facility->buffer_size = size;
-      hdr->size = htons(size);
-      hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-      output_facility->facility_state = IOSTATE_READY;
-      input_facility->facility_state = IOSTATE_READY;
-      return TRUE;
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Attempts to read off an input facility (tap or named pipe) in overlapped mode.
- *
- * 1.
- * If the input facility is in IOSTATE_READY, it will issue a new read operation to the
- * input handle. Then it goes into IOSTATE_QUEUED state.
- * In case the read succeeded instantly the input facility enters 3.
- *
- * 2.
- * If the input facility is in IOSTATE_QUEUED state, it will check if the queued read has finished already.
- * If it has finished, go to state 3.
- * If it has failed, set IOSTATE_FAILED
- *
- * 3.
- * If the facility is finished with ready
- *   The read-buffer is copied to the output buffer, except for the GNUNET_MessageHeader.
- *   The input facility enters state IOSTATE_READY
- *   The output facility enters state IOSTATE_READY
- * If the output facility is in state IOSTATE_QUEUED, the input facility enters IOSTATE_WAITING
- *
- * IOSTATE_WAITING is reset by the output facility, once it has completed.
- *
- * @param input_facility input named pipe or file to work with.
- * @param output_facility output pipe or file to hand over data to.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_read_stdin(struct io_facility * input_facility,
-                   struct io_facility * output_facility)
-{
-  struct GNUNET_MessageHeader * hdr;
-
-  switch (input_facility->facility_state)
-    {
-    case IOSTATE_READY:
-    {
-      input_facility->buffer_size = 0;
-
-partial_read_iostate_ready:
-      if (!ResetEvent(input_facility->overlapped.hEvent))
-        return FALSE;
-
-      /* Check how the task is handled */
-      if (ReadFile(input_facility->handle,
-                   input_facility->buffer + input_facility->buffer_size,
-                   sizeof(input_facility->buffer) - input_facility->buffer_size,
-                   &input_facility->buffer_size_processed,
-                   &input_facility->overlapped))
-        {  /* async event processed immediately*/
-          hdr = (struct GNUNET_MessageHeader *)input_facility->buffer;
-
-          /* reset event manually*/
-          if (!SetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: stdin read succeeded immediately\n");
-          input_facility->buffer_size += input_facility->buffer_size_processed;
-
-          if (ntohs(hdr->type) != GNUNET_MESSAGE_TYPE_VPN_HELPER ||
-              ntohs(hdr->size) > sizeof(input_facility->buffer))
-            {
-              fprintf(stderr, "WARNING: Protocol violation, got GNUnet Message type %h, size %h\n", ntohs(hdr->type), ntohs(hdr->size));
-              input_facility->facility_state = IOSTATE_READY;
-              return TRUE;
-            }
-          /* we got the a part of a packet */
-          if (ntohs(hdr->size) > input_facility->buffer_size)
-            goto partial_read_iostate_ready;
-
-          /* have we read more than 0 bytes of payload? (sizeread > header)*/
-          if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader) &&
-              ((IOSTATE_READY == output_facility->facility_state) ||
-               (IOSTATE_WAITING == output_facility->facility_state)))
-            {  /* we successfully read something from the TAP and now need to
-                * send it our via STDOUT. Is that possible at the moment? */
-              /* hand over this buffers content and strip gnunet message header */
-              GNUNET_memcpy(output_facility->buffer,
-                            input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-              output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            /* If we have have read our buffer, wait for our write-partner*/
-            input_facility->facility_state = IOSTATE_WAITING;
-          else   /* we read nothing */
-            input_facility->facility_state = IOSTATE_READY;
-        }
-      else   /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)   /* operation queued */
-            input_facility->facility_state = IOSTATE_QUEUED;
-          else
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    // We are queued and should check if the read has finished
-    case IOSTATE_QUEUED:
-    {
-      // there was an operation going on already, check if that has completed now.
-      if (GetOverlappedResult(input_facility->handle,
-                              &input_facility->overlapped,
-                              &input_facility->buffer_size_processed,
-                              FALSE))
-        {  /* successful return for a queued operation */
-          hdr = (struct GNUNET_MessageHeader *)input_facility->buffer;
-
-          if (!ResetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: stdin read succeeded delayed\n");
-          input_facility->buffer_size += input_facility->buffer_size_processed;
-
-          if ((ntohs(hdr->type) != GNUNET_MESSAGE_TYPE_VPN_HELPER) ||
-              (ntohs(hdr->size) > sizeof(input_facility->buffer)))
-            {
-              fprintf(stderr, "WARNING: Protocol violation, got GNUnet Message type %h, size %h\n", ntohs(hdr->type), ntohs(hdr->size));
-              input_facility->facility_state = IOSTATE_READY;
-              return TRUE;
-            }
-          /* we got the a part of a packet */
-          if (ntohs(hdr->size) > input_facility->buffer_size)
-            ;
-          goto partial_read_iostate_ready;
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            {   /* hand over this buffers content and strip gnunet message header */
-              GNUNET_memcpy(output_facility->buffer,
-                            input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-              output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            input_facility->facility_state = IOSTATE_WAITING;
-          else
-            input_facility->facility_state = IOSTATE_READY;
-        }
-      else
-        {   /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    case IOSTATE_RESUME: /* Our buffer was filled already but our write facility was busy. */
-      GNUNET_memcpy(output_facility->buffer,
-                    input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                    input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-      output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-      output_facility->facility_state = IOSTATE_READY;
-      input_facility->facility_state = IOSTATE_READY;
-      return TRUE;
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Attempts to write to an output facility (tap or named pipe) in overlapped mode.
- *
- * TODO: high level description
- *
- * @param output_facility output pipe or file to hand over data to.
- * @param input_facility input named pipe or file to work with.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_write(struct io_facility * output_facility,
-              struct io_facility * input_facility)
-{
-  switch (output_facility->facility_state)
-    {
-    case IOSTATE_READY:
-      output_facility->buffer_size_written = 0;
-
-continue_partial_write:
-      if (!ResetEvent(output_facility->overlapped.hEvent))
-        return FALSE;
-
-      /* Check how the task was handled */
-      if (WriteFile(output_facility->handle,
-                    output_facility->buffer + output_facility->buffer_size_written,
-                    output_facility->buffer_size - output_facility->buffer_size_written,
-                    &output_facility->buffer_size_processed,
-                    &output_facility->overlapped))
-        {/* async event processed immediately*/
-          fprintf(stderr, "DEBUG: write succeeded immediately\n");
-          output_facility->buffer_size_written += output_facility->buffer_size_processed;
-
-          /* reset event manually*/
-          if (!SetEvent(output_facility->overlapped.hEvent))
-            return FALSE;
-
-          /* partial write */
-          if (output_facility->buffer_size_written < output_facility->buffer_size)
-            goto continue_partial_write;
-
-          /* we are now waiting for our buffer to be filled*/
-          output_facility->facility_state = IOSTATE_WAITING;
-
-          /* we successfully wrote something and now need to reset our reader */
-          if (IOSTATE_WAITING == input_facility->facility_state)
-            input_facility->facility_state = IOSTATE_RESUME;
-          else if (IOSTATE_FAILED == input_facility->facility_state)
-            output_facility->path_open = FALSE;
-        }
-      else /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)
-            { /* operation queued */
-              output_facility->facility_state = IOSTATE_QUEUED;
-            }
-          else
-            { /* error occurred, close this path */
-              output_facility->path_open = FALSE;
-              output_facility->facility_state = IOSTATE_FAILED;
-              fprintf(stderr, "FATAL: Write to handle failed, exiting\n");
-            }
-        }
-      return TRUE;
-
-    case IOSTATE_QUEUED:
-      // there was an operation going on already, check if that has completed now.
-
-      if (GetOverlappedResult(output_facility->handle,
-                              &output_facility->overlapped,
-                              &output_facility->buffer_size_processed,
-                              FALSE))
-        {/* successful return for a queued operation */
-          if (!ResetEvent(output_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: write succeeded delayed\n");
-          output_facility->buffer_size_written += output_facility->buffer_size_processed;
-
-          /* partial write */
-          if (output_facility->buffer_size_written < output_facility->buffer_size)
-            goto continue_partial_write;
-
-          /* we are now waiting for our buffer to be filled*/
-          output_facility->facility_state = IOSTATE_WAITING;
-
-          /* we successfully wrote something and now need to reset our reader */
-          if (IOSTATE_WAITING == input_facility->facility_state)
-            input_facility->facility_state = IOSTATE_RESUME;
-          else if (IOSTATE_FAILED == input_facility->facility_state)
-            output_facility->path_open = FALSE;
-        }
-      else
-        { /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            { /* error occurred, close this path */
-              output_facility->path_open = FALSE;
-              output_facility->facility_state = IOSTATE_FAILED;
-              fprintf(stderr, "FATAL: Write to handle failed, exiting\n");
-            }
-        }
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Initialize a overlapped structure
- *
- * @param elem the element to initilize
- * @param initial_state the initial state for this instance
- * @param signaled if the hEvent created should default to signaled or not
- * @return true on success, else false
- */
-static BOOL
-initialize_io_facility(struct io_facility * elem,
-                       int initial_state,
-                       BOOL signaled)
-{
-  elem->path_open = TRUE;
-  elem->handle = INVALID_HANDLE_VALUE;
-  elem->facility_state = initial_state;
-  elem->buffer_size = 0;
-  elem->overlapped.hEvent = CreateEvent(NULL, TRUE, signaled, NULL);
-  if (NULL == elem->overlapped.hEvent)
-    return FALSE;
-
-  return TRUE;
-}
-
-
-/**
- * Start forwarding to and from the tunnel.
- *
- * @param tap_handle device handle for interacting with the Virtual interface
- */
-static void
-run(HANDLE tap_handle)
-{
-  /* IO-Facility for reading from our virtual interface */
-  struct io_facility tap_read;
-  /* IO-Facility for writing to our virtual interface */
-  struct io_facility tap_write;
-  /* IO-Facility for reading from stdin */
-  struct io_facility std_in;
-  /* IO-Facility for writing to stdout */
-  struct io_facility std_out;
-
-  HANDLE parent_std_in_handle = GetStdHandle(STD_INPUT_HANDLE);
-  HANDLE parent_std_out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
-  /* tun up: */
-  /* we do this HERE and not beforehand (in init_tun()), in contrast to openvpn
-   * to remove the need to flush the arp cache, handle DHCP and wrong IPs.
-   *
-   * DHCP and such are all features we will never use in gnunet afaik.
-   * But for openvpn those are essential.
-   */
-  if ((privilege_testing) || (!tun_up(tap_handle)))
-    goto teardown_final;
-
-  /* Initialize our overlapped IO structures*/
-  if (!(initialize_io_facility(&tap_read, IOSTATE_READY, FALSE)
-        && initialize_io_facility(&tap_write, IOSTATE_WAITING, TRUE)
-        && initialize_io_facility(&std_in, IOSTATE_READY, FALSE)
-        && initialize_io_facility(&std_out, IOSTATE_WAITING, TRUE)))
-    goto teardown_final;
-
-  /* Handles for STDIN and STDOUT */
-  tap_read.handle = tap_handle;
-  tap_write.handle = tap_handle;
-
-#ifdef DEBUG_TO_CONSOLE
-  /* Debug output to console STDIN/STDOUT*/
-  std_in.handle = parent_std_in_handle;
-  std_out.handle = parent_std_out_handle;
-#else
-  fprintf(stderr, "DEBUG: reopening stdin/out for overlapped IO\n");
-  /*
-   * Find out the types of our handles.
-   * This part is a problem, because in windows we need to handle files,
-   * pipes and the console differently.
-   */
-  if ((FILE_TYPE_PIPE != GetFileType(parent_std_in_handle)) ||
-      (FILE_TYPE_PIPE != GetFileType(parent_std_out_handle)))
-    {
-      fprintf(stderr, "ERROR: stdin/stdout must be named pipes\n");
-      goto teardown;
-    }
-
-  std_in.handle = ReOpenFile(parent_std_in_handle,
-                             GENERIC_READ,
-                             FILE_SHARE_WRITE | FILE_SHARE_READ,
-                             FILE_FLAG_OVERLAPPED);
-
-  if (INVALID_HANDLE_VALUE == std_in.handle)
-    {
-      fprintf(stderr, "FATAL: Could not reopen stdin for in overlapped mode, has to be a named pipe\n");
-      goto teardown;
-    }
-
-  std_out.handle = ReOpenFile(parent_std_out_handle,
-                              GENERIC_WRITE,
-                              FILE_SHARE_READ,
-                              FILE_FLAG_OVERLAPPED);
-
-  if (INVALID_HANDLE_VALUE == std_out.handle)
-    {
-      fprintf(stderr, "FATAL: Could not reopen stdout for in overlapped mode, has to be a named pipe\n");
-      goto teardown;
-    }
-#endif
-
-  fprintf(stderr, "DEBUG: mainloop has begun\n");
-
-  while (std_out.path_open || tap_write.path_open)
-    {
-      /* perform READ from stdin if possible */
-      if (std_in.path_open && (!attempt_read_stdin(&std_in, &tap_write)))
-        break;
-
-      /* perform READ from tap if possible */
-      if (tap_read.path_open && (!attempt_read_tap(&tap_read, &std_out)))
-        break;
-
-      /* perform WRITE to tap if possible */
-      if (tap_write.path_open && (!attempt_write(&tap_write, &std_in)))
-        break;
-
-      /* perform WRITE to STDOUT if possible */
-      if (std_out.path_open && (!attempt_write(&std_out, &tap_read)))
-        break;
-    }
-  fprintf(stderr, "DEBUG: teardown initiated\n");
-
-teardown:
-
-  CancelIo(tap_handle);
-  CancelIo(std_in.handle);
-  CancelIo(std_out.handle);
-
-teardown_final:
-
-  CloseHandle(tap_handle);
-}
-
-
-/**
- * Open VPN tunnel interface.
- *
- * @param argc must be 6
- * @param argv 0: binary name ("gnunet-helper-exit")
- *             1: tunnel interface name ("gnunet-exit")
- *             2: IPv4 "physical" interface name ("eth0"), or "-" to not do IPv4 NAT
- *             3: IPv6 address ("::1"), or "-" to skip IPv6
- *             4: IPv6 netmask length in bits ("64") [ignored if #4 is "-"]
- *             5: IPv4 address ("1.2.3.4"), or "-" to skip IPv4
- *             6: IPv4 netmask ("255.255.0.0") [ignored if #4 is "-"]
- */
-int
-main(int argc, char **argv)
-{
-  char hwid[LINE_LEN];
-  HANDLE handle;
-  int global_ret = 1;
-  int local_ret = EINVAL;
-  BOOL have_ip4 = FALSE;
-  BOOL have_ip6 = FALSE;
-  BOOL have_nat44 = FALSE;
-
-  if ((1 < argc) && (0 != strcmp(argv[1], "-d")))
-    {
-      privilege_testing = TRUE;
-      fprintf(stderr,
-              "%s",
-              "DEBUG: Running binary in privilege testing mode.");
-      argv++;
-      argc--;
-    }
-
-  if (6 != argc)
-    {
-      fprintf(stderr,
-              "%s",
-              "FATAL: must supply 6 arguments\nUsage:\ngnunet-helper-exit [-d] <if name prefix> <uplink-interface name> <address6 or \"-\"> <netbits6> <address4 or \"-\"> <netmask4>\n");
-      return 1;
-    }
-
-  GNUNET_strlcpy(hwid, argv[1], sizeof(hwid));
-
-  /*
-   * We use our PID for finding/resolving the control-panel name of our virtual
-   * device. PIDs are (of course) unique at runtime, thus we can safely use it
-   * as additional hardware-id for our device.
-   */
-  snprintf(secondary_hwid, LINE_LEN / 2, "%s-%d",
-           hwid,
-           _getpid());
-
-  if (INVALID_HANDLE_VALUE == (handle = init_tun()))
-    {
-      fprintf(stderr, "FATAL: could not initialize virtual-interface %s with IPv6 %s/%s and IPv4 %s/%s\n",
-              hwid,
-              argv[3],
-              argv[4],
-              argv[5],
-              argv[6]);
-      global_ret = -1;
-      goto cleanup;
-    }
-
-  fprintf(stderr, "DEBUG: Setting IPs, if needed\n");
-  if (0 != strcmp(argv[3], "-"))
-    {
-      char command[LINE_LEN];
-      const char *address = argv[3];
-      long prefix_len = atol(argv[4]);
-
-      if ((prefix_len < 1) || (prefix_len > 127))
-        {
-          fprintf(stderr, "FATAL: ipv6 prefix_len out of range\n");
-          global_ret = -1;
-          goto cleanup;
-        }
-
-      fprintf(stderr, "DEBUG: Setting IP6 address: %s/%d\n", address, prefix_len);
-      if (0 != (global_ret = set_address6(address, prefix_len)))
-        goto cleanup;
-
-      have_ip6 = TRUE;
-
-      /* install our the windows NAT module*/
-      fprintf(stderr, "DEBUG: Setting IPv6 Forwarding for internal and external interface.\n");
-      /* outside interface (maybe that's already set) */
-      snprintf(command, LINE_LEN,
-               "netsh interface ipv6 set interface interface=\"%s\" metric=1 forwarding=enabled store=active",
-               argv[2]);
-      local_ret = execute_shellcommand(command);
-      if (0 != local_ret)
-        {
-          fprintf(stderr, "FATAL: Could not enable forwarding via netsh: %s\n", strerror(local_ret));
-          goto cleanup;
-        }
-      /* internal interface */
-      snprintf(command, LINE_LEN,
-               "netsh interface ipv6 set interface interface=\"%s\" metric=1 forwarding=enabled advertise=enabled store=active",
-               device_visible_name);
-      local_ret = execute_shellcommand(command);
-      if (0 != local_ret)
-        {
-          fprintf(stderr, "FATAL: Could not enable forwarding via netsh: %s\n", strerror(local_ret));
-          goto cleanup;
-        }
-      /* we can keep IPv6 forwarding around, as all interfaces have
-       * their forwarding mode reset to false at bootup. */
-    }
-
-  if (0 != strcmp(argv[5], "-"))
-    {
-      const char *address = argv[5];
-      const char *mask = argv[6];
-
-      fprintf(stderr, "DEBUG: Setting IP4 address: %s/%s\n", address, mask);
-      if (0 != (global_ret = set_address4(address, mask)))
-        goto cleanup;
-
-      // setup NAPT, if possible
-      /* MS has REMOVED the routing/nat capabilities from Vista+, thus
-       * we can not setup NAT like in XP or on the server. Actually the
-       * the only feasible solution seems to be to use
-       * Internet Connection Sharing, which introduces a horde of problems
-       * such as sending out rogue-RAs on the external interface in an ipv6
-       * network.
-       * Thus, below stuff ONLY works on
-       *   WinXP SP3
-       *   Win Server 2003 SP1+
-       *   Win Server 2008
-       *   ...
-       */
-      have_ip4 = TRUE;
-      if (0 != strcmp(argv[2], "-"))
-        {
-          char command[LINE_LEN];
-
-          /* install our the windows NAT module*/
-          fprintf(stderr, "DEBUG: Adding NAPT/Masquerading between external IF %s and mine.\n", argv[2]);
-          local_ret = execute_shellcommand("netsh routing ip nat install");
-          if (0 != local_ret)
-            {
-              fprintf(stderr, "FATAL: Could not install NAPT support via Netsh: %s\n", strerror(local_ret));
-              goto cleanup;
-            }
-          /* external IF */
-          snprintf(command, LINE_LEN,
-                   "netsh routing ip nat add interface \"%s\" full",  /*full = NAPT (addr+port)*/
-                   argv[2]);
-          local_ret = execute_shellcommand(command);
-          if (0 != local_ret)
-            {
-              fprintf(stderr, "FATAL: IPv4-NAPT on external interface failed: %s\n", strerror(local_ret));
-              goto cleanup;
-            }
-          /* private/internal/virtual IF */
-          snprintf(command, LINE_LEN,
-                   "netsh routing ip nat add interface \"%s\" private",
-                   device_visible_name);
-          local_ret = execute_shellcommand(command);
-          if (0 != local_ret)
-            {
-              fprintf(stderr, "FATAL: IPv4-NAPT on internal interface failed: %s\n", strerror(local_ret));
-              goto cleanup;
-
-              have_nat44 = TRUE;
-            }
-        }
-    }
-
-  run(handle);
-cleanup:
-
-  if (have_ip4)
-    {
-      const char *address = argv[5];
-      if (have_nat44)
-        {
-          char command[LINE_LEN];
-          fprintf(stderr, "DEBUG: removing IP4 NAPT from virtual interface \n");
-          snprintf(command, LINE_LEN,
-                   "netsh routing ip nat del interface \"%s\"",
-                   device_visible_name);
-          local_ret = execute_shellcommand(command);
-          if (0 != local_ret)
-            fprintf(stderr, "WARNING: Could not remove IPv4-NAPT from internal interface, hopefully this will have no effect in future runs: %s\n", strerror(local_ret));
-        }
-
-      fprintf(stderr, "DEBUG: Removing IP4 address\n");
-      remove_address4(address);
-    }
-  if (have_ip6)
-    {
-      const char *address = argv[3];
-      fprintf(stderr, "DEBUG: Removing IP6 address\n");
-      remove_address6(address);
-    }
-
-  fprintf(stderr, "DEBUG: removing interface\n");
-  remove_interface();
-  fprintf(stderr, "DEBUG: graceful exit completed\n");
-
-  return global_ret;
-}
index 85c4767c0b016a6c1492f18cba512579969c1ba4..85df01ff5c44e00f994803355a203750801f9aec 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 80316dc2e0a5307658a18e8d48e210bcde32f8a8..0840242ea6d724225a0777b595ced7170f5d125d 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 0d38cb51e3d521c7d1ec4b8eb7d4671fb7f60b9c..4a152a6df53c5e60068e87e3381edeb639691d7b 100644 (file)
@@ -15,7 +15,6 @@ EXTRA_DIST = \
   test_gns_lookup.conf \
   test_gns_proxy.conf \
   test_gns_simple_lookup.conf \
-  gns-helper-service-w32.conf \
   w32nsp.def \
   openssl.cnf \
   gnunet-gns-proxy-setup-ca.in \
@@ -25,14 +24,6 @@ EXTRA_DIST = \
   $(check_SCRIPTS) \
   $(pkgdata_DATA)
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-  DO_W32_HELPER = gnunet-gns-helper-service-w32
-  DO_W32_NSP = libw32nsp.la
-  DO_W32_NSPTOOLS = w32nsp-install w32nsp-uninstall w32nsp-resolve
-  DO_W32_HS_CONF = gns-helper-service-w32.conf
-  DO_NONPOSIX_GNSIMPORT = gnunet-gns-import
-endif
 USE_VPN = $(top_builddir)/src/vpn/libgnunetvpn.la
 
 if USE_COVERAGE
@@ -46,11 +37,9 @@ libexecdir= $(pkglibdir)/libexec/
 plugindir = $(libdir)/gnunet
 
 pkgcfg_DATA = \
-  gns.conf \
-  $(DO_W32_HS_CONF)
+  gns.conf
 
 lib_LTLIBRARIES = \
-  $(DO_W32_NSP) \
   libgnunetgns.la
 
 
@@ -73,12 +62,9 @@ endif
 libexec_PROGRAMS = \
   gnunet-service-gns \
   gnunet-dns2gns \
-  $(DO_W32_HELPER) \
   $(DO_PROXY)
 
 bin_PROGRAMS = \
-  $(DO_W32_NSPTOOLS) \
-  $(DO_NONPOSIX_GNSIMPORT) \
   gnunet-gns
 
 noinst_PROGRAMS = \
@@ -199,35 +185,15 @@ test_gns_proxy_LDADD = $(MHD_LIBS) $(LIB_GNURL) -lgnutls \
   $(GN_LIBINTL)
 test_gns_proxy_CFLAGS = $(MHD_CFLAGS) $(CPP_GNURL) $(AM_CFLAGS)
 
-gnunet_gns_helper_service_w32_SOURCES = \
-  gnunet-gns-helper-service-w32.c
-gnunet_gns_helper_service_w32_LDADD = \
-  libgnunetgns.la \
-  $(top_builddir)/src/identity/libgnunetidentity.la \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(GN_LIBINTL)
-
-gnunet_gns_import_SOURCES = \
-  gnunet-gns-import.c
-gnunet_gns_import_LDADD = \
-  $(top_builddir)/src/identity/libgnunetidentity.la \
-  $(top_builddir)/src/namestore/libgnunetnamestore.la \
-  $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(GN_LIBINTL)
-
+#gnunet_gns_import_SOURCES = \
+#  gnunet-gns-import.c
+#gnunet_gns_import_LDADD = \
+#  $(top_builddir)/src/identity/libgnunetidentity.la \
+#  $(top_builddir)/src/namestore/libgnunetnamestore.la \
+#  $(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
+#  $(top_builddir)/src/util/libgnunetutil.la \
+#  $(GN_LIBINTL)
 
-w32nsp_install_SOURCES = \
-  w32nsp-install.c
-w32nsp_install_LDADD = -lws2_32
-
-w32nsp_uninstall_SOURCES = \
-  w32nsp-uninstall.c
-w32nsp_uninstall_LDADD = -lws2_32
-
-w32nsp_resolve_SOURCES = \
-  w32nsp-resolve.c
-w32nsp_resolve_LDADD = -lws2_32
 
 gnunet_service_gns_SOURCES = \
  gnunet-service-gns.c gnunet-service-gns.h \
@@ -247,14 +213,6 @@ gnunet_service_gns_LDADD = \
   $(GN_LIBINTL)
 
 
-libw32nsp_la_SOURCES = \
-  w32nsp.c
-libw32nsp_la_LIBADD = \
-  -lole32 -lws2_32
-libw32nsp_la_LDFLAGS = \
-  -export-symbols $(top_srcdir)/src/gns/w32nsp.def \
-  -no-undefined -static-libgcc
-
 libgnunetgns_la_SOURCES = \
  gns_api.c gns_api.h \
  gns_tld_api.c gns.h
diff --git a/src/gns/gns-helper-service-w32.conf b/src/gns/gns-helper-service-w32.conf
deleted file mode 100644 (file)
index a7b9fdd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[gns-helper-service-w32]
-START_ON_DEMAND = YES
-BINARY = gnunet-gns-helper-service-w32
-PORT = 5353
diff --git a/src/gns/gnunet-gns-helper-service-w32.c b/src/gns/gnunet-gns-helper-service-w32.c
deleted file mode 100644 (file)
index 4c48035..0000000
+++ /dev/null
@@ -1,803 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2012, 2017 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file gnunet-gns-helper-service-w32.c
- * @brief an intermediary service to access distributed GNS
- * @author Christian Grothoff
- * @author LRN
- */
-#include "platform.h"
-#include <gnunet_util_lib.h>
-#include <gnunet_identity_service.h>
-#include <gnunet_dnsparser_lib.h>
-#include <gnunet_namestore_service.h>
-#include <gnunet_gns_service.h>
-#include <initguid.h>
-#include "gnunet_w32nsp_lib.h"
-#include "w32resolver.h"
-#include <nspapi.h>
-#include <unistr.h>
-
-#define DEFINE_DNS_GUID(a, x) DEFINE_GUID(a, 0x00090035, 0x0000, x, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_A, 0x0001);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_NS, 0x0002);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_CNAME, 0x0005);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_SOA, 0x0006);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_PTR, 0x000c);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_MX, 0x000f);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_TEXT, 0x0010);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_AAAA, 0x001c);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_SRV, 0x0021);
-DEFINE_GUID(SVCID_HOSTNAME, 0x0002a800, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
-DEFINE_GUID(SVCID_INET_HOSTADDRBYNAME, 0x0002a803, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
-
-
-struct request {
-  /**
-   * We keep these in a doubly-linked list (for cleanup).
-   */
-  struct request *next;
-
-  /**
-   * We keep these in a doubly-linked list (for cleanup).
-   */
-  struct request *prev;
-
-  /**
-   * Client that issued the request
-   */
-  struct GNUNET_SERVICE_Client *client;
-
-  GUID sc;
-
-  int af;
-
-  wchar_t *name;
-
-  char *u8name;
-
-  struct GNUNET_GNS_LookupRequest *lookup_request;
-};
-
-
-/**
- * Head of the doubly-linked list (for cleanup).
- */
-static struct request *rq_head;
-
-/**
- * Tail of the doubly-linked list (for cleanup).
- */
-static struct request *rq_tail;
-
-/**
- * Handle to GNS service.
- */
-static struct GNUNET_GNS_Handle *gns;
-
-/**
- * Active operation on identity service.
- */
-static struct GNUNET_IDENTITY_Operation *id_op;
-
-/**
- * Handle for identity service.
- */
-static struct GNUNET_IDENTITY_Handle *identity;
-
-/**
- * Public key of the gns-master ego
- */
-static struct GNUNET_CRYPTO_EcdsaPublicKey gns_master_pubkey;
-
-/**
- * Set to 1 once egos are obtained.
- */
-static int got_egos;
-
-
-/**
- * Task run on shutdown.  Cleans up everything.
- *
- * @param cls unused
- */
-static void
-do_shutdown(void *cls)
-{
-  struct request *rq;
-
-  if (NULL != id_op)
-    {
-      GNUNET_IDENTITY_cancel(id_op);
-      id_op = NULL;
-    }
-  if (NULL != identity)
-    {
-      GNUNET_IDENTITY_disconnect(identity);
-      identity = NULL;
-    }
-  while (NULL != (rq = rq_head))
-    {
-      if (NULL != rq->lookup_request)
-        GNUNET_GNS_lookup_cancel(rq->lookup_request);
-      GNUNET_CONTAINER_DLL_remove(rq_head,
-                                  rq_tail,
-                                  rq);
-      GNUNET_free_non_null(rq->name);
-      if (rq->u8name)
-        free(rq->u8name);
-      GNUNET_free(rq);
-    }
-  if (NULL != gns)
-    {
-      GNUNET_GNS_disconnect(gns);
-      gns = NULL;
-    }
-}
-
-
-#define MarshallPtr(ptr, base, type) \
-  if (ptr) \
-  ptr = (type *) ((char *)ptr - (char *)base)
-
-
-void
-MarshallWSAQUERYSETW(WSAQUERYSETW *qs, GUID *sc)
-{
-  MarshallPtr(qs->lpszServiceInstanceName, qs, wchar_t);
-  MarshallPtr(qs->lpServiceClassId, qs, GUID);
-  MarshallPtr(qs->lpVersion, qs, WSAVERSION);
-  MarshallPtr(qs->lpNSProviderId, qs, GUID);
-  MarshallPtr(qs->lpszContext, qs, wchar_t);
-  MarshallPtr(qs->lpafpProtocols, qs, AFPROTOCOLS);
-  MarshallPtr(qs->lpszQueryString, qs, wchar_t);
-  for (int i = 0; i < qs->dwNumberOfCsAddrs; i++)
-    {
-      MarshallPtr(qs->lpcsaBuffer[i].LocalAddr.lpSockaddr, qs, SOCKADDR);
-      MarshallPtr(qs->lpcsaBuffer[i].RemoteAddr.lpSockaddr, qs, SOCKADDR);
-    }
-  MarshallPtr(qs->lpcsaBuffer, qs, CSADDR_INFO);
-  if (IsEqualGUID(&SVCID_INET_HOSTADDRBYNAME, sc) && qs->lpBlob != NULL && qs->lpBlob->pBlobData != NULL)
-    {
-      struct hostent *he;
-
-      he = (struct hostent *)qs->lpBlob->pBlobData;
-      for (int i = 0; he->h_aliases[i] != NULL; i++)
-        MarshallPtr(he->h_aliases[i], he, char);
-      MarshallPtr(he->h_aliases, he, char *);
-      MarshallPtr(he->h_name, he, char);
-      for (int i = 0; he->h_addr_list[i] != NULL; i++)
-        MarshallPtr(he->h_addr_list[i], he, void);
-      MarshallPtr(he->h_addr_list, he, char *);
-      MarshallPtr(qs->lpBlob->pBlobData, qs, void);
-    }
-  MarshallPtr(qs->lpBlob, qs, BLOB);
-}
-
-
-static void
-process_lookup_result(void *cls,
-                      uint32_t rd_count,
-                      const struct GNUNET_GNSRECORD_Data *rd)
-{
-  struct request *rq = cls;
-  int i, j, csanum;
-  struct GNUNET_W32RESOLVER_GetMessage *msg;
-  struct GNUNET_MQ_Envelope *msg_env;
-  struct GNUNET_MessageHeader *msgend;
-  struct GNUNET_MQ_Envelope *msgend_env;
-  WSAQUERYSETW *qs;
-  size_t size;
-  size_t size_recalc;
-  char *ptr;
-  size_t blobsize = 0;
-  size_t blobaddrcount = 0;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Got lookup result with count %u for rq %p with client %p\n",
-             rd_count,
-             rq,
-             rq->client);
-  rq->lookup_request = NULL;
-
-  if (0 == rd_count)
-    {
-      msgend_env = GNUNET_MQ_msg(msgend, GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE);
-      GNUNET_MQ_send(GNUNET_SERVICE_client_get_mq(rq->client),
-                     msgend_env);
-      GNUNET_CONTAINER_DLL_remove(rq_head,
-                                  rq_tail,
-                                  rq);
-      GNUNET_free_non_null(rq->name);
-      if (rq->u8name)
-        free(rq->u8name);
-      GNUNET_free(rq);
-      return;
-    }
-
-  size = sizeof(struct GNUNET_W32RESOLVER_GetMessage) + sizeof(WSAQUERYSETW);
-  size += (wcslen(rq->name) + 1) * sizeof(wchar_t);
-  size += sizeof(GUID);
-  /* lpszComment ? a TXT record? */
-  size += sizeof(GUID);
-  /* lpszContext ? Not sure what it is */
-  csanum = 0;
-  for (i = 0; i < rd_count; i++)
-    {
-      switch (rd[i].record_type)
-        {
-        case GNUNET_DNSPARSER_TYPE_A:
-          if (rd[i].data_size != sizeof(struct in_addr))
-            continue;
-          size += sizeof(CSADDR_INFO) + sizeof(struct sockaddr_in) * 2;
-          csanum++;
-          break;
-
-        case GNUNET_DNSPARSER_TYPE_AAAA:
-          if (rd[i].data_size != sizeof(struct in6_addr))
-            continue;
-          size += sizeof(CSADDR_INFO) + sizeof(struct sockaddr_in6) * 2;
-          csanum++;
-          break;
-        }
-    }
-  if (IsEqualGUID(&SVCID_INET_HOSTADDRBYNAME, &rq->sc))
-    {
-      size += sizeof(BLOB);
-      blobsize += sizeof(struct hostent);
-      blobsize += strlen(rq->u8name) + 1;
-      blobsize += sizeof(void *); /* For aliases */
-      blobsize += sizeof(void *); /* For addresses */
-      for (i = 0; i < rd_count; i++)
-        {
-          if ((rq->af == AF_INET || rq->af == AF_UNSPEC) && rd[i].record_type == GNUNET_DNSPARSER_TYPE_A)
-            {
-              blobsize += sizeof(void *);
-              blobsize += sizeof(struct in_addr);
-              blobaddrcount++;
-            }
-          else if (rq->af == AF_INET6 && rd[i].record_type == GNUNET_DNSPARSER_TYPE_AAAA)
-            {
-              blobsize += sizeof(void *);
-              blobsize += sizeof(struct in6_addr);
-              blobaddrcount++;
-            }
-        }
-      size += blobsize;
-    }
-  size_recalc = sizeof(struct GNUNET_W32RESOLVER_GetMessage) + sizeof(WSAQUERYSETW);
-  msg_env = GNUNET_MQ_msg_extra(msg,
-                                size - sizeof(struct GNUNET_MessageHeader),
-                                GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE);
-  msg->af = htonl(rq->af);
-  msg->sc_data1 = htonl(rq->sc.Data1);
-  msg->sc_data2 = htons(rq->sc.Data2);
-  msg->sc_data3 = htons(rq->sc.Data3);
-  for (i = 0; i < 8; i++)
-    msg->sc_data4[i] = rq->sc.Data4[i];
-  qs = (WSAQUERYSETW *)&msg[1];
-  ptr = (char *)&qs[1];
-  GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-  qs->dwSize = sizeof(WSAQUERYSETW);
-  qs->lpszServiceInstanceName = (wchar_t *)ptr;
-  ptr += (wcslen(rq->name) + 1) * sizeof(wchar_t);
-  size_recalc += (wcslen(rq->name) + 1) * sizeof(wchar_t);
-  GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-  wcscpy(qs->lpszServiceInstanceName, rq->name);
-  qs->lpServiceClassId = (GUID *)ptr;
-  ptr += sizeof(GUID);
-  size_recalc += sizeof(GUID);
-  GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-  GNUNET_memcpy(qs->lpServiceClassId, &rq->sc, sizeof(GUID));
-  qs->lpVersion = NULL;
-  qs->dwNameSpace = NS_DNS;
-  qs->lpNSProviderId = (GUID *)ptr;
-  ptr += sizeof(GUID);
-  size_recalc += sizeof(GUID);
-  GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-  GNUNET_memcpy(qs->lpNSProviderId, &GNUNET_NAMESPACE_PROVIDER_DNS, sizeof(GUID));
-  qs->lpszContext = NULL;
-  qs->dwNumberOfProtocols = 0;
-  qs->lpafpProtocols = NULL;
-  /* Don't bother with this... */
-  qs->lpszQueryString = NULL;
-  qs->dwNumberOfCsAddrs = rd_count;
-  qs->lpcsaBuffer = (CSADDR_INFO *)ptr;
-  ptr += sizeof(CSADDR_INFO) * csanum;
-  j = 0;
-  for (i = 0; i < rd_count; i++)
-    {
-      switch (rd[i].record_type)
-        {
-        case GNUNET_DNSPARSER_TYPE_A:
-          if (rd[i].data_size != sizeof(struct in_addr))
-            continue;
-          qs->lpcsaBuffer[j].iSocketType = SOCK_STREAM;
-          qs->lpcsaBuffer[j].iProtocol = IPPROTO_TCP;
-
-          qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength = sizeof(struct sockaddr_in);
-          qs->lpcsaBuffer[j].LocalAddr.lpSockaddr = (SOCKADDR *)ptr;
-          ptr += qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength;
-          memset(qs->lpcsaBuffer[j].LocalAddr.lpSockaddr, 0, qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength);
-          ((struct sockaddr_in *)qs->lpcsaBuffer[j].LocalAddr.lpSockaddr)->sin_family = AF_INET;
-
-          qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength = sizeof(struct sockaddr_in);
-          qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr = (SOCKADDR *)ptr;
-          ptr += qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength;
-          memset(qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr, 0, qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength);
-          ((struct sockaddr_in *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin_family = AF_INET;
-          ((struct sockaddr_in *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin_port = htonl(53); /* Don't ask why it's 53 */
-          ((struct sockaddr_in *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin_addr = *(struct in_addr *)rd[i].data;
-          size_recalc += sizeof(CSADDR_INFO) + sizeof(struct sockaddr_in) * 2;
-          j++;
-          break;
-
-        case GNUNET_DNSPARSER_TYPE_AAAA:
-          if (rd[i].data_size != sizeof(struct in6_addr))
-            continue;
-          qs->lpcsaBuffer[j].iSocketType = SOCK_STREAM;
-          qs->lpcsaBuffer[j].iProtocol = IPPROTO_TCP;
-
-          qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength = sizeof(struct sockaddr_in6);
-          qs->lpcsaBuffer[j].LocalAddr.lpSockaddr = (SOCKADDR *)ptr;
-          ptr += qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength;
-          memset(qs->lpcsaBuffer[j].LocalAddr.lpSockaddr, 0, qs->lpcsaBuffer[j].LocalAddr.iSockaddrLength);
-          ((struct sockaddr_in6 *)qs->lpcsaBuffer[j].LocalAddr.lpSockaddr)->sin6_family = AF_INET6;
-
-          qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength = sizeof(struct sockaddr_in6);
-          qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr = (SOCKADDR *)ptr;
-          ptr += qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength;
-          memset(qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr, 0, qs->lpcsaBuffer[j].RemoteAddr.iSockaddrLength);
-          ((struct sockaddr_in6 *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin6_family = AF_INET6;
-          ((struct sockaddr_in6 *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin6_port = htonl(53); /* Don't ask why it's 53 */
-          ((struct sockaddr_in6 *)qs->lpcsaBuffer[j].RemoteAddr.lpSockaddr)->sin6_addr = *(struct in6_addr *)rd[i].data;
-          size_recalc += sizeof(CSADDR_INFO) + sizeof(struct sockaddr_in6) * 2;
-          j++;
-          break;
-
-        default:
-          break;
-        }
-    }
-  GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-  qs->dwOutputFlags = 0;
-  if (IsEqualGUID(&SVCID_INET_HOSTADDRBYNAME, &rq->sc))
-    {
-      struct hostent *he;
-      qs->lpBlob = (BLOB *)ptr;
-      ptr += sizeof(BLOB);
-
-      size_recalc += sizeof(BLOB);
-      GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-      qs->lpBlob->cbSize = blobsize;
-      qs->lpBlob->pBlobData = (BYTE *)ptr;
-      ptr += sizeof(struct hostent);
-
-      size_recalc += sizeof(struct hostent);
-      GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-      he = (struct hostent *)qs->lpBlob->pBlobData;
-      he->h_name = (char *)ptr;
-      ptr += strlen(rq->u8name) + 1;
-
-      size_recalc += strlen(rq->u8name) + 1;
-      GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-      strcpy(he->h_name, rq->u8name);
-      he->h_aliases = (char **)ptr;
-      ptr += sizeof(void *);
-
-      size_recalc += sizeof(void *); /* For aliases */
-      GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-      he->h_aliases[0] = NULL;
-      he->h_addrtype = rq->af;
-      he->h_length = rq->af == AF_INET || rq->af == AF_UNSPEC ? sizeof(struct in_addr) : sizeof(struct in6_addr);
-      he->h_addr_list = (char **)ptr;
-      ptr += sizeof(void *) * (blobaddrcount + 1);
-
-      size_recalc += sizeof(void *) * (blobaddrcount + 1); /* For addresses */
-      GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-      j = 0;
-      for (i = 0; i < rd_count; i++)
-        {
-          if ((rq->af == AF_INET || rq->af == AF_UNSPEC) &&
-              rd[i].record_type == GNUNET_DNSPARSER_TYPE_A)
-            {
-              he->h_addr_list[j] = (char *)ptr;
-              ptr += sizeof(struct in_addr);
-
-              size_recalc += sizeof(struct in_addr);
-              GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-              GNUNET_memcpy(he->h_addr_list[j], rd[i].data, sizeof(struct in_addr));
-              j++;
-            }
-          else if (rq->af == AF_INET6 && rd[i].record_type == GNUNET_DNSPARSER_TYPE_AAAA)
-            {
-              he->h_addr_list[j] = (char *)ptr;
-              ptr += sizeof(struct in6_addr);
-
-              size_recalc += sizeof(struct in6_addr);
-              GNUNET_break(size_recalc == (size_t)((char *)ptr - (char *)msg));
-
-              GNUNET_memcpy(he->h_addr_list[j], rd[i].data, sizeof(struct in6_addr));
-              j++;
-            }
-        }
-      he->h_addr_list[j] = NULL;
-    }
-  msgend_env = GNUNET_MQ_msg(msgend, GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE);
-
-  if ((char *)ptr - (char *)msg != size || size_recalc != size || size_recalc != ((char *)ptr - (char *)msg))
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                 "Error in WSAQUERYSETW size calc: expected %u, got %lu (recalc %u)\n",
-                 size,
-                 (unsigned long)((char *)ptr - (char *)msg),
-                 size_recalc);
-    }
-  MarshallWSAQUERYSETW(qs, &rq->sc);
-  GNUNET_MQ_send(GNUNET_SERVICE_client_get_mq(rq->client),
-                 msg_env);
-  GNUNET_MQ_send(GNUNET_SERVICE_client_get_mq(rq->client),
-                 msgend_env);
-  GNUNET_CONTAINER_DLL_remove(rq_head,
-                              rq_tail,
-                              rq);
-  GNUNET_free_non_null(rq->name);
-  if (rq->u8name)
-    free(rq->u8name);
-  GNUNET_free(rq);
-}
-
-
-static void
-get_ip_from_hostname(struct GNUNET_SERVICE_Client *client,
-                     const wchar_t *name,
-                     int af,
-                     GUID sc)
-{
-  struct request *rq;
-  char *hostname;
-  size_t strl;
-  size_t namelen;
-  uint32_t rtype;
-
-  if (IsEqualGUID(&SVCID_DNS_TYPE_A, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_A;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_NS, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_NS;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_CNAME, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_CNAME;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_SOA, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_SOA;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_PTR, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_PTR;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_MX, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_MX;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_TEXT, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_TXT;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_AAAA, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_AAAA;
-  else if (IsEqualGUID(&SVCID_DNS_TYPE_SRV, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_SRV;
-  else if (IsEqualGUID(&SVCID_INET_HOSTADDRBYNAME, &sc))
-    rtype = GNUNET_DNSPARSER_TYPE_A;
-  else
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-                 "Unknown GUID: %08lX-%04X-%04X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n",
-                 sc.Data1,
-                 sc.Data2,
-                 sc.Data3,
-                 sc.Data4[0],
-                 sc.Data4[1],
-                 sc.Data4[2],
-                 sc.Data4[3],
-                 sc.Data4[4],
-                 sc.Data4[5],
-                 sc.Data4[6],
-                 sc.Data4[7]);
-      GNUNET_SERVICE_client_drop(client);
-      return;
-    }
-
-  if (name)
-    namelen = wcslen(name);
-  else
-    namelen = 0;
-  if (namelen > 0)
-    hostname = (char *)u16_to_u8(name, namelen + 1, NULL, &strl);
-  else
-    hostname = NULL;
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "W32 DNS resolver asked to look up %s for `%s'.\n",
-             af == AF_INET ? "IPv4" : af == AF_INET6 ? "IPv6" : "anything",
-             hostname);
-
-  rq = GNUNET_new(struct request);
-  rq->sc = sc;
-  rq->client = client;
-  rq->af = af;
-  if (rq->af != AF_INET && rq->af != AF_INET6)
-    rq->af = AF_INET;
-  if (namelen)
-    {
-      rq->name = GNUNET_malloc((namelen + 1) * sizeof(wchar_t));
-      GNUNET_memcpy(rq->name,
-                    name,
-                    (namelen + 1) * sizeof(wchar_t));
-      rq->u8name = hostname;
-    }
-
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Launching a lookup for client %p with rq %p\n",
-             client,
-             rq);
-  rq->lookup_request = GNUNET_GNS_lookup(gns,
-                                         hostname,
-                                         &gns_master_pubkey,
-                                         rtype,
-                                         GNUNET_NO /* Use DHT */,
-                                         &process_lookup_result,
-                                         rq);
-  if (NULL != rq->lookup_request)
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-                 "Lookup launched, waiting for a reply\n");
-      GNUNET_SERVICE_client_continue(client);
-      GNUNET_CONTAINER_DLL_insert(rq_head,
-                                  rq_tail,
-                                  rq);
-    }
-  else
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-                 "Lookup was not launched, disconnecting the client\n");
-      GNUNET_free_non_null(rq->name);
-      if (rq->u8name)
-        free(rq->u8name);
-      GNUNET_free(rq);
-      GNUNET_SERVICE_client_drop(client);
-    }
-}
-
-
-/**
- * Check GET-message.
- *
- * @param cls identification of the client
- * @param msg the actual message
- * @return #GNUNET_OK if @a msg is well-formed
- */
-static int
-check_get(void *cls,
-          const struct GNUNET_W32RESOLVER_GetMessage *msg)
-{
-  uint16_t size;
-  const wchar_t *hostname;
-
-  if (!got_egos)
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                 _("Not ready to process requests, lacking ego data\n"));
-      return GNUNET_SYSERR;
-    }
-  size = ntohs(msg->header.size) - sizeof(struct GNUNET_W32RESOLVER_GetMessage);
-  hostname = (const wchar_t *)&msg[1];
-  if (hostname[size / 2 - 1] != L'\0')
-    {
-      GNUNET_break(0);
-      return GNUNET_SYSERR;
-    }
-  return GNUNET_OK;
-}
-
-
-/**
- * Handle GET-message.
- *
- * @param cls identification of the client
- * @param msg the actual message
- */
-static void
-handle_get(void *cls,
-           const struct GNUNET_W32RESOLVER_GetMessage *msg)
-{
-  struct GNUNET_SERVICE_Client *client = cls;
-  GUID sc;
-  uint16_t size;
-  const wchar_t *hostname;
-  int af;
-
-  size = ntohs(msg->header.size) - sizeof(struct GNUNET_W32RESOLVER_GetMessage);
-  af = ntohl(msg->af);
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Got NBO GUID: %08X-%04X-%04X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n",
-             msg->sc_data1,
-             msg->sc_data2,
-             msg->sc_data3,
-             msg->sc_data4[0],
-             msg->sc_data4[1],
-             msg->sc_data4[2],
-             msg->sc_data4[3],
-             msg->sc_data4[4],
-             msg->sc_data4[5],
-             msg->sc_data4[6],
-             msg->sc_data4[7]);
-  sc.Data1 = ntohl(msg->sc_data1);
-  sc.Data2 = ntohs(msg->sc_data2);
-  sc.Data3 = ntohs(msg->sc_data3);
-  for (int i = 0; i < 8; i++)
-    sc.Data4[i] = msg->sc_data4[i];
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Got GUID: %08lX-%04X-%04X-%02X-%02X-%02X-%02X-%02X-%02X-%02X-%02X\n",
-             sc.Data1,
-             sc.Data2,
-             sc.Data3,
-             sc.Data4[0],
-             sc.Data4[1],
-             sc.Data4[2],
-             sc.Data4[3],
-             sc.Data4[4],
-             sc.Data4[5],
-             sc.Data4[6],
-             sc.Data4[7]);
-  hostname = (const wchar_t *)&msg[1];
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
-             "Name of %u bytes (last word is 0x%0X): %*S\n",
-             size,
-             hostname[size / 2 - 2],
-             size / 2,
-             hostname);
-  get_ip_from_hostname(client,
-                       hostname,
-                       af,
-                       sc);
-}
-
-
-/**
- * Method called to with the ego we are to use for the lookup,
- * when the ego is the one for the default master zone.
- *
- * @param cls closure (NULL, unused)
- * @param ego ego handle, NULL if not found
- * @param ctx context for application to store data for this ego
- *                 (during the lifetime of this process, initially NULL)
- * @param name name assigned by the user for this ego,
- *                   NULL if the user just deleted the ego and it
- *                   must thus no longer be used
- */
-static void
-identity_master_cb(void *cls,
-                   struct GNUNET_IDENTITY_Ego *ego,
-                   void **ctx,
-                   const char *name)
-{
-  id_op = NULL;
-  if (NULL == ego)
-    {
-      GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                 _("Ego for `gns-master' not found, cannot perform lookup.  Did you run gnunet-gns-import.sh?\n"));
-      GNUNET_SCHEDULER_shutdown();
-      return;
-    }
-  GNUNET_IDENTITY_ego_get_public_key(ego,
-                                     &gns_master_pubkey);
-  got_egos = 1;
-}
-
-
-/**
- * Start up gns-helper-w32 service.
- *
- * @param cls closure
- * @param cfg configuration to use
- * @param service the initialized service
- */
-static void
-run(void *cls,
-    const struct GNUNET_CONFIGURATION_Handle *cfg,
-    struct GNUNET_SERVICE_Handle *service)
-{
-  gns = GNUNET_GNS_connect(cfg);
-  if (NULL == gns)
-    {
-      fprintf(stderr,
-              _("Failed to connect to GNS\n"));
-      GNUNET_SCHEDULER_shutdown();
-      return;
-    }
-  GNUNET_SCHEDULER_add_shutdown(&do_shutdown,
-                                NULL);
-  identity = GNUNET_IDENTITY_connect(cfg,
-                                     NULL,
-                                     NULL);
-  if (NULL == identity)
-    {
-      fprintf(stderr,
-              _("Failed to connect to identity service\n"));
-      GNUNET_SCHEDULER_shutdown();
-      return;
-    }
-  id_op = GNUNET_IDENTITY_get(identity,
-                              "gns-master",
-                              &identity_master_cb,
-                              NULL);
-  GNUNET_assert(NULL != id_op);
-}
-
-
-/**
- * Handle client connecting to the service.
- *
- * @param cls NULL
- * @param client the new client
- * @param mq the message queue of @a client
- * @return @a client
- */
-static void *
-client_connect_cb(void *cls,
-                  struct GNUNET_SERVICE_Client *client,
-                  struct GNUNET_MQ_Handle *mq)
-{
-  return client;
-}
-
-
-/**
- * Callback called when a client disconnected from the service
- *
- * @param cls closure for the service
- * @param c the client that disconnected
- * @param internal_cls should be equal to @a c
- */
-static void
-client_disconnect_cb(void *cls,
-                     struct GNUNET_SERVICE_Client *client,
-                     void *internal_cls)
-{
-  GNUNET_assert(internal_cls == client);
-}
-
-
-/**
- * Define "main" method using service macro.
- */
-GNUNET_SERVICE_MAIN
-  ("gns-helper-service-w32",
-  GNUNET_SERVICE_OPTION_NONE,
-  &run,
-  &client_connect_cb,
-  &client_disconnect_cb,
-  NULL,
-  GNUNET_MQ_hd_var_size(get,
-                        GNUNET_MESSAGE_TYPE_W32RESOLVER_REQUEST,
-                        struct GNUNET_W32RESOLVER_GetMessage,
-                        NULL),
-  GNUNET_MQ_handler_end());
-
-
-/* end of gnunet-gns-helper-service-w32.c */
index 5d42f777f201b51fc2eb8d97d166646e987690db..f4a12ddeefb3b7de2670637020115e25abe229ac 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
 # USA.
 
-EXTRA_DIST = map-file 
+EXTRA_DIST = map-file
 
 AM_LDFLAGS=-avoid-version -module -export-dynamic
 
 nssdir = $(libdir)/gnunet/nss
 
-if !MINGW
 nss_LTLIBRARIES = \
        libnss_gns.la \
        libnss_gns4.la \
        libnss_gns6.la
-endif
 
 sources = nss_gns_query.h nss_gns_query.c
 
@@ -45,4 +43,3 @@ libnss_gns4_la_LDFLAGS=$(libnss_gns_la_LDFLAGS)
 libnss_gns6_la_SOURCES=$(libnss_gns_la_SOURCES)
 libnss_gns6_la_CFLAGS=$(libnss_gns_la_CFLAGS) -DNSS_IPV6_ONLY=1
 libnss_gns6_la_LDFLAGS=$(libnss_gns_la_LDFLAGS)
-
diff --git a/src/gns/w32nsp-install.c b/src/gns/w32nsp-install.c
deleted file mode 100644 (file)
index 2674359..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2012 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file gns/w32nsp-install.c
- * @brief W32 integration installer for GNS
- * @author LRN
- */
-
-#include <ws2spi.h>
-#include <windows.h>
-#include <nspapi.h>
-#include <initguid.h>
-#include "gnunet_w32nsp_lib.h"
-#include <stdio.h>
-
-int
-main(int argc, char **argv)
-{
-  int ret;
-  int r = 1;
-  WSADATA wsd;
-  GUID id = GNUNET_NAMESPACE_PROVIDER_DNS;
-  wchar_t *cmdl;
-  int wargc;
-  wchar_t **wargv;
-  /* Allocate a 4K buffer to retrieve all the namespace providers */
-  DWORD dwInitialBufferLen = 4096;
-  DWORD dwBufferLen;
-  WSANAMESPACE_INFO *pi;
-  int p_count;
-  int i;
-
-  if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
-    {
-      fprintf(stderr, "WSAStartup () failed: %lu\n", GetLastError());
-      return 5;
-    }
-
-  dwBufferLen = dwInitialBufferLen;
-  pi = malloc(dwBufferLen);
-  if (NULL == pi)
-    {
-      fprintf(stderr, "malloc (%lu) failed: %d\n", dwBufferLen, errno);
-      WSACleanup();
-      return 6;
-    }
-  p_count = WSAEnumNameSpaceProviders(&dwBufferLen, pi);
-  if (SOCKET_ERROR == p_count)
-    {
-      DWORD err = GetLastError();
-      if (WSAEFAULT == err && dwBufferLen != dwInitialBufferLen)
-        {
-          free(pi);
-
-          pi = malloc(dwBufferLen);
-          if (pi == NULL)
-            {
-              fprintf(stderr, "malloc (%lu) failed: %d\n", dwBufferLen, errno);
-              WSACleanup();
-              return 6;
-            }
-
-          p_count = WSAEnumNameSpaceProviders(&dwBufferLen, pi);
-          if (SOCKET_ERROR == p_count)
-            {
-              fprintf(stderr, "WSAEnumNameSpaceProviders (&%lu, %p) failed: %lu\n", dwBufferLen, pi, GetLastError());
-              free(pi);
-              WSACleanup();
-              return 7;
-            }
-        }
-      else
-        {
-          fprintf(stderr, "WSAEnumNameSpaceProviders (&%lu, %p) failed: %lu\n", dwBufferLen, pi, GetLastError());
-          free(pi);
-          WSACleanup();
-          return 8;
-        }
-    }
-  for (i = 0; i < p_count; i++)
-    {
-      if (IsEqualGUID(&pi[i].NSProviderId, &id))
-        {
-          fprintf(stderr, "GNUnet DNS provider is already installed\n");
-          free(pi);
-          WSACleanup();
-          return 0;
-        }
-    }
-  free(pi);
-
-  cmdl = GetCommandLineW();
-  if (cmdl == NULL)
-    {
-      WSACleanup();
-      return 2;
-    }
-  wargv = CommandLineToArgvW(cmdl, &wargc);
-  if (wargv == NULL)
-    {
-      WSACleanup();
-      return 3;
-    }
-  r = 4;
-
-  if (wargc == 2)
-    {
-      ret = WSCInstallNameSpace(L"GNUnet DNS provider", wargv[1], NS_DNS, 0, &id);
-      if (ret == NO_ERROR)
-        {
-          fprintf(stderr, "Installed GNUnet DNS provider\n");
-          r = 0;
-        }
-      else
-        {
-          r = 1;
-          fprintf(stderr,
-                  "WSCInstallNameSpace (L\"GNUnet DNS provider\", \"%S\", %d, 0, %p) failed: %lu\n",
-                  wargv[1], NS_DNS, &id, GetLastError());
-        }
-    }
-  else
-    fprintf(stderr, "Usage: %S <path-to-libw32nsp>\n", wargv[0]);
-  WSACleanup();
-  return r;
-}
diff --git a/src/gns/w32nsp-resolve.c b/src/gns/w32nsp-resolve.c
deleted file mode 100644 (file)
index ad0fd35..0000000
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2012 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file gns/w32nsp-resolve.c
- * @brief W32 integration for GNS
- * @author LRN
- */
-/* Instead of including gnunet_common.h */
-#define GNUNET_memcpy(dst, src, n) do { if (0 != n) { (void)memcpy(dst, src, n); } } while (0)
-
-#include <ws2tcpip.h>
-#include <windows.h>
-#include <nspapi.h>
-#include <ws2spi.h>
-#include <nspapi.h>
-#include <initguid.h>
-#include "gnunet_w32nsp_lib.h"
-#include <stdio.h>
-
-typedef int (WSPAPI *LPNSPSTARTUP)(LPGUID lpProviderId, LPNSP_ROUTINE lpnspRoutines);
-
-GUID host = { 0x0002a800, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } };
-GUID ip4 = { 0x00090035, 0, 1, { 0xc0, 0, 0, 0, 0, 0, 0, 0x046 } };
-GUID ip6 = { 0x00090035, 0, 0x001c, { 0xc0, 0, 0, 0, 0, 0, 0, 0x046 } };
-
-DEFINE_GUID(W32_DNS, 0x22059D40, 0x7E9E, 0x11CF, 0xAE, 0x5A, 0x00, 0xAA, 0x00, 0xA7, 0x11, 0x2B);
-
-#define DEFINE_DNS_GUID(a, x) DEFINE_GUID(a, 0x00090035, 0x0000, x, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46)
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_A, 0x0001);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_NS, 0x0002);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_CNAME, 0x0005);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_SOA, 0x0006);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_PTR, 0x000c);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_MX, 0x000f);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_TEXT, 0x0010);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_AAAA, 0x001c);
-DEFINE_DNS_GUID(SVCID_DNS_TYPE_SRV, 0x0021);
-DEFINE_GUID(SVCID_HOSTNAME, 0x0002a800, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
-DEFINE_GUID(SVCID_INET_HOSTADDRBYNAME, 0x0002a803, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46);
-
-//
-// Utility to turn a list of offsets into a list of addresses. Used
-// to convert structures returned as BLOBs.
-//
-
-VOID
-FixList(PCHAR ** List, PCHAR Base)
-{
-  if (*List)
-    {
-      PCHAR * Addr;
-
-      Addr = *List = (PCHAR *)(((DWORD)*List + Base));
-      while (*Addr)
-        {
-          *Addr = (PCHAR)(((DWORD)*Addr + Base));
-          Addr++;
-        }
-    }
-}
-
-
-//
-// Routine to convert a hostent returned in a BLOB to one with
-// usable pointers. The structure is converted in-place.
-//
-VOID
-UnpackHostEnt(struct hostent * hostent)
-{
-  PCHAR pch;
-
-  pch = (PCHAR)hostent;
-
-  if (hostent->h_name)
-    {
-      hostent->h_name = (PCHAR)((DWORD)hostent->h_name + pch);
-    }
-  FixList(&hostent->h_aliases, pch);
-  FixList(&hostent->h_addr_list, pch);
-}
-
-
-static void
-print_hostent(struct hostent *he)
-{
-  int i;
-  char **pAlias;
-
-  printf("\tOfficial name: %s\n", he->h_name);
-  for (i = 0, pAlias = he->h_aliases; *pAlias != 0; pAlias++)
-    {
-      printf("\tAlternate name #%d: %s\n", ++i, *pAlias);
-    }
-  printf("\tAddress type: ");
-  switch (he->h_addrtype)
-    {
-    case AF_INET:
-      printf("AF_INET\n");
-      break;
-
-    case AF_INET6:
-      printf("AF_INET6\n");
-      break;
-
-    case AF_NETBIOS:
-      printf("AF_NETBIOS\n");
-      break;
-
-    default:
-      printf(" %d\n", he->h_addrtype);
-      break;
-    }
-  printf("\tAddress length: %d\n", he->h_length);
-
-  if (he->h_addrtype == AF_INET)
-    {
-      struct sockaddr_in addr;
-      memset(&addr, 0, sizeof(addr));
-      addr.sin_family = AF_INET;
-      addr.sin_port = 0;
-      i = 0;
-      while (he->h_addr_list[i] != 0)
-        {
-          char buf[1024];
-          DWORD buflen = 1024;
-          addr.sin_addr = *(struct in_addr *)he->h_addr_list[i++];
-          if (NO_ERROR == WSAAddressToStringA((LPSOCKADDR)&addr, sizeof(addr), NULL, buf, &buflen))
-            printf("\tIPv4 Address #%d: %s\n", i, buf);
-          else
-            printf("\tIPv4 Address #%d: Can't convert: %lu\n", i, GetLastError());
-        }
-    }
-  else if (he->h_addrtype == AF_INET6)
-    {
-      struct sockaddr_in6 addr;
-      memset(&addr, 0, sizeof(addr));
-      addr.sin6_family = AF_INET6;
-      addr.sin6_port = 0;
-      i = 0;
-      while (he->h_addr_list[i] != 0)
-        {
-          char buf[1024];
-          DWORD buflen = 1024;
-          addr.sin6_addr = *(struct in6_addr *)he->h_addr_list[i++];
-          if (NO_ERROR == WSAAddressToStringA((LPSOCKADDR)&addr, sizeof(addr), NULL, buf, &buflen))
-            printf("\tIPv6 Address #%d: %s\n", i, buf);
-          else
-            printf("\tIPv6 Address #%d: Can't convert: %lu\n", i, GetLastError());
-        }
-    }
-}
-
-
-int
-main(int argc, char **argv)
-{
-  int ret;
-  int r = 1;
-  WSADATA wsd;
-  GUID prov;
-  GUID sc;
-  wchar_t *cmdl;
-  int wargc;
-  wchar_t **wargv;
-
-  if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
-    {
-      fprintf(stderr, "WSAStartup() failed: %lu\n", GetLastError());
-      return 5;
-    }
-
-  cmdl = GetCommandLineW();
-  if (cmdl == NULL)
-    {
-      WSACleanup();
-      return 2;
-    }
-  wargv = CommandLineToArgvW(cmdl, &wargc);
-  if (wargv == NULL)
-    {
-      WSACleanup();
-      return 3;
-    }
-  r = 4;
-
-  if (wargc == 5)
-    {
-      if (wcscmp(wargv[1], L"A") == 0)
-        sc = SVCID_DNS_TYPE_A;
-      else if (wcscmp(wargv[1], L"AAAA") == 0)
-        sc = SVCID_DNS_TYPE_AAAA;
-      else if (wcscmp(wargv[1], L"name") == 0)
-        sc = SVCID_HOSTNAME;
-      else if (wcscmp(wargv[1], L"addr") == 0)
-        sc = SVCID_INET_HOSTADDRBYNAME;
-      else
-        wargc -= 1;
-      if (wcscmp(wargv[4], L"mswdns") == 0)
-        prov = W32_DNS;
-      else if (wcscmp(wargv[4], L"gnunetdns") == 0)
-        prov = GNUNET_NAMESPACE_PROVIDER_DNS;
-      else
-        wargc -= 1;
-    }
-  else if (wargc == 3)
-    {
-    }
-  else
-    {
-      fprintf(stderr, "Usage: %S <record type> <service name> <NSP library path> <NSP id>\n"
-              "record type      - one of the following: A | AAAA | name | addr\n"
-              "service name     - a string to resolve; \" \" (a space) means 'blank'\n"
-              "NSP library path - path to libw32nsp\n"
-              "NSP id           - one of the following: mswdns | gnunetdns\n",
-              wargv[0]);
-    }
-
-  if (wargc == 5)
-    {
-      HMODULE nsp;
-
-      nsp = LoadLibraryW(wargv[3]);
-      if (nsp == NULL)
-        {
-          fprintf(stderr, "Failed to load library `%S'\n", wargv[3]);
-        }
-      else
-        {
-          LPNSPSTARTUP startup = (LPNSPSTARTUP)GetProcAddress(nsp, "NSPStartup");
-          if (startup == NULL)
-            startup = (LPNSPSTARTUP)GetProcAddress(nsp, "NSPStartup@8");
-          if (startup != NULL)
-            {
-              NSP_ROUTINE api;
-              api.cbSize = sizeof(api);
-              ret = startup(&prov, &api);
-              if (NO_ERROR != ret)
-                fprintf(stderr, "startup failed: %lu\n", GetLastError());
-              else
-                {
-                  HANDLE lookup;
-                  WSAQUERYSETW search;
-                  char buf[4096];
-                  WSAQUERYSETW *result = (WSAQUERYSETW *)buf;
-                  DWORD resultsize;
-                  DWORD err;
-                  memset(&search, 0, sizeof(search));
-                  search.dwSize = sizeof(search);
-                  search.lpszServiceInstanceName = (wcscmp(wargv[2], L" ") == 0) ? NULL : wargv[2];
-                  search.lpServiceClassId = &sc;
-                  search.lpNSProviderId = &prov;
-                  search.dwNameSpace = NS_ALL;
-                  ret = api.NSPLookupServiceBegin(&prov, &search, NULL, LUP_RETURN_ALL, &lookup);
-                  if (ret != NO_ERROR)
-                    {
-                      fprintf(stderr, "lookup start failed\n");
-                    }
-                  else
-                    {
-                      resultsize = 4096;
-                      ret = api.NSPLookupServiceNext(lookup, LUP_RETURN_ALL, &resultsize, result);
-                      err = GetLastError();
-                      if (ret != NO_ERROR)
-                        {
-                          fprintf(stderr, "lookup next failed: %lu\n", err);
-                        }
-                      else
-                        {
-                          int i;
-                          printf("Got result:\n");
-                          printf("  lpszServiceInstanceName: %S\n", result->lpszServiceInstanceName ? result->lpszServiceInstanceName : L"NULL");
-                          if (result->lpServiceClassId)
-                            printf("  lpServiceClassId:        { 0x%08lX,0x%04X,0x%04X, { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X } }\n",
-                                   result->lpServiceClassId->Data1, result->lpServiceClassId->Data2, result->lpServiceClassId->Data3, result->lpServiceClassId->Data4[0],
-                                   result->lpServiceClassId->Data4[1], result->lpServiceClassId->Data4[2], result->lpServiceClassId->Data4[3], result->lpServiceClassId->Data4[4],
-                                   result->lpServiceClassId->Data4[5], result->lpServiceClassId->Data4[6], result->lpServiceClassId->Data4[7]);
-                          else
-                            printf("  lpServiceClassId:        NULL\n");
-                          if (result->lpVersion)
-                            printf("  lpVersion:               0x%08lX, %d\n", result->lpVersion->dwVersion, result->lpVersion->ecHow);
-                          else
-                            printf("  lpVersion:               NULL\n");
-                          printf("  lpszComment:             %S\n", result->lpszComment ? result->lpszComment : L"NULL");
-                          printf("  dwNameSpace:             %lu\n", result->dwNameSpace);
-                          if (result->lpNSProviderId)
-                            printf("  lpNSProviderId:          { 0x%08lX,0x%04X,0x%04X, { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X } }\n",
-                                   result->lpNSProviderId->Data1, result->lpNSProviderId->Data2, result->lpNSProviderId->Data3, result->lpNSProviderId->Data4[0],
-                                   result->lpNSProviderId->Data4[1], result->lpNSProviderId->Data4[2], result->lpNSProviderId->Data4[3], result->lpNSProviderId->Data4[4],
-                                   result->lpNSProviderId->Data4[5], result->lpNSProviderId->Data4[6], result->lpNSProviderId->Data4[7]);
-                          else
-                            printf("  lpNSProviderId:          NULL\n");
-                          printf("  lpszContext:             %S\n", result->lpszContext ? result->lpszContext : L"NULL");
-                          printf("  dwNumberOfProtocols:     %lu\n", result->dwNumberOfProtocols);
-                          printf("  lpszQueryString:         %S\n", result->lpszQueryString ? result->lpszQueryString : L"NULL");
-                          printf("  dwNumberOfCsAddrs:       %lu\n", result->dwNumberOfCsAddrs);
-                          for (i = 0; i < result->dwNumberOfCsAddrs; i++)
-                            {
-                              switch (result->lpcsaBuffer[i].iSocketType)
-                                {
-                                case SOCK_STREAM:
-                                  printf("    %d: iSocketType = SOCK_STREAM\n", i);
-                                  break;
-
-                                case SOCK_DGRAM:
-                                  printf("    %d: iSocketType = SOCK_DGRAM\n", i);
-                                  break;
-
-                                default:
-                                  printf("    %d: iSocketType = %d\n", i, result->lpcsaBuffer[i].iSocketType);
-                                }
-                              switch (result->lpcsaBuffer[i].iProtocol)
-                                {
-                                case IPPROTO_TCP:
-                                  printf("    %d: iProtocol   = IPPROTO_TCP\n", i);
-                                  break;
-
-                                case IPPROTO_UDP:
-                                  printf("    %d: iProtocol   = IPPROTO_UDP\n", i);
-                                  break;
-
-                                default:
-                                  printf("    %d: iProtocol   = %d\n", i, result->lpcsaBuffer[i].iProtocol);
-                                }
-                              switch (result->lpcsaBuffer[i].LocalAddr.lpSockaddr->sa_family)
-                                {
-                                case AF_INET:
-                                  printf("    %d: loc family  = AF_INET\n", i);
-                                  break;
-
-                                case AF_INET6:
-                                  printf("    %d: loc family  = AF_INET6\n", i);
-                                  break;
-
-                                default:
-                                  printf("    %d: loc family  = %hu\n", i, result->lpcsaBuffer[i].LocalAddr.lpSockaddr->sa_family);
-                                }
-                              switch (result->lpcsaBuffer[i].RemoteAddr.lpSockaddr->sa_family)
-                                {
-                                case AF_INET:
-                                  printf("    %d: rem family  = AF_INET\n", i);
-                                  break;
-
-                                case AF_INET6:
-                                  printf("    %d: rem family  = AF_INET6\n", i);
-                                  break;
-
-                                default:
-                                  printf("    %d: rem family = %hu\n", i, result->lpcsaBuffer[i].RemoteAddr.lpSockaddr->sa_family);
-                                }
-                              char buf[1024];
-                              DWORD buflen = 1024;
-                              if (NO_ERROR == WSAAddressToStringA(result->lpcsaBuffer[i].LocalAddr.lpSockaddr, result->lpcsaBuffer[i].LocalAddr.iSockaddrLength, NULL, buf, &buflen))
-                                printf("\tLocal Address #%d: %s\n", i, buf);
-                              else
-                                printf("\tLocal Address #%d: Can't convert: %lu\n", i, GetLastError());
-                              buflen = 1024;
-                              if (NO_ERROR == WSAAddressToStringA(result->lpcsaBuffer[i].RemoteAddr.lpSockaddr, result->lpcsaBuffer[i].RemoteAddr.iSockaddrLength, NULL, buf, &buflen))
-                                printf("\tRemote Address #%d: %s\n", i, buf);
-                              else
-                                printf("\tRemote Address #%d: Can't convert: %lu\n", i, GetLastError());
-                            }
-                          printf("  dwOutputFlags:           0x%08lX\n", result->dwOutputFlags);
-                          printf("  lpBlob:                  0x%p\n", result->lpBlob);
-                          if (result->lpBlob)
-                            {
-                              struct hostent *he = malloc(result->lpBlob->cbSize);
-                              if (he != NULL)
-                                {
-                                  GNUNET_memcpy(he, result->lpBlob->pBlobData, result->lpBlob->cbSize);
-                                  UnpackHostEnt(he);
-                                  print_hostent(he);
-                                  free(he);
-                                }
-                            }
-                        }
-                      ret = api.NSPLookupServiceEnd(lookup);
-                      if (ret != NO_ERROR)
-                        printf("NSPLookupServiceEnd() failed: %lu\n", GetLastError());
-                    }
-                  api.NSPCleanup(&prov);
-                }
-            }
-          FreeLibrary(nsp);
-        }
-    }
-  else if (wargc == 3)
-    {
-      int s;
-      ADDRINFOW hints;
-      ADDRINFOW *result;
-      ADDRINFOW *pos;
-
-      memset(&hints, 0, sizeof(struct addrinfo));
-      hints.ai_family = AF_UNSPEC;
-      hints.ai_socktype = SOCK_STREAM;
-
-      if (0 != (s = GetAddrInfoW(wargv[2], NULL, &hints, &result)))
-        {
-          fprintf(stderr, "Cound not resolve `%S' using GetAddrInfoW: %lu\n",
-                  wargv[2], GetLastError());
-        }
-      else
-        {
-          for (pos = result; pos != NULL; pos = pos->ai_next)
-            {
-              wchar_t tmpbuf[1024];
-              DWORD buflen = 1024;
-              if (0 == WSAAddressToStringW(pos->ai_addr, pos->ai_addrlen, NULL, tmpbuf, &buflen))
-                fprintf(stderr, "Result:\n"
-                        "  flags: 0x%X\n"
-                        "  family: 0x%X\n"
-                        "  socktype: 0x%X\n"
-                        "  protocol: 0x%X\n"
-                        "  addrlen: %u\n"
-                        "  addr: %S\n"
-                        "  canonname: %S\n",
-                        pos->ai_flags,
-                        pos->ai_family,
-                        pos->ai_socktype,
-                        pos->ai_protocol,
-                        pos->ai_addrlen,
-                        tmpbuf,
-                        pos->ai_canonname);
-              else
-                fprintf(stderr, "Result:\n"
-                        "  flags: 0x%X\n"
-                        "  family: 0x%X\n"
-                        "  socktype: 0x%X\n"
-                        "  protocol: 0x%X\n"
-                        "  addrlen: %u\n"
-                        "  addr: %S\n"
-                        "  canonname: %S\n",
-                        pos->ai_flags,
-                        pos->ai_family,
-                        pos->ai_socktype,
-                        pos->ai_protocol,
-                        pos->ai_addrlen,
-                        L"<can't stringify>",
-                        pos->ai_canonname);
-            }
-          if (NULL != result)
-            FreeAddrInfoW(result);
-        }
-    }
-  WSACleanup();
-  return r;
-}
diff --git a/src/gns/w32nsp-uninstall.c b/src/gns/w32nsp-uninstall.c
deleted file mode 100644 (file)
index f5031f3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#include <ws2spi.h>
-#include <windows.h>
-#include <nspapi.h>
-#include <initguid.h>
-#include "gnunet_w32nsp_lib.h"
-#include <stdio.h>
-
-int
-main(int argc, char **argv)
-{
-  int ret;
-  GUID id = GNUNET_NAMESPACE_PROVIDER_DNS;
-  WSADATA wsd;
-
-  if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)
-    {
-      fprintf(stderr, "WSAStartup () failed: %lu\n", GetLastError());
-      return 5;
-    }
-
-  ret = WSCUnInstallNameSpace(&id);
-  if (ret == NO_ERROR)
-    {
-      fprintf(stderr, "Uninstalled GNUnet DNS provider\n");
-      WSACleanup();
-      return 0;
-    }
-  fprintf(stderr, "WSCUnInstallNameSpace () failed: %lu\n", GetLastError());
-  WSACleanup();
-  return 1;
-}
\ No newline at end of file
diff --git a/src/gns/w32nsp.c b/src/gns/w32nsp.c
deleted file mode 100644 (file)
index 3de4452..0000000
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2012 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file gns/w32nsp.c
- * @brief W32 integration for GNS
- * @author LRN
- */
-/* This code is partially based upon samples from the book
- * "Network Programming For Microsoft Windows, 2Nd Edition".
- */
-
-#define VERBOSE 0
-#if !VERBOSE
-#  define DEBUGLOG(s, ...)
-#endif
-#if VERBOSE
-#  define __printf__ printf
-#  define DEBUGLOG(s, ...) printf(s, ## __VA_ARGS__)
-#endif
-
-#include <stdint.h>
-#include <ws2tcpip.h>
-#include <ws2spi.h>
-#include <windows.h>
-#include <nspapi.h>
-
-#define WINDOWS 1
-#define MINGW 1
-#ifndef __BYTE_ORDER
-#ifdef _BYTE_ORDER
-#define __BYTE_ORDER _BYTE_ORDER
-#else
-#ifdef BYTE_ORDER
-#define __BYTE_ORDER BYTE_ORDER
-#endif
-#endif
-#endif
-#ifndef __BIG_ENDIAN
-#ifdef _BIG_ENDIAN
-#define __BIG_ENDIAN _BIG_ENDIAN
-#else
-#ifdef BIG_ENDIAN
-#define __BIG_ENDIAN BIG_ENDIAN
-#endif
-#endif
-#endif
-#ifndef __LITTLE_ENDIAN
-#ifdef _LITTLE_ENDIAN
-#define __LITTLE_ENDIAN _LITTLE_ENDIAN
-#else
-#ifdef LITTLE_ENDIAN
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#endif
-#endif
-#endif
-#include "w32resolver.h"
-#include <initguid.h>
-#include "gnunet_w32nsp_lib.h"
-#undef INITGUID
-
-#define NSPAPI_VERSION_MAJOR 4
-#define NSPAPI_VERSION_MINOR 4
-
-static CRITICAL_SECTION records_cs;
-
-struct record {
-  _win_socket s;
-  DWORD flags;
-  uint8_t state;
-  char *buf;
-  wchar_t *name;
-};
-
-static struct record *records = NULL;
-static size_t records_len = 0;
-static size_t records_size = 0;
-
-static int
-resize_records()
-{
-  size_t new_size = records_len > 0 ? records_len * 2 : 5;
-  struct record *new_records = malloc(new_size * sizeof(struct record));
-
-  if (new_records == NULL)
-    {
-      SetLastError(WSA_NOT_ENOUGH_MEMORY);
-      return 0;
-    }
-  GNUNET_memcpy(new_records, records, records_len * sizeof(struct record));
-  memset(&new_records[records_len], 0, sizeof(struct record) * (new_size - records_len));
-  records_size = new_size;
-  free(records);
-  records = new_records;
-  return 1;
-}
-
-static int
-add_record(_win_socket s, const wchar_t *name, DWORD flags)
-{
-  int res = 1;
-  int i;
-  int empty = -1;
-
-  //EnterCriticalSection (&records_cs);
-  for (i = 0; i < records_len; i++)
-    if (records[i].state == 0)
-      break;
-  empty = i;
-  if (i == records_len)
-    {
-      res = resize_records();
-      if (res)
-        empty = records_len++;
-    }
-  if (res)
-    {
-      struct record r;
-      r.s = s;
-      r.flags = flags;
-      r.name = (wchar_t *)name;
-      r.state = 1;
-      r.buf = NULL;
-      if (name)
-        r.name = wcsdup(name);
-      records[empty] = r;
-    }
-  //LeaveCriticalSection (&records_cs);
-  return res;
-}
-
-/* These are not defined by mingw.org headers at the moment*/
-typedef INT (WSPAPI *LPNSPIOCTL)(HANDLE, DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPWSACOMPLETION, LPWSATHREADID);
-typedef struct _NSP_ROUTINE_XP {
-  DWORD cbSize;
-  DWORD dwMajorVersion;
-  DWORD dwMinorVersion;
-  LPNSPCLEANUP NSPCleanup;
-  LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
-  LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
-  LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
-  LPNSPSETSERVICE NSPSetService;
-  LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
-  LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
-  LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
-  LPNSPIOCTL NSPIoctl;
-} NSP_ROUTINE_XP;
-
-static _win_socket
-connect_to_dns_resolver()
-{
-  struct sockaddr_in addr;
-  _win_socket r;
-  int ret;
-
-  r = _win_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-  if (INVALID_SOCKET == r)
-    {
-      SetLastError(16004);
-      return r;
-    }
-
-  addr.sin_family = AF_INET;
-  addr.sin_port = htons(5353);  /* TCP 5353 is not registered; UDP 5353 is */
-  addr.sin_addr.s_addr = inet_addr("127.0.0.1");
-
-  ret = _win_connect(r, (struct sockaddr *)&addr, sizeof(addr));
-  if (SOCKET_ERROR == ret)
-    {
-      DWORD err = GetLastError();
-      closesocket(r);
-      SetLastError(err);
-      SetLastError(16005);
-      r = INVALID_SOCKET;
-    }
-  return r;
-}
-
-static int
-send_name_to_ip_request(LPWSAQUERYSETW lpqsRestrictions,
-                        LPWSASERVICECLASSINFOW lpServiceClassInfo, DWORD dwControlFlags,
-                        _win_socket *resolver)
-{
-  struct GNUNET_W32RESOLVER_GetMessage *msg;
-  int af4 = 0;
-  int af6 = 0;
-  char *buf;
-  int ret = 1;
-  int i;
-  size_t size = sizeof(struct GNUNET_W32RESOLVER_GetMessage);
-  size_t namelen = 0;
-
-  if (lpqsRestrictions->lpszServiceInstanceName)
-    namelen = sizeof(wchar_t) * (wcslen(lpqsRestrictions->lpszServiceInstanceName) + 1);
-  size += namelen;
-  buf = malloc(size);
-  msg = (struct GNUNET_W32RESOLVER_GetMessage *)buf;
-  msg->header.size = htons(size);
-  msg->header.type = htons(GNUNET_MESSAGE_TYPE_W32RESOLVER_REQUEST);
-  if (lpqsRestrictions->dwNumberOfProtocols > 0)
-    {
-      int i;
-      for (i = 0; i < lpqsRestrictions->dwNumberOfProtocols; i++)
-        {
-          if (lpqsRestrictions->lpafpProtocols[0].iAddressFamily == AF_INET)
-            af4 = 1;
-          if (lpqsRestrictions->lpafpProtocols[0].iAddressFamily == AF_INET6)
-            af6 = 1;
-        }
-    }
-  if (af4 && !af6)
-    msg->af = htonl(AF_INET);
-  else if (af6 && !af4)
-    msg->af = htonl(AF_INET6);
-  else
-    msg->af = htonl(AF_UNSPEC);
-  if (lpqsRestrictions->lpszServiceInstanceName)
-    GNUNET_memcpy(&msg[1], lpqsRestrictions->lpszServiceInstanceName, namelen);
-  msg->sc_data1 = htonl(lpqsRestrictions->lpServiceClassId->Data1);
-  msg->sc_data2 = htons(lpqsRestrictions->lpServiceClassId->Data2);
-  msg->sc_data3 = htons(lpqsRestrictions->lpServiceClassId->Data3);
-  for (i = 0; i < 8; i++)
-    msg->sc_data4[i] = lpqsRestrictions->lpServiceClassId->Data4[i];
-  *resolver = connect_to_dns_resolver();
-  if (*resolver != INVALID_SOCKET)
-    {
-      if (size != send(*resolver, buf, size, 0))
-        {
-#if VERBOSE
-          DWORD err = GetLastError();
-#endif
-          closesocket(*resolver);
-          *resolver = INVALID_SOCKET;
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: failed to send request: %lu\n", err);
-          SetLastError(WSATRY_AGAIN);
-          ret = 0;
-        }
-    }
-  else
-    ret = 0;
-  free(buf);
-  return ret;
-}
-
-static int WSPAPI
-NSPCleanup(LPGUID lpProviderId)
-{
-  DEBUGLOG("NSPCleanup\n");
-  if (IsEqualGUID(lpProviderId, &GNUNET_NAMESPACE_PROVIDER_DNS))
-    {
-      return NO_ERROR;
-    }
-  SetLastError(WSAEINVALIDPROVIDER);
-  return SOCKET_ERROR;
-}
-
-BOOL WINAPI
-DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
-{
-  switch (fdwReason)
-    {
-    case DLL_PROCESS_ATTACH:
-      if (!InitializeCriticalSectionAndSpinCount(&records_cs, 0x00000400))
-        {
-          return FALSE;
-        }
-      break;
-
-    case DLL_THREAD_ATTACH:
-      break;
-
-    case DLL_THREAD_DETACH:
-      break;
-
-    case DLL_PROCESS_DETACH:
-      DeleteCriticalSection(&records_cs);
-      break;
-    }
-  return TRUE;
-}
-
-
-
-
-static int WSPAPI
-GNUNET_W32NSP_LookupServiceBegin(LPGUID lpProviderId, LPWSAQUERYSETW lpqsRestrictions,
-                                 LPWSASERVICECLASSINFOW lpServiceClassInfo, DWORD dwControlFlags,
-                                 LPHANDLE lphLookup)
-{
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin\n");
-  if (IsEqualGUID(lpProviderId, &GNUNET_NAMESPACE_PROVIDER_DNS))
-    {
-      SOCKET s;
-      if (lpqsRestrictions->dwNameSpace != NS_DNS && lpqsRestrictions->dwNameSpace != NS_ALL)
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: wrong namespace\n");
-          SetLastError(WSAEINVAL);
-          return SOCKET_ERROR;
-        }
-      if (lpqsRestrictions->lpszServiceInstanceName != NULL)
-        {
-          wchar_t *s = lpqsRestrictions->lpszServiceInstanceName;
-          size_t len = wcslen(s);
-          if (len >= 5 && wcscmp(&s[len - 5], L".zkey") == 0)
-            {
-            }
-          else if (len >= 4 && wcscmp(&s[len - 4], L".gnu") == 0)
-            {
-            }
-          else
-            {
-              DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: unsupported TLD\n");
-              SetLastError(WSAEINVAL);
-              return SOCKET_ERROR;
-            }
-        }
-
-      if (send_name_to_ip_request(lpqsRestrictions,
-                                  lpServiceClassInfo, dwControlFlags, &s))
-        {
-          if (!(add_record(s, lpqsRestrictions->lpszServiceInstanceName, dwControlFlags)))
-            {
-              DWORD err = GetLastError();
-              DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: failed to add a record\n");
-              closesocket(s);
-              SetLastError(err);
-              return SOCKET_ERROR;
-            }
-          *lphLookup = (HANDLE)s;
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: OK (%lu)\n", GetLastError());
-          return NO_ERROR;
-        }
-      return SOCKET_ERROR;
-    }
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceBegin: wrong provider\n");
-  SetLastError(WSAEINVALIDPROVIDER);
-  return SOCKET_ERROR;
-}
-
-#define UnmarshallPtr(ptr, ptrtype, base) \
-  if (ptr) \
-  ptr = (ptrtype *) (base + (uintptr_t)ptr)
-
-static void
-UnmarshallWSAQUERYSETW(LPWSAQUERYSETW req)
-{
-  int i;
-  char *base = (char *)req;
-
-  UnmarshallPtr(req->lpszServiceInstanceName, wchar_t, base);
-  UnmarshallPtr(req->lpServiceClassId, GUID, base);
-  UnmarshallPtr(req->lpVersion, WSAVERSION, base);
-  UnmarshallPtr(req->lpszComment, wchar_t, base);
-  UnmarshallPtr(req->lpNSProviderId, GUID, base);
-  UnmarshallPtr(req->lpszContext, wchar_t, base);
-  UnmarshallPtr(req->lpafpProtocols, AFPROTOCOLS, base);
-  UnmarshallPtr(req->lpszQueryString, wchar_t, base);
-  UnmarshallPtr(req->lpcsaBuffer, CSADDR_INFO, base);
-  for (i = 0; i < req->dwNumberOfCsAddrs; i++)
-    {
-      UnmarshallPtr(req->lpcsaBuffer[i].LocalAddr.lpSockaddr, SOCKADDR, base);
-      UnmarshallPtr(req->lpcsaBuffer[i].RemoteAddr.lpSockaddr, SOCKADDR, base);
-    }
-  UnmarshallPtr(req->lpBlob, BLOB, base);
-  if (req->lpBlob)
-    UnmarshallPtr(req->lpBlob->pBlobData, BYTE, base);
-}
-
-static int WSAAPI
-GNUNET_W32NSP_LookupServiceNext(HANDLE hLookup, DWORD dwControlFlags,
-                                LPDWORD lpdwBufferLength, LPWSAQUERYSETW lpqsResults)
-{
-  /*DWORD effective_flags;*/
-  int i;
-  struct GNUNET_MessageHeader header = { 0, 0 };
-  int rec = -1;
-  int rc;
-  int to_receive;
-  int t;
-  char *buf;
-
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceNext\n");
-  //EnterCriticalSection (&records_cs);
-  for (i = 0; i < records_len; i++)
-    {
-      if (records[i].s == (_win_socket)hLookup)
-        {
-          rec = i;
-          break;
-        }
-    }
-  if (rec == -1)
-    {
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: invalid handle\n");
-      SetLastError(WSA_INVALID_HANDLE);
-      //LeaveCriticalSection (&records_cs);
-      return SOCKET_ERROR;
-    }
-  if (records[rec].state & 4)
-    {
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: session is closed\n");
-      SetLastError(WSA_E_NO_MORE);
-      //LeaveCriticalSection (&records_cs);
-      return SOCKET_ERROR;
-    }
-  /*effective_flags = dwControlFlags & records[rec].flags;*/
-  if (records[rec].buf)
-    {
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: checking buffer\n");
-      header = *((struct GNUNET_MessageHeader *)records[rec].buf);
-      if (*lpdwBufferLength < header.size - sizeof(struct GNUNET_W32RESOLVER_GetMessage))
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: client buffer is too small\n");
-          SetLastError(WSAEFAULT);
-          //LeaveCriticalSection (&records_cs);
-          return SOCKET_ERROR;
-        }
-      GNUNET_memcpy(lpqsResults, &((struct GNUNET_W32RESOLVER_GetMessage *)records[rec].buf)[1], header.size - sizeof(struct GNUNET_W32RESOLVER_GetMessage));
-      free(records[rec].buf);
-      records[rec].buf = NULL;
-      //LeaveCriticalSection (&records_cs);
-      UnmarshallWSAQUERYSETW((LPWSAQUERYSETW)lpqsResults);
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: OK (from buffer)\n");
-      return NO_ERROR;
-    }
-  records[rec].state |= 8;
-  //LeaveCriticalSection (&records_cs);
-  to_receive = sizeof(header);
-  rc = 0;
-#if VERBOSE
-  {
-    unsigned long have;
-    int ior = ioctlsocket((_win_socket)hLookup, FIONREAD, &have);
-    DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: reading %d bytes as a header from %p, %lu bytes available\n", to_receive, hLookup, have);
-  }
-#endif
-  while (to_receive > 0)
-    {
-      t = recv((_win_socket)hLookup, &((char *)&header)[rc], to_receive, 0);
-      if (t > 0)
-        {
-          rc += t;
-          to_receive -= t;
-        }
-      else
-        break;
-    }
-#if VERBOSE
-  {
-    unsigned long have;
-    int ior = ioctlsocket((_win_socket)hLookup, FIONREAD, &have);
-    DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: read %d bytes as a header from %p, %lu bytes available\n", rc, hLookup, have);
-  }
-#endif
-  //EnterCriticalSection (&records_cs);
-  records[rec].state &= ~8;
-  if (rc != sizeof(header))
-    {
-      if (records[rec].state & 2)
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: call cancelled\n");
-          SetLastError(WSA_E_CANCELLED);
-        }
-      else
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: failed to receive enough data for a header (rc %d != %u, state is 0x%0X)\n", rc, sizeof(header), records[rec].state);
-          SetLastError(WSA_E_NO_MORE);
-        }
-      records[rec].state |= 4;
-      //LeaveCriticalSection (&records_cs);
-      return SOCKET_ERROR;
-    }
-  records[rec].state &= ~8;
-  header.type = ntohs(header.type);
-  header.size = ntohs(header.size);
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: header type %d, header size %u\n", header.type, header.size);
-  if (header.type != GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE ||
-      (header.type == GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE &&
-       header.size == sizeof(header)))
-    {
-      records[rec].state |= 4;
-      if (header.type != GNUNET_MESSAGE_TYPE_W32RESOLVER_RESPONSE)
-        DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: header type is wrong\n");
-      else
-        DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: empty header - no data\n");
-      //LeaveCriticalSection (&records_cs);
-      SetLastError(WSA_E_NO_MORE);
-      return SOCKET_ERROR;
-    }
-  buf = malloc(header.size);
-  if (buf == NULL)
-    {
-      records[rec].state |= 4;
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: malloc() failed\n");
-      //LeaveCriticalSection (&records_cs);
-      SetLastError(WSA_E_NO_MORE);
-      return SOCKET_ERROR;
-    }
-  records[rec].state |= 8;
-  //LeaveCriticalSection (&records_cs);
-  GNUNET_memcpy(buf, &header, sizeof(header));
-  to_receive = header.size - sizeof(header);
-  rc = 0;
-#if VERBOSE
-  {
-    unsigned long have;
-    int ior = ioctlsocket((_win_socket)hLookup, FIONREAD, &have);
-    DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: reading %d bytes as a body from %p, %lu bytes available\n", to_receive, hLookup, have);
-  }
-#endif
-  while (to_receive > 0)
-    {
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: recv (%d)\n", to_receive);
-      t = recv((_win_socket)hLookup, &((char *)&((struct GNUNET_MessageHeader *)buf)[1])[rc], to_receive, 0);
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: recv returned %d\n", t);
-      if (t > 0)
-        {
-          rc += t;
-          to_receive -= t;
-        }
-      else
-        break;
-    }
-#if VERBOSE
-  {
-    unsigned long have;
-    int ior = ioctlsocket((_win_socket)hLookup, FIONREAD, &have);
-    DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: read %d bytes as a body from %p, %lu bytes available\n", rc, hLookup, have);
-  }
-#endif
-  //EnterCriticalSection (&records_cs);
-  records[rec].state &= ~8;
-  if (rc != header.size - sizeof(header))
-    {
-      free(buf);
-      if (records[rec].state & 2)
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: call cancelled\n");
-          SetLastError(WSA_E_CANCELLED);
-        }
-      else
-        {
-          DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: failed to receive enough data for the rest (rc %d != %d, state is 0x%0X)\n", rc, header.size - sizeof(header), records[rec].state);
-          SetLastError(WSA_E_NO_MORE);
-        }
-      records[rec].state |= 4;
-      //LeaveCriticalSection (&records_cs);
-      return SOCKET_ERROR;
-    }
-  if (*lpdwBufferLength < header.size - sizeof(struct GNUNET_W32RESOLVER_GetMessage))
-    {
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: client buffer is too small\n");
-      SetLastError(WSAEFAULT);
-      records[rec].buf = buf;
-      //LeaveCriticalSection (&records_cs);
-      return SOCKET_ERROR;
-    }
-  //LeaveCriticalSection (&records_cs);
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: writing %d bytes into result buffer\n", header.size - sizeof(struct GNUNET_W32RESOLVER_GetMessage));
-  GNUNET_memcpy(lpqsResults, &((struct GNUNET_W32RESOLVER_GetMessage *)buf)[1], header.size - sizeof(struct GNUNET_W32RESOLVER_GetMessage));
-  free(buf);
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: OK\n");
-  UnmarshallWSAQUERYSETW((LPWSAQUERYSETW)lpqsResults);
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceNext: returning (%lu)\n", GetLastError());
-  return NO_ERROR;
-}
-
-static int WSPAPI
-GNUNET_W32NSP_LookupServiceEnd(HANDLE hLookup)
-{
-  int i;
-  int rec = -1;
-
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceEnd\n");
-  //EnterCriticalSection (&records_cs);
-  for (i = 0; i < records_len; i++)
-    {
-      if (records[i].s == (_win_socket)hLookup)
-        {
-          rec = i;
-          break;
-        }
-    }
-  if (rec == -1)
-    {
-      SetLastError(WSA_INVALID_HANDLE);
-      //LeaveCriticalSection (&records_cs);
-      DEBUGLOG("GNUNET_W32NSP_LookupServiceEnd: invalid handle\n");
-      return SOCKET_ERROR;
-    }
-  records[rec].state |= 2;
-  closesocket(records[rec].s);
-  while (records[rec].state & 8)
-    {
-      //LeaveCriticalSection (&records_cs);
-      Sleep(10);
-      //EnterCriticalSection (&records_cs);
-    }
-  if (records[rec].buf)
-    free(records[rec].buf);
-  records[rec].buf = NULL;
-  records[rec].state = 0;
-  if (records[rec].name)
-    free(records[rec].name);
-  //LeaveCriticalSection (&records_cs);
-  DEBUGLOG("GNUNET_W32NSP_LookupServiceEnd: OK\n");
-  return NO_ERROR;
-}
-
-static int WSAAPI
-GNUNET_W32NSP_SetService(LPGUID lpProviderId,
-                         LPWSASERVICECLASSINFOW lpServiceClassInfo, LPWSAQUERYSETW lpqsRegInfo,
-                         WSAESETSERVICEOP essOperation, DWORD dwControlFlags)
-{
-  DEBUGLOG("GNUNET_W32NSP_SetService\n");
-  SetLastError(WSAEOPNOTSUPP);
-  return SOCKET_ERROR;
-}
-
-static int WSAAPI
-GNUNET_W32NSP_InstallServiceClass(LPGUID lpProviderId,
-                                  LPWSASERVICECLASSINFOW lpServiceClassInfo)
-{
-  DEBUGLOG("GNUNET_W32NSP_InstallServiceClass\n");
-  SetLastError(WSAEOPNOTSUPP);
-  return SOCKET_ERROR;
-}
-
-
-static int WSAAPI
-GNUNET_W32NSP_RemoveServiceClass(LPGUID lpProviderId, LPGUID lpServiceClassId)
-{
-  DEBUGLOG("GNUNET_W32NSP_RemoveServiceClass\n");
-  SetLastError(WSAEOPNOTSUPP);
-  return SOCKET_ERROR;
-}
-
-static int WSAAPI
-GNUNET_W32NSP_GetServiceClassInfo(LPGUID lpProviderId, LPDWORD lpdwBufSize,
-                                  LPWSASERVICECLASSINFOW lpServiceClassInfo)
-{
-  DEBUGLOG("GNUNET_W32NSP_GetServiceClassInfo\n");
-  SetLastError(WSAEOPNOTSUPP);
-  return SOCKET_ERROR;
-}
-
-static int WSAAPI
-GNUNET_W32NSP_Ioctl(HANDLE hLookup, DWORD dwControlCode, LPVOID lpvInBuffer,
-                    DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer,
-                    LPDWORD lpcbBytesReturned, LPWSACOMPLETION lpCompletion,
-                    LPWSATHREADID lpThreadId)
-{
-  DEBUGLOG("GNUNET_W32NSP_Ioctl\n");
-  SetLastError(WSAEOPNOTSUPP);
-  return SOCKET_ERROR;
-}
-
-/**
- * This function is called by Winsock to hook up our provider.
- * It is the only function that [should be/is] exported by the
- * provider. All other routines are passed as pointers in lpnspRoutines.
- */
-int WSAAPI
-GNUNET_W32NSP_NSPStartup(LPGUID lpProviderId, LPNSP_ROUTINE lpnspRoutines)
-{
-  if (IsEqualGUID(lpProviderId, &GNUNET_NAMESPACE_PROVIDER_DNS))
-    {
-      if (!connect_to_dns_resolver())
-        {
-          return SOCKET_ERROR;
-        }
-      /* This assumes that NSP_ROUTINE struct doesn't have a NSPIoctl member.
-       * If it does, you need to use FIELD_OFFSET() macro to get offset of NSPIoctl
-       * and use that offset as cbSize.
-       */
-      lpnspRoutines->cbSize = sizeof(NSP_ROUTINE);
-
-      lpnspRoutines->dwMajorVersion = NSPAPI_VERSION_MAJOR;
-      lpnspRoutines->dwMinorVersion = NSPAPI_VERSION_MINOR;
-      lpnspRoutines->NSPCleanup = NSPCleanup;
-      lpnspRoutines->NSPLookupServiceBegin = GNUNET_W32NSP_LookupServiceBegin;
-      lpnspRoutines->NSPLookupServiceNext = GNUNET_W32NSP_LookupServiceNext;
-      lpnspRoutines->NSPLookupServiceEnd = GNUNET_W32NSP_LookupServiceEnd;
-      lpnspRoutines->NSPSetService = GNUNET_W32NSP_SetService;
-      lpnspRoutines->NSPInstallServiceClass = GNUNET_W32NSP_InstallServiceClass;
-      lpnspRoutines->NSPRemoveServiceClass = GNUNET_W32NSP_RemoveServiceClass;
-      lpnspRoutines->NSPGetServiceClassInfo = GNUNET_W32NSP_GetServiceClassInfo;
-      /*((NSP_ROUTINE_XP *) lpnspRoutines)->NSPIoctl = GNUNET_W32NSP_Ioctl;*/
-      lpnspRoutines->NSPIoctl = GNUNET_W32NSP_Ioctl;
-      return NO_ERROR;
-    }
-  SetLastError(WSAEINVALIDPROVIDER);
-  return SOCKET_ERROR;
-}
-
diff --git a/src/gns/w32nsp.def b/src/gns/w32nsp.def
deleted file mode 100644 (file)
index 6bd28b2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-EXPORTS\r
-NSPStartup=GNUNET_W32NSP_NSPStartup\r
index f840a31a47043ab1f4e181f43bc8472d8ac2f92d..81bee5a6b58fa3111e851949d41044a3c82be12f 100644 (file)
@@ -7,10 +7,6 @@ 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
index 00357f9e1db333254a15492383d91c5bc1a9b8f5..7cb71cdce4473c46484e84186c08fcd0f194a980 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 9c87ec2c05024acc99fea4b90f579a52bfea387d..39d4235064f676d40098427eee7359186da85abe 100644 (file)
@@ -3,10 +3,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
 plugindir = $(libdir)/gnunet
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols 
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 775257768a5cf76ef6e58967c9ab2cd365c26411..d5c097341b4df3f77f0149bcfaaa1bbc3bf180cd 100644 (file)
@@ -3,10 +3,6 @@ SUBDIRS = .
 
 gnunetincludedir = $(includedir)/gnunet
 
-if MINGW
-  WINPROC = winproc.h
-endif
-
 EXTRA_DIST = \
   gauger.h \
   block_fs.h \
@@ -15,7 +11,7 @@ EXTRA_DIST = \
 
 if TALER_ONLY
 gnunetinclude_HEADERS = \
-  platform.h plibc.h $(WINPROC) gettext.h \
+  platform.h gettext.h \
   gnunet_common.h \
   gnunet_container_lib.h \
   gnunet_crypto_lib.h \
@@ -25,7 +21,7 @@ gnunetinclude_HEADERS = \
 else
 
 gnunetinclude_HEADERS = \
-  platform.h $(WINPROC) gettext.h \
+  platform.h gettext.h \
   compat.h \
   gnunet_applications.h \
   gnunet_arm_service.h \
index afaf3a4debc55fc5d57a46f04dfd1a60cf977dc2..555a98eb51ac2d6565c426e7ce879e007e47ffb8 100644 (file)
@@ -42,9 +42,6 @@
 #if HAVE_NETINET_IN_H
 #include <netinet/in.h>
 #endif
-#ifdef MINGW
-#include "winproc.h"
-#endif
 #ifdef HAVE_STDINT_H
 #include <stdint.h>
 #endif
@@ -189,11 +186,7 @@ extern "C" {
 /**
  * gcc-ism to get gcc bitfield layout when compiling with -mms-bitfields
  */
-#if MINGW
-#define GNUNET_GCC_STRUCT_LAYOUT __attribute__ ((gcc_struct))
-#else
 #define GNUNET_GCC_STRUCT_LAYOUT
-#endif
 
 /**
  * gcc-ism to force alignment; we use this to align char-arrays
@@ -216,28 +209,6 @@ extern "C" {
  */
 #define GNUNET_NORETURN __attribute__ ((noreturn))
 
-#if MINGW
-#if __GNUC__ > 3
-/**
- * gcc 4.x-ism to pack structures even on W32 (to be used before structs);
- * Using this would cause structs to be unaligned on the stack on Sparc,
- * so we *only* use this on W32 (see #670578 from Debian); fortunately,
- * W32 doesn't run on sparc anyway.
- */
-#define GNUNET_NETWORK_STRUCT_BEGIN _Pragma("pack(push)") _Pragma ("pack(1)")
-
-/**
- * gcc 4.x-ism to pack structures even on W32 (to be used after structs)
- * Using this would cause structs to be unaligned on the stack on Sparc,
- * so we *only* use this on W32 (see #670578 from Debian); fortunately,
- * W32 doesn't run on sparc anyway.
- */
-#define GNUNET_NETWORK_STRUCT_END _Pragma("pack(pop)")
-
-#else
-#error gcc 4.x or higher required on W32 systems
-#endif
-#else
 /**
  * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32
  */
@@ -247,7 +218,6 @@ extern "C" {
  * Define as empty, GNUNET_PACKED should suffice, but this won't work on W32;
  */
 #define GNUNET_NETWORK_STRUCT_END
-#endif
 
 /* ************************ super-general types *********************** */
 
diff --git a/src/include/tap-windows.h b/src/include/tap-windows.h
deleted file mode 100644 (file)
index 37f4129..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  TAP-Windows -- A kernel driver to provide virtual tap
- *                 device functionality on Windows.
- *
- *  This code was inspired by the CIPE-Win32 driver by Damion K. Wilson.
- *
- *  This source code is Copyright Copyright (C) 2002-2010 OpenVPN Technologies, Inc.,
- *  and is released under the GPL version 2 (see below).
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License version 2
- *  as published by the Free Software Foundation.
- *
- *  This program 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 this program (see the file COPYING included with this
- *  distribution); if not, write to the Free Software Foundation, Inc.,
- *  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- */
-/**
- * @file
- * TAP32 virtual network driver defines
- *
- * @attention This file is part of openvpn and for kept
- *            as a separate file to allow easier upgrading.
- */
-#ifndef __TAP_WIN_H
-#define __TAP_WIN_H
-
-/*
- * =============
- * TAP IOCTLs
- * =============
- */
-
-#define TAP_WIN_CONTROL_CODE(request, method) \
-  CTL_CODE(FILE_DEVICE_UNKNOWN, request, method, FILE_ANY_ACCESS)
-
-/* Present in 8.1 */
-
-#define TAP_WIN_IOCTL_GET_MAC               TAP_WIN_CONTROL_CODE(1, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_VERSION           TAP_WIN_CONTROL_CODE(2, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_MTU               TAP_WIN_CONTROL_CODE(3, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_INFO              TAP_WIN_CONTROL_CODE(4, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT TAP_WIN_CONTROL_CODE(5, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_SET_MEDIA_STATUS      TAP_WIN_CONTROL_CODE(6, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_CONFIG_DHCP_MASQ      TAP_WIN_CONTROL_CODE(7, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_GET_LOG_LINE          TAP_WIN_CONTROL_CODE(8, METHOD_BUFFERED)
-#define TAP_WIN_IOCTL_CONFIG_DHCP_SET_OPT   TAP_WIN_CONTROL_CODE(9, METHOD_BUFFERED)
-
-/* Added in 8.2 */
-
-/* obsoletes TAP_WIN_IOCTL_CONFIG_POINT_TO_POINT */
-#define TAP_WIN_IOCTL_CONFIG_TUN            TAP_WIN_CONTROL_CODE(10, METHOD_BUFFERED)
-
-/*
- * =================
- * Registry keys
- * =================
- */
-
-#define ADAPTER_KEY "SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-
-#define NETWORK_CONNECTIONS_KEY "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-
-/*
- * ======================
- * Filesystem prefixes
- * ======================
- */
-
-#define USERMODEDEVICEDIR "\\\\.\\Global\\"
-#define SYSDEVICEDIR      "\\Device\\"
-#define USERDEVICEDIR     "\\DosDevices\\Global\\"
-#define TAP_WIN_SUFFIX    ".tap"
-
-#endif
diff --git a/src/include/winproc.h b/src/include/winproc.h
deleted file mode 100644 (file)
index 139f07e..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2001, 2002, 2003, 2004, 2005 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @author Nils Durner
- *
- * @file
- * Definitions for MS Windows
- */
-
-#ifndef _WINPROC_H
-#define _WINPROC_H
-
-#include <io.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/timeb.h>
-#include <time.h>
-#include <dirent.h>
-#ifndef FD_SETSIZE
-#define FD_SETSIZE 1024
-#endif
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <windows.h>
-#include <winerror.h>
-#include <iphlpapi.h>
-#include <shlobj.h>
-#include <objbase.h>
-#include <sys/param.h>          /* #define BYTE_ORDER */
-#include <ntsecapi.h>
-#include <lm.h>
-#include <aclapi.h>
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-#ifndef MAX_NAME_LENGTH
-#define MAX_NAME_LENGTH 25
-#endif
-
-typedef DWORD WINAPI (*TNtQuerySystemInformation) (int, PVOID, ULONG, PULONG);
-typedef DWORD WINAPI (*TGetIfEntry) (PMIB_IFROW pIfRow);
-typedef DWORD WINAPI (*TGetIpAddrTable) (PMIB_IPADDRTABLE pIpAddrTable,
-                                         PULONG pdwSize, BOOL bOrder);
-typedef DWORD WINAPI (*TGetIfTable) (PMIB_IFTABLE pIfTable, PULONG pdwSize,
-                                     BOOL bOrder);
-typedef DWORD WINAPI (*TGetBestInterfaceEx) (struct sockaddr *, PDWORD);
-/* TODO: Explicitly import -A variants (i.e. TCreateHardLinkA) or -W
- * variants (TCreateHardLinkW), etc.
- */
-typedef DWORD WINAPI (*TCreateHardLink) (LPCTSTR lpFileName,
-                                         LPCTSTR lpExistingFileName,
-                                         LPSECURITY_ATTRIBUTES
-                                         lpSecurityAttributes);
-typedef SC_HANDLE WINAPI (*TOpenSCManager) (LPCTSTR lpMachineName,
-                                            LPCTSTR lpDatabaseName,
-                                            DWORD dwDesiredAccess);
-typedef SC_HANDLE WINAPI (*TCreateService) (SC_HANDLE hSCManager,
-                                            LPCTSTR lpServiceName,
-                                            LPCTSTR lpDisplayName,
-                                            DWORD dwDesiredAccess,
-                                            DWORD dwServiceType,
-                                            DWORD dwStartType,
-                                            DWORD dwErrorControl,
-                                            LPCTSTR lpBinaryPathName,
-                                            LPCTSTR lpLoadOrderGroup,
-                                            LPDWORD lpdwTagId,
-                                            LPCTSTR lpDependencies,
-                                            LPCTSTR lpServiceStartName,
-                                            LPCTSTR lpPassword);
-typedef BOOL WINAPI (*TCloseServiceHandle) (SC_HANDLE hSCObject);
-typedef BOOL WINAPI (*TDeleteService) (SC_HANDLE hService);
-typedef SERVICE_STATUS_HANDLE WINAPI (*TRegisterServiceCtrlHandler) (LPCTSTR
-                                                                     lpServiceName,
-                                                                     LPHANDLER_FUNCTION
-                                                                     lpHandlerProc);
-typedef BOOL WINAPI (*TSetServiceStatus) (SERVICE_STATUS_HANDLE
-                                          hServiceStatus,
-                                          LPSERVICE_STATUS lpServiceStatus);
-typedef BOOL WINAPI (*TStartServiceCtrlDispatcher) (const
-                                                    LPSERVICE_TABLE_ENTRY
-                                                    lpServiceTable);
-typedef BOOL WINAPI (*TControlService) (SC_HANDLE hService, DWORD dwControl,
-                                        LPSERVICE_STATUS lpServiceStatus);
-typedef SC_HANDLE WINAPI (*TOpenService) (SC_HANDLE hSCManager,
-                                          LPCTSTR lpServiceName,
-                                          DWORD dwDesiredAccess);
-typedef DWORD WINAPI (*TGetAdaptersInfo) (PIP_ADAPTER_INFO pAdapterInfo,
-                                          PULONG pOutBufLen);
-typedef NET_API_STATUS WINAPI (*TNetUserAdd) (LPCWSTR, DWORD, PBYTE, PDWORD);
-typedef NET_API_STATUS WINAPI (*TNetUserSetInfo) (LPCWSTR servername,
-                                                  LPCWSTR username,
-                                                  DWORD level, LPBYTE buf,
-                                                  LPDWORD param_err);
-typedef NTSTATUS NTAPI (*TLsaOpenPolicy) (PLSA_UNICODE_STRING,
-                                          PLSA_OBJECT_ATTRIBUTES, ACCESS_MASK,
-                                          PLSA_HANDLE);
-typedef NTSTATUS NTAPI (*TLsaAddAccountRights) (LSA_HANDLE, PSID,
-                                                PLSA_UNICODE_STRING, ULONG);
-typedef NTSTATUS NTAPI (*TLsaRemoveAccountRights) (LSA_HANDLE, PSID, BOOLEAN,
-                                                   PLSA_UNICODE_STRING,
-                                                   ULONG);
-typedef NTSTATUS NTAPI (*TLsaClose) (LSA_HANDLE);
-typedef BOOL WINAPI (*TLookupAccountName) (LPCTSTR lpSystemName,
-                                           LPCTSTR lpAccountName, PSID Sid,
-                                           LPDWORD cbSid,
-                                           LPTSTR ReferencedDomainName,
-                                           LPDWORD cchReferencedDomainName,
-                                           PSID_NAME_USE peUse);
-
-typedef BOOL WINAPI (*TGetFileSecurity) (LPCTSTR lpFileName,
-                                         SECURITY_INFORMATION
-                                         RequestedInformation,
-                                         PSECURITY_DESCRIPTOR
-                                         pSecurityDescriptor, DWORD nLength,
-                                         LPDWORD lpnLengthNeeded);
-typedef BOOL WINAPI (*TInitializeSecurityDescriptor) (PSECURITY_DESCRIPTOR
-                                                      pSecurityDescriptor,
-                                                      DWORD dwRevision);
-typedef BOOL WINAPI (*TGetSecurityDescriptorDacl) (PSECURITY_DESCRIPTOR
-                                                   pSecurityDescriptor,
-                                                   LPBOOL lpbDaclPresent,
-                                                   PACL * pDacl,
-                                                   LPBOOL lpbDaclDefaulted);
-typedef BOOL WINAPI (*TGetAclInformation) (PACL pAcl, LPVOID pAclInformation,
-                                           DWORD nAclInformationLength,
-                                           ACL_INFORMATION_CLASS
-                                           dwAclInformationClass);
-typedef BOOL WINAPI (*TInitializeAcl) (PACL pAcl, DWORD nAclLength,
-                                       DWORD dwAclRevision);
-typedef BOOL WINAPI (*TGetAce) (PACL pAcl, DWORD dwAceIndex, LPVOID * pAce);
-typedef BOOL WINAPI (*TEqualSid) (PSID pSid1, PSID pSid2);
-typedef BOOL WINAPI (*TAddAce) (PACL pAcl, DWORD dwAceRevision,
-                                DWORD dwStartingAceIndex, LPVOID pAceList,
-                                DWORD nAceListLength);
-typedef BOOL WINAPI (*TAddAccessAllowedAce) (PACL pAcl, DWORD dwAceRevision,
-                                             DWORD AccessMask, PSID pSid);
-typedef BOOL WINAPI (*TSetNamedSecurityInfo) (LPTSTR pObjectName,
-                                              SE_OBJECT_TYPE ObjectType,
-                                              SECURITY_INFORMATION
-                                              SecurityInfo, PSID psidOwner,
-                                              PSID psidGroup, PACL pDacl,
-                                              PACL pSacl);
-
-extern TGetBestInterfaceEx GNGetBestInterfaceEx;
-extern TNtQuerySystemInformation GNNtQuerySystemInformation;
-extern TGetIfEntry GNGetIfEntry;
-extern TGetIpAddrTable GNGetIpAddrTable;
-extern TGetIfTable GNGetIfTable;
-extern TCreateHardLink GNCreateHardLink;
-extern TOpenSCManager GNOpenSCManager;
-extern TCreateService GNCreateService;
-extern TCloseServiceHandle GNCloseServiceHandle;
-extern TDeleteService GNDeleteService;
-extern TRegisterServiceCtrlHandler GNRegisterServiceCtrlHandler;
-extern TSetServiceStatus GNSetServiceStatus;
-extern TStartServiceCtrlDispatcher GNStartServiceCtrlDispatcher;
-extern TControlService GNControlService;
-extern TOpenService GNOpenService;
-extern TGetAdaptersInfo GNGetAdaptersInfo;
-extern TNetUserAdd GNNetUserAdd;
-extern TNetUserSetInfo GNNetUserSetInfo;
-extern TLsaOpenPolicy GNLsaOpenPolicy;
-extern TLsaAddAccountRights GNLsaAddAccountRights;
-extern TLsaRemoveAccountRights GNLsaRemoveAccountRights;
-extern TLsaClose GNLsaClose;
-extern TLookupAccountName GNLookupAccountName;
-extern TGetFileSecurity GNGetFileSecurity;
-extern TInitializeSecurityDescriptor GNInitializeSecurityDescriptor;
-extern TGetSecurityDescriptorDacl GNGetSecurityDescriptorDacl;
-extern TGetAclInformation GNGetAclInformation;
-extern TInitializeAcl GNInitializeAcl;
-extern TGetAce GNGetAce;
-extern TEqualSid GNEqualSid;
-extern TAddAce GNAddAce;
-extern TAddAccessAllowedAce GNAddAccessAllowedAce;
-extern TSetNamedSecurityInfo GNSetNamedSecurityInfo;
-
-
-BOOL CreateShortcut(const char *pszSrc, const char *pszDest);
-BOOL DereferenceShortcut(char *pszShortcut);
-long QueryRegistry(HKEY hMainKey, const char *pszKey, const char *pszSubKey,
-                   char *pszBuffer, long *pdLength);
-int ListNICs(void (*callback)(void *, const char *, int), void *cls);
-BOOL AddPathAccessRights(char *lpszFileName, char *lpszAccountName,
-                         DWORD dwAccessMask);
-char *winErrorStr(const char *prefix, int dwErr);
-void EnumNICs(PMIB_IFTABLE * pIfTable, PMIB_IPADDRTABLE * pAddrTable);
-
-#define ENUMNICS3_MASK_OK 0x01
-#define ENUMNICS3_BCAST_OK 0x02
-
-struct EnumNICs3_results {
-  unsigned char flags;
-  int is_default;
-  char pretty_name[1001];
-  size_t addr_size;
-  SOCKADDR_STORAGE address;
-  SOCKADDR_STORAGE mask;
-  SOCKADDR_STORAGE broadcast;
-};
-
-int EnumNICs3(struct EnumNICs3_results **, int *EnumNICs3_results_count);
-void EnumNICs3_free(struct EnumNICs3_results *);
-int GNInitWinEnv();
-void GNShutdownWinEnv();
-
-BOOL SafeTerminateProcess(HANDLE hProcess, UINT uExitCode, DWORD dwTimeout);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
index 26dd4f92d06ccdb06a9f5eed03673cc13cee7f6d..8b50def4d5fa77d3290d3a8985b3bd4b9a771e56 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index cead9a8b41dc711a0b43d38c1aac098754c1abed..51e20e6bff3e8247f0e3e4ec357d4814506b8189 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 889562d600180bb2aea43575e975601d3018b626..3bfb929cdff4adf3c33956888be57211d7885ec6 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index c62ca6a2bf773478dd78e2966d5677693b4f3094..8abae68a42a53386095a1a60f314f15d50600bc4 100644 (file)
@@ -10,11 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
    namecache.conf
 
-
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov
index ad99a3f0b131c4b92edb1e396b626524901ee986..b9fa83103c693d36ea4ac1a7b24e0eaf208f5c9f 100644 (file)
@@ -10,11 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
    namestore.conf
 
-
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov
index f0d5639a1627487aed94eddc1e2632a6d76e271f..db104d194f893bdd5598b086a92fb1673bc6b80b 100644 (file)
@@ -1,13 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-  NATBIN = gnunet-helper-nat-server gnunet-helper-nat-client
-  NATSERVER = gnunet-helper-nat-server-windows.c
-  NATCLIENT = gnunet-helper-nat-client-windows.c
-endif
-
 libexecdir= $(pkglibdir)/libexec/
 
 pkgcfgdir= $(pkgdatadir)/config.d/
@@ -45,7 +38,7 @@ gnunet_helper_nat_server_SOURCES = \
  $(NATSERVER)
 
 gnunet_helper_nat_client_SOURCES = \
- $(NATCLIENT)         
+ $(NATCLIENT)
 
 
 gnunet_nat_SOURCES = \
diff --git a/src/nat/gnunet-helper-nat-client-windows.c b/src/nat/gnunet-helper-nat-client-windows.c
deleted file mode 100644 (file)
index 1be31ae..0000000
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file src/nat/gnunet-helper-nat-client-windows.c
- * @brief Tool to help bypass NATs using ICMP method; must run as
- *        administrator on W32
- *        This code is for W32.
- * @author Nathan Evans
- *
- * This program will send ONE ICMP message using RAW sockets
- * to the IP address specified as the second argument.  Since
- * it uses RAW sockets, it must be installed SUID or run as 'root'.
- * In order to keep the security risk of the resulting SUID binary
- * minimal, the program ONLY opens the RAW socket with root
- * privileges, then drops them and only then starts to process
- * command line arguments.  The code also does not link against
- * any shared libraries (except libc) and is strictly minimal
- * (except for checking for errors).  The following list of people
- * have reviewed this code and considered it safe since the last
- * modification (if you reviewed it, please have your name added
- * to the list):
- *
- * - Christian Grothoff
- * - Nathan Evans
- */
-#define _GNU_SOURCE
-/* Instead of including gnunet_common.h */
-#define GNUNET_memcpy(dst, src, n) do { if (0 != n) { (void)memcpy(dst, src, n); } } while (0)
-
-#define FD_SETSIZE 1024
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <time.h>
-
-
-#define ICMP_ECHO 8
-#define IPDEFTTL 64
-#define ICMP_TIME_EXCEEDED 11
-
-/**
- * Must match IP given in the server.
- */
-#define DUMMY_IP "192.0.2.86"
-
-#define NAT_TRAV_PORT 22225
-
-/**
- * IPv4 header.
- */
-struct ip_header {
-  /**
-   * Version (4 bits) + Internet header length (4 bits)
-   */
-  uint8_t vers_ihl;
-
-  /**
-   * Type of service
-   */
-  uint8_t tos;
-
-  /**
-   * Total length
-   */
-  uint16_t pkt_len;
-
-  /**
-   * Identification
-   */
-  uint16_t id;
-
-  /**
-   * Flags (3 bits) + Fragment offset (13 bits)
-   */
-  uint16_t flags_frag_offset;
-
-  /**
-   * Time to live
-   */
-  uint8_t ttl;
-
-  /**
-   * Protocol
-   */
-  uint8_t proto;
-
-  /**
-   * Header checksum
-   */
-  uint16_t checksum;
-
-  /**
-   * Source address
-   */
-  uint32_t src_ip;
-
-  /**
-   * Destination address
-   */
-  uint32_t dst_ip;
-};
-
-
-/**
- * Format of ICMP packet.
- */
-struct icmp_ttl_exceeded_header {
-  uint8_t type;
-
-  uint8_t code;
-
-  uint16_t checksum;
-
-  uint32_t unused;
-
-  /* followed by original payload */
-};
-
-struct icmp_echo_header {
-  uint8_t type;
-
-  uint8_t code;
-
-  uint16_t checksum;
-
-  uint32_t reserved;
-};
-
-/**
- * Beginning of UDP packet.
- */
-struct udp_header {
-  uint16_t src_port;
-
-  uint16_t dst_port;
-
-  uint16_t length;
-
-  uint16_t crc;
-};
-
-/**
- * Will this binary be run in permissions testing mode?
- */
-static boolean privilege_testing = FALSE;
-
-/**
- * Socket we use to send our ICMP packets.
- */
-static _win_socket rawsock;
-
-/**
- * Target "dummy" address.
- */
-static struct in_addr dummy;
-
-/**
- * Port we are listening on (communicated to the server).
- */
-static uint16_t port;
-
-
-
-/**
- * Convert IPv4 address from text to binary form.
- *
- * @param af address family
- * @param cp the address to print
- * @param buf where to write the address result
- * @return 1 on success
- */
-static int
-inet_pton(int af, const char *cp, struct in_addr *buf)
-{
-  buf->s_addr = inet_addr(cp);
-  if (buf->s_addr == INADDR_NONE)
-    {
-      fprintf(stderr, "Error %d handling address %s", WSAGetLastError(), cp);
-      return 0;
-    }
-  return 1;
-}
-
-
-/**
- * CRC-16 for IP/ICMP headers.
- *
- * @param data what to calculate the CRC over
- * @param bytes number of bytes in data (must be multiple of 2)
- * @return the CRC 16.
- */
-static uint16_t
-calc_checksum(const uint16_t * data, unsigned int bytes)
-{
-  uint32_t sum;
-  unsigned int i;
-
-  sum = 0;
-  for (i = 0; i < bytes / 2; i++)
-    sum += data[i];
-  sum = (sum & 0xffff) + (sum >> 16);
-  sum = htons(0xffff - sum);
-  return sum;
-}
-
-
-/**
- * Send an ICMP message to the target.
- *
- * @param my_ip source address
- * @param other target address
- */
-static void
-send_icmp_udp(const struct in_addr *my_ip, const struct in_addr *other)
-{
-  char packet[sizeof(struct ip_header) * 2 +
-              sizeof(struct icmp_ttl_exceeded_header) +
-              sizeof(struct udp_header)];
-  struct ip_header ip_pkt;
-  struct icmp_ttl_exceeded_header icmp_pkt;
-  struct udp_header udp_pkt;
-  struct sockaddr_in dst;
-  size_t off;
-  int err;
-
-  /* ip header: send to (known) ip address */
-  off = 0;
-  ip_pkt.vers_ihl = 0x45;
-  ip_pkt.tos = 0;
-  ip_pkt.pkt_len = htons(sizeof(packet));
-  ip_pkt.id = htons(256);
-  ip_pkt.flags_frag_offset = 0;
-  ip_pkt.ttl = 128;
-  ip_pkt.proto = IPPROTO_ICMP;
-  ip_pkt.checksum = 0;
-  ip_pkt.src_ip = my_ip->s_addr;
-  ip_pkt.dst_ip = other->s_addr;
-  ip_pkt.checksum =
-    htons(calc_checksum((uint16_t *)&ip_pkt, sizeof(struct ip_header)));
-  GNUNET_memcpy(&packet[off], &ip_pkt, sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-
-  icmp_pkt.type = ICMP_TIME_EXCEEDED;
-  icmp_pkt.code = 0;
-  icmp_pkt.checksum = 0;
-  icmp_pkt.unused = 0;
-  GNUNET_memcpy(&packet[off], &icmp_pkt, sizeof(struct icmp_ttl_exceeded_header));
-  off += sizeof(struct icmp_ttl_exceeded_header);
-
-  /* ip header of the presumably 'lost' udp packet */
-  ip_pkt.vers_ihl = 0x45;
-  ip_pkt.tos = 0;
-  ip_pkt.pkt_len =
-    htons(sizeof(struct ip_header) + sizeof(struct udp_header));
-  ip_pkt.id = htons(0);
-  ip_pkt.flags_frag_offset = 0;
-  ip_pkt.ttl = 128;
-  ip_pkt.proto = IPPROTO_UDP;
-  ip_pkt.checksum = 0;
-  ip_pkt.src_ip = other->s_addr;
-  ip_pkt.dst_ip = dummy.s_addr;
-  ip_pkt.checksum =
-    htons(calc_checksum((uint16_t *)&ip_pkt, sizeof(struct ip_header)));
-  GNUNET_memcpy(&packet[off], &ip_pkt, sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-
-  /* build UDP header */
-  udp_pkt.src_port = htons(NAT_TRAV_PORT);
-  udp_pkt.dst_port = htons(NAT_TRAV_PORT);
-  udp_pkt.length = htons(port);
-  udp_pkt.crc = 0;
-  GNUNET_memcpy(&packet[off], &udp_pkt, sizeof(struct udp_header));
-  off += sizeof(struct udp_header);
-
-  /* no go back to calculate ICMP packet checksum */
-  icmp_pkt.checksum =
-    htons(calc_checksum
-            ((uint16_t *)&packet[off],
-            sizeof(struct icmp_ttl_exceeded_header) +
-            sizeof(struct ip_header) + sizeof(struct udp_header)));
-  GNUNET_memcpy(&packet[sizeof(struct ip_header)], &icmp_pkt,
-                sizeof(struct icmp_ttl_exceeded_header));
-
-  memset(&dst, 0, sizeof(dst));
-  dst.sin_family = AF_INET;
-  dst.sin_addr = *other;
-  err =
-    sendto(rawsock, packet, sizeof(packet), 0, (struct sockaddr *)&dst,
-           sizeof(dst));
-  if (err < 0)
-    {
-      fprintf(stderr, "sendto failed: %s\n", strerror(errno));
-    }
-  else if (sizeof(packet) != (size_t)err)
-    {
-      fprintf(stderr, "Error: partial send of ICMP message\n");
-    }
-}
-
-
-/**
- * Send an ICMP message to the target.
- *
- * @param my_ip source address
- * @param other target address
- */
-static void
-send_icmp(const struct in_addr *my_ip, const struct in_addr *other)
-{
-  struct ip_header ip_pkt;
-  struct icmp_ttl_exceeded_header icmp_ttl;
-  struct icmp_echo_header icmp_echo;
-  struct sockaddr_in dst;
-  char packet[sizeof(struct ip_header) * 2 +
-              sizeof(struct icmp_ttl_exceeded_header) +
-              sizeof(struct icmp_echo_header)];
-  size_t off;
-  int err;
-
-  /* ip header: send to (known) ip address */
-  off = 0;
-  ip_pkt.vers_ihl = 0x45;
-  ip_pkt.tos = 0;
-  ip_pkt.pkt_len = htons(sizeof(packet));
-  ip_pkt.id = htons(256);
-  ip_pkt.flags_frag_offset = 0;
-  ip_pkt.ttl = IPDEFTTL;
-  ip_pkt.proto = IPPROTO_ICMP;
-  ip_pkt.checksum = 0;
-  ip_pkt.src_ip = my_ip->s_addr;
-  ip_pkt.dst_ip = other->s_addr;
-  ip_pkt.checksum =
-    htons(calc_checksum((uint16_t *)&ip_pkt, sizeof(struct ip_header)));
-  GNUNET_memcpy(&packet[off], &ip_pkt, sizeof(struct ip_header));
-  off += sizeof(ip_pkt);
-
-  /* icmp reply: time exceeded */
-  icmp_ttl.type = ICMP_TIME_EXCEEDED;
-  icmp_ttl.code = 0;
-  icmp_ttl.checksum = 0;
-  icmp_ttl.unused = 0;
-  GNUNET_memcpy(&packet[off], &icmp_ttl, sizeof(struct icmp_ttl_exceeded_header));
-  off += sizeof(struct icmp_ttl_exceeded_header);
-
-  /* ip header of the presumably 'lost' udp packet */
-  ip_pkt.vers_ihl = 0x45;
-  ip_pkt.tos = 0;
-  ip_pkt.pkt_len =
-    htons(sizeof(struct ip_header) + sizeof(struct icmp_echo_header));
-  ip_pkt.id = htons(256);
-  ip_pkt.flags_frag_offset = 0;
-  ip_pkt.ttl = 1;               /* real TTL would be 1 on a time exceeded packet */
-  ip_pkt.proto = IPPROTO_ICMP;
-  ip_pkt.src_ip = other->s_addr;
-  ip_pkt.dst_ip = dummy.s_addr;
-  ip_pkt.checksum = 0;
-  ip_pkt.checksum =
-    htons(calc_checksum((uint16_t *)&ip_pkt, sizeof(struct ip_header)));
-  GNUNET_memcpy(&packet[off], &ip_pkt, sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-
-  icmp_echo.type = ICMP_ECHO;
-  icmp_echo.code = 0;
-  icmp_echo.reserved = htonl(port);
-  icmp_echo.checksum = 0;
-  icmp_echo.checksum =
-    htons(calc_checksum
-            ((uint16_t *)&icmp_echo, sizeof(struct icmp_echo_header)));
-  GNUNET_memcpy(&packet[off], &icmp_echo, sizeof(struct icmp_echo_header));
-
-  /* no go back to calculate ICMP packet checksum */
-  off = sizeof(struct ip_header);
-  icmp_ttl.checksum =
-    htons(calc_checksum
-            ((uint16_t *)&packet[off],
-            sizeof(struct icmp_ttl_exceeded_header) +
-            sizeof(struct ip_header) + sizeof(struct icmp_echo_header)));
-  GNUNET_memcpy(&packet[off], &icmp_ttl, sizeof(struct icmp_ttl_exceeded_header));
-
-  memset(&dst, 0, sizeof(dst));
-  dst.sin_family = AF_INET;
-  dst.sin_addr = *other;
-
-  err =
-    sendto(rawsock, packet, sizeof(packet), 0, (struct sockaddr *)&dst,
-           sizeof(dst));
-
-  if (err < 0)
-    {
-      fprintf(stderr, "sendto failed: %s\n", strerror(errno));
-    }
-  else if (sizeof(packet) != (size_t)err)
-    {
-      fprintf(stderr, "Error: partial send of ICMP message\n");
-    }
-}
-
-
-/**
- * Create an ICMP raw socket.
- *
- * @return INVALID_SOCKET on error
- */
-static _win_socket
-make_raw_socket()
-{
-  DWORD bOptVal = TRUE;
-  int bOptLen = sizeof(bOptVal);
-  _win_socket ret;
-
-  ret = _win_socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
-  if (INVALID_SOCKET == ret)
-    {
-      fprintf(stderr, "Error opening RAW socket: %s\n", strerror(errno));
-      return INVALID_SOCKET;
-    }
-  if (0 !=
-      _win_setsockopt(ret, SOL_SOCKET, SO_BROADCAST, (char *)&bOptVal, bOptLen))
-    {
-      fprintf(stderr, "Error setting SO_BROADCAST to ON: %s\n",
-              strerror(errno));
-      closesocket(rawsock);
-      return INVALID_SOCKET;
-    }
-
-  if (0 != _win_setsockopt(ret, IPPROTO_IP, IP_HDRINCL, (char *)&bOptVal, bOptLen))
-    {
-      fprintf(stderr, "Error setting IP_HDRINCL to ON: %s\n", strerror(errno));
-      closesocket(rawsock);
-      return INVALID_SOCKET;
-    }
-  return ret;
-}
-
-
-int
-main(int argc, char *const *argv)
-{
-  struct in_addr external;
-  struct in_addr target;
-  WSADATA wsaData;
-  unsigned int p;
-
-  if (argc > 1 && 0 != strcmp(argv[1], "-d"))
-    {
-      privilege_testing = TRUE;
-      fprintf(stderr,
-              "%s",
-              "DEBUG: Running binary in privilege testing mode.");
-      argv++;
-      argc--;
-    }
-
-  if (argc != 4)
-    {
-      fprintf(stderr,
-              "%s",
-              "This program must be started with our IP, the targets external IP, and our port as arguments.\n");
-      return 1;
-    }
-  if ((1 != inet_pton(AF_INET, argv[1], &external)) ||
-      (1 != inet_pton(AF_INET, argv[2], &target)))
-    {
-      fprintf(stderr,
-              "Error parsing IPv4 address: %s\n",
-              strerror(errno));
-      return 1;
-    }
-  if ((1 != sscanf(argv[3], "%u", &p)) || (0 == p) || (0xFFFF < p))
-    {
-      fprintf(stderr,
-              "Error parsing port value `%s'\n",
-              argv[3]);
-      return 1;
-    }
-  port = (uint16_t)p;
-
-  if (0 != WSAStartup(MAKEWORD(2, 1), &wsaData))
-    {
-      fprintf(stderr,
-              "%s",
-              "Failed to find Winsock 2.1 or better.\n");
-      return 2;
-    }
-  if (1 != inet_pton(AF_INET, DUMMY_IP, &dummy))
-    {
-      fprintf(stderr,
-              "%s",
-              "Internal error converting dummy IP to binary.\n");
-      return 2;
-    }
-  if (-1 == (rawsock = make_raw_socket()))
-    return 3;
-  if (!privilege_testing)
-    {
-      send_icmp(&external, &target);
-      send_icmp_udp(&external, &target);
-    }
-  closesocket(rawsock);
-  WSACleanup();
-  return 0;
-}
-
-/* end of gnunet-helper-nat-client-windows.c */
diff --git a/src/nat/gnunet-helper-nat-server-windows.c b/src/nat/gnunet-helper-nat-server-windows.c
deleted file mode 100644 (file)
index 688dde1..0000000
+++ /dev/null
@@ -1,614 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file src/nat/gnunet-helper-nat-server-windows.c
- * @brief Windows tool to help bypass NATs using ICMP method
- *        This code will work under W32 only
- * @author Christian Grothoff
- *
- * This program will send ONE ICMP message every 500 ms RAW sockets
- * to a DUMMY IP address and also listens for ICMP replies.  Since
- * it uses RAW sockets, it must be run as an administrative user.
- * In order to keep the security risk of the resulting binary
- * minimal, the program ONLY opens the two RAW sockets with administrative
- * privileges, then drops them and only then starts to process
- * command line arguments.  The code also does not link against
- * any shared libraries (except libc) and is strictly minimal
- * (except for checking for errors).  The following list of people
- * have reviewed this code and considered it safe since the last
- * modification (if you reviewed it, please have your name added
- * to the list):
- *
- * - Nathan Evans
- * - Christian Grothoff
- */
-#define _GNU_SOURCE
-/* Instead of including gnunet_common.h */
-#define GNUNET_memcpy(dst, src, n) do { if (0 != n) { (void)memcpy(dst, src, n); } } while (0)
-
-#define FD_SETSIZE 1024
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <time.h>
-
-/**
- * Should we print some debug output?
- */
-#define VERBOSE 0
-
-/**
- * Must match IP given in the client.
- */
-#define DUMMY_IP "192.0.2.86"
-
-/**
- * Default Port
- */
-#define NAT_TRAV_PORT 22225
-
-/**
- * Must match packet ID used by gnunet-helper-nat-client.c
- */
-#define PACKET_ID 256
-
-/**
- * TTL to use for our outgoing messages.
- */
-#define IPDEFTTL 64
-
-#define ICMP_ECHO 8
-
-#define ICMP_TIME_EXCEEDED 11
-
-/**
- * How often do we send our ICMP messages to receive replies?
- */
-#define ICMP_SEND_FREQUENCY_MS 500
-
-/**
- * IPv4 header.
- */
-struct ip_header {
-  /**
-   * Version (4 bits) + Internet header length (4 bits)
-   */
-  uint8_t vers_ihl;
-
-  /**
-   * Type of service
-   */
-  uint8_t tos;
-
-  /**
-   * Total length
-   */
-  uint16_t pkt_len;
-
-  /**
-   * Identification
-   */
-  uint16_t id;
-
-  /**
-   * Flags (3 bits) + Fragment offset (13 bits)
-   */
-  uint16_t flags_frag_offset;
-
-  /**
-   * Time to live
-   */
-  uint8_t ttl;
-
-  /**
-   * Protocol
-   */
-  uint8_t proto;
-
-  /**
-   * Header checksum
-   */
-  uint16_t checksum;
-
-  /**
-   * Source address
-   */
-  uint32_t src_ip;
-
-  /**
-   * Destination address
-   */
-  uint32_t dst_ip;
-};
-
-/**
- * Format of ICMP packet.
- */
-struct icmp_ttl_exceeded_header {
-  uint8_t type;
-
-  uint8_t code;
-
-  uint16_t checksum;
-
-  uint32_t unused;
-
-  /* followed by original payload */
-};
-
-struct icmp_echo_header {
-  uint8_t type;
-
-  uint8_t code;
-
-  uint16_t checksum;
-
-  uint32_t reserved;
-};
-
-/**
- * Beginning of UDP packet.
- */
-struct udp_header {
-  uint16_t src_port;
-
-  uint16_t dst_port;
-
-  uint16_t length;
-
-  uint16_t crc;
-};
-
-/**
- * Will this binary be run in permissions testing mode?
- */
-static boolean privilege_testing = FALSE;
-
-/**
- * Socket we use to receive "fake" ICMP replies.
- */
-static _win_socket icmpsock;
-
-/**
- * Socket we use to send our ICMP requests.
- */
-static _win_socket rawsock;
-
-/**
- * Socket we use to send our UDP requests.
- */
-static _win_socket udpsock;
-
-/**
- * Target "dummy" address.
- */
-static struct in_addr dummy;
-
-
-/**
- * CRC-16 for IP/ICMP headers.
- *
- * @param data what to calculate the CRC over
- * @param bytes number of bytes in data (must be multiple of 2)
- * @return the CRC 16.
- */
-static uint16_t
-calc_checksum(const uint16_t * data, unsigned int bytes)
-{
-  uint32_t sum;
-  unsigned int i;
-
-  sum = 0;
-  for (i = 0; i < bytes / 2; i++)
-    sum += data[i];
-  sum = (sum & 0xffff) + (sum >> 16);
-  sum = htons(0xffff - sum);
-  return sum;
-}
-
-
-/**
- * Convert IPv4 address from text to binary form.
- *
- * @param af address family
- * @param cp the address to print
- * @param buf where to write the address result
- * @return 1 on success
- */
-static int
-inet_pton(int af, const char *cp, struct in_addr *buf)
-{
-  buf->s_addr = inet_addr(cp);
-  if (buf->s_addr == INADDR_NONE)
-    {
-      fprintf(stderr, "Error %d handling address %s", WSAGetLastError(), cp);
-      return 0;
-    }
-  return 1;
-}
-
-
-/**
- * Send an ICMP message to the dummy IP.
- *
- * @param my_ip source address (our ip address)
- */
-static void
-send_icmp_echo(const struct in_addr *my_ip)
-{
-  char packet[sizeof(struct ip_header) + sizeof(struct icmp_echo_header)];
-  struct icmp_echo_header icmp_echo;
-  struct ip_header ip_pkt;
-  struct sockaddr_in dst;
-  size_t off;
-  int err;
-
-  off = 0;
-  ip_pkt.vers_ihl = 0x45;
-  ip_pkt.tos = 0;
-  ip_pkt.pkt_len = htons(sizeof(packet));
-  ip_pkt.id = htons(PACKET_ID);
-  ip_pkt.flags_frag_offset = 0;
-  ip_pkt.ttl = IPDEFTTL;
-  ip_pkt.proto = IPPROTO_ICMP;
-  ip_pkt.checksum = 0;
-  ip_pkt.src_ip = my_ip->s_addr;
-  ip_pkt.dst_ip = dummy.s_addr;
-  ip_pkt.checksum =
-    htons(calc_checksum((uint16_t *)&ip_pkt, sizeof(struct ip_header)));
-  GNUNET_memcpy(&packet[off], &ip_pkt, sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-
-  icmp_echo.type = ICMP_ECHO;
-  icmp_echo.code = 0;
-  icmp_echo.reserved = 0;
-  icmp_echo.checksum = 0;
-  icmp_echo.checksum =
-    htons(calc_checksum
-            ((uint16_t *)&icmp_echo, sizeof(struct icmp_echo_header)));
-  GNUNET_memcpy(&packet[off], &icmp_echo, sizeof(struct icmp_echo_header));
-  off += sizeof(struct icmp_echo_header);
-
-  memset(&dst, 0, sizeof(dst));
-  dst.sin_family = AF_INET;
-  dst.sin_addr = dummy;
-  err =
-    sendto(rawsock, packet, off, 0, (struct sockaddr *)&dst, sizeof(dst));
-  if (err < 0)
-    {
-#if VERBOSE
-      fprintf(stderr, "sendto failed: %s\n", strerror(errno));
-#endif
-    }
-  else if (err != off)
-    {
-      fprintf(stderr, "Error: partial send of ICMP message\n");
-    }
-}
-
-
-/**
- * Send a UDP message to the dummy IP.
- */
-static void
-send_udp()
-{
-  struct sockaddr_in dst;
-  ssize_t err;
-
-  memset(&dst, 0, sizeof(dst));
-  dst.sin_family = AF_INET;
-  dst.sin_addr = dummy;
-  dst.sin_port = htons(NAT_TRAV_PORT);
-  err = sendto(udpsock, NULL, 0, 0, (struct sockaddr *)&dst, sizeof(dst));
-  if (err < 0)
-    {
-#if VERBOSE
-      fprintf(stderr, "sendto failed: %s\n", strerror(errno));
-#endif
-    }
-  else if (0 != err)
-    {
-      fprintf(stderr, "Error: partial send of ICMP message\n");
-    }
-}
-
-
-/**
- * We've received an ICMP response.  Process it.
- */
-static void
-process_icmp_response()
-{
-  char buf[65536];
-  ssize_t have;
-  struct in_addr source_ip;
-  struct ip_header ip_pkt;
-  struct icmp_ttl_exceeded_header icmp_ttl;
-  struct icmp_echo_header icmp_echo;
-  struct udp_header udp_pkt;
-  size_t off;
-  uint16_t port;
-  DWORD ssize;
-
-  have = read(icmpsock, buf, sizeof(buf));
-  if (have == -1)
-    {
-      fprintf(stderr, "Error reading raw socket: %s\n", strerror(errno));
-      return;
-    }
-#if VERBOSE
-  fprintf(stderr, "Received message of %u bytes\n", (unsigned int)have);
-#endif
-  if (have <
-      (ssize_t)(sizeof(struct ip_header) +
-                sizeof(struct icmp_ttl_exceeded_header) +
-                sizeof(struct ip_header)))
-    {
-      /* malformed */
-      return;
-    }
-  off = 0;
-  GNUNET_memcpy(&ip_pkt, &buf[off], sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-  GNUNET_memcpy(&source_ip, &ip_pkt.src_ip, sizeof(source_ip));
-  GNUNET_memcpy(&icmp_ttl, &buf[off], sizeof(struct icmp_ttl_exceeded_header));
-  off += sizeof(struct icmp_ttl_exceeded_header);
-  if ((ICMP_TIME_EXCEEDED != icmp_ttl.type) || (0 != icmp_ttl.code))
-    {
-      /* different type than what we want */
-      return;
-    }
-  /* skip 2nd IP header */
-  GNUNET_memcpy(&ip_pkt, &buf[off], sizeof(struct ip_header));
-  off += sizeof(struct ip_header);
-
-  switch (ip_pkt.proto)
-    {
-    case IPPROTO_ICMP:
-      if (have !=
-          (sizeof(struct ip_header) * 2 +
-           sizeof(struct icmp_ttl_exceeded_header) +
-           sizeof(struct icmp_echo_header)))
-        {
-          /* malformed */
-          return;
-        }
-      /* grab ICMP ECHO content */
-      GNUNET_memcpy(&icmp_echo, &buf[off], sizeof(struct icmp_echo_header));
-      port = (uint16_t)ntohl(icmp_echo.reserved);
-      break;
-
-    case IPPROTO_UDP:
-      if (have !=
-          (sizeof(struct ip_header) * 2 +
-           sizeof(struct icmp_ttl_exceeded_header) + sizeof(struct udp_header)))
-        {
-          /* malformed */
-          return;
-        }
-      /* grab UDP content */
-      GNUNET_memcpy(&udp_pkt, &buf[off], sizeof(struct udp_header));
-      port = ntohs(udp_pkt.length);
-      break;
-
-    default:
-      /* different type than what we want */
-      return;
-    }
-
-  ssize = sizeof(buf);
-  WSAAddressToString((LPSOCKADDR)&source_ip, sizeof(source_ip), NULL, buf,
-                     &ssize);
-  if (port == 0)
-    fprintf(stdout, "%s\n", buf);
-  else
-    fprintf(stdout, "%s:%u\n", buf, (unsigned int)port);
-  fflush(stdout);
-}
-
-
-/**
- * Create an ICMP raw socket for reading.
- *
- * @return INVALID_SOCKET on error
- */
-static _win_socket
-make_icmp_socket()
-{
-  _win_socket ret;
-
-  ret = _win_socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
-  if (INVALID_SOCKET == ret)
-    {
-      fprintf(stderr, "Error opening RAW socket: %s\n", strerror(errno));
-      return INVALID_SOCKET;
-    }
-  return ret;
-}
-
-
-/**
- * Create an ICMP raw socket for writing.
- *
- * @return INVALID_SOCKET on error
- */
-static _win_socket
-make_raw_socket()
-{
-  DWORD bOptVal = TRUE;
-  int bOptLen = sizeof(bOptVal);
-
-  rawsock = _win_socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
-  if (INVALID_SOCKET == rawsock)
-    {
-      fprintf(stderr, "Error opening RAW socket: %s\n", strerror(errno));
-      return INVALID_SOCKET;
-    }
-
-  if (0 !=
-      _win_setsockopt(rawsock, SOL_SOCKET, SO_BROADCAST, (char *)&bOptVal,
-                 bOptLen))
-    {
-      fprintf(stderr, "Error setting SO_BROADCAST to ON: %s\n",
-              strerror(errno));
-      closesocket(rawsock);
-      return INVALID_SOCKET;
-    }
-  if (0 !=
-      _win_setsockopt(rawsock, IPPROTO_IP, IP_HDRINCL, (char *)&bOptVal, bOptLen))
-    {
-      fprintf(stderr, "Error setting IP_HDRINCL to ON: %s\n", strerror(errno));
-      closesocket(rawsock);
-      return INVALID_SOCKET;
-    }
-  return rawsock;
-}
-
-
-/**
- * Create a UDP socket for writing.
- *
- * @param my_ip source address (our ip address)
- * @return INVALID_SOCKET on error
- */
-static _win_socket
-make_udp_socket(const struct in_addr *my_ip)
-{
-  _win_socket ret;
-  struct sockaddr_in addr;
-
-  ret = _win_socket(AF_INET, SOCK_DGRAM, 0);
-  if (INVALID_SOCKET == ret)
-    {
-      fprintf(stderr, "Error opening UDP socket: %s\n", strerror(errno));
-      return INVALID_SOCKET;
-    }
-  memset(&addr, 0, sizeof(addr));
-  addr.sin_family = AF_INET;
-  addr.sin_addr = *my_ip;
-  addr.sin_port = htons(NAT_TRAV_PORT);
-  if (0 != bind(ret, (struct sockaddr *)&addr, sizeof(addr)))
-    {
-      fprintf(stderr, "Error binding UDP socket to port %u: %s\n", NAT_TRAV_PORT,
-              strerror(errno));
-      /* likely problematic, but not certain, try to continue */
-    }
-  return ret;
-}
-
-
-int
-main(int argc, char *const *argv)
-{
-  struct in_addr external;
-  fd_set rs;
-  struct timeval tv;
-  WSADATA wsaData;
-  unsigned int alt = 0;
-
-  if ((argc > 1) && (0 != strcmp(argv[1], "-d")))
-    {
-      privilege_testing = TRUE;
-      fprintf(stderr,
-              "%s",
-              "DEBUG: Running binary in privilege testing mode.");
-      argv++;
-      argc--;
-    }
-
-  if (2 != argc)
-    {
-      fprintf(stderr,
-              "This program must be started with our (internal NAT) IP as the only argument.\n");
-      return 1;
-    }
-  if (1 != inet_pton(AF_INET, argv[1], &external))
-    {
-      fprintf(stderr, "Error parsing IPv4 address: %s, error %s\n", argv[1],
-              strerror(errno));
-      return 1;
-    }
-  if (1 != inet_pton(AF_INET, DUMMY_IP, &dummy))
-    {
-      fprintf(stderr, "Internal error converting dummy IP to binary.\n");
-      return 2;
-    }
-  if (WSAStartup(MAKEWORD(2, 1), &wsaData) != 0)
-    {
-      fprintf(stderr, "Failed to find Winsock 2.1 or better.\n");
-      return 2;
-    }
-  if (INVALID_SOCKET == (icmpsock = make_icmp_socket()))
-    {
-      return 3;
-    }
-  if (INVALID_SOCKET == (make_raw_socket()))
-    {
-      closesocket(icmpsock);
-      return 3;
-    }
-  if (INVALID_SOCKET == (udpsock = make_udp_socket(&external)))
-    {
-      closesocket(icmpsock);
-      closesocket(rawsock);
-      return 3;
-    }
-
-  while (!privilege_testing)
-    {
-      FD_ZERO(&rs);
-      FD_SET(icmpsock, &rs);
-      tv.tv_sec = 0;
-      tv.tv_usec = ICMP_SEND_FREQUENCY_MS * 1000;
-      if (-1 == select(icmpsock + 1, &rs, NULL, NULL, &tv))
-        {
-          if (errno == EINTR)
-            continue;
-          fprintf(stderr, "select failed: %s\n", strerror(errno));
-          break;
-        }
-      if (FD_ISSET(icmpsock, &rs))
-        process_icmp_response();
-      if (0 == (++alt % 2))
-        send_icmp_echo(&external);
-      else
-        send_udp();
-    }
-  /* select failed (internal error or OS out of resources) */
-  closesocket(icmpsock);
-  closesocket(rawsock);
-  closesocket(udpsock);
-  WSACleanup();
-  if (privilege_testing)
-    return 0;
-  return 4;
-}
-
-
-/* end of gnunet-helper-nat-server-windows.c */
index 61848978019f7752e6c16df660926be49604e1ab..3a79cdd971349700f604298350b6bfe7ccf797a9 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 68b6a55e70db53e8f45669af1554d7079f911ce0..57b8d193650f3654f2f2c74e80d6ed62e9970dd9 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 8293288c850b4095a0a39f31b095faefcb4bbbf0..3c133427c7048494376345243a4fa6de0c12341c 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols -lole32 -lshell32 -liconv -lstdc++ -lcomdlg32 -lgdi32
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index d07ed3a5b758017c17cd453acde5ce55a66b9023..7d1204100373db1db067f914b9453d1afd9184ee 100644 (file)
@@ -10,10 +10,6 @@ plugindir = $(libdir)/gnunet
 pkgcfg_DATA = \
   peerinfo.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols -lole32 -lshell32 -liconv -lstdc++ -lcomdlg32 -lgdi32
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index c6acdce5649a9b58b6c8f53d54a642a9a9275168..003bac36daafab4177f4d8cf462f3516dd18842f 100644 (file)
@@ -10,10 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 dist_pkgcfg_DATA = \
   peerstore.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index d0c71703b3aba2b3276161d46a68707b9352bcd6..9270e6fe0f08a9542b65935724f916f62dc2b4e7 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include $(POSTGRESQL_CPPFLAGS)
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 1d94a342970b8c13832c576724cf4c2a3c51f658..09a68b779760363b4481f3292d1dc904e65bd0dc 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
 endif
@@ -46,13 +42,6 @@ if LINUX
  test_gnunet_vpn-4_over \
  test_gns_vpn
 endif
-if MINGW
- VPN_TEST = \
- test_gnunet_vpn-4_to_6 \
- test_gnunet_vpn-6_to_4 \
- test_gnunet_vpn-6_over \
- test_gnunet_vpn-4_over
-endif
 else
 if HAVE_LIBCURL
 LIB_GNURL=@LIBCURL@
@@ -65,13 +54,6 @@ if LINUX
  test_gnunet_vpn-4_over \
  test_gns_vpn
 endif
-if MINGW
- VPN_TEST = \
- test_gnunet_vpn-4_to_6 \
- test_gnunet_vpn-6_to_4 \
- test_gnunet_vpn-6_over \
- test_gnunet_vpn-4_over
-endif
 endif
 endif
 
index 60f4aad2af8c4a6c3dba56665f7c8e756bc69d7f..c52c0c6c9836fd38d9405430e57b856b2b80303d 100644 (file)
@@ -420,7 +420,6 @@ main(int argc, char *const *argv)
   char *exit_binary;
   int ret = 0;
 
-#ifndef MINGW
   if (0 != access("/dev/net/tun", R_OK))
     {
       GNUNET_log_strerror_file(GNUNET_ERROR_TYPE_ERROR,
@@ -430,7 +429,7 @@ main(int argc, char *const *argv)
               "WARNING: System unable to run test, skipping.\n");
       return 77;
     }
-#endif
+
   vpn_binary = GNUNET_OS_get_libexec_binary_path("gnunet-helper-vpn");
   exit_binary = GNUNET_OS_get_libexec_binary_path("gnunet-helper-exit");
   if ((GNUNET_YES != (ret = GNUNET_OS_check_helper_binary(vpn_binary, GNUNET_YES, "-d gnunet-vpn - - 169.1.3.3.7 255.255.255.0"))) ||  //ipv4 only please!
index e53f527b32932f15ce678fb919c340342224e7ff..cbbcb37d655678e40c90709f23f55e93126e2a06 100644 (file)
@@ -7,10 +7,6 @@ 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
index 69dcc605e78e7d98de7abe9ffbaee577c415c5db..851b0d71e7587148298eb215e77a2db398c533b1 100644 (file)
@@ -3,10 +3,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
  plugindir = $(libdir)/gnunet
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 2af6dcccdbd28fa70d4467f7651509add0ee5fbf..ba5e0af0019dd564b810106b96bc2dd27f97fad6 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 1fd2816c0fcff8fbe7eb4dff9fa143b8622c4f10..41b4c65088ff967109d33a6b1768bcebf6b9f410 100644 (file)
@@ -10,10 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
    rest.conf
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov
index 82755b48573fd7e9d97e4b0a430b1b8c64007ddb..a6fff35241b213439b5715cd0b925bdf6551de9d 100644 (file)
@@ -3,10 +3,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
 plugindir = $(libdir)/gnunet
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index ce73caa0f7e2e9fe56eda5574db8d6c4333818cc..0c739589fa5cab9612648be3db6a0641b37218c5 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 10e04284f188b72b316e8a40b44dc1f3a250890f..311cfd1af3977c8f53e699c75be4e643afbfb98e 100644 (file)
@@ -8,10 +8,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   scalarproduct.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index c808e820062a69a0fced3a7da3726bcf262531dc..787cfa0c17165cac21126d49fa0c47adb1e9cb56 100644 (file)
@@ -8,10 +8,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
   secretsharing.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index df17fa1abf4fc1f0f402ecc7a53c7e722253fa65..d6b10a1f8bc6aa515df7413762fbfa77cf140b53 100644 (file)
@@ -10,10 +10,6 @@ plugindir = $(libdir)/gnunet
 pkgcfg_DATA = \
   set.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index fb936400541450fa12ddc82c6bf5ad39ec3797e0..893c8eac3bcb4dafdcef432d9c783d2cfcf3edf8 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage
 endif
index 16a1ea2d0f3e038e546340fb6faec5328710fc2f..bde35da2d47c87206280f194a857718a4fc5cc3f 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index 5a27a6d608962024b5ffdeff5e9be02db02e6152..4d2e580834e03551672cea577f8937dfd2e6b1cd 100644 (file)
@@ -8,10 +8,6 @@ libexecdir= $(pkglibdir)/libexec/
 dist_pkgcfg_DATA = \
   template.conf
 
-if MINGW
- WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = -fprofile-arcs -ftest-coverage
 endif
index a8c4c7b0576870cc6378750ac7075a5e33fe59eb..96b68df277aea0fe3381f402e8f36304ee7ee933 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index e858e44b4f76e78f05a6c86ca15e322c5302cfd5..c27a81ae95ab072874f7af8cc6b447a6fa7d7a5a 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index b659b5dc3dfc363ebdafac3b524c12313ffdd7b0..f3df9a96e59a859615eb90e8aedb058e96fac0eb 100644 (file)
@@ -398,114 +398,6 @@ ABORT_KSTAT:
   }
 #endif
 
-#if MINGW
-  /* Win NT? */
-  if (GNNtQuerySystemInformation)
-    {
-      static double dLastKernel;
-      static double dLastIdle;
-      static double dLastUser;
-      double dKernel;
-      double dIdle;
-      double dUser;
-      double dDiffKernel;
-      double dDiffIdle;
-      double dDiffUser;
-      SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION theInfo;
-
-      if (GNNtQuerySystemInformation(SystemProcessorPerformanceInformation,
-                                     &theInfo,
-                                     sizeof(theInfo), NULL) == NO_ERROR)
-        {
-          /* PORT-ME MINGW: Multi-processor? */
-          dKernel = Li2Double(theInfo.KernelTime);
-          dIdle = Li2Double(theInfo.IdleTime);
-          dUser = Li2Double(theInfo.UserTime);
-          dDiffKernel = dKernel - dLastKernel;
-          dDiffIdle = dIdle - dLastIdle;
-          dDiffUser = dUser - dLastUser;
-
-          if (((dDiffKernel + dDiffUser) > 0) &&
-              (dLastIdle + dLastKernel + dLastUser > 0))
-            currentCPULoad =
-              100.0 - (dDiffIdle / (dDiffKernel + dDiffUser)) * 100.0;
-          else
-            currentCPULoad = -1;        /* don't know (yet) */
-
-          dLastKernel = dKernel;
-          dLastIdle = dIdle;
-          dLastUser = dUser;
-
-          currentIOLoad = -1;   /* FIXME-MINGW */
-          return GNUNET_OK;
-        }
-      else
-        {
-          /* only warn once, if there is a problem with
-             NtQuery..., we're going to hit it frequently... */
-          static int once;
-          if (once == 0)
-            {
-              once = 1;
-              GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
-                         "Cannot query the CPU usage (Windows NT).\n");
-            }
-          return GNUNET_SYSERR;
-        }
-    }
-  else
-    {                           /* Win 9x */
-      HKEY hKey;
-      DWORD dwDataSize, dwType, dwDummy;
-
-      /* Start query */
-      if (RegOpenKeyEx(HKEY_DYN_DATA,
-                       "PerfStats\\StartSrv",
-                       0, KEY_ALL_ACCESS, &hKey) != ERROR_SUCCESS)
-        {
-          /* only warn once */
-          static int once = 0;
-          if (once == 0)
-            {
-              once = 1;
-              GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
-                         "Cannot query the CPU usage (Win 9x)\n");
-            }
-        }
-
-      RegOpenKeyEx(HKEY_DYN_DATA,
-                   "PerfStats\\StartStat", 0, KEY_ALL_ACCESS, &hKey);
-      dwDataSize = sizeof(dwDummy);
-      RegQueryValueEx(hKey,
-                      "KERNEL\\CPUUsage",
-                      NULL, &dwType, (LPBYTE)&dwDummy, &dwDataSize);
-      RegCloseKey(hKey);
-
-      /* Get CPU usage */
-      RegOpenKeyEx(HKEY_DYN_DATA,
-                   "PerfStats\\StatData", 0, KEY_ALL_ACCESS, &hKey);
-      dwDataSize = sizeof(currentCPULoad);
-      RegQueryValueEx(hKey,
-                      "KERNEL\\CPUUsage",
-                      NULL, &dwType, (LPBYTE)&currentCPULoad, &dwDataSize);
-      RegCloseKey(hKey);
-      currentIOLoad = -1;       /* FIXME-MINGW! */
-
-      /* Stop query */
-      RegOpenKeyEx(HKEY_DYN_DATA,
-                   "PerfStats\\StopStat", 0, KEY_ALL_ACCESS, &hKey);
-      RegOpenKeyEx(HKEY_DYN_DATA,
-                   "PerfStats\\StopSrv", 0, KEY_ALL_ACCESS, &hKey);
-      dwDataSize = sizeof(dwDummy);
-      RegQueryValueEx(hKey,
-                      "KERNEL\\CPUUsage",
-                      NULL, &dwType, (LPBYTE)&dwDummy, &dwDataSize);
-      RegCloseKey(hKey);
-
-      return GNUNET_OK;
-    }
-#endif
-
   /* loadaverage not defined and no platform
      specific alternative defined
      => default: error
@@ -695,12 +587,6 @@ GST_stats_init(const struct GNUNET_CONFIGURATION_Handle *cfg)
   char *fn;
   size_t len;
 
-#if MINGW
-  GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
-             "Load statistics logging now available for windows\n");
-  return;                       /* No logging on windows for now :( */
-#endif
-
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_filename(cfg, "testbed",
                                               "STATS_DIR", &stats_dir))
@@ -747,9 +633,6 @@ GST_stats_init(const struct GNUNET_CONFIGURATION_Handle *cfg)
 void
 GST_stats_destroy()
 {
-#if MINGW
-  return;
-#endif
   if (NULL == bw)
     return;
 #ifdef LINUX
index 39bc9bfe737b60ebef271ad925716a78b6e5b883..a3bd415ddbd3f7fd54a32384b260a7848b4f0856 100644 (file)
@@ -215,18 +215,7 @@ main(int argc, char **argv)
     }
   testname++;
   testname = GNUNET_strdup(testname);
-#ifdef MINGW
-  {
-    char *period;
-
-    /* check and remove .exe extension */
-    period = strrchr(testname, (int)'.');
-    if (NULL != period)
-      *period = '\0';
-    else
-      GNUNET_break(0);          /* Windows with no .exe? */
-  }
-#endif
+
   if (0 == strcmp("waitforever", testname))
     wait_forever = GNUNET_YES;
   if ((GNUNET_YES != wait_forever) && (0 != strcmp("run", testname)))
index 39e5f15743d19bc595b694d76ea2af93654d78b9..9c6357455841f9c284e8a2fb54fa2a50ae5761dd 100644 (file)
@@ -1,10 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIB = -lgcov
index a9b0d19d669f721975e741e96a16e4aaa3ae78a0..0f5b2e8be0e7d28fcb0ae3287432eee6a14ea631 100644 (file)
@@ -114,18 +114,12 @@ if HAVE_LIBBLUETOOTH
  BT_QUOTA_TEST = test_quota_compliance_bluetooth \
     test_quota_compliance_bluetooth_asymmetric
 endif
-else
-if MINGW
- BT_BIN = gnunet-helper-transport-bluetooth
- BT_PLUGIN_LA = libgnunet_plugin_transport_bluetooth.la
-endif
 endif
 
 # end of HAVE_EXPERIMENTAL
 endif
 
 
-if !MINGW
 UNIX_PLUGIN_LA = libgnunet_plugin_transport_unix.la
 UNIX_PLUGIN_TEST = test_transport_api_unix
 UNIX_TEST = test_plugin_unix
@@ -136,7 +130,7 @@ UNIX_QUOTA_TEST = test_quota_compliance_unix \
 if LINUX
  UNIX_API_ABSTRACT_TEST = test_transport_api_unix_abstract
 endif
-endif
+
 
 noinst_PROGRAMS = \
  gnunet-transport-profiler \
@@ -319,13 +313,9 @@ gnunet_transport_wlan_receiver_LDADD = \
 
 gnunet_helper_transport_bluetooth_SOURCES = \
  gnunet-helper-transport-bluetooth.c
-if MINGW
- gnunet_helper_transport_bluetooth_LDADD = \
-  $(top_builddir)/src/util/libgnunetutil.la
- gnunet_helper_transport_bluetooth_LDFLAGS = -lws2_32
-else
- gnunet_helper_transport_bluetooth_LDFLAGS = -lbluetooth
-endif
+
+gnunet_helper_transport_bluetooth_LDFLAGS = -lbluetooth
+
 
 gnunet_transport_profiler_SOURCES = \
  gnunet-transport-profiler.c
index 2ac7059969b2503cff1c0bd7b77fa18e749fa02f..4696f48f8e1bd05b06a014ee22c6545a9f8e3cef 100644 (file)
  */
 #include "gnunet_config.h"
 
-#ifdef MINGW
-  #include "platform.h"
-  #include "gnunet_util_lib.h"
-  #include <bthdef.h>
-  #include <ws2bth.h>
-#else
-  #define SOCKTYPE int
-  #include <bluetooth/bluetooth.h>
-  #include <bluetooth/hci.h>
-  #include <bluetooth/hci_lib.h>
-  #include <bluetooth/rfcomm.h>
-  #include <bluetooth/sdp.h>
-  #include <bluetooth/sdp_lib.h>
-  #include <errno.h>
-  #include <linux/if.h>
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <sys/ioctl.h>
-  #include <sys/param.h>
-  #include <sys/socket.h>
-  #include <sys/stat.h>
-  #include <sys/types.h>
-  #include <unistd.h>
-#endif
+#define SOCKTYPE int
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
+#include <bluetooth/rfcomm.h>
+#include <bluetooth/sdp.h>
+#include <bluetooth/sdp_lib.h>
+#include <errno.h>
+#include <linux/if.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
 
 #include "plugin_transport_wlan.h"
 #include "gnunet_protocols.h"
  */
 #define MAX_LOOPS 5
 
-#ifdef MINGW
-/* Maximum size of the interface's name */
-  #define IFNAMSIZ 16
-
-  #ifndef NS_BTH
-    #define NS_BTH 16
-  #endif
-/**
- * A copy of the MAC Address.
- */
-struct GNUNET_TRANSPORT_WLAN_MacAddress_Copy {
-  UINT8 mac[MAC_ADDR_SIZE];
-};
-
-/**
- * The UUID used for the SDP service.
- * {31191E56-FA7E-4517-870E-71B86BBCC52F}
- */
-  #define GNUNET_BLUETOOTH_SDP_UUID \
-  { \
-    0x31, 0x19, 0x1E, 0x56, \
-    0xFA, 0x7E, \
-    0x45, 0x17, \
-    0x87, 0x0E, \
-    0x71, 0xB8, 0x6B, 0xBC, 0xC5, 0x2F \
-  }
-#endif
-
 /**
  * In bluez library, the maximum name length of a device is 8
  */
@@ -110,17 +75,6 @@ struct HardwareInfos {
    */
   char iface[IFNAMSIZ];
 
- #ifdef MINGW
-  /**
-   * socket handle
-   */
-  struct GNUNET_NETWORK_Handle *handle;
-
-  /**
-   * MAC address of our own bluetooth interface.
-   */
-  struct GNUNET_TRANSPORT_WLAN_MacAddress_Copy pl_mac;
- #else
   /**
    * file descriptor for the rfcomm socket
    */
@@ -135,7 +89,6 @@ struct HardwareInfos {
    * SDP session
    */
   sdp_session_t *session;
- #endif
 };
 
 /**
@@ -606,61 +559,6 @@ check_crc_buf_osdep(const unsigned char *buf, size_t len)
 
 
 /* ************** end of clone  ***************** */
-
-#ifdef MINGW
-/**
- * Function used to get the code of last error and to print the type of error.
- */
-static void
-print_last_error()
-{
-  LPVOID lpMsgBuf = NULL;
-
-  if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
-                    NULL, GetLastError(), 0, (LPTSTR)&lpMsgBuf, 0, NULL))
-    fprintf(stderr, "%s\n", (char *)lpMsgBuf);
-  else
-    fprintf(stderr, "Failed to format the message for the last error! Error number : %d\n", GetLastError());
-}
-
-/**
- * Function used to initialize the Windows Sockets
- */
-static void
-initialize_windows_sockets()
-{
-  WSADATA wsaData;
-  WORD wVersionRequested = MAKEWORD(2, 0);
-
-  if (WSAStartup(wVersionRequested, &wsaData) != NO_ERROR)
-    {
-      fprintf(stderr, "Error initializing window sockets!\n");
-      print_last_error();
-      ExitProcess(2);
-    }
-}
-
-/**
- * Function used to convert the GUID.
- * @param bytes the GUID represented as a char array
- * @param uuid pointer to the GUID
- */
-static void
-convert_guid(char *bytes, GUID * uuid)
-{
-  int i;
-
-  uuid->Data1 = ((bytes[0] << 24) & 0xff000000) | ((bytes[1] << 16) & 0x00ff0000) | ((bytes[2] << 8) & 0x0000ff00) | (bytes[3] & 0x000000ff);
-  uuid->Data2 = ((bytes[4] << 8) & 0xff00) | (bytes[5] & 0x00ff);
-  uuid->Data3 = ((bytes[6] << 8) & 0xff00) | (bytes[7] & 0x00ff);
-
-  for (i = 0; i < 8; i++)
-    {
-      uuid->Data4[i] = bytes[i + 8];
-    }
-}
-#endif
-
 #ifdef LINUX
 /**
  * Function for assigning a port number
@@ -688,79 +586,6 @@ bind_socket(int socket, struct sockaddr_rc *addr)
 }
 #endif
 
-#ifdef MINGW
-/**
- * Function used for creating the service record and registering it.
- *
- * @param dev pointer to the device struct
- * @return 0 on success
- */
-static int
-register_service(struct HardwareInfos *dev)
-{
-  /* advertise the service */
-  CSADDR_INFO addr_info;
-  WSAQUERYSET wqs;
-  GUID guid;
-  unsigned char uuid[] = GNUNET_BLUETOOTH_SDP_UUID;
-  SOCKADDR_BTH addr;
-  int addr_len = sizeof(SOCKADDR_BTH);
-  int fd;
-
-  /* get the port on which we are listening on */
-  memset(&addr, 0, sizeof(SOCKADDR_BTH));
-  fd = GNUNET_NETWORK_get_fd(dev->handle);
-  if (fd <= 0)
-    {
-      fprintf(stderr, "Failed to get the file descriptor\n");
-      return -1;
-    }
-  if (SOCKET_ERROR == getsockname(fd, (SOCKADDR*)&addr, &addr_len))
-    {
-      fprintf(stderr, "Failed to get the port on which we are listening on: \n");
-      print_last_error();
-      return -1;
-    }
-
-  /* save the device address */
-  GNUNET_memcpy(&dev->pl_mac, &addr.btAddr, sizeof(BTH_ADDR));
-
-  /* set the address information */
-  memset(&addr_info, 0, sizeof(CSADDR_INFO));
-  addr_info.iProtocol = BTHPROTO_RFCOMM;
-  addr_info.iSocketType = SOCK_STREAM;
-  addr_info.LocalAddr.lpSockaddr = (LPSOCKADDR)&addr;
-  addr_info.LocalAddr.iSockaddrLength = sizeof(addr);
-  addr_info.RemoteAddr.lpSockaddr = (LPSOCKADDR)&addr;
-  addr_info.RemoteAddr.iSockaddrLength = sizeof(addr);
-
-  convert_guid((char *)uuid, &guid);
-
-  /* register the service */
-  memset(&wqs, 0, sizeof(WSAQUERYSET));
-  wqs.dwSize = sizeof(WSAQUERYSET);
-  wqs.dwNameSpace = NS_BTH;
-  wqs.lpszServiceInstanceName = "GNUnet Bluetooth Service";
-  wqs.lpszComment = "This is the service used by the GNUnnet plugin transport";
-  wqs.lpServiceClassId = &guid;
-  wqs.dwNumberOfCsAddrs = 1;
-  wqs.lpcsaBuffer = &addr_info;
-  wqs.lpBlob = 0;
-
-  if (SOCKET_ERROR == WSASetService(&wqs, RNRSERVICE_REGISTER, 0))
-    {
-      fprintf(stderr, "Failed to register the SDP service: ");
-      print_last_error();
-      return -1;
-    }
-  else
-    {
-      fprintf(stderr, "The SDP service was registered\n");
-    }
-
-  return 0;
-}
-#else
 /**
  * Function used for creating the service record and registering it.
  *
@@ -849,96 +674,7 @@ register_service(struct HardwareInfos *dev, int rc_channel)
 
   return 0;
 }
-#endif
 
-#ifdef MINGW
-/**
- * Function for searching and browsing for a service. This will return the
- * port number on which the service is running.
- *
- * @param dest target address
- * @return channel
- */
-static int
-get_channel(const char *dest)
-{
-  HANDLE h;
-  WSAQUERYSET *wqs;
-  DWORD wqs_len = sizeof(WSAQUERYSET);
-  int done = 0;
-  int channel = -1;
-  GUID guid;
-  unsigned char uuid[] = GNUNET_BLUETOOTH_SDP_UUID;
-
-  convert_guid((char *)uuid, &guid);
-
-  wqs = (WSAQUERYSET*)malloc(wqs_len);
-  ZeroMemory(wqs, wqs_len);
-
-  wqs->dwSize = sizeof(WSAQUERYSET);
-  wqs->lpServiceClassId = &guid;
-  wqs->dwNameSpace = NS_BTH;
-  wqs->dwNumberOfCsAddrs = 0;
-  wqs->lpszContext = (LPSTR)dest;
-
-  if (SOCKET_ERROR == WSALookupServiceBegin(wqs, LUP_FLUSHCACHE | LUP_RETURN_ALL, &h))
-    {
-      if (GetLastError() == WSASERVICE_NOT_FOUND)
-        {
-          fprintf(stderr, "WARNING! The device with address %s wasn't found. Skipping the message!", dest);
-          return -1;
-        }
-      else
-        {
-          fprintf(stderr, "Failed to find the port number: ");
-          print_last_error();
-          ExitProcess(2);
-          return -1;
-        }
-    }
-
-  /* search the sdp service */
-  while (!done)
-    {
-      if (SOCKET_ERROR == WSALookupServiceNext(h, LUP_FLUSHCACHE | LUP_RETURN_ALL, &wqs_len, wqs))
-        {
-          int error = WSAGetLastError();
-
-          switch (error)
-            {
-            case WSAEFAULT:
-              free(wqs);
-              wqs = (WSAQUERYSET*)malloc(wqs_len);
-              break;
-
-            case WSANO_DATA:
-              fprintf(stderr, "Failed! The address was valid but there was no data record of requested type\n");
-              done = 1;
-              break;
-
-            case WSA_E_NO_MORE:
-              done = 1;
-              break;
-
-            default:
-              fprintf(stderr, "Failed to look over the services: ");
-              print_last_error();
-              WSALookupServiceEnd(h);
-              ExitProcess(2);
-            }
-        }
-      else
-        {
-          channel = ((SOCKADDR_BTH*)wqs->lpcsaBuffer->RemoteAddr.lpSockaddr)->port;
-        }
-    }
-
-  free(wqs);
-  WSALookupServiceEnd(h);
-
-  return channel;
-}
-#else
 /**
  * Function used for searching and browsing for a service. This will return the
  * port number on which the service is running.
@@ -1011,7 +747,6 @@ get_channel(struct HardwareInfos *dev, bdaddr_t dest)
 
   return channel;
 }
-#endif
 
 /**
  * Read from the socket and put the result into the buffer for transmission to 'stdout'.
@@ -1030,22 +765,14 @@ read_from_the_socket(void *sock,
 {
   unsigned char tmpbuf[buf_size];
   ssize_t count;
-
-  #ifdef MINGW
-  count = GNUNET_NETWORK_socket_recv((struct GNUNET_NETWORK_Handle *)sock, tmpbuf, buf_size);
-  #else
   count = read(*((int *)sock), tmpbuf, buf_size);
-  #endif
 
   if (0 > count)
     {
       if (EAGAIN == errno)
         return 0;
-    #if MINGW
-      print_last_error();
-    #else
+
       fprintf(stderr, "Failed to read from the HCI socket: %s\n", strerror(errno));
-    #endif
 
       return -1;
     }
@@ -1088,43 +815,6 @@ read_from_the_socket(void *sock,
 static int
 open_device(struct HardwareInfos *dev)
 {
-  #ifdef MINGW
-  SOCKADDR_BTH addr;
-
-  /* bind the RFCOMM socket to the interface */
-  addr.addressFamily = AF_BTH;
-  addr.btAddr = 0;
-  addr.port = BT_PORT_ANY;
-
-  if (GNUNET_OK !=
-      GNUNET_NETWORK_socket_bind(dev->handle, (const SOCKADDR*)&addr, sizeof(SOCKADDR_BTH)))
-    {
-      fprintf(stderr, "Failed to bind the socket: ");
-      if (GetLastError() == WSAENETDOWN)
-        {
-          fprintf(stderr, "Please make sure that your Bluetooth device is ON!\n");
-          ExitProcess(2);
-        }
-      print_last_error();
-      return -1;
-    }
-
-  /* start listening on the socket */
-  if (GNUNET_NETWORK_socket_listen(dev->handle, 4) != GNUNET_OK)
-    {
-      fprintf(stderr, "Failed to listen on the socket: ");
-      print_last_error();
-      return -1;
-    }
-
-  /* register the sdp service */
-  if (register_service(dev) != 0)
-    {
-      fprintf(stderr, "Failed to register a service: ");
-      print_last_error();
-      return 1;
-    }
-  #else
   int i, dev_id = -1, fd_hci;
   struct {
     struct hci_dev_list_req list;
@@ -1279,7 +969,6 @@ open_device(struct HardwareInfos *dev)
               dev->iface, strerror(errno));
       return 1;
     }
-  #endif
 
   return 0;
 }
@@ -1299,12 +988,7 @@ mac_set(struct GNUNET_TRANSPORT_WLAN_Ieee80211Frame *taIeeeHeader,
 {
   taIeeeHeader->frame_control = htons(IEEE80211_FC0_TYPE_DATA);
   taIeeeHeader->addr3 = mac_bssid_gnunet;
-
-  #ifdef MINGW
-  GNUNET_memcpy(&taIeeeHeader->addr2, &dev->pl_mac, sizeof(struct GNUNET_TRANSPORT_WLAN_MacAddress));
-  #else
   taIeeeHeader->addr2 = dev->pl_mac;
-  #endif
 }
 
 #ifdef LINUX
index 75580919432390d6a90a7310e4baffc8baecee35..c056bb79c55f163380012d7f2d65157599ca1c9d 100644 (file)
@@ -2929,20 +2929,7 @@ udp_select_read(struct Plugin *plugin, struct GNUNET_NETWORK_Handle *rsock)
                                         (struct sockaddr *)&addr,
                                         &fromlen);
   sa = (const struct sockaddr *)&addr;
-#if MINGW
-  /* On SOCK_DGRAM UDP sockets recvfrom might fail with a
-   * WSAECONNRESET error to indicate that previous sendto() (yes, sendto!)
-   * on this socket has failed.
-   * Quote from MSDN:
-   *   WSAECONNRESET - The virtual circuit was reset by the remote side
-   *   executing a hard or abortive close. The application should close
-   *   the socket; it is no longer usable. On a UDP-datagram socket this
-   *   error indicates a previous send operation resulted in an ICMP Port
-   *   Unreachable message.
-   */
-  if ((-1 == size) && (ECONNRESET == errno))
-    return;
-#endif
+
   if (-1 == size)
     {
       LOG(GNUNET_ERROR_TYPE_DEBUG,
index cdc3e34ffaf48b0d18c967af913152daddcce017..bf1a90dba260eb9d99fe5665add61d9459f93a6e 100644 (file)
 /**
  * Number fo bytes in a mac address.
  */
-#ifdef MINGW
-  #define MAC_ADDR_SIZE 8
-typedef uint8_t u_int8_t;
-#else
-  #define MAC_ADDR_SIZE 6
-#endif
+#define MAC_ADDR_SIZE 6
 
 /**
  * Value for "Management" in the 'frame_control' field of the
index 8f3f43718dad77ffdb509144d8f063fd4456f5a9..129511fec64ac605e0df87ac61f27d33c6f0b474 100644 (file)
@@ -849,95 +849,6 @@ LEGACY_SERVICE_get_server_addresses(
 }
 
 
-#ifdef MINGW
-/**
- * Read listen sockets from the parent process (ARM).
- *
- * @param sctx service context to initialize
- * @return #GNUNET_YES if ok, #GNUNET_NO if not ok (must bind yourself),
- * and #GNUNET_SYSERR on error.
- */
-static int
-receive_sockets_from_parent(struct LEGACY_SERVICE_Context *sctx)
-{
-  const char *env_buf;
-  int fail;
-  uint64_t count;
-  uint64_t i;
-  HANDLE lsocks_pipe;
-
-  env_buf = getenv("GNUNET_OS_READ_LSOCKS");
-  if ((NULL == env_buf) || (strlen(env_buf) <= 0))
-    return GNUNET_NO;
-  /* Using W32 API directly here, because this pipe will
-   * never be used outside of this function, and it's just too much of a bother
-   * to create a GNUnet API that boxes a HANDLE (the way it is done with socks)
-   */
-  lsocks_pipe = (HANDLE)strtoul(env_buf, NULL, 10);
-  if ((0 == lsocks_pipe) || (INVALID_HANDLE_VALUE == lsocks_pipe))
-    return GNUNET_NO;
-  fail = 1;
-  do
-    {
-      int ret;
-      int fail2;
-      DWORD rd;
-
-      ret = ReadFile(lsocks_pipe, &count, sizeof(count), &rd, NULL);
-      if ((0 == ret) || (sizeof(count) != rd) || (0 == count))
-        break;
-      sctx->lsocks =
-        GNUNET_malloc(sizeof(struct GNUNET_NETWORK_Handle *) * (count + 1));
-
-      fail2 = 1;
-      for (i = 0; i < count; i++)
-        {
-          WSAPROTOCOL_INFOA pi;
-          uint64_t size;
-          socket s;
-
-          ret = ReadFile(lsocks_pipe, &size, sizeof(size), &rd, NULL);
-          if ((0 == ret) || (sizeof(size) != rd) || (sizeof(pi) != size))
-            break;
-          ret = ReadFile(lsocks_pipe, &pi, sizeof(pi), &rd, NULL);
-          if ((0 == ret) || (sizeof(pi) != rd))
-            break;
-          s = WSASocketA(pi.iAddressFamily,
-                         pi.iSocketType,
-                         pi.iProtocol,
-                         &pi,
-                         0,
-                         WSA_FLAG_OVERLAPPED);
-          sctx->lsocks[i] = GNUNET_NETWORK_socket_box_native(s);
-          if (NULL == sctx->lsocks[i])
-            break;
-          else if (i == count - 1)
-            fail2 = 0;
-        }
-      if (fail2)
-        break;
-      sctx->lsocks[count] = NULL;
-      fail = 0;
-    }
-  while (fail);
-
-  CloseHandle(lsocks_pipe);
-
-  if (fail)
-    {
-      LOG(GNUNET_ERROR_TYPE_ERROR,
-          _("Could not access a pre-bound socket, will try to bind myself\n"));
-      for (i = 0; (i < count) && (NULL != sctx->lsocks[i]); i++)
-        GNUNET_break(0 == GNUNET_NETWORK_socket_close(sctx->lsocks[i]));
-      GNUNET_free_non_null(sctx->lsocks);
-      sctx->lsocks = NULL;
-      return GNUNET_NO;
-    }
-  return GNUNET_YES;
-}
-#endif
-
-
 /**
  * Setup addr, addrlen, idle_timeout
  * based on configuration!
@@ -961,12 +872,9 @@ setup_service(struct LEGACY_SERVICE_Context *sctx)
 {
   struct GNUNET_TIME_Relative idleout;
   int tolerant;
-
-#ifndef MINGW
   const char *nfds;
   unsigned int cnt;
   int flags;
-#endif
 
   if (GNUNET_CONFIGURATION_have_value(sctx->cfg,
                                       sctx->service_name,
@@ -1007,7 +915,6 @@ setup_service(struct LEGACY_SERVICE_Context *sctx)
   else
     tolerant = GNUNET_NO;
 
-#ifndef MINGW
   errno = 0;
   if ((NULL != (nfds = getenv("LISTEN_FDS"))) &&
       (1 == sscanf(nfds, "%u", &cnt)) && (cnt > 0) && (cnt < FD_SETSIZE) &&
@@ -1036,13 +943,6 @@ setup_service(struct LEGACY_SERVICE_Context *sctx)
         }
       unsetenv("LISTEN_FDS");
     }
-#else
-  if (getenv("GNUNET_OS_READ_LSOCKS") != NULL)
-    {
-      receive_sockets_from_parent(sctx);
-      putenv("GNUNET_OS_READ_LSOCKS=");
-    }
-#endif
 
   if ((NULL == sctx->lsocks) &&
       (GNUNET_SYSERR == LEGACY_SERVICE_get_server_addresses(sctx->service_name,
@@ -1257,7 +1157,6 @@ service_task(void *cls)
 static int
 detach_terminal(struct LEGACY_SERVICE_Context *sctx)
 {
-#ifndef MINGW
   pid_t pid;
   int nullfd;
   int filedes[2];
@@ -1324,11 +1223,7 @@ detach_terminal(struct LEGACY_SERVICE_Context *sctx)
   if (-1 == pid)
     LOG_STRERROR(GNUNET_ERROR_TYPE_ERROR, "setsid");
   sctx->ready_confirm_fd = filedes[1];
-#else
-  /* FIXME: we probably need to do something else
-   * elsewhere in order to fork the process itself... */
-  FreeConsole();
-#endif
+
   return GNUNET_OK;
 }
 
@@ -1346,7 +1241,7 @@ set_user_id(struct LEGACY_SERVICE_Context *sctx)
 
   if (NULL == (user = get_user_name(sctx)))
     return GNUNET_OK; /* keep */
-#ifndef MINGW
+
   struct passwd *pws;
 
   errno = 0;
@@ -1377,7 +1272,7 @@ set_user_id(struct LEGACY_SERVICE_Context *sctx)
           return GNUNET_SYSERR;
         }
     }
-#endif
+
   GNUNET_free(user);
   return GNUNET_OK;
 }
index 647f09224fe2676c78a567a364e410d90735d275..c240053ff1cce173180d369edd6af62897b15f2a 100644 (file)
@@ -13,27 +13,7 @@ dist_pkgcfg_DATA = \
 pkgcfg_DATA = \
   resolver.conf
 
-if MINGW
-noinst_LTLIBRARIES = \
-  libgnunetutilwin.la
-libgnunetutilwin_la_SOURCES = \
-  win.c \
-  winproc.c
-libgnunetutilwin_la_LDFLAGS = \
-  -no-undefined -Wl,--export-all-symbols
-libgnunetutilwin_la_LIBADD = \
-  -lshell32 -liconv -lstdc++ \
-  -lcomdlg32 -lgdi32 -liphlpapi
-WINLIB = libgnunetutilwin.la
-W32CAT = w32cat
-W32CONSOLEHELPER = gnunet-helper-w32-console
-endif
-
-if !MINGW
- TEST_CLIENT_UNIX_NC = test_client_unix.nc
-else
- TEST_CLIENT_UNIX_NC =
-endif
+TEST_CLIENT_UNIX_NC = test_client_unix.nc
 
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
@@ -45,14 +25,6 @@ if ENABLE_BENCHMARK
   PTHREAD = -lpthread
 endif
 
-w32cat_SOURCES = w32cat.c
-
-gnunet_helper_w32_console_SOURCES = \
-  gnunet-helper-w32-console.c \
-  gnunet-helper-w32-console.h
-gnunet_helper_w32_console_LDADD = \
-  libgnunetutil.la
-
 gnunet_config_diff_SOURCES = \
  gnunet-config-diff.c
 gnunet_config_diff_LDADD = \
@@ -202,8 +174,7 @@ lib_LTLIBRARIES = libgnunetutil.la
 
 libexec_PROGRAMS = \
  gnunet-service-resolver \
- gnunet-timeout \
- $(W32CONSOLEHELPER)
+ gnunet-timeout
 
 bin_PROGRAMS = \
  gnunet-resolver \
@@ -217,7 +188,6 @@ endif
 
 noinst_PROGRAMS = \
  gnunet-config-diff \
- $(W32CAT) \
  test_common_logging_dummy
 
 
@@ -228,14 +198,8 @@ endif
 
 endif
 
-
-if !MINGW
 gnunet_timeout_SOURCES = \
  gnunet-timeout.c
-else
-gnunet_timeout_SOURCES = \
- gnunet-timeout-w32.c
-endif
 
 gnunet_service_resolver_SOURCES = \
  gnunet-service-resolver.c
@@ -393,8 +357,7 @@ test_os_start_process_SOURCES = \
 test_os_start_process_LDADD = \
  libgnunetutil.la
 test_os_start_process_DEPENDENCIES = \
- libgnunetutil.la \
- $(WINCAT)
+ libgnunetutil.la
 
 test_client_nc_SOURCES = \
  test_client.c
index 01d5efbe2bb867a24728bc80f60009d2e64b5291..8b474542b4c4fcf6e5c9be6183efd2a68fcb67e6 100644 (file)
@@ -96,7 +96,6 @@ struct GetFileSizeData {
 };
 
 
-#ifndef MINGW
 /**
  * Translate GNUnet-internal permission bitmap to UNIX file
  * access permission bitmap.
@@ -131,7 +130,6 @@ translate_unix_perms(enum GNUNET_DISK_AccessPermissions perm)
 
   return mode;
 }
-#endif
 
 
 /**
@@ -191,11 +189,7 @@ getSizeRec(void *cls, const char *fn)
 int
 GNUNET_DISK_handle_invalid(const struct GNUNET_DISK_FileHandle *h)
 {
-#ifdef MINGW
-  return ((!h) || (h->h == INVALID_HANDLE_VALUE)) ? GNUNET_YES : GNUNET_NO;
-#else
   return ((!h) || (h->fd == -1)) ? GNUNET_YES : GNUNET_NO;
-#endif
 }
 
 /**
@@ -236,26 +230,9 @@ GNUNET_DISK_file_seek(const struct GNUNET_DISK_FileHandle *h,
       return GNUNET_SYSERR;
     }
 
-#ifdef MINGW
-  LARGE_INTEGER li;
-  LARGE_INTEGER new_pos;
-  BOOL b;
-
-  static DWORD t[] = { FILE_BEGIN, FILE_CURRENT, FILE_END };
-  li.QuadPart = offset;
-
-  b = SetFilePointerEx(h->h, li, &new_pos, t[whence]);
-  if (b == 0)
-    {
-      SetErrnoFromWinError(GetLastError());
-      return GNUNET_SYSERR;
-    }
-  return (off_t)new_pos.QuadPart;
-#else
   static int t[] = { SEEK_SET, SEEK_CUR, SEEK_END };
 
   return lseek(h->fd, offset, t[whence]);
-#endif
 }
 
 
@@ -1296,7 +1273,7 @@ GNUNET_DISK_file_open(const char *fn,
   expfn = GNUNET_STRINGS_filename_expand(fn);
   if (NULL == expfn)
     return NULL;
-#ifndef MINGW
+
   mode = 0;
   if (GNUNET_DISK_OPEN_READWRITE == (flags & GNUNET_DISK_OPEN_READWRITE))
     oflags = O_RDWR; /* note: O_RDWR is NOT always O_RDONLY | O_WRONLY */
@@ -1342,69 +1319,6 @@ GNUNET_DISK_file_open(const char *fn,
       GNUNET_free(expfn);
       return NULL;
     }
-#else
-  access = 0;
-  disp = OPEN_ALWAYS;
-
-  if (GNUNET_DISK_OPEN_READWRITE == (flags & GNUNET_DISK_OPEN_READWRITE))
-    access = FILE_READ_DATA | FILE_WRITE_DATA;
-  else if (flags & GNUNET_DISK_OPEN_READ)
-    access = FILE_READ_DATA;
-  else if (flags & GNUNET_DISK_OPEN_WRITE)
-    access = FILE_WRITE_DATA;
-
-  if (flags & GNUNET_DISK_OPEN_FAILIFEXISTS)
-    {
-      disp = CREATE_NEW;
-    }
-  else if (flags & GNUNET_DISK_OPEN_CREATE)
-    {
-      (void)GNUNET_DISK_directory_create_for_file(expfn);
-      if (flags & GNUNET_DISK_OPEN_TRUNCATE)
-        disp = CREATE_ALWAYS;
-      else
-        disp = OPEN_ALWAYS;
-    }
-  else if (flags & GNUNET_DISK_OPEN_TRUNCATE)
-    {
-      disp = TRUNCATE_EXISTING;
-    }
-  else
-    {
-      disp = OPEN_EXISTING;
-    }
-
-  if (ERROR_SUCCESS == plibc_conv_to_win_pathwconv(expfn, wexpfn))
-    h = CreateFileW(wexpfn,
-                    access,
-                    FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
-                    NULL,
-                    disp,
-                    FILE_ATTRIBUTE_NORMAL,
-                    NULL);
-  else
-    h = INVALID_HANDLE_VALUE;
-  if (h == INVALID_HANDLE_VALUE)
-    {
-      int err;
-      SetErrnoFromWinError(GetLastError());
-      err = errno;
-      LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_INFO, "open", expfn);
-      GNUNET_free(expfn);
-      errno = err;
-      return NULL;
-    }
-
-  if (flags & GNUNET_DISK_OPEN_APPEND)
-    if (SetFilePointer(h, 0, 0, FILE_END) == INVALID_SET_FILE_POINTER)
-      {
-        SetErrnoFromWinError(GetLastError());
-        LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_WARNING, "SetFilePointer", expfn);
-        CloseHandle(h);
-        GNUNET_free(expfn);
-        return NULL;
-      }
-#endif
 
   ret = GNUNET_new(struct GNUNET_DISK_FileHandle);
 
index ab7a083185959b5aa2b634c7f9481cd12f4cfbab..fef4b5f5d9b684539d34fe03f7c93a7f88ed70d2 100644 (file)
@@ -291,16 +291,12 @@ do_dns_read(struct GNUNET_DNSSTUB_RequestSocket *rs,
   ssize_t r;
   int len;
 
-#ifndef MINGW
   if (0 != ioctl(GNUNET_NETWORK_get_fd(dnsout), FIONREAD, &len))
     {
       /* conservative choice: */
       len = UINT16_MAX;
     }
-#else
-  /* port the code above? */
-  len = UINT16_MAX;
-#endif
+
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Receiving %d byte DNS reply\n", len);
   {
     unsigned char buf[len] GNUNET_ALIGN;
diff --git a/src/util/gnunet-timeout-w32.c b/src/util/gnunet-timeout-w32.c
deleted file mode 100644 (file)
index 3e57971..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-     This file is part of GNUnet
-     Copyright (C) 2010 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License, 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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file src/util/gnunet-timeout-w32.c
- * @brief small tool starting a child process, waiting that it terminates or killing it after a given timeout period
- * @author LRN
- */
-
-#include <windows.h>
-#include <sys/types.h>
-#include <stdio.h>
-
-int
-main(int argc, char *argv[])
-{
-  int i;
-  DWORD wait_result;
-  wchar_t *commandline;
-  wchar_t **wargv;
-  wchar_t *arg;
-  unsigned int cmdlen;
-  STARTUPINFOW start;
-  PROCESS_INFORMATION proc;
-
-  wchar_t wpath[MAX_PATH + 1];
-
-  wchar_t *pathbuf;
-  DWORD pathbuf_len, alloc_len;
-  wchar_t *ptr;
-  wchar_t *non_const_filename;
-  wchar_t *wcmd;
-  int wargc;
-  int timeout = 0;
-  ssize_t wrote;
-
-  HANDLE job;
-
-  if (argc < 3)
-    {
-      printf
-        ("arg 1: timeout in sec., arg 2: executable, arg<n> arguments\n");
-      exit(1);
-    }
-
-  timeout = atoi(argv[1]);
-
-  if (timeout == 0)
-    timeout = 600;
-
-  commandline = GetCommandLineW();
-  if (commandline == NULL)
-    {
-      printf("Failed to get commandline: %lu\n", GetLastError());
-      exit(2);
-    }
-
-  wargv = CommandLineToArgvW(commandline, &wargc);
-  if (wargv == NULL || wargc <= 1)
-    {
-      printf("Failed to get parse commandline: %lu\n", GetLastError());
-      exit(3);
-    }
-
-  job = CreateJobObject(NULL, NULL);
-  if (job == NULL)
-    {
-      printf("Failed to create a job: %lu\n", GetLastError());
-      exit(4);
-    }
-
-  pathbuf_len = GetEnvironmentVariableW(L"PATH", (wchar_t *)&pathbuf, 0);
-
-  alloc_len = pathbuf_len + 1;
-
-  pathbuf = malloc(alloc_len * sizeof(wchar_t));
-
-  ptr = pathbuf;
-
-  alloc_len = GetEnvironmentVariableW(L"PATH", ptr, pathbuf_len);
-
-  cmdlen = wcslen(wargv[2]);
-  if (cmdlen < 5 || wcscmp(&wargv[2][cmdlen - 4], L".exe") != 0)
-    {
-      non_const_filename = malloc(sizeof(wchar_t) * (cmdlen + 5));
-      swprintf(non_const_filename, cmdlen + 5, L"%S.exe", wargv[2]);
-    }
-  else
-    {
-      non_const_filename = wcsdup(wargv[2]);
-    }
-
-  /* Check that this is the full path. If it isn't, search. */
-  if (non_const_filename[1] == L':')
-    swprintf(wpath, sizeof(wpath) / sizeof(wchar_t), L"%S", non_const_filename);
-  else if (!SearchPathW
-             (pathbuf, non_const_filename, NULL, sizeof(wpath) / sizeof(wchar_t),
-             wpath, NULL))
-    {
-      printf("Failed to get find executable: %lu\n", GetLastError());
-      exit(5);
-    }
-  free(pathbuf);
-  free(non_const_filename);
-
-  cmdlen = wcslen(wpath) + 4;
-  i = 3;
-  while (NULL != (arg = wargv[i++]))
-    cmdlen += wcslen(arg) + 4;
-
-  wcmd = malloc(sizeof(wchar_t) * (cmdlen + 1));
-  wrote = 0;
-  i = 2;
-  while (NULL != (arg = wargv[i++]))
-    {
-      /* This is to escape trailing slash */
-      wchar_t arg_lastchar = arg[wcslen(arg) - 1];
-      if (wrote == 0)
-        {
-          wrote += swprintf(&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\" ", wpath,
-                            arg_lastchar == L'\\' ? L"\\" : L"");
-        }
-      else
-        {
-          if (wcschr(arg, L' ') != NULL)
-            wrote += swprintf(&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\"%S", arg,
-                              arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
-          else
-            wrote += swprintf(&wcmd[wrote], cmdlen + 1 - wrote, L"%S%S%S", arg,
-                              arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
-        }
-    }
-
-  LocalFree(wargv);
-
-  memset(&start, 0, sizeof(start));
-  start.cb = sizeof(start);
-
-  if (!CreateProcessW(wpath, wcmd, NULL, NULL, TRUE, CREATE_SUSPENDED,
-                      NULL, NULL, &start, &proc))
-    {
-      wprintf(L"Failed to get spawn process `%S' with arguments `%S': %lu\n", wpath, wcmd, GetLastError());
-      exit(6);
-    }
-
-  AssignProcessToJobObject(job, proc.hProcess);
-
-  ResumeThread(proc.hThread);
-  CloseHandle(proc.hThread);
-
-  free(wcmd);
-
-  wait_result = WaitForSingleObject(proc.hProcess, timeout * 1000);
-  if (wait_result == WAIT_OBJECT_0)
-    {
-      DWORD status;
-      wait_result = GetExitCodeProcess(proc.hProcess, &status);
-      CloseHandle(proc.hProcess);
-      if (wait_result != 0)
-        {
-          printf("Test process exited with result %lu\n", status);
-          TerminateJobObject(job, status);
-          exit(status);
-        }
-      printf("Test process exited (failed to obtain exit status)\n");
-      TerminateJobObject(job, 0);
-      exit(0);
-    }
-  printf("Child processes were killed after timeout of %u seconds\n",
-         timeout);
-  TerminateJobObject(job, 1);
-  CloseHandle(proc.hProcess);
-  exit(1);
-}
-
-/* end of timeout_watchdog_w32.c */
index ec76424eb1ae1eaae94abcc00acb57657b83053f..6f8a8ff5a66177c062be3fc07b84cdd36eea4587 100644 (file)
@@ -759,10 +759,6 @@ GNUNET_NETWORK_socket_recvfrom(const struct GNUNET_NETWORK_Handle *desc,
                  flags,
                  src_addr,
                  addrlen);
-#ifdef MINGW
-  if (SOCKET_ERROR == ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
   return ret;
 }
 
@@ -792,10 +788,6 @@ GNUNET_NETWORK_socket_recv(const struct GNUNET_NETWORK_Handle *desc,
              buffer,
              length,
              flags);
-#ifdef MINGW
-  if (SOCKET_ERROR == ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
   return ret;
 }
 
@@ -827,10 +819,6 @@ GNUNET_NETWORK_socket_send(const struct GNUNET_NETWORK_Handle *desc,
              buffer,
              length,
              flags);
-#ifdef MINGW
-  if (SOCKET_ERROR == ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
   return ret;
 }
 
@@ -865,10 +853,6 @@ GNUNET_NETWORK_socket_sendto(const struct GNUNET_NETWORK_Handle *desc,
   flags |= MSG_NOSIGNAL;
 #endif
   ret = sendto(desc->fd, message, length, flags, dest_addr, dest_len);
-#ifdef MINGW
-  if (SOCKET_ERROR == ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
   return ret;
 }
 
@@ -897,10 +881,7 @@ GNUNET_NETWORK_socket_setsockopt(struct GNUNET_NETWORK_Handle *fd,
                    option_name,
                    option_value,
                    option_len);
-#ifdef MINGW
-  if (SOCKET_ERROR == ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
+
   return ret == 0 ? GNUNET_OK : GNUNET_SYSERR;
 }
 
@@ -950,10 +931,7 @@ GNUNET_NETWORK_socket_shutdown(struct GNUNET_NETWORK_Handle *desc,
   int ret;
 
   ret = shutdown(desc->fd, how);
-#ifdef MINGW
-  if (0 != ret)
-    SetErrnoFromWinsockError(WSAGetLastError());
-#endif
+
   return (0 == ret) ? GNUNET_OK : GNUNET_SYSERR;
 }
 
@@ -1054,7 +1032,6 @@ void
 GNUNET_NETWORK_fdset_add(struct GNUNET_NETWORK_FDSet *dst,
                          const struct GNUNET_NETWORK_FDSet *src)
 {
-#ifndef MINGW
   int nfds;
 
   for (nfds = src->nsds; nfds >= 0; nfds--)
@@ -1062,31 +1039,6 @@ GNUNET_NETWORK_fdset_add(struct GNUNET_NETWORK_FDSet *dst,
       FD_SET(nfds, &dst->sds);
   dst->nsds = GNUNET_MAX(dst->nsds,
                          src->nsds);
-#else
-  /* This is MinGW32-specific implementation that relies on the code that
-   * winsock2.h defines for FD_SET. Namely, it relies on FD_SET checking
-   * that fd being added is not already in the set.
-   * Also relies on us knowing what's inside fd_set (fd_count and fd_array).
-   *
-   * NOTE: I don't understand why the UNIX-logic wouldn't work
-   * for the first part here as well. -CG
-   */
-  unsigned int i;
-
-  for (i = 0; i < src->sds.fd_count; i++)
-    FD_SET(src->sds.fd_array[i],
-           &dst->sds);
-  dst->nsds = GNUNET_MAX(src->nsds,
-                         dst->nsds);
-
-  /* also copy over `struct GNUNET_DISK_FileHandle` array */
-  if (dst->handles_pos + src->handles_pos > dst->handles_size)
-    GNUNET_array_grow(dst->handles,
-                      dst->handles_size,
-                      ((dst->handles_pos + src->handles_pos) << 1));
-  for (i = 0; i < src->handles_pos; i++)
-    dst->handles[dst->handles_pos++] = src->handles[i];
-#endif
 }
 
 
@@ -1103,16 +1055,6 @@ GNUNET_NETWORK_fdset_copy(struct GNUNET_NETWORK_FDSet *to,
   FD_COPY(&from->sds,
           &to->sds);
   to->nsds = from->nsds;
-#ifdef MINGW
-  if (from->handles_pos > to->handles_size)
-    GNUNET_array_grow(to->handles,
-                      to->handles_size,
-                      from->handles_pos * 2);
-  GNUNET_memcpy(to->handles,
-                from->handles,
-                from->handles_pos * sizeof(struct GNUNET_NETWORK_Handle *));
-  to->handles_pos = from->handles_pos;
-#endif
 }
 
 
@@ -1217,13 +1159,6 @@ void
 GNUNET_NETWORK_fdset_handle_set(struct GNUNET_NETWORK_FDSet *fds,
                                 const struct GNUNET_DISK_FileHandle *h)
 {
-#ifdef MINGW
-  if (fds->handles_pos == fds->handles_size)
-    GNUNET_array_grow(fds->handles,
-                      fds->handles_size,
-                      fds->handles_size * 2 + 2);
-  fds->handles[fds->handles_pos++] = h;
-#else
   int fd;
 
   GNUNET_assert(GNUNET_OK ==
@@ -1234,7 +1169,6 @@ GNUNET_NETWORK_fdset_handle_set(struct GNUNET_NETWORK_FDSet *fds,
          &fds->sds);
   fds->nsds = GNUNET_MAX(fd + 1,
                          fds->nsds);
-#endif
 }
 
 
@@ -1247,22 +1181,7 @@ void
 GNUNET_NETWORK_fdset_handle_set_first(struct GNUNET_NETWORK_FDSet *fds,
                                       const struct GNUNET_DISK_FileHandle *h)
 {
-#ifdef MINGW
-  if (fds->handles_pos == fds->handles_size)
-    GNUNET_array_grow(fds->handles,
-                      fds->handles_size,
-                      fds->handles_size * 2 + 2);
-  fds->handles[fds->handles_pos] = h;
-  if (fds->handles[0] != h)
-    {
-      const struct GNUNET_DISK_FileHandle *bak = fds->handles[0];
-      fds->handles[0] = h;
-      fds->handles[fds->handles_pos] = bak;
-    }
-  fds->handles_pos++;
-#else
   GNUNET_NETWORK_fdset_handle_set(fds, h);
-#endif
 }
 
 
@@ -1277,42 +1196,11 @@ int
 GNUNET_NETWORK_fdset_handle_isset(const struct GNUNET_NETWORK_FDSet *fds,
                                   const struct GNUNET_DISK_FileHandle *h)
 {
-#ifdef MINGW
-  unsigned int i;
-
-  for (i = 0; i < fds->handles_pos; i++)
-    if (fds->handles[i] == h)
-      return GNUNET_YES;
-  return GNUNET_NO;
-#else
   return FD_ISSET(h->fd,
                   &fds->sds);
-#endif
 }
 
 
-#ifdef MINGW
-/**
- * Numerically compare pointers to sort them.
- * Used to test for overlap in the arrays.
- *
- * @param p1 a pointer
- * @param p2 a pointer
- * @return -1, 0 or 1, if the p1 < p2, p1==p2 or p1 > p2.
- */
-static int
-ptr_cmp(const void *p1,
-        const void *p2)
-{
-  if (p1 == p2)
-    return 0;
-  if ((intptr_t)p1 < (intptr_t)p2)
-    return -1;
-  return 1;
-}
-#endif
-
-
 /**
  * Checks if two fd sets overlap
  *
@@ -1324,7 +1212,6 @@ int
 GNUNET_NETWORK_fdset_overlap(const struct GNUNET_NETWORK_FDSet *fds1,
                              const struct GNUNET_NETWORK_FDSet *fds2)
 {
-#ifndef MINGW
   int nfds;
 
   nfds = GNUNET_MIN(fds1->nsds,
@@ -1339,53 +1226,6 @@ GNUNET_NETWORK_fdset_overlap(const struct GNUNET_NETWORK_FDSet *fds1,
         return GNUNET_YES;
     }
   return GNUNET_NO;
-#else
-  unsigned int i;
-  unsigned int j;
-
-  /* This code is somewhat hacky, we are not supposed to know what's
-   * inside of fd_set; also the O(n^2) is really bad... */
-  for (i = 0; i < fds1->sds.fd_count; i++)
-    for (j = 0; j < fds2->sds.fd_count; j++)
-      if (fds1->sds.fd_array[i] == fds2->sds.fd_array[j])
-        return GNUNET_YES;
-
-  /* take a short cut if possible */
-  if ((0 == fds1->handles_pos) ||
-      (0 == fds2->handles_pos))
-    return GNUNET_NO;
-
-  /* Sort file handles array to avoid quadratic complexity when
-     checking for overlap */
-  qsort(fds1->handles,
-        fds1->handles_pos,
-        sizeof(void *),
-        &ptr_cmp);
-  qsort(fds2->handles,
-        fds2->handles_pos,
-        sizeof(void *),
-        &ptr_cmp);
-  i = 0;
-  j = 0;
-  while ((i < fds1->handles_pos) &&
-         (j < fds2->handles_pos))
-    {
-      switch (ptr_cmp(fds1->handles[i],
-                      fds2->handles[j]))
-        {
-        case -1:
-          i++;
-          break;
-
-        case 0:
-          return GNUNET_YES;
-
-        case 1:
-          j++;
-        }
-    }
-  return GNUNET_NO;
-#endif
 }
 
 
@@ -1413,192 +1253,10 @@ GNUNET_NETWORK_fdset_create()
 void
 GNUNET_NETWORK_fdset_destroy(struct GNUNET_NETWORK_FDSet *fds)
 {
-#ifdef MINGW
-  GNUNET_array_grow(fds->handles,
-                    fds->handles_size,
-                    0);
-#endif
   GNUNET_free(fds);
 }
 
 
-#if MINGW
-/**
- * FIXME.
- */
-struct _select_params {
-  /**
-   * Read set.
-   */
-  fd_set *r;
-
-  /**
-   * Write set.
-   */
-  fd_set *w;
-
-  /**
-   * Except set.
-   */
-  fd_set *e;
-
-  /**
-   * Timeout for select().
-   */
-  struct timeval *tv;
-
-  /**
-   * FIXME.
-   */
-  HANDLE wakeup;
-
-  /**
-   * FIXME.
-   */
-  HANDLE standby;
-
-  /**
-   * FIXME.
-   */
-  _win_socket wakeup_socket;
-
-  /**
-   * Set to return value from select.
-   */
-  int status;
-};
-
-
-/**
- * FIXME.
- */
-static DWORD WINAPI
-_selector(LPVOID p)
-{
-  struct _select_params *sp = p;
-
-  while (1)
-    {
-      WaitForSingleObject(sp->standby,
-                          INFINITE);
-      ResetEvent(sp->standby);
-      sp->status = select(1,
-                          sp->r,
-                          sp->w,
-                          sp->e,
-                          sp->tv);
-      if (FD_ISSET(sp->wakeup_socket,
-                   sp->r))
-        {
-          FD_CLR(sp->wakeup_socket,
-                 sp->r);
-          sp->status -= 1;
-        }
-      SetEvent(sp->wakeup);
-    }
-  return 0;
-}
-
-
-static HANDLE hEventPipeWrite;
-
-static HANDLE hEventReadReady;
-
-static struct _select_params sp;
-
-static HANDLE select_thread;
-
-static HANDLE select_finished_event;
-
-static HANDLE select_standby_event;
-
-static _win_socket select_wakeup_socket = -1;
-
-static _win_socket select_send_socket = -1;
-
-static struct timeval select_timeout;
-
-
-/**
- * On W32, we actually use a thread to help with the
- * event loop due to W32-API limitations.  This function
- * initializes that thread.
- */
-static void
-initialize_select_thread()
-{
-  _win_socket select_listening_socket = -1;
-  struct sockaddr_in s_in;
-  int alen;
-  int res;
-  unsigned long p;
-
-  select_standby_event = CreateEvent(NULL, TRUE, FALSE, NULL);
-  select_finished_event = CreateEvent(NULL, TRUE, FALSE, NULL);
-
-  select_wakeup_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-
-  select_listening_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-
-  p = 1;
-  res = ioctlsocket(select_wakeup_socket, FIONBIO, &p);
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Select thread initialization: ioctlsocket() returns %d\n",
-      res);
-
-  alen = sizeof(s_in);
-  s_in.sin_family = AF_INET;
-  s_in.sin_port = 0;
-  s_in.sin_addr.S_un.S_un_b.s_b1 = 127;
-  s_in.sin_addr.S_un.S_un_b.s_b2 = 0;
-  s_in.sin_addr.S_un.S_un_b.s_b3 = 0;
-  s_in.sin_addr.S_un.S_un_b.s_b4 = 1;
-  res = bind(select_listening_socket,
-             (const struct sockaddr *)&s_in,
-             sizeof(s_in));
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Select thread initialization: bind() returns %d\n",
-      res);
-
-  res = getsockname(select_listening_socket,
-                    (struct sockaddr *)&s_in,
-                    &alen);
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Select thread initialization: getsockname() returns %d\n",
-      res);
-
-  res = listen(select_listening_socket,
-               SOMAXCONN);
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Select thread initialization: listen() returns %d\n",
-      res);
-  res = connect(select_wakeup_socket,
-                (const struct sockaddr *)&s_in,
-                sizeof(s_in));
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "Select thread initialization: connect() returns %d\n",
-      res);
-
-  select_send_socket = accept(select_listening_socket,
-                              (struct sockaddr *)&s_in,
-                              &alen);
-
-  closesocket(select_listening_socket);
-
-  sp.wakeup = select_finished_event;
-  sp.standby = select_standby_event;
-  sp.wakeup_socket = select_wakeup_socket;
-
-  select_thread = CreateThread(NULL,
-                               0,
-                               _selector,
-                               &sp,
-                               0, NULL);
-}
-
-
-#endif
-
 /**
  * Test if the given @a port is available.
  *
@@ -1657,7 +1315,6 @@ GNUNET_NETWORK_test_port_free(int ipproto,
 }
 
 
-#ifndef MINGW
 /**
  * Check if sockets or pipes meet certain conditions
  *
@@ -1714,523 +1371,4 @@ GNUNET_NETWORK_socket_select(struct GNUNET_NETWORK_FDSet *rfds,
                  GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us) ? NULL : &tv);
 }
 
-
-#else
-/* MINGW */
-
-
-/**
- * Non-blocking test if a pipe is ready for reading.
- *
- * @param fh pipe handle
- * @return #GNUNET_YES if the pipe is ready for reading
- */
-static int
-pipe_read_ready(const struct GNUNET_DISK_FileHandle *fh)
-{
-  DWORD error;
-  BOOL bret;
-  DWORD waitstatus = 0;
-
-  SetLastError(0);
-  bret = PeekNamedPipe(fh->h, NULL, 0, NULL, &waitstatus, NULL);
-  error = GetLastError();
-  if (0 == bret)
-    {
-      /* TODO: either add more errors to this condition, or eliminate it
-       * entirely (failed to peek -> pipe is in serious trouble, should
-       * be selected as readable).
-       */
-      if ((error != ERROR_BROKEN_PIPE) &&
-          (error != ERROR_INVALID_HANDLE))
-        return GNUNET_NO;
-    }
-  else if (waitstatus <= 0)
-    return GNUNET_NO;
-  return GNUNET_YES;
-}
-
-
-/**
- * Non-blocking test if a pipe is having an IO exception.
- *
- * @param fh pipe handle
- * @return #GNUNET_YES if the pipe is having an IO exception.
- */
-static int
-pipe_except_ready(const struct GNUNET_DISK_FileHandle *fh)
-{
-  DWORD dwBytes;
-
-  if (PeekNamedPipe(fh->h, NULL, 0, NULL, &dwBytes, NULL))
-    return GNUNET_NO;
-  return GNUNET_YES;
-}
-
-
-/**
- * Iterate over handles in fds, destructively rewrite the
- * handles array contents of fds so that it starts with the
- * handles that are ready, and update handles_pos accordingly.
- *
- * @param fds set of handles (usually pipes) to be checked for readiness
- * @param except GNUNET_NO if fds should be checked for readiness to read,
- * GNUNET_YES if fds should be checked for exceptions
- * (there is no way to check for write-readiness - pipes are always write-ready)
- * @param set_for_sure a HANDLE that is known to be set already,
- * because WaitForMultipleObjects() returned its index.
- * @return number of ready handles
- */
-static int
-check_handles_status(struct GNUNET_NETWORK_FDSet *fds,
-                     int except,
-                     HANDLE set_for_sure)
-{
-  const struct GNUNET_DISK_FileHandle *fh;
-  unsigned int roff;
-  unsigned int woff;
-
-  for (woff = 0, roff = 0; roff < fds->handles_pos; roff++)
-    {
-      fh = fds->handles[roff];
-      if (fh == set_for_sure)
-        {
-          fds->handles[woff++] = fh;
-        }
-      else if (fh->type == GNUNET_DISK_HANLDE_TYPE_PIPE)
-        {
-          if ((except && pipe_except_ready(fh)) ||
-              (!except && pipe_read_ready(fh)))
-            fds->handles[woff++] = fh;
-        }
-      else if (fh->type == GNUNET_DISK_HANLDE_TYPE_FILE)
-        {
-          if (!except)
-            fds->handles[woff++] = fh;
-        }
-      else
-        {
-          if (WAIT_OBJECT_0 == WaitForSingleObject(fh->h, 0))
-            fds->handles[woff++] = fh;
-        }
-    }
-  fds->handles_pos = woff;
-  return woff;
-}
-
-
-/**
- * Check if sockets or pipes meet certain conditions, version for W32.
- *
- * @param rfds set of sockets or pipes to be checked for readability
- * @param wfds set of sockets or pipes to be checked for writability
- * @param efds set of sockets or pipes to be checked for exceptions
- * @param timeout relative value when to return
- * @return number of selected sockets or pipes, #GNUNET_SYSERR on error
- */
-int
-GNUNET_NETWORK_socket_select(struct GNUNET_NETWORK_FDSet *rfds,
-                             struct GNUNET_NETWORK_FDSet *wfds,
-                             struct GNUNET_NETWORK_FDSet *efds,
-                             const struct GNUNET_TIME_Relative timeout)
-{
-  const struct GNUNET_DISK_FileHandle *fh;
-  int nfds;
-  int handles;
-  unsigned int i;
-  int retcode;
-  uint64_t mcs_total;
-  DWORD ms_rounded;
-  int nhandles = 0;
-  int read_pipes_off;
-  HANDLE handle_array[FD_SETSIZE + 2];
-  int returncode;
-  int returnedpos = 0;
-  int selectret;
-  fd_set aread;
-  fd_set awrite;
-  fd_set aexcept;
-
-  nfds = 0;
-  handles = 0;
-  if (NULL != rfds)
-    {
-      nfds = GNUNET_MAX(nfds, rfds->nsds);
-      handles += rfds->handles_pos;
-    }
-  if (NULL != wfds)
-    {
-      nfds = GNUNET_MAX(nfds, wfds->nsds);
-      handles += wfds->handles_pos;
-    }
-  if (NULL != efds)
-    {
-      nfds = GNUNET_MAX(nfds, efds->nsds);
-      handles += efds->handles_pos;
-    }
-
-  if ((0 == nfds) &&
-      (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us == timeout.rel_value_us) &&
-      (0 == handles))
-    {
-      GNUNET_break(0);
-      LOG(GNUNET_ERROR_TYPE_ERROR,
-          _("Fatal internal logic error, process hangs in `%s' (abort with CTRL-C)!\n"),
-          "select");
-    }
-#define SAFE_FD_ISSET(fd, set)  (set != NULL && FD_ISSET(fd, set))
-  /* calculate how long we need to wait in microseconds */
-  if (timeout.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us)
-    {
-      mcs_total = INFINITE;
-      ms_rounded = INFINITE;
-    }
-  else
-    {
-      mcs_total = timeout.rel_value_us / GNUNET_TIME_UNIT_MICROSECONDS.rel_value_us;
-      ms_rounded = (DWORD)(mcs_total / GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us);
-      if (mcs_total > 0 && ms_rounded == 0)
-        ms_rounded = 1;
-    }
-  /* select() may be used as a portable way to sleep */
-  if (!(rfds || wfds || efds))
-    {
-      Sleep(ms_rounded);
-      return 0;
-    }
-
-  if (NULL == select_thread)
-    initialize_select_thread();
-
-  FD_ZERO(&aread);
-  FD_ZERO(&awrite);
-  FD_ZERO(&aexcept);
-  if (rfds)
-    FD_COPY(&rfds->sds, &aread);
-  if (wfds)
-    FD_COPY(&wfds->sds, &awrite);
-  if (efds)
-    FD_COPY(&efds->sds, &aexcept);
-
-  /* Start by doing a fast check on sockets and pipes (without
-     waiting). It is cheap, and is sufficient most of the time.  By
-     profiling we detected that to be true in 90% of the cases.
-   */
-
-  /* Do the select now */
-  select_timeout.tv_sec = 0;
-  select_timeout.tv_usec = 0;
-
-  /* Copy all the writes to the except, so we can detect connect() errors */
-  for (i = 0; i < awrite.fd_count; i++)
-    FD_SET(awrite.fd_array[i],
-           &aexcept);
-  if ((aread.fd_count > 0) ||
-      (awrite.fd_count > 0) ||
-      (aexcept.fd_count > 0))
-    selectret = select(1,
-                       (NULL != rfds) ? &aread : NULL,
-                       (NULL != wfds) ? &awrite : NULL,
-                       &aexcept,
-                       &select_timeout);
-  else
-    selectret = 0;
-  if (-1 == selectret)
-    {
-      /* Throw an error early on, while we still have the context. */
-      LOG(GNUNET_ERROR_TYPE_ERROR,
-          "W32 select(%d, %d, %d) failed: %lu\n",
-          rfds ? aread.fd_count : 0,
-          wfds ? awrite.fd_count : 0,
-          aexcept.fd_count,
-          GetLastError());
-      GNUNET_assert(0);
-    }
-
-  /* Check aexcept, if something is in there and we copied that
-     FD before to detect connect() errors, add it back to the
-     write set to report errors. */
-  if (NULL != wfds)
-    for (i = 0; i < aexcept.fd_count; i++)
-      if (FD_ISSET(aexcept.fd_array[i],
-                   &wfds->sds))
-        FD_SET(aexcept.fd_array[i],
-               &awrite);
-
-
-  /* If our select returned something or is a 0-timed request, then
-     also check the pipes and get out of here! */
-  /* Sadly, it means code duplication :( */
-  if ((selectret > 0) || (0 == mcs_total))
-    {
-      retcode = 0;
-
-      /* Read Pipes */
-      if (rfds && (rfds->handles_pos > 0))
-        retcode += check_handles_status(rfds, GNUNET_NO, NULL);
-
-      /* wfds handles remain untouched, on W32
-         we pretend our pipes are "always" write-ready */
-
-      /* except pipes */
-      if (efds && (efds->handles_pos > 0))
-        retcode += check_handles_status(efds, GNUNET_YES, NULL);
-
-      if (rfds)
-        {
-          GNUNET_NETWORK_fdset_zero(rfds);
-          if (selectret != -1)
-            GNUNET_NETWORK_fdset_copy_native(rfds, &aread, selectret);
-        }
-      if (wfds)
-        {
-          GNUNET_NETWORK_fdset_zero(wfds);
-          if (selectret != -1)
-            GNUNET_NETWORK_fdset_copy_native(wfds, &awrite, selectret);
-        }
-      if (efds)
-        {
-          GNUNET_NETWORK_fdset_zero(efds);
-          if (selectret != -1)
-            GNUNET_NETWORK_fdset_copy_native(efds, &aexcept, selectret);
-        }
-      if (-1 == selectret)
-        return -1;
-      /* Add our select() FDs to the total return value */
-      retcode += selectret;
-      return retcode;
-    }
-
-  /* If we got this far, use slower implementation that is able to do a waiting select
-     on both sockets and pipes simultaneously */
-
-  /* Events for pipes */
-  if (!hEventReadReady)
-    hEventReadReady = CreateEvent(NULL, TRUE, TRUE, NULL);
-  if (!hEventPipeWrite)
-    hEventPipeWrite = CreateEvent(NULL, TRUE, TRUE, NULL);
-  retcode = 0;
-
-  FD_ZERO(&aread);
-  FD_ZERO(&awrite);
-  FD_ZERO(&aexcept);
-  if (rfds)
-    FD_COPY(&rfds->sds, &aread);
-  if (wfds)
-    FD_COPY(&wfds->sds, &awrite);
-  if (efds)
-    FD_COPY(&efds->sds, &aexcept);
-  /* We will first Add the PIPES to the events */
-  /* Track how far in `handle_array` the read pipes go,
-     so we may by-pass them quickly if none of them
-     are selected. */
-  read_pipes_off = 0;
-  if (rfds && (rfds->handles_pos > 0))
-    {
-      for (i = 0; i < rfds->handles_pos; i++)
-        {
-          fh = rfds->handles[i];
-          if (fh->type == GNUNET_DISK_HANLDE_TYPE_EVENT)
-            {
-              handle_array[nhandles++] = fh->h;
-              continue;
-            }
-          if (fh->type != GNUNET_DISK_HANLDE_TYPE_PIPE)
-            continue;
-          /* Read zero bytes to check the status of the pipe */
-          if (!ReadFile(fh->h, NULL, 0, NULL, fh->oOverlapRead))
-            {
-              DWORD error_code = GetLastError();
-
-              if (error_code == ERROR_IO_PENDING)
-                {
-                  /* add as unready */
-                  handle_array[nhandles++] = fh->oOverlapRead->hEvent;
-                  read_pipes_off++;
-                }
-              else
-                {
-                  /* add as ready */
-                  handle_array[nhandles++] = hEventReadReady;
-                  read_pipes_off++;
-                }
-            }
-          else
-            {
-              /* error also counts as ready */
-              handle_array[nhandles++] = hEventReadReady;
-              read_pipes_off++;
-            }
-        }
-    }
-
-  if (wfds && (wfds->handles_pos > 0))
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Adding the write ready event to the array as %d\n",
-          nhandles);
-      handle_array[nhandles++] = hEventPipeWrite;
-    }
-
-  sp.status = 0;
-  if (nfds > 0)
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Adding the socket event to the array as %d\n",
-          nhandles);
-      handle_array[nhandles++] = select_finished_event;
-      if (timeout.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us)
-        {
-          sp.tv = NULL;
-        }
-      else
-        {
-          select_timeout.tv_sec = timeout.rel_value_us / GNUNET_TIME_UNIT_SECONDS.rel_value_us;
-          select_timeout.tv_usec = (timeout.rel_value_us -
-                                    (select_timeout.tv_sec *
-                                     GNUNET_TIME_UNIT_SECONDS.rel_value_us));
-          sp.tv = &select_timeout;
-        }
-      FD_SET(select_wakeup_socket, &aread);
-      do
-        {
-          i = recv(select_wakeup_socket,
-                   (char *)&returnedpos,
-                   1,
-                   0);
-        }
-      while (i == 1);
-      sp.r = &aread;
-      sp.w = &awrite;
-      sp.e = &aexcept;
-      /* Failed connections cause sockets to be set in errorfds on W32,
-       * but on POSIX it should set them in writefds.
-       * First copy all awrite sockets to aexcept, later we'll
-       * check aexcept and set its contents in awrite as well
-       * Sockets are also set in errorfds when OOB data is available,
-       * but we don't use OOB data.
-       */
-      for (i = 0; i < awrite.fd_count; i++)
-        FD_SET(awrite.fd_array[i],
-               &aexcept);
-      ResetEvent(select_finished_event);
-      SetEvent(select_standby_event);
-    }
-
-  /* NULL-terminate array */
-  handle_array[nhandles] = NULL;
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "nfds: %d, handles: %d, will wait: %llu mcs\n",
-      nfds,
-      nhandles,
-      mcs_total);
-  if (nhandles)
-    {
-      returncode
-        = WaitForMultipleObjects(nhandles,
-                                 handle_array,
-                                 FALSE,
-                                 ms_rounded);
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "WaitForMultipleObjects Returned: %d\n",
-          returncode);
-    }
-  else if (nfds > 0)
-    {
-      GNUNET_break(0); /* This branch shouldn't actually be executed...*/
-      i = (int)WaitForSingleObject(select_finished_event,
-                                   INFINITE);
-      returncode = WAIT_TIMEOUT;
-    }
-  else
-    {
-      /* Shouldn't come this far. If it does - investigate. */
-      GNUNET_assert(0);
-    }
-
-  if (nfds > 0)
-    {
-      /* Don't wake up select-thread when delay is 0, it should return immediately
-       * and wake up by itself.
-       */
-      if (0 != mcs_total)
-        i = send(select_send_socket,
-                 (const char *)&returnedpos,
-                 1,
-                 0);
-      i = (int)WaitForSingleObject(select_finished_event,
-                                   INFINITE);
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Finished waiting for the select thread: %d %d\n",
-          i,
-          sp.status);
-      if (0 != mcs_total)
-        {
-          do
-            {
-              i = recv(select_wakeup_socket,
-                       (char *)&returnedpos,
-                       1, 0);
-            }
-          while (1 == i);
-        }
-      /* Check aexcept, add its contents to awrite */
-      for (i = 0; i < aexcept.fd_count; i++)
-        FD_SET(aexcept.fd_array[i], &awrite);
-    }
-
-  returnedpos = returncode - WAIT_OBJECT_0;
-  LOG(GNUNET_ERROR_TYPE_DEBUG,
-      "return pos is: %d\n",
-      returnedpos);
-
-  if (rfds)
-    {
-      /* We queued a zero-long read on each pipe to check
-       * its state, now we must cancel these read operations.
-       * This must be done while rfds->handles_pos is still
-       * intact and matches the number of read handles that we
-       * got from the caller.
-       */
-      for (i = 0; i < rfds->handles_pos; i++)
-        {
-          fh = rfds->handles[i];
-          if (GNUNET_DISK_HANLDE_TYPE_PIPE == fh->type)
-            CancelIo(fh->h);
-        }
-
-      /* We may have some pipes ready for reading. */
-      if (returnedpos < read_pipes_off)
-        retcode += check_handles_status(rfds, GNUNET_NO, handle_array[returnedpos]);
-      else
-        rfds->handles_pos = 0;
-
-      if (-1 != sp.status)
-        GNUNET_NETWORK_fdset_copy_native(rfds, &aread, retcode);
-    }
-  if (wfds)
-    {
-      retcode += wfds->handles_pos;
-      /* wfds handles remain untouched */
-      if (-1 != sp.status)
-        GNUNET_NETWORK_fdset_copy_native(wfds, &awrite, retcode);
-    }
-  if (efds)
-    {
-      retcode += check_handles_status(rfds,
-                                      GNUNET_YES,
-                                      returnedpos < nhandles ? handle_array[returnedpos] : NULL);
-      if (-1 != sp.status)
-        GNUNET_NETWORK_fdset_copy_native(efds, &aexcept, retcode);
-    }
-
-  if (sp.status > 0)
-    retcode += sp.status;
-
-  return retcode;
-}
-
-/* MINGW */
-#endif
-
 /* end of network.c */
index 104a98da6e8e7d350752b65992cdc7fb84366b3b..c8590c8fb5bb2356d53b78886aef752c7c93d155 100644 (file)
@@ -764,26 +764,6 @@ GNUNET_OS_check_helper_binary(const char *binary,
   char *p;
   char *pf;
 
-#ifdef MINGW
-  char *binaryexe;
-
-  GNUNET_asprintf(&binaryexe, "%s.exe", binary);
-  if ((GNUNET_YES ==
-       GNUNET_STRINGS_path_is_absolute(binaryexe, GNUNET_NO, NULL, NULL)) ||
-      (0 == strncmp(binary, "./", 2)))
-    p = GNUNET_strdup(binaryexe);
-  else
-    {
-      p = get_path_from_PATH(binaryexe);
-      if (NULL != p)
-        {
-          GNUNET_asprintf(&pf, "%s/%s", p, binaryexe);
-          GNUNET_free(p);
-          p = pf;
-        }
-    }
-  GNUNET_free(binaryexe);
-#else
   if ((GNUNET_YES ==
        GNUNET_STRINGS_path_is_absolute(binary, GNUNET_NO, NULL, NULL)) ||
       (0 == strncmp(binary, "./", 2)))
@@ -800,7 +780,7 @@ GNUNET_OS_check_helper_binary(const char *binary,
           p = pf;
         }
     }
-#endif
+
   if (NULL == p)
     {
       LOG(GNUNET_ERROR_TYPE_INFO,
@@ -814,14 +794,14 @@ GNUNET_OS_check_helper_binary(const char *binary,
       GNUNET_free(p);
       return GNUNET_SYSERR;
     }
-#ifndef MINGW
+
   if (0 == getuid())
     {
       /* as we run as root, we don't insist on SUID */
       GNUNET_free(p);
       return GNUNET_YES;
     }
-#endif
+
   if (0 != stat(p, &statbuf))
     {
       LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_WARNING, "stat", p);
@@ -830,7 +810,6 @@ GNUNET_OS_check_helper_binary(const char *binary,
     }
   if (check_suid)
     {
-#ifndef MINGW
       (void)params;
       if ((0 != (statbuf.st_mode & S_ISUID)) && (0 == statbuf.st_uid))
         {
@@ -841,57 +820,6 @@ GNUNET_OS_check_helper_binary(const char *binary,
                  _("Binary `%s' exists, but is not SUID\n"),
                  p);
       /* binary exists, but not SUID */
-#else
-      STARTUPINFO start;
-      char parameters[512];
-      PROCESS_INFORMATION proc;
-      DWORD exit_value;
-
-      GNUNET_snprintf(parameters, sizeof(parameters), "-d %s", params);
-      memset(&start, 0, sizeof(start));
-      start.cb = sizeof(start);
-      memset(&proc, 0, sizeof(proc));
-
-
-      // Start the child process.
-      if (!(CreateProcess(
-              p, // current windows (2k3 and up can handle / instead of \ in paths))
-              parameters, // execute dryrun/priviliege checking mode
-              NULL, // Process handle not inheritable
-              NULL, // Thread handle not inheritable
-              FALSE, // Set handle inheritance to FALSE
-              CREATE_DEFAULT_ERROR_MODE, // No creation flags
-              NULL, // Use parent's environment block
-              NULL, // Use parent's starting directory
-              &start, // Pointer to STARTUPINFO structure
-              &proc) // Pointer to PROCESS_INFORMATION structure
-            ))
-        {
-          LOG(GNUNET_ERROR_TYPE_ERROR,
-              _("CreateProcess failed for binary %s (%d).\n"),
-              p,
-              GetLastError());
-          return GNUNET_SYSERR;
-        }
-
-      // Wait until child process exits.
-      WaitForSingleObject(proc.hProcess, INFINITE);
-
-      if (!GetExitCodeProcess(proc.hProcess, &exit_value))
-        {
-          LOG(GNUNET_ERROR_TYPE_ERROR,
-              _("GetExitCodeProcess failed for binary %s (%d).\n"),
-              p,
-              GetLastError());
-          return GNUNET_SYSERR;
-        }
-      // Close process and thread handles.
-      CloseHandle(proc.hProcess);
-      CloseHandle(proc.hThread);
-
-      if (!exit_value)
-        return GNUNET_YES;
-#endif
     }
   GNUNET_free(p);
   return GNUNET_NO;
index 4df37b9e5afe2a2d3b762f5e7c4cf342c648665a..5266780476244e3da70745487bc0aba98e6bd0e2 100644 (file)
@@ -35,7 +35,7 @@
 #define LOG_STRERROR_FILE(kind, syscall, filename) GNUNET_log_from_strerror_file(kind, "util-os-network", syscall, filename)
 
 
-#if !(HAVE_GETIFADDRS && HAVE_FREEIFADDRS) && !MINGW
+#if !(HAVE_GETIFADDRS && HAVE_FREEIFADDRS)
 /**
  * Try to enumerate all network interfaces using 'ifconfig'.
  *
@@ -388,32 +388,7 @@ void
 GNUNET_OS_network_interfaces_list(GNUNET_OS_NetworkInterfaceProcessor proc,
                                   void *proc_cls)
 {
-#ifdef MINGW
-  int r;
-  int i;
-  struct EnumNICs3_results *results = NULL;
-  int results_count;
-
-  r = EnumNICs3(&results, &results_count);
-  if (r != GNUNET_OK)
-    return;
-
-  for (i = 0; i < results_count; i++)
-    {
-      if (GNUNET_OK !=
-          proc(proc_cls, results[i].pretty_name, results[i].is_default,
-               (const struct sockaddr *)&results[i].address,
-               results[i].
-               flags & ENUMNICS3_BCAST_OK ?
-               (const struct sockaddr *)&results[i].broadcast : NULL,
-               results[i].flags & ENUMNICS3_MASK_OK ?
-               (const struct sockaddr *)&results[i].mask : NULL,
-               results[i].addr_size))
-        break;
-    }
-  EnumNICs3_free(results);
-  return;
-#elif HAVE_GETIFADDRS && HAVE_FREEIFADDRS
+#if HAVE_GETIFADDRS && HAVE_FREEIFADDRS
   struct ifaddrs *ifa_first;
   struct ifaddrs *ifa_ptr;
   socklen_t alen;
index ebe469b3b33d617eb305b5954d2865560e812599..e25623af5cd8f661f172eb50c8922850c055729d 100644 (file)
@@ -350,7 +350,6 @@ start_process(int pipe_control,
               const char *filename,
               char *const argv[])
 {
-#ifndef MINGW
   pid_t ret;
   char fds[16];
   struct GNUNET_OS_Process *gnunet_proc;
@@ -464,7 +463,7 @@ start_process(int pipe_control,
       GNUNET_array_append(lscp, ls, -1);
     }
 #if DARWIN
-  /* see https://gnunet.org/vfork */
+  /* see https://web.archive.org/web/20150924082249/gnunet.org/vfork */
   ret = vfork();
 #else
   ret = fork();
@@ -589,547 +588,6 @@ start_process(int pipe_control,
   execvp(filename, argv);
   LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_ERROR, "execvp", filename);
   _exit(1);
-#else
-  struct GNUNET_DISK_FileHandle *childpipe_read;
-  struct GNUNET_DISK_FileHandle *childpipe_write;
-  HANDLE childpipe_read_handle;
-  char **arg;
-  char **non_const_argv;
-  unsigned int cmdlen;
-  char *cmd;
-  char *idx;
-  STARTUPINFOW start;
-  PROCESS_INFORMATION proc;
-  int argcount = 0;
-  struct GNUNET_OS_Process *gnunet_proc;
-  char path[MAX_PATH + 1];
-  char *our_env[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL };
-  char *env_block = NULL;
-  char *pathbuf;
-  DWORD pathbuf_len;
-  DWORD alloc_len;
-  char *self_prefix;
-  char *bindir;
-  char *libdir;
-  char *ptr;
-  char *non_const_filename;
-  char win_path[MAX_PATH + 1];
-  struct GNUNET_DISK_PipeHandle *lsocks_pipe;
-  const struct GNUNET_DISK_FileHandle *lsocks_write_fd;
-  HANDLE lsocks_read;
-  HANDLE lsocks_write;
-  wchar_t *wpath;
-  wchar_t *wcmd;
-  size_t wpath_len;
-  size_t wcmd_len;
-  int env_off;
-  int fail;
-  long lRet;
-  HANDLE stdin_handle;
-  HANDLE stdout_handle;
-  HANDLE stdih, stdoh, stdeh;
-  DWORD stdif, stdof, stdef;
-  BOOL bresult;
-  DWORD error_code;
-  DWORD create_no_window;
-
-  if (GNUNET_SYSERR ==
-      GNUNET_OS_check_helper_binary(filename, GNUNET_NO, NULL))
-    return NULL; /* not executable */
-
-  /* Search in prefix dir (hopefully - the directory from which
-   * the current module was loaded), bindir and libdir, then in PATH
-   */
-  self_prefix = GNUNET_OS_installation_get_path(GNUNET_OS_IPK_SELF_PREFIX);
-  bindir = GNUNET_OS_installation_get_path(GNUNET_OS_IPK_BINDIR);
-  libdir = GNUNET_OS_installation_get_path(GNUNET_OS_IPK_LIBDIR);
-
-  pathbuf_len = GetEnvironmentVariableA("PATH", (char *)&pathbuf, 0);
-
-  alloc_len = pathbuf_len + 1 + strlen(self_prefix) + 1 + strlen(bindir) + 1 +
-              strlen(libdir);
-
-  pathbuf = GNUNET_malloc(alloc_len * sizeof(char));
-
-  ptr = pathbuf;
-  ptr += sprintf(pathbuf, "%s;%s;%s;", self_prefix, bindir, libdir);
-  GNUNET_free(self_prefix);
-  GNUNET_free(bindir);
-  GNUNET_free(libdir);
-
-  alloc_len = GetEnvironmentVariableA("PATH", ptr, pathbuf_len);
-  if (alloc_len != pathbuf_len - 1)
-    {
-      GNUNET_free(pathbuf);
-      errno = ENOSYS; /* PATH changed on the fly. What kind of error is that? */
-      return NULL;
-    }
-
-  cmdlen = strlen(filename);
-  if ((cmdlen < 5) || (0 != strcmp(&filename[cmdlen - 4], ".exe")))
-    GNUNET_asprintf(&non_const_filename, "%s.exe", filename);
-  else
-    GNUNET_asprintf(&non_const_filename, "%s", filename);
-
-  /* It could be in POSIX form, convert it to a DOS path early on */
-  if (ERROR_SUCCESS !=
-      (lRet = plibc_conv_to_win_path(non_const_filename, win_path)))
-    {
-      SetErrnoFromWinError(lRet);
-      LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_ERROR,
-                        "plibc_conv_to_win_path",
-                        non_const_filename);
-      GNUNET_free(non_const_filename);
-      GNUNET_free(pathbuf);
-      return NULL;
-    }
-  GNUNET_free(non_const_filename);
-  non_const_filename = GNUNET_strdup(win_path);
-  /* Check that this is the full path. If it isn't, search. */
-  /* FIXME: convert it to wchar_t and use SearchPathW?
-   * Remember: arguments to _start_process() are technically in UTF-8...
-   */
-  if (non_const_filename[1] == ':')
-    {
-      snprintf(path, sizeof(path) / sizeof(char), "%s", non_const_filename);
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Using path `%s' as-is. PATH is %s\n",
-          path,
-          ptr);
-    }
-  else if (!SearchPathA(pathbuf,
-                        non_const_filename,
-                        NULL,
-                        sizeof(path) / sizeof(char),
-                        path,
-                        NULL))
-    {
-      SetErrnoFromWinError(GetLastError());
-      LOG_STRERROR_FILE(GNUNET_ERROR_TYPE_ERROR,
-                        "SearchPath",
-                        non_const_filename);
-      GNUNET_free(non_const_filename);
-      GNUNET_free(pathbuf);
-      return NULL;
-    }
-  else
-    LOG(GNUNET_ERROR_TYPE_DEBUG, "Found `%s' in PATH `%s'\n", path, pathbuf);
-  GNUNET_free(pathbuf);
-  GNUNET_free(non_const_filename);
-
-  /* Count the number of arguments */
-  arg = (char **)argv;
-  while (*arg)
-    {
-      arg++;
-      argcount++;
-    }
-
-  /* Allocate a copy argv */
-  non_const_argv = GNUNET_malloc(sizeof(char *) * (argcount + 1));
-
-  /* Copy all argv strings */
-  argcount = 0;
-  arg = (char **)argv;
-  while (*arg)
-    {
-      if (arg == argv)
-        non_const_argv[argcount] = GNUNET_strdup(path);
-      else
-        non_const_argv[argcount] = GNUNET_strdup(*arg);
-      arg++;
-      argcount++;
-    }
-  non_const_argv[argcount] = NULL;
-
-  /* Count cmd len */
-  cmdlen = 1;
-  arg = non_const_argv;
-  while (*arg)
-    {
-      cmdlen = cmdlen + strlen(*arg) + 4;
-      arg++;
-    }
-
-  /* Allocate and create cmd */
-  cmd = idx = GNUNET_malloc(sizeof(char) * cmdlen);
-  arg = non_const_argv;
-  while (*arg)
-    {
-      char arg_last_char = (*arg)[strlen(*arg) - 1];
-      idx += sprintf(idx,
-                     "\"%s%s\"%s",
-                     *arg,
-                     arg_last_char == '\\' ? "\\" : "",
-                     *(arg + 1) ? " " : "");
-      arg++;
-    }
-
-  while (argcount > 0)
-    GNUNET_free(non_const_argv[--argcount]);
-  GNUNET_free(non_const_argv);
-
-  memset(&start, 0, sizeof(start));
-  start.cb = sizeof(start);
-  if ((pipe_stdin != NULL) || (pipe_stdout != NULL) || (std_inheritance != 0))
-    start.dwFlags |= STARTF_USESTDHANDLES;
-
-  stdih = GetStdHandle(STD_INPUT_HANDLE);
-  GetHandleInformation(stdih, &stdif);
-  if (pipe_stdin != NULL)
-    {
-      GNUNET_DISK_internal_file_handle_(
-        GNUNET_DISK_pipe_handle(pipe_stdin, GNUNET_DISK_PIPE_END_READ),
-        &stdin_handle,
-        sizeof(HANDLE));
-      start.hStdInput = stdin_handle;
-    }
-  else if (stdih)
-    {
-      if (std_inheritance & GNUNET_OS_INHERIT_STD_IN)
-        {
-          SetHandleInformation(stdih, HANDLE_FLAG_INHERIT, 1);
-          if (pipe_stdin == NULL)
-            start.hStdInput = stdih;
-        }
-      else
-        SetHandleInformation(stdih, HANDLE_FLAG_INHERIT, 0);
-    }
-
-
-  stdoh = GetStdHandle(STD_OUTPUT_HANDLE);
-  GetHandleInformation(stdoh, &stdof);
-  if (NULL != pipe_stdout)
-    {
-      GNUNET_DISK_internal_file_handle_(
-        GNUNET_DISK_pipe_handle(pipe_stdout, GNUNET_DISK_PIPE_END_WRITE),
-        &stdout_handle,
-        sizeof(HANDLE));
-      start.hStdOutput = stdout_handle;
-    }
-  else if (stdoh)
-    {
-      if (std_inheritance & GNUNET_OS_INHERIT_STD_OUT)
-        {
-          SetHandleInformation(stdoh, HANDLE_FLAG_INHERIT, 1);
-          if (pipe_stdout == NULL)
-            start.hStdOutput = stdoh;
-        }
-      else
-        SetHandleInformation(stdoh, HANDLE_FLAG_INHERIT, 0);
-    }
-
-  stdeh = GetStdHandle(STD_ERROR_HANDLE);
-  GetHandleInformation(stdeh, &stdef);
-  if (stdeh)
-    {
-      if (std_inheritance & GNUNET_OS_INHERIT_STD_ERR)
-        {
-          SetHandleInformation(stdeh, HANDLE_FLAG_INHERIT, 1);
-          start.hStdError = stdeh;
-        }
-      else
-        SetHandleInformation(stdeh, HANDLE_FLAG_INHERIT, 0);
-    }
-
-  if (GNUNET_YES == pipe_control)
-    {
-      struct GNUNET_DISK_PipeHandle *childpipe;
-      childpipe = GNUNET_DISK_pipe(GNUNET_NO, GNUNET_NO, GNUNET_YES, GNUNET_NO);
-      if (NULL == childpipe)
-        return NULL;
-      childpipe_read =
-        GNUNET_DISK_pipe_detach_end(childpipe, GNUNET_DISK_PIPE_END_READ);
-      childpipe_write =
-        GNUNET_DISK_pipe_detach_end(childpipe, GNUNET_DISK_PIPE_END_WRITE);
-      GNUNET_DISK_pipe_close(childpipe);
-      if ((NULL == childpipe_read) || (NULL == childpipe_write) ||
-          (GNUNET_OK != GNUNET_DISK_internal_file_handle_(childpipe_read,
-                                                          &childpipe_read_handle,
-                                                          sizeof(HANDLE))))
-        {
-          if (childpipe_read)
-            GNUNET_DISK_file_close(childpipe_read);
-          if (childpipe_write)
-            GNUNET_DISK_file_close(childpipe_write);
-          GNUNET_free(cmd);
-          return NULL;
-        }
-      /* Unlike *nix variant, we don't dup the handle, so can't close
-       * filehandle right now.
-       */
-      SetHandleInformation(childpipe_read_handle, HANDLE_FLAG_INHERIT, 1);
-    }
-  else
-    {
-      childpipe_read = NULL;
-      childpipe_write = NULL;
-    }
-
-  if (lsocks != NULL && lsocks[0] != INVALID_SOCKET)
-    {
-      lsocks_pipe =
-        GNUNET_DISK_pipe(GNUNET_YES, GNUNET_YES, GNUNET_YES, GNUNET_NO);
-
-      if (lsocks_pipe == NULL)
-        {
-          GNUNET_free(cmd);
-          GNUNET_DISK_pipe_close(lsocks_pipe);
-          if (GNUNET_YES == pipe_control)
-            {
-              GNUNET_DISK_file_close(childpipe_write);
-              GNUNET_DISK_file_close(childpipe_read);
-            }
-          return NULL;
-        }
-      lsocks_write_fd =
-        GNUNET_DISK_pipe_handle(lsocks_pipe, GNUNET_DISK_PIPE_END_WRITE);
-      GNUNET_DISK_internal_file_handle_(lsocks_write_fd,
-                                        &lsocks_write,
-                                        sizeof(HANDLE));
-      GNUNET_DISK_internal_file_handle_(
-        GNUNET_DISK_pipe_handle(lsocks_pipe, GNUNET_DISK_PIPE_END_READ),
-        &lsocks_read,
-        sizeof(HANDLE));
-    }
-  else
-    {
-      lsocks_pipe = NULL;
-      lsocks_write_fd = NULL;
-    }
-
-  env_off = 0;
-  if (GNUNET_YES == pipe_control)
-    {
-      GNUNET_asprintf(&our_env[env_off++], "%s=", GNUNET_OS_CONTROL_PIPE);
-      GNUNET_asprintf(&our_env[env_off++], "%p", childpipe_read_handle);
-    }
-  if ((lsocks != NULL) && (lsocks[0] != INVALID_SOCKET))
-    {
-      /*This will tell the child that we're going to send lsocks over the pipe*/
-      GNUNET_asprintf(&our_env[env_off++], "%s=", "GNUNET_OS_READ_LSOCKS");
-      GNUNET_asprintf(&our_env[env_off++], "%lu", lsocks_read);
-    }
-  our_env[env_off++] = NULL;
-  env_block = CreateCustomEnvTable(our_env);
-  while (0 > env_off)
-    GNUNET_free_non_null(our_env[--env_off]);
-
-  wpath_len = 0;
-  if (NULL ==
-      (wpath =
-         u8_to_u16((uint8_t *)path, 1 + strlen(path), NULL, &wpath_len)))
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Failed to convert `%s' from UTF-8 to UTF-16: %d\n",
-          path,
-          errno);
-      GNUNET_free(env_block);
-      GNUNET_free(cmd);
-      if (lsocks_pipe)
-        GNUNET_DISK_pipe_close(lsocks_pipe);
-      if (GNUNET_YES == pipe_control)
-        {
-          GNUNET_DISK_file_close(childpipe_write);
-          GNUNET_DISK_file_close(childpipe_read);
-        }
-      return NULL;
-    }
-
-  wcmd_len = 0;
-  if (NULL ==
-      (wcmd = u8_to_u16((uint8_t *)cmd, 1 + strlen(cmd), NULL, &wcmd_len)))
-    {
-      LOG(GNUNET_ERROR_TYPE_DEBUG,
-          "Failed to convert `%s' from UTF-8 to UTF-16: %d\n",
-          cmd,
-          errno);
-      GNUNET_free(env_block);
-      GNUNET_free(cmd);
-      free(wpath);
-      if (lsocks_pipe)
-        GNUNET_DISK_pipe_close(lsocks_pipe);
-      if (GNUNET_YES == pipe_control)
-        {
-          GNUNET_DISK_file_close(childpipe_write);
-          GNUNET_DISK_file_close(childpipe_read);
-        }
-      return NULL;
-    }
-
-  create_no_window = 0;
-  {
-    HANDLE console_input = CreateFile("CONIN$",
-                                      GENERIC_READ,
-                                      FILE_SHARE_READ | FILE_SHARE_WRITE,
-                                      NULL,
-                                      OPEN_EXISTING,
-                                      0,
-                                      NULL);
-    if (INVALID_HANDLE_VALUE == console_input)
-      create_no_window = CREATE_NO_WINDOW;
-    else
-      CloseHandle(console_input);
-  }
-
-  bresult = CreateProcessW(wpath,
-                           wcmd,
-                           NULL,
-                           NULL,
-                           GNUNET_YES,
-                           create_no_window | CREATE_SUSPENDED,
-                           env_block,
-                           NULL,
-                           &start,
-                           &proc);
-  error_code = GetLastError();
-
-  if ((NULL == pipe_stdin) && (stdih))
-    SetHandleInformation(stdih, HANDLE_FLAG_INHERIT, stdif);
-
-
-  if ((NULL == pipe_stdout) && (stdoh))
-    SetHandleInformation(stdoh, HANDLE_FLAG_INHERIT, stdof);
-
-  if (stdeh)
-    SetHandleInformation(stdeh, HANDLE_FLAG_INHERIT, stdef);
-
-  if (!bresult)
-    LOG(GNUNET_ERROR_TYPE_ERROR,
-        "CreateProcess(%s, %s) failed: %lu\n",
-        path,
-        cmd,
-        error_code);
-
-  GNUNET_free(env_block);
-  GNUNET_free(cmd);
-  free(wpath);
-  free(wcmd);
-  if (GNUNET_YES == pipe_control)
-    {
-      GNUNET_DISK_file_close(childpipe_read);
-    }
-
-  if (!bresult)
-    {
-      if (GNUNET_YES == pipe_control)
-        {
-          GNUNET_DISK_file_close(childpipe_write);
-        }
-      if (NULL != lsocks)
-        GNUNET_DISK_pipe_close(lsocks_pipe);
-      SetErrnoFromWinError(error_code);
-      return NULL;
-    }
-
-  gnunet_proc = GNUNET_new(struct GNUNET_OS_Process);
-  gnunet_proc->pid = proc.dwProcessId;
-  gnunet_proc->handle = proc.hProcess;
-  gnunet_proc->control_pipe = childpipe_write;
-
-  CreateThread(NULL, 64000, &child_wait_thread, (void *)gnunet_proc, 0, NULL);
-
-  ResumeThread(proc.hThread);
-  CloseHandle(proc.hThread);
-
-  if ((NULL == lsocks) || (INVALID_SOCKET == lsocks[0]))
-    return gnunet_proc;
-
-  GNUNET_DISK_pipe_close_end(lsocks_pipe, GNUNET_DISK_PIPE_END_READ);
-
-  /* This is a replacement for "goto error" that doesn't use goto */
-  fail = 1;
-  do
-    {
-      ssize_t wrote;
-      uint64_t size;
-      uint64_t count;
-      unsigned int i;
-
-      /* Tell the number of sockets */
-      for (count = 0; lsocks && lsocks[count] != INVALID_SOCKET; count++)
-        ;
-
-      wrote = GNUNET_DISK_file_write(lsocks_write_fd, &count, sizeof(count));
-      if (sizeof(count) != wrote)
-        {
-          GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                     "Failed to write %u count bytes to the child: %lu\n",
-                     sizeof(count),
-                     GetLastError());
-          break;
-        }
-      for (i = 0; lsocks && lsocks[i] != INVALID_SOCKET; i++)
-        {
-          WSAPROTOCOL_INFOA pi;
-          /* Get a socket duplication info */
-          if (SOCKET_ERROR ==
-              WSADuplicateSocketA(lsocks[i], gnunet_proc->pid, &pi))
-            {
-              GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                         "Failed to duplicate an socket[%u]: %lu\n",
-                         i,
-                         GetLastError());
-              break;
-            }
-          /* Synchronous I/O is not nice, but we can't schedule this:
-           * lsocks will be closed/freed by the caller soon, and until
-           * the child creates a duplicate, closing a socket here will
-           * close it for good.
-           */
-          /* Send the size of the structure
-           * (the child might be built with different headers...)
-           */
-          size = sizeof(pi);
-          wrote = GNUNET_DISK_file_write(lsocks_write_fd, &size, sizeof(size));
-          if (sizeof(size) != wrote)
-            {
-              GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                         "Failed to write %u size[%u] bytes to the child: %lu\n",
-                         sizeof(size),
-                         i,
-                         GetLastError());
-              break;
-            }
-          /* Finally! Send the data */
-          wrote = GNUNET_DISK_file_write(lsocks_write_fd, &pi, sizeof(pi));
-          if (sizeof(pi) != wrote)
-            {
-              GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
-                         "Failed to write %u socket[%u] bytes to the child: %lu\n",
-                         sizeof(pi),
-                         i,
-                         GetLastError());
-              break;
-            }
-        }
-      /* This will block us until the child makes a final read or closes
-       * the pipe (hence no 'wrote' check), since we have to wait for it
-       * to duplicate the last socket, before we return and start closing
-       * our own copies)
-       */
-      wrote = GNUNET_DISK_file_write(lsocks_write_fd, &count, sizeof(count));
-      fail = 0;
-    }
-  while (fail);
-
-  GNUNET_DISK_file_sync(lsocks_write_fd);
-  GNUNET_DISK_pipe_close(lsocks_pipe);
-
-  if (fail)
-    {
-      /* If we can't pass on the socket(s), the child will block forever,
-       * better put it out of its misery.
-       */
-      SafeTerminateProcess(gnunet_proc->handle, 0, 0);
-      CloseHandle(gnunet_proc->handle);
-      if (NULL != gnunet_proc->control_pipe)
-        GNUNET_DISK_file_close(gnunet_proc->control_pipe);
-      GNUNET_free(gnunet_proc);
-      return NULL;
-    }
-  return gnunet_proc;
-#endif
 }
 
 
@@ -1439,7 +897,6 @@ process_status(struct GNUNET_OS_Process *proc,
                unsigned long *code,
                int options)
 {
-#ifndef MINGW
   int status;
   int ret;
 
@@ -1488,53 +945,6 @@ process_status(struct GNUNET_OS_Process *proc,
       *type = GNUNET_OS_PROCESS_UNKNOWN;
       *code = 0;
     }
-#else
-#ifndef WNOHANG
-#define WNOHANG 42 /* just a flag for W32, purely internal at this point */
-#endif
-
-  HANDLE h;
-  DWORD c, error_code, ret;
-
-  h = proc->handle;
-  ret = proc->pid;
-  if (h == NULL || ret == 0)
-    {
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          "Invalid process information {%d, %08X}\n",
-          ret,
-          h);
-      return GNUNET_SYSERR;
-    }
-  if (h == NULL)
-    h = GetCurrentProcess();
-
-  if (WNOHANG != options)
-    {
-      if (WAIT_OBJECT_0 != WaitForSingleObject(h, INFINITE))
-        {
-          SetErrnoFromWinError(GetLastError());
-          return GNUNET_SYSERR;
-        }
-    }
-  SetLastError(0);
-  ret = GetExitCodeProcess(h, &c);
-  error_code = GetLastError();
-  if (ret == 0 || error_code != NO_ERROR)
-    {
-      SetErrnoFromWinError(error_code);
-      LOG_STRERROR(GNUNET_ERROR_TYPE_WARNING, "GetExitCodeProcess");
-      return GNUNET_SYSERR;
-    }
-  if (STILL_ACTIVE == c)
-    {
-      *type = GNUNET_OS_PROCESS_RUNNING;
-      *code = 0;
-      return GNUNET_NO;
-    }
-  *type = GNUNET_OS_PROCESS_EXITED;
-  *code = c;
-#endif
 
   return GNUNET_OK;
 }
@@ -1589,7 +999,6 @@ GNUNET_OS_process_wait_status(struct GNUNET_OS_Process *proc,
 int
 GNUNET_OS_process_wait(struct GNUNET_OS_Process *proc)
 {
-#ifndef MINGW
   pid_t pid = proc->pid;
   pid_t ret;
 
@@ -1601,28 +1010,6 @@ GNUNET_OS_process_wait(struct GNUNET_OS_Process *proc)
       return GNUNET_SYSERR;
     }
   return GNUNET_OK;
-#else
-  HANDLE h;
-
-  h = proc->handle;
-  if (NULL == h)
-    {
-      LOG(GNUNET_ERROR_TYPE_WARNING,
-          "Invalid process information {%d, %08X}\n",
-          proc->pid,
-          h);
-      return GNUNET_SYSERR;
-    }
-  if (NULL == h)
-    h = GetCurrentProcess();
-
-  if (WAIT_OBJECT_0 != WaitForSingleObject(h, INFINITE))
-    {
-      SetErrnoFromWinError(GetLastError());
-      return GNUNET_SYSERR;
-    }
-  return GNUNET_OK;
-#endif
 }
 
 
index 4bea5bd5d3a2f939c4d267f4a708f0f834c35738..f379bce42df827aba9ed2284dc4ea80da9c27067 100644 (file)
@@ -108,7 +108,6 @@ struct GNUNET_SCHEDULER_Handle {
   struct GNUNET_SIGNAL_Context *shc_gterm;
 #endif
 
-#ifndef MINGW
   /**
    * context of the SIGQUIT handler
    */
@@ -123,7 +122,6 @@ struct GNUNET_SCHEDULER_Handle {
    * context of hte SIGPIPE handler
    */
   struct GNUNET_SIGNAL_Context *shc_pipe;
-#endif
 };
 
 
@@ -621,13 +619,11 @@ static pid_t my_pid;
 /**
  * Signal handler called for SIGPIPE.
  */
-#ifndef MINGW
 static void
 sighandler_pipe()
 {
   return;
 }
-#endif
 
 
 ///**
@@ -1396,7 +1392,6 @@ check_fd(struct GNUNET_SCHEDULER_Task *t, int raw_fd)
  * @return unique task identifier for the job
  *         only valid until @a task is started!
  */
-#ifndef MINGW
 static struct GNUNET_SCHEDULER_Task *
 add_without_sets(struct GNUNET_TIME_Relative delay,
                  enum GNUNET_SCHEDULER_Priority priority,
@@ -1446,7 +1441,6 @@ add_without_sets(struct GNUNET_TIME_Relative delay,
   init_backtrace(t);
   return t;
 }
-#endif
 
 
 /**
@@ -1586,22 +1580,6 @@ GNUNET_SCHEDULER_add_net_with_priority(struct GNUNET_TIME_Relative delay,
 {
   /* scheduler must be running */
   GNUNET_assert(NULL != scheduler_driver);
-
-#if MINGW
-  struct GNUNET_NETWORK_FDSet *s;
-  struct GNUNET_SCHEDULER_Task * ret;
-
-  GNUNET_assert(NULL != fd);
-  s = GNUNET_NETWORK_fdset_create();
-  GNUNET_NETWORK_fdset_set(s, fd);
-  ret = GNUNET_SCHEDULER_add_select(
-    priority, delay,
-    on_read  ? s : NULL,
-    on_write ? s : NULL,
-    task, task_cls);
-  GNUNET_NETWORK_fdset_destroy(s);
-  return ret;
-#else
   GNUNET_assert(on_read || on_write);
   GNUNET_assert(GNUNET_NETWORK_get_fd(fd) >= 0);
   return add_without_sets(delay, priority,
@@ -1610,7 +1588,6 @@ GNUNET_SCHEDULER_add_net_with_priority(struct GNUNET_TIME_Relative delay,
                           NULL,
                           NULL,
                           task, task_cls);
-#endif
 }
 
 
@@ -1710,22 +1687,6 @@ GNUNET_SCHEDULER_add_file_with_priority(struct GNUNET_TIME_Relative delay,
 {
   /* scheduler must be running */
   GNUNET_assert(NULL != scheduler_driver);
-
-#if MINGW
-  struct GNUNET_NETWORK_FDSet *s;
-  struct GNUNET_SCHEDULER_Task * ret;
-
-  GNUNET_assert(NULL != fd);
-  s = GNUNET_NETWORK_fdset_create();
-  GNUNET_NETWORK_fdset_handle_set(s, fd);
-  ret = GNUNET_SCHEDULER_add_select(
-    priority, delay,
-    on_read  ? s : NULL,
-    on_write ? s : NULL,
-    task, task_cls);
-  GNUNET_NETWORK_fdset_destroy(s);
-  return ret;
-#else
   GNUNET_assert(on_read || on_write);
   GNUNET_assert(fd->fd >= 0);
   return add_without_sets(delay, priority,
@@ -1734,7 +1695,6 @@ GNUNET_SCHEDULER_add_file_with_priority(struct GNUNET_TIME_Relative delay,
                           on_read ? fd : NULL,
                           on_write ? fd : NULL,
                           task, task_cls);
-#endif
 }
 
 
@@ -2218,14 +2178,12 @@ GNUNET_SCHEDULER_driver_init(const struct GNUNET_SCHEDULER_Driver *driver)
   sh->shc_gterm = GNUNET_SIGNAL_handler_install(GNUNET_TERM_SIG,
                                                 &sighandler_shutdown);
 #endif
-#ifndef MINGW
   sh->shc_pipe = GNUNET_SIGNAL_handler_install(SIGPIPE,
                                                &sighandler_pipe);
   sh->shc_quit = GNUNET_SIGNAL_handler_install(SIGQUIT,
                                                &sighandler_shutdown);
   sh->shc_hup = GNUNET_SIGNAL_handler_install(SIGHUP,
                                               &sighandler_shutdown);
-#endif
 
   /* Setup initial tasks */
   current_priority = GNUNET_SCHEDULER_PRIORITY_DEFAULT;
@@ -2282,11 +2240,9 @@ GNUNET_SCHEDULER_driver_done(struct GNUNET_SCHEDULER_Handle *sh)
 #if (SIGTERM != GNUNET_TERM_SIG)
   GNUNET_SIGNAL_handler_uninstall(sh->shc_gterm);
 #endif
-#ifndef MINGW
   GNUNET_SIGNAL_handler_uninstall(sh->shc_pipe);
   GNUNET_SIGNAL_handler_uninstall(sh->shc_quit);
   GNUNET_SIGNAL_handler_uninstall(sh->shc_hup);
-#endif
   GNUNET_DISK_pipe_close(shutdown_pipe_handle);
   shutdown_pipe_handle = NULL;
   scheduler_driver = NULL;
@@ -2352,7 +2308,6 @@ select_loop(struct GNUNET_SCHEDULER_Handle *sh,
 
           LOG_STRERROR(GNUNET_ERROR_TYPE_ERROR,
                        "select");
-#ifndef MINGW
 #if USE_LSOF
           char lsof[512];
 
@@ -2366,7 +2321,6 @@ select_loop(struct GNUNET_SCHEDULER_Handle *sh,
             LOG_STRERROR(GNUNET_ERROR_TYPE_WARNING,
                          "system");
 #endif
-#endif
 #if DEBUG_FDS
           for (struct Scheduled *s = context->scheduled_head;
                NULL != s;
index 880047a422e3c5f5edbbdfd8160b341ec027f908..b0f4ea2898d704801e191d305dea09bcea9010e6 100644 (file)
@@ -1354,93 +1354,6 @@ get_server_addresses(const char *service_name,
 }
 
 
-#ifdef MINGW
-/**
- * Read listen sockets from the parent process (ARM).
- *
- * @param sh service context to initialize
- * @return NULL-terminated array of sockets on success,
- *         NULL if not ok (must bind yourself)
- */
-static struct GNUNET_NETWORK_Handle **
-receive_sockets_from_parent(struct GNUNET_SERVICE_Handle *sh)
-{
-  static struct GNUNET_NETWORK_Handle **lsocks;
-  const char *env_buf;
-  int fail;
-  uint64_t count;
-  uint64_t i;
-  HANDLE lsocks_pipe;
-
-  env_buf = getenv("GNUNET_OS_READ_LSOCKS");
-  if ((NULL == env_buf) || (strlen(env_buf) <= 0))
-    return NULL;
-  /* Using W32 API directly here, because this pipe will
-   * never be used outside of this function, and it's just too much of a bother
-   * to create a GNUnet API that boxes a HANDLE (the way it is done with socks)
-   */
-  lsocks_pipe = (HANDLE)strtoul(env_buf, NULL, 10);
-  if ((0 == lsocks_pipe) || (INVALID_HANDLE_VALUE == lsocks_pipe))
-    return NULL;
-  fail = 1;
-  do
-    {
-      int ret;
-      int fail2;
-      DWORD rd;
-
-      ret = ReadFile(lsocks_pipe, &count, sizeof(count), &rd, NULL);
-      if ((0 == ret) || (sizeof(count) != rd) || (0 == count))
-        break;
-      lsocks = GNUNET_new_array(count + 1, struct GNUNET_NETWORK_Handle *);
-
-      fail2 = 1;
-      for (i = 0; i < count; i++)
-        {
-          WSAPROTOCOL_INFOA pi;
-          uint64_t size;
-          _win_socket s;
-
-          ret = ReadFile(lsocks_pipe, &size, sizeof(size), &rd, NULL);
-          if ((0 == ret) || (sizeof(size) != rd) || (sizeof(pi) != size))
-            break;
-          ret = ReadFile(lsocks_pipe, &pi, sizeof(pi), &rd, NULL);
-          if ((0 == ret) || (sizeof(pi) != rd))
-            break;
-          s = WSASocketA(pi.iAddressFamily,
-                         pi.iSocketType,
-                         pi.iProtocol,
-                         &pi,
-                         0,
-                         WSA_FLAG_OVERLAPPED);
-          lsocks[i] = GNUNET_NETWORK_socket_box_native(s);
-          if (NULL == lsocks[i])
-            break;
-          else if (i == count - 1)
-            fail2 = 0;
-        }
-      if (fail2)
-        break;
-      lsocks[count] = NULL;
-      fail = 0;
-    }
-  while (fail);
-  CloseHandle(lsocks_pipe);
-
-  if (fail)
-    {
-      LOG(GNUNET_ERROR_TYPE_ERROR,
-          _("Could not access a pre-bound socket, will try to bind myself\n"));
-      for (i = 0; (i < count) && (NULL != lsocks[i]); i++)
-        GNUNET_break(GNUNET_OK == GNUNET_NETWORK_socket_close(lsocks[i]));
-      GNUNET_free(lsocks);
-      return NULL;
-    }
-  return lsocks;
-}
-#endif
-
-
 /**
  * Create and initialize a listen socket for the server.
  *
@@ -1557,13 +1470,10 @@ setup_service(struct GNUNET_SERVICE_Handle *sh)
 {
   int tolerant;
   struct GNUNET_NETWORK_Handle **lsocks;
-
-#ifndef MINGW
   const char *nfds;
   unsigned int cnt;
   int flags;
   char dummy[2];
-#endif
 
   if (GNUNET_CONFIGURATION_have_value(sh->cfg, sh->service_name, "TOLERANT"))
     {
@@ -1583,7 +1493,7 @@ setup_service(struct GNUNET_SERVICE_Handle *sh)
     tolerant = GNUNET_NO;
 
   lsocks = NULL;
-#ifndef MINGW
+
   errno = 0;
   if ((NULL != (nfds = getenv("LISTEN_FDS"))) &&
       (1 == sscanf(nfds, "%u%1s", &cnt, dummy)) && (cnt > 0) &&
@@ -1611,13 +1521,6 @@ setup_service(struct GNUNET_SERVICE_Handle *sh)
         }
       unsetenv("LISTEN_FDS");
     }
-#else
-  if (NULL != getenv("GNUNET_OS_READ_LSOCKS"))
-    {
-      lsocks = receive_sockets_from_parent(sh);
-      putenv("GNUNET_OS_READ_LSOCKS=");
-    }
-#endif
 
   if (NULL != lsocks)
     {
@@ -1723,7 +1626,7 @@ set_user_id(struct GNUNET_SERVICE_Handle *sh)
 
   if (NULL == (user = get_user_name(sh)))
     return GNUNET_OK; /* keep */
-#ifndef MINGW
+
   struct passwd *pws;
 
   errno = 0;
@@ -1754,7 +1657,7 @@ set_user_id(struct GNUNET_SERVICE_Handle *sh)
           return GNUNET_SYSERR;
         }
     }
-#endif
+
   GNUNET_free(user);
   return GNUNET_OK;
 }
@@ -1808,7 +1711,6 @@ pid_file_delete(struct GNUNET_SERVICE_Handle *sh)
 static int
 detach_terminal(struct GNUNET_SERVICE_Handle *sh)
 {
-#ifndef MINGW
   pid_t pid;
   int nullfd;
   int filedes[2];
@@ -1875,11 +1777,7 @@ detach_terminal(struct GNUNET_SERVICE_Handle *sh)
   if (-1 == pid)
     LOG_STRERROR(GNUNET_ERROR_TYPE_ERROR, "setsid");
   sh->ready_confirm_fd = filedes[1];
-#else
-  /* FIXME: we probably need to do something else
-   * elsewhere in order to fork the process itself... */
-  FreeConsole();
-#endif
+
   return GNUNET_OK;
 }
 
index dc46ad33a0f58b61ced303368e489bcce14d24a5..25b09f8e26d48d4c692372b6182f24b61187eb90 100644 (file)
@@ -602,20 +602,13 @@ char *
 GNUNET_STRINGS_filename_expand(const char *fil)
 {
   char *buffer;
-
-#ifndef MINGW
   size_t len;
   char *fm;
   const char *fil_ptr;
-#else
-  char *fn;
-  long lRet;
-#endif
 
   if (fil == NULL)
     return NULL;
 
-#ifndef MINGW
   if (fil[0] == DIR_SEPARATOR)
     /* absolute path, just copy */
     return GNUNET_strdup(fil);
@@ -677,34 +670,6 @@ GNUNET_STRINGS_filename_expand(const char *fil)
                   fil_ptr);
   GNUNET_free(fm);
   return buffer;
-#else
-  fn = GNUNET_malloc(MAX_PATH + 1);
-
-  if ((lRet = plibc_conv_to_win_path(fil, fn)) != ERROR_SUCCESS)
-    {
-      SetErrnoFromWinError(lRet);
-      LOG_STRERROR(GNUNET_ERROR_TYPE_WARNING, "plibc_conv_to_win_path");
-      return NULL;
-    }
-  /* is the path relative? */
-  if ((0 != strncmp(fn + 1, ":\\", 2)) && (0 != strncmp(fn, "\\\\", 2)))
-    {
-      char szCurDir[MAX_PATH + 1];
-
-      lRet = GetCurrentDirectory(MAX_PATH + 1, szCurDir);
-      if (lRet + strlen(fn) + 1 > (MAX_PATH + 1))
-        {
-          SetErrnoFromWinError(ERROR_BUFFER_OVERFLOW);
-          LOG_STRERROR(GNUNET_ERROR_TYPE_WARNING, "GetCurrentDirectory");
-          return NULL;
-        }
-      GNUNET_asprintf(&buffer, "%s\\%s", szCurDir, fn);
-      GNUNET_free(fn);
-      fn = buffer;
-    }
-
-  return fn;
-#endif
 }
 
 
index 07e2327c9bcd74f2ee9d39201d5c40c32889a78e..4ba7b544cb32ae125e61fbd03376ad69f858972e 100644 (file)
@@ -401,11 +401,7 @@ runone()
 
   proc = GNUNET_OS_start_process(GNUNET_NO, GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
                                  NULL, pipe_stdout, NULL,
-#if MINGW
-                                 "test_common_logging_dummy",
-#else
                                  "./test_common_logging_dummy",
-#endif
                                  "test_common_logging_dummy", NULL);
   GNUNET_assert(NULL != proc);
   putenv("GNUNET_FORCE_LOG=");
index 71a1ae5bdc945a89b30a44f7f123169e03dbf736..b5b1e238cbe3e4faf036774ce7d9ad5ef29c6766 100644 (file)
@@ -323,12 +323,8 @@ testConfig()
       GNUNET_break(0);
       return 8;
     }
-#ifndef MINGW
+
   if (0 != strcmp(c, "/hello/world"))
-#else
-#define HI "\\hello\\world"
-  if (strstr(c, HI) != c + strlen(c) - strlen(HI))
-#endif
     {
       GNUNET_break(0);
       GNUNET_free(c);
index 620605f96e0ce29c46b2f1ce3eee1938b4aa6df8..77b8c8b2fb886f4c1ea9444e48429ed192a0f0d6 100644 (file)
@@ -163,9 +163,9 @@ main(int argc, char *argv[])
 
   GNUNET_log_setup("test_getopt", "WARNING", NULL);
   /* suppress output from -h, -v options */
-#ifndef MINGW
+
   GNUNET_break(0 == close(1));
-#endif
+
   if (0 != testMinimal())
     errCnt++;
   if (0 != testVerbose())
index ea26c4ee6855bf1af03146c5ac4d597021c80fb0..0b27a2eff21746b9a3ab88734dd04228313addb3 100644 (file)
@@ -307,11 +307,8 @@ run(void *cls, char *const *args, const char *cfgfile,
 #if HAVE_SOCKADDR_IN_SIN_LEN
   sa.sin_len = (u_char)sizeof(sa);
 #endif
-#ifndef MINGW
   inet_aton(ROOTSERVER_IP, &sa.sin_addr);
-#else
-  sa.sin_addr.S_un.S_addr = inet_addr(ROOTSERVER_IP);
-#endif
+
   GNUNET_RESOLVER_hostname_get((const struct sockaddr *)&sa,
                                sizeof(struct sockaddr), GNUNET_YES, timeout,
                                &check_rootserver_name, cls);
index 236bb4e76181fa9f761a1677029f3936ab560b33..8952225c2ee21a7571f601d00761cc45e0996ae0 100644 (file)
@@ -211,7 +211,6 @@ checkShutdown()
 }
 
 
-#ifndef MINGW
 static void
 taskSig(void *cls)
 {
@@ -244,7 +243,6 @@ checkSignal()
   GNUNET_SCHEDULER_run(&taskSig, &ok);
   return ok;
 }
-#endif
 
 
 static void
@@ -283,9 +281,7 @@ main(int argc, char *argv[])
   GNUNET_log_setup("test_scheduler", "WARNING", NULL);
   ret += check();
   ret += checkCancel();
-#ifndef MINGW
   ret += checkSignal();
-#endif
   ret += checkShutdown();
   GNUNET_DISK_pipe_close(p);
 
index c0b02872f38b311d90e246c6ef73b2fb6bfb9267..4edc38a0d598745e30c5f9f03f3d4d9b4b544fd0 100644 (file)
@@ -206,11 +206,10 @@ main(int argc,
                    NULL);
   ret += check("test_service");
   ret += check("test_service");
-#ifndef MINGW
   s = GNUNET_NETWORK_socket_create(PF_INET6,
                                    SOCK_STREAM,
                                    0);
-#endif
+
   if (NULL == s)
     {
       if ((errno == ENOBUFS) ||
index a4e548e31ea6d68f10654ffd76ec7ea22457e9a1..60887c5879a9814b897d3416834518529a17e285 100644 (file)
@@ -67,11 +67,9 @@ main(int argc, char *argv[])
                                                 (GNUNET_TIME_UNIT_MILLISECONDS,
                                                 7 * 60 * 60 * 1000), GNUNET_YES);
   WANTNF(buf, bc);
-#ifndef MINGW
+
   hdir = getenv("HOME");
-#else
-  hdir = getenv("USERPROFILE");
-#endif
+
   GNUNET_snprintf(buf, sizeof(buf), "%s%s", hdir, DIR_SEPARATOR_STR);
   b = GNUNET_STRINGS_filename_expand("~");
   GNUNET_assert(b != NULL);
diff --git a/src/util/w32cat.c b/src/util/w32cat.c
deleted file mode 100644 (file)
index fa7637d..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
-     W32 version of 'cat' program
-     Copyright (C) 2012 LRN
-
-     cat 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.
-
-     cat 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 cat; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-     Boston, MA 02110-1301, USA.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-#include <stdio.h>
-#include <windows.h>
-#include <stdint.h>
-#include <signal.h>
-
-DWORD WINAPI
-parent_control_thread(LPVOID lpParameter)
-{
-  HANDLE h = (HANDLE)lpParameter;
-
-  while (TRUE)
-    {
-      DWORD dw;
-      BOOL b;
-      unsigned char c;
-      b = ReadFile(h, &c, 1, &dw, NULL);
-      if (!b)
-        {
-          ExitProcess(0);
-        }
-      raise((int)c);
-    }
-}
-
-void
-install_parent_control_handler()
-{
-  const char *env_buf;
-  char *env_buf_end;
-  uint64_t pipe_fd;
-  HANDLE pipe_handle;
-
-  env_buf = getenv("GNUNET_OS_CONTROL_PIPE");
-  if ((NULL == env_buf) || (strlen(env_buf) <= 0))
-    return;
-  errno = 0;
-  pipe_fd = strtoull(env_buf, &env_buf_end, 16);
-  if ((0 != errno) || (env_buf == env_buf_end))
-    return;
-  /* Gcc will issue a warning here. What to do with it? */
-  pipe_handle = (HANDLE)(uintptr_t)pipe_fd;
-  CreateThread(NULL, 0, parent_control_thread, (LPVOID)pipe_handle, 0, NULL);
-}
-
-int
-main(int argc, char **argv)
-{
-  HANDLE stdi, stdo;
-  BOOL b;
-  wchar_t *commandlinew, **argvw;
-  int argcw;
-  int i;
-
-  stdo = GetStdHandle(STD_OUTPUT_HANDLE);
-  if (stdo == INVALID_HANDLE_VALUE || stdo == NULL)
-    return 1;
-
-  commandlinew = GetCommandLineW();
-  argvw = CommandLineToArgvW(commandlinew, &argcw);
-  if (argvw == NULL)
-    return 1;
-
-  install_parent_control_handler();
-
-  for (i = 1; i < argcw || argcw == 1; i++)
-    {
-      DWORD r, w;
-      int is_dash = wcscmp(NULL == argvw[i] ? L"-" : argvw[i], L"-") == 0;
-      if (argcw == 1 || is_dash)
-        {
-          stdi = GetStdHandle(STD_INPUT_HANDLE);
-          if (stdi == INVALID_HANDLE_VALUE)
-            {
-              fprintf(stderr, "cat: Failed to obtain stdin handle.\n");
-              return 4;
-            }
-          if (stdi == NULL)
-            {
-              fprintf(stderr, "cat: Have no stdin.\n");
-              return 5;
-            }
-        }
-      else
-        {
-          stdi = CreateFileW(argvw[i], GENERIC_READ, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
-          if (stdi == INVALID_HANDLE_VALUE)
-            {
-              wchar_t *msgbuf;
-              DWORD le = GetLastError();
-              if (0 < FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 0, le, 0, (wchar_t *)&msgbuf, 0, NULL))
-                {
-                  fprintf(stderr, "cat: Failed to open file `%S'. Error %lu.\n", argvw[i], le);
-                  return 3;
-                }
-              fprintf(stderr, "cat: Failed to open file `%S'. Error %lu: %S\n", argvw[i], le, msgbuf);
-              if (msgbuf != NULL)
-                LocalFree(msgbuf);
-              return 2;
-            }
-        }
-      do
-        {
-          unsigned char c;
-          b = ReadFile(stdi, &c, 1, &r, NULL);
-          if (b && r > 0)
-            {
-              b = WriteFile(stdo, &c, 1, &w, NULL);
-              if (b == 0)
-                {
-                  wchar_t *msgbuf;
-                  DWORD le = GetLastError();
-                  if (0 < FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 0, le, 0, (wchar_t *)&msgbuf, 0, NULL))
-                    {
-                      fprintf(stderr, "cat: Failed to write into stdout. Error %lu.\n", le);
-                      return 3;
-                    }
-                  fprintf(stderr, "cat: Failed to write into stdout. Error %lu: %S\n", le, msgbuf);
-                  if (msgbuf != NULL)
-                    LocalFree(msgbuf);
-                  return 6;
-                }
-            }
-        }
-      while (b && r > 0);
-      if (argcw == 1)
-        break;
-      if (!is_dash)
-        CloseHandle(stdi);
-    }
-  LocalFree(argvw);
-  return 0;
-}
diff --git a/src/util/win.c b/src/util/win.c
deleted file mode 100644 (file)
index a2b0d08..0000000
+++ /dev/null
@@ -1,1365 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file util/win.c
- * @brief Helper functions for MS Windows in C++
- * @author Nils Durner
- */
-
-#ifndef _WIN_C
-#define _WIN_C
-
-#include "winproc.h"
-#include "platform.h"
-#include "gnunet_crypto_lib.h"
-#include "gnunet_common.h"
-#include "gnunet_connection_lib.h"
-
-#include <ntdef.h>
-#ifndef INHERITED_ACE
-#define INHERITED_ACE 0x10
-#endif
-
-int plibc_conv_to_win_path(const char *pszUnix, char *pszWindows);
-
-#define _IP_ADAPTER_UNICAST_ADDRESS_HEAD \
-  union { \
-    struct { \
-      ULONG Length; \
-      DWORD Flags; \
-    }; \
-  };
-
-#define _IP_ADAPTER_UNICAST_ADDRESS_BASE \
-  SOCKET_ADDRESS Address; \
-  IP_PREFIX_ORIGIN PrefixOrigin; \
-  IP_SUFFIX_ORIGIN SuffixOrigin; \
-  IP_DAD_STATE DadState; \
-  ULONG ValidLifetime; \
-  ULONG PreferredLifetime; \
-  ULONG LeaseLifetime;
-
-#define _IP_ADAPTER_UNICAST_ADDRESS_ADD_VISTA \
-  UINT8 OnLinkPrefixLength;
-
-
-#define _IP_ADAPTER_UNICAST_ADDRESS_DEFINE(suffix, addition) \
-  typedef struct _IP_ADAPTER_UNICAST_ADDRESS ## suffix { \
-    _IP_ADAPTER_UNICAST_ADDRESS_HEAD \
-    struct _IP_ADAPTER_UNICAST_ADDRESS ## suffix *Next; \
-    _IP_ADAPTER_UNICAST_ADDRESS_BASE \
-      addition \
-  } IP_ADAPTER_UNICAST_ADDRESS ## suffix, *PIP_ADAPTER_UNICAST_ADDRESS ## suffix;
-
-/* _IP_ADAPTER_UNICAST_ADDRESS_DEFINE(,) defined in w32api headers */
-_IP_ADAPTER_UNICAST_ADDRESS_DEFINE(_VISTA, _IP_ADAPTER_UNICAST_ADDRESS_ADD_VISTA)
-
-
-#ifndef __MINGW64_VERSION_MAJOR
-typedef struct _IP_ADAPTER_WINS_SERVER_ADDRESS {
-  union {
-    ULONGLONG Alignment;
-    struct {
-      ULONG Length;
-      DWORD Reserved;
-    };
-  };
-  struct _IP_ADAPTER_WINS_SERVER_ADDRESS  *Next;
-  SOCKET_ADDRESS Address;
-} IP_ADAPTER_WINS_SERVER_ADDRESS, *PIP_ADAPTER_WINS_SERVER_ADDRESS, *PIP_ADAPTER_WINS_SERVER_ADDRESS_LH;
-
-typedef struct _IP_ADAPTER_GATEWAY_ADDRESS {
-  union {
-    ULONGLONG Alignment;
-    struct {
-      ULONG Length;
-      DWORD Reserved;
-    };
-  };
-  struct _IP_ADAPTER_GATEWAY_ADDRESS  *Next;
-  SOCKET_ADDRESS Address;
-} IP_ADAPTER_GATEWAY_ADDRESS, *PIP_ADAPTER_GATEWAY_ADDRESS, *PIP_ADAPTER_GATEWAY_ADDRESS_LH;
-#endif
-
-typedef UINT32 NET_IF_COMPARTMENT_ID;
-typedef GUID NET_IF_NETWORK_GUID;
-
-#ifndef __MINGW64_VERSION_MAJOR
-typedef enum _NET_IF_CONNECTION_TYPE {
-  NET_IF_CONNECTION_DEDICATED   = 1,
-  NET_IF_CONNECTION_PASSIVE,
-  NET_IF_CONNECTION_DEMAND,
-  NET_IF_CONNECTION_MAXIMUM
-} NET_IF_CONNECTION_TYPE, *PNET_IF_CONNECTION_TYPE;
-
-typedef enum  {
-  TUNNEL_TYPE_NONE      = 0,
-  TUNNEL_TYPE_OTHER,
-  TUNNEL_TYPE_DIRECT,
-  TUNNEL_TYPE_6TO4,
-  TUNNEL_TYPE_ISATAP,
-  TUNNEL_TYPE_TEREDO,
-  TUNNEL_TYPE_IPHTTPS
-} TUNNEL_TYPE, *PTUNNEL_TYPE;
-#endif
-
-/*
-   A DUID consists of a two-octet type code represented in network byte
-   order, followed by a variable number of octets that make up the
-   actual identifier.  A DUID can be no more than 128 octets long (not
-   including the type code).
- */
-#define MAX_DHCPV6_DUID_LENGTH 130
-
-#ifndef __MINGW64_VERSION_MAJOR
-typedef union _NET_LUID {
-  ULONG64 Value;
-  struct {
-    ULONG64 Reserved  : 24;
-    ULONG64 NetLuidIndex  : 24;
-    ULONG64 IfType  : 16;
-  } Info;
-} NET_LUID, *PNET_LUID, IF_LUID;
-
-#define MAX_DNS_SUFFIX_STRING_LENGTH 246
-
-typedef struct _IP_ADAPTER_DNS_SUFFIX {
-  struct _IP_ADAPTER_DNS_SUFFIX  *Next;
-  WCHAR String[MAX_DNS_SUFFIX_STRING_LENGTH];
-} IP_ADAPTER_DNS_SUFFIX, *PIP_ADAPTER_DNS_SUFFIX;
-#endif
-
-
-
-#define _IP_ADAPTER_ADDRESSES_HEAD \
-  union { \
-    ULONGLONG Alignment; \
-    struct { \
-      ULONG Length; \
-      DWORD IfIndex; \
-    }; \
-  };
-
-#define _IP_ADAPTER_ADDRESSES_BASE \
-  PCHAR AdapterName; \
-  PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress; \
-  PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress; \
-  PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress; \
-  PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress; \
-  PWCHAR DnsSuffix; \
-  PWCHAR Description; \
-  PWCHAR FriendlyName; \
-  BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH]; \
-  DWORD PhysicalAddressLength; \
-  DWORD Flags; \
-  DWORD Mtu; \
-  DWORD IfType; \
-  IF_OPER_STATUS OperStatus;
-
-#define _IP_ADAPTER_ADDRESSES_ADD_XPSP1 \
-  DWORD Ipv6IfIndex; \
-  DWORD ZoneIndices[16]; \
-  PIP_ADAPTER_PREFIX FirstPrefix; \
-
-
-#define _IP_ADAPTER_ADDRESSES_ADD_VISTA \
-  _IP_ADAPTER_ADDRESSES_ADD_XPSP1 \
-  ULONG64 TransmitLinkSpeed; \
-  ULONG64 ReceiveLinkSpeed; \
-  PIP_ADAPTER_WINS_SERVER_ADDRESS_LH FirstWinsServerAddress; \
-  PIP_ADAPTER_GATEWAY_ADDRESS_LH FirstGatewayAddress; \
-  ULONG Ipv4Metric; \
-  ULONG Ipv6Metric; \
-  IF_LUID Luid; \
-  SOCKET_ADDRESS Dhcpv4Server; \
-  NET_IF_COMPARTMENT_ID CompartmentId; \
-  NET_IF_NETWORK_GUID NetworkGuid; \
-  NET_IF_CONNECTION_TYPE ConnectionType; \
-  TUNNEL_TYPE TunnelType; \
-  SOCKET_ADDRESS Dhcpv6Server; \
-  BYTE Dhcpv6ClientDuid[MAX_DHCPV6_DUID_LENGTH]; \
-  ULONG Dhcpv6ClientDuidLength; \
-  ULONG Dhcpv6Iaid;
-
-#define _IP_ADAPTER_ADDRESSES_ADD_2008_OR_VISTASP1 \
-  _IP_ADAPTER_ADDRESSES_ADD_VISTA \
-  PIP_ADAPTER_DNS_SUFFIX FirstDnsSuffix;
-
-#define _IP_ADAPTER_ADDRESSES_DEFINE(suffix, addition) \
-  typedef struct _IP_ADAPTER_ADDRESSES ## suffix { \
-    _IP_ADAPTER_ADDRESSES_HEAD \
-    struct _IP_ADAPTER_ADDRESSES ## suffix *Next; \
-    _IP_ADAPTER_ADDRESSES_BASE \
-      addition \
-  } IP_ADAPTER_ADDRESSES ## suffix, *PIP_ADAPTER_ADDRESSES ## suffix;
-
-
-/* _IP_ADAPTER_ADDRESSES_DEFINE(,) defined in w32api headers */
-_IP_ADAPTER_ADDRESSES_DEFINE(_XPSP1, _IP_ADAPTER_ADDRESSES_ADD_XPSP1)
-_IP_ADAPTER_ADDRESSES_DEFINE(_VISTA, _IP_ADAPTER_ADDRESSES_ADD_VISTA)
-_IP_ADAPTER_ADDRESSES_DEFINE(_2008_OR_VISTASP1, _IP_ADAPTER_ADDRESSES_ADD_2008_OR_VISTASP1)
-
-static int
-EnumNICs_IPv6_get_ifs_count(_win_socket s)
-{
-  DWORD dwret = 0, err;
-  int iret;
-
-  iret = WSAIoctl(s, SIO_ADDRESS_LIST_QUERY, NULL, 0, NULL, 0,
-                  &dwret, NULL, NULL);
-  err = GetLastError();
-  if (iret == SOCKET_ERROR && err == WSAEFAULT)
-    return dwret;
-  else if (iret == 0)
-    return 0;
-  return GNUNET_SYSERR;
-}
-
-static int
-EnumNICs_IPv6_get_ifs(_win_socket s, SOCKET_ADDRESS_LIST *inf, int size)
-{
-  int iret;
-  DWORD dwret = 0;
-
-  iret = WSAIoctl(s, SIO_ADDRESS_LIST_QUERY, NULL, 0, inf, size,
-                  &dwret, NULL, NULL);
-
-  if (iret != 0 || dwret != size)
-    {
-      /* It's supposed to succeed! And size should be the same */
-      return GNUNET_SYSERR;
-    }
-  return GNUNET_OK;
-}
-
-#undef GNUNET_malloc
-#define GNUNET_malloc(a) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY | \
-                                   HEAP_GENERATE_EXCEPTIONS, a)
-
-#undef GNUNET_free
-#define GNUNET_free(a) HeapFree(GetProcessHeap(), 0, a)
-
-#undef GNUNET_free_non_null
-#define GNUNET_free_non_null(a) do { if ((a) != NULL) GNUNET_free (a); } while (0)
-
-static int
-EnumNICs_IPv4_get_ifs(SOCKET s, INTERFACE_INFO **inf, int *size)
-{
-  int iret;
-  DWORD dwret = 0;
-  DWORD error;
-  INTERFACE_INFO *ii = NULL;
-  DWORD ii_size = sizeof(INTERFACE_INFO) * 15;
-
-  while (TRUE)
-    {
-      if (ii_size >= sizeof(INTERFACE_INFO) * 1000)
-        return GNUNET_SYSERR;
-      ii = (INTERFACE_INFO *)GNUNET_malloc(ii_size);
-      dwret = 0;
-      iret = WSAIoctl(s, SIO_GET_INTERFACE_LIST, NULL, 0, ii, ii_size,
-                      &dwret, NULL, NULL);
-      error = GetLastError();
-      if (iret == SOCKET_ERROR)
-        {
-          if (error == WSAEFAULT)
-            {
-              GNUNET_free(ii);
-              ii_size *= 2;
-              continue;
-            }
-          GNUNET_free(ii);
-          return GNUNET_SYSERR;
-        }
-      else
-        {
-          *inf = ii;
-          *size = dwret;
-          return GNUNET_OK;
-        }
-    }
-  return GNUNET_SYSERR;
-}
-
-int
-EnumNICs2(INTERFACE_INFO **ifs4, int *ifs4_len, SOCKET_ADDRESS_LIST **ifs6)
-{
-  int result = 0;
-  _win_socket s4;
-  _win_socket s6;
-  int ifs4len = 0;
-  int ifs6len = 0;
-  INTERFACE_INFO *interfaces4 = NULL;
-  SOCKET_ADDRESS_LIST *interfaces6 = NULL;
-
-  SetLastError(0);
-  s4 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
-  (void)GetLastError();
-  SetLastError(0);
-  s6 = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
-  (void)GetLastError();
-  if (s6 != INVALID_SOCKET)
-    {
-      ifs6len = EnumNICs_IPv6_get_ifs_count(s6);
-      if (ifs6len > 0)
-        {
-          interfaces6 = (SOCKET_ADDRESS_LIST *)GNUNET_malloc(ifs6len);
-          result = EnumNICs_IPv6_get_ifs(s6, interfaces6, ifs6len) || result;
-        }
-      closesocket(s6);
-      s6 = INVALID_SOCKET;
-    }
-
-  if (s4 != INVALID_SOCKET)
-    {
-      result = EnumNICs_IPv4_get_ifs(s4, &interfaces4, &ifs4len) || result;
-      closesocket(s4);
-      s4 = INVALID_SOCKET;
-    }
-  if (ifs6len + ifs4len == 0)
-    goto error;
-
-  if (!result)
-    {
-      *ifs4 = interfaces4;
-      *ifs4_len = ifs4len;
-      *ifs6 = interfaces6;
-      return GNUNET_OK;
-    }
-error:
-  if (interfaces4 != NULL)
-    GNUNET_free(interfaces4);
-  if (interfaces6 != NULL)
-    GNUNET_free(interfaces6);
-  if (s4 != INVALID_SOCKET)
-    closesocket(s4);
-  if (s6 != INVALID_SOCKET)
-    closesocket(s6);
-  return GNUNET_SYSERR;
-}
-
-
-/**
- * @returns #GNUNET_OK on success, #GNUNET_SYSERR on error
- */
-int
-EnumNICs3(struct EnumNICs3_results **results, int *results_count)
-{
-  DWORD dwRetVal = 0;
-  int count = 0;
-  ULONG flags = /*GAA_FLAG_INCLUDE_PREFIX |*/ GAA_FLAG_SKIP_ANYCAST |
-                GAA_FLAG_SKIP_MULTICAST | GAA_FLAG_SKIP_DNS_SERVER;
-  struct sockaddr_in6 examplecom6;
-  IPAddr examplecom;
-  DWORD best_interface = 0;
-  DWORD best_interface6 = 0;
-
-  int use_enum2 = 0;
-  INTERFACE_INFO *interfaces4 = NULL;
-  int interfaces4_len = 0;
-  SOCKET_ADDRESS_LIST *interfaces6 = NULL;
-
-  unsigned long outBufLen = sizeof(IP_ADAPTER_ADDRESSES);
-  IP_ADAPTER_ADDRESSES *pCurrentAddress = NULL;
-  IP_ADAPTER_ADDRESSES *pAddresses = (IP_ADAPTER_ADDRESSES *)GNUNET_malloc(outBufLen);
-
-  if (GetAdaptersAddresses(AF_UNSPEC, flags, NULL, pAddresses, &outBufLen)
-      == ERROR_BUFFER_OVERFLOW)
-    {
-      GNUNET_free(pAddresses);
-      pAddresses = (IP_ADAPTER_ADDRESSES *)GNUNET_malloc(outBufLen);
-    }
-
-  dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, pAddresses, &outBufLen);
-
-  if (dwRetVal != NO_ERROR)
-    {
-      GNUNET_free(pAddresses);
-      return GNUNET_SYSERR;
-    }
-
-  if (pAddresses->Length < sizeof(IP_ADAPTER_ADDRESSES_VISTA))
-    {
-      use_enum2 = 1;
-
-      /* Enumerate NICs using WSAIoctl() */
-      if (GNUNET_OK != EnumNICs2(&interfaces4, &interfaces4_len, &interfaces6))
-        {
-          GNUNET_free(pAddresses);
-          return GNUNET_SYSERR;
-        }
-    }
-
-  examplecom = inet_addr("192.0.34.166"); /* www.example.com */
-  if (GetBestInterface(examplecom, &best_interface) != NO_ERROR)
-    best_interface = 0;
-
-  if (GNGetBestInterfaceEx != NULL)
-    {
-      examplecom6.sin6_family = AF_INET6;
-      examplecom6.sin6_port = 0;
-      examplecom6.sin6_flowinfo = 0;
-      examplecom6.sin6_scope_id = 0;
-      inet_pton(AF_INET6, "2001:500:88:200:0:0:0:10",
-                (struct sockaddr *)&examplecom6.sin6_addr);
-      dwRetVal = GNGetBestInterfaceEx((struct sockaddr *)&examplecom6,
-                                      &best_interface6);
-      if (dwRetVal != NO_ERROR)
-        best_interface6 = 0;
-    }
-
-  /* Give IPv6 a priority */
-  if (best_interface6 != 0)
-    best_interface = best_interface6;
-
-  count = 0;
-  for (pCurrentAddress = pAddresses;
-       pCurrentAddress != NULL; pCurrentAddress = pCurrentAddress->Next)
-    {
-      if (pCurrentAddress->OperStatus == IfOperStatusUp)
-        {
-          IP_ADAPTER_UNICAST_ADDRESS *unicast = NULL;
-          for (unicast = pCurrentAddress->FirstUnicastAddress; unicast != NULL;
-               unicast = unicast->Next)
-            {
-              if ((unicast->Address.lpSockaddr->sa_family == AF_INET ||
-                   unicast->Address.lpSockaddr->sa_family == AF_INET6) &&
-                  (unicast->DadState == IpDadStateDeprecated ||
-                   unicast->DadState == IpDadStatePreferred))
-                count += 1;
-            }
-        }
-    }
-
-  if (count == 0)
-    {
-      *results = NULL;
-      *results_count = 0;
-      GNUNET_free(pAddresses);
-      GNUNET_free_non_null(interfaces4);
-      GNUNET_free_non_null(interfaces6);
-      return GNUNET_OK;
-    }
-
-  *results = (struct EnumNICs3_results *)GNUNET_malloc(
-    sizeof(struct EnumNICs3_results) * count);
-  *results_count = count;
-
-  count = 0;
-  for (pCurrentAddress = pAddresses;
-       pCurrentAddress != NULL; pCurrentAddress = pCurrentAddress->Next)
-    {
-      struct EnumNICs3_results *r;
-      IP_ADAPTER_UNICAST_ADDRESS *unicast = NULL;
-      if (pCurrentAddress->OperStatus != IfOperStatusUp)
-        continue;
-      for (unicast = pCurrentAddress->FirstUnicastAddress; unicast != NULL;
-           unicast = unicast->Next)
-        {
-          int i, j;
-          int mask_length = -1;
-          char dst[INET6_ADDRSTRLEN + 1];
-
-          if ((unicast->Address.lpSockaddr->sa_family != AF_INET &&
-               unicast->Address.lpSockaddr->sa_family != AF_INET6) ||
-              (unicast->DadState != IpDadStateDeprecated &&
-               unicast->DadState != IpDadStatePreferred))
-            continue;
-
-          r = &(*results)[count];
-          r->flags = 0;
-          if (pCurrentAddress->IfIndex > 0 &&
-              pCurrentAddress->IfIndex == best_interface &&
-              unicast->Address.lpSockaddr->sa_family == AF_INET)
-            r->is_default = 1;
-          else if (pCurrentAddress->Ipv6IfIndex > 0 &&
-                   pCurrentAddress->Ipv6IfIndex == best_interface6 &&
-                   unicast->Address.lpSockaddr->sa_family == AF_INET6)
-            r->is_default = 1;
-          else
-            r->is_default = 0;
-
-          /* Don't choose default interface twice */
-          if (r->is_default)
-            best_interface = best_interface6 = 0;
-
-          if (!use_enum2)
-            {
-              GNUNET_memcpy(&r->address, unicast->Address.lpSockaddr,
-                            unicast->Address.iSockaddrLength);
-              memset(&r->mask, 0, sizeof(struct sockaddr));
-              mask_length = ((IP_ADAPTER_UNICAST_ADDRESS_VISTA *)unicast)->
-                            OnLinkPrefixLength;
-              /* OnLinkPrefixLength is the number of leading 1s in the mask.
-               * OnLinkPrefixLength is available on Vista and later (hence use_enum2).
-               */
-              if (unicast->Address.lpSockaddr->sa_family == AF_INET)
-                {
-                  struct sockaddr_in *m = (struct sockaddr_in *)&r->mask;
-                  for (i = 0; i < mask_length; i++)
-                    ((unsigned char *)&m->sin_addr)[i / 8] |= 0x80 >> (i % 8);
-                }
-              else if (unicast->Address.lpSockaddr->sa_family == AF_INET6)
-                {
-                  struct sockaddr_in6 *m = (struct sockaddr_in6 *)&r->mask;
-                  struct sockaddr_in6 *b = (struct sockaddr_in6 *)&r->broadcast;
-                  for (i = 0; i < mask_length; i++)
-                    ((unsigned char *)&m->sin6_addr)[i / 8] |= 0x80 >> (i % 8);
-                  GNUNET_memcpy(&r->broadcast, &r->address, unicast->Address.iSockaddrLength);
-                  for (i = mask_length; i < 128; i++)
-                    ((unsigned char *)&b->sin6_addr)[i / 8] |= 0x80 >> (i % 8);
-                }
-              r->flags |= ENUMNICS3_MASK_OK;
-            }
-          else
-            {
-              int found = 0;
-              if (unicast->Address.lpSockaddr->sa_family == AF_INET)
-                {
-                  for (i = 0; !found && i < interfaces4_len / sizeof(INTERFACE_INFO); i++)
-                    {
-                      struct sockaddr_in *m = (struct sockaddr_in *)&r->mask;
-                      GNUNET_memcpy(&interfaces4[i].iiAddress.Address,
-                                    unicast->Address.lpSockaddr,
-                                    unicast->Address.iSockaddrLength);
-                      found = 1;
-                      GNUNET_memcpy(&r->address, &interfaces4[i].iiAddress.Address,
-                                    sizeof(struct sockaddr_in));
-                      GNUNET_memcpy(&r->mask, &interfaces4[i].iiNetmask.Address,
-                                    sizeof(struct sockaddr_in));
-                      for (mask_length = 0;
-                           ((unsigned char *)&m->sin_addr)[mask_length / 8] &
-                           0x80 >> (mask_length % 8); mask_length++)
-                        {
-                        }
-                      r->flags |= ENUMNICS3_MASK_OK;
-                    }
-                }
-              else if (unicast->Address.lpSockaddr->sa_family == AF_INET6)
-                {
-                  for (i = 0;
-                       interfaces6 != NULL && !found && i < interfaces6->iAddressCount;
-                       i++)
-                    {
-                      GNUNET_memcpy(interfaces6->Address[i].lpSockaddr,
-                                    unicast->Address.lpSockaddr,
-                                    unicast->Address.iSockaddrLength);
-                      found = 1;
-                      GNUNET_memcpy(&r->address, interfaces6->Address[i].lpSockaddr,
-                                    sizeof(struct sockaddr_in6));
-                      /* TODO: Find a way to reliably get network mask for IPv6 on XP */
-                      memset(&r->mask, 0, sizeof(struct sockaddr));
-                      r->flags &= ~ENUMNICS3_MASK_OK;
-                    }
-                }
-              if (!found)
-                {
-                  DebugBreak();
-                }
-            }
-          if (unicast->Address.lpSockaddr->sa_family == AF_INET)
-            {
-              struct sockaddr_in *m = (struct sockaddr_in *)&r->mask;
-              struct sockaddr_in *a = (struct sockaddr_in *)&r->address;
-              /* copy address to broadcast, then flip all the trailing bits not
-               * falling under netmask to 1,
-               * so we get, 192.168.0.255 from, say, 192.168.0.43 with mask == 24.
-               */
-              GNUNET_memcpy(&r->broadcast, &r->address, unicast->Address.iSockaddrLength);
-              for (i = mask_length; i < 32; i++)
-                ((unsigned char *)&m->sin_addr)[i / 8] |= 0x80 >> (i % 8);
-              r->flags |= ENUMNICS3_BCAST_OK;
-              r->addr_size = sizeof(struct sockaddr_in);
-              inet_ntop(AF_INET, &a->sin_addr, dst, INET_ADDRSTRLEN);
-            }
-          else if (unicast->Address.lpSockaddr->sa_family == AF_INET6)
-            {
-              struct sockaddr_in6 *a = (struct sockaddr_in6 *)&r->address;
-              /* for IPv6 broadcast is not defined, zero it down */
-              memset(&r->broadcast, 0, sizeof(struct sockaddr));
-              r->flags &= ~ENUMNICS3_BCAST_OK;
-              r->addr_size = sizeof(struct sockaddr_in6);
-              inet_ntop(AF_INET6, &a->sin6_addr, dst, INET6_ADDRSTRLEN);
-            }
-
-          i = 0;
-          i += snprintf(&r->pretty_name[i], 1000 - i > 0 ? 1000 - i : 0,
-                        "%S (%s", pCurrentAddress->FriendlyName, dst);
-          for (j = 0; j < pCurrentAddress->PhysicalAddressLength; j++)
-            i += snprintf(&r->pretty_name[i], 1000 - i > 0 ? 1000 - i : 0,
-                          "%s%02X", j > 0 ? ":" : " - ", pCurrentAddress->PhysicalAddress[j]);
-          i += snprintf(&r->pretty_name[i], 1000 - i > 0 ? 1000 - i : 0, ")");
-          r->pretty_name[1000] = '\0';
-          count += 1;
-        }
-    }
-
-  if (use_enum2)
-    {
-      GNUNET_free_non_null(interfaces4);
-      GNUNET_free_non_null(interfaces6);
-    }
-
-  GNUNET_free(pAddresses);
-  return GNUNET_OK;
-}
-
-void
-EnumNICs3_free(struct EnumNICs3_results *r)
-{
-  GNUNET_free_non_null(r);
-}
-
-
-/**
- * Lists all network interfaces in a combo box
- * Used by the basic GTK configurator
- *
- * @param callback function to call for each NIC
- * @param callback_cls closure for callback
- */
-int
-ListNICs(void (*callback)(void *, const char *, int), void * callback_cls)
-{
-  int r;
-  int i;
-  struct EnumNICs3_results *results = NULL;
-  int results_count;
-
-  r = EnumNICs3(&results, &results_count);
-  if (r != GNUNET_OK)
-    return GNUNET_NO;
-
-  for (i = 0; i < results_count; i++)
-    callback(callback_cls, results[i].pretty_name, results[i].is_default);
-  GNUNET_free_non_null(results);
-  return GNUNET_YES;
-}
-
-/**
- * @brief Installs the Windows service
- * @param servicename name of the service as diplayed by the SCM
- * @param application path to the application binary
- * @param username the name of the service's user account
- * @returns 0 on success
- *          1 if the Windows version doesn't support services
- *          2 if the SCM could not be opened
- *          3 if the service could not be created
- */
-int InstallAsService(char *servicename, char *application, char *username)
-{
-  SC_HANDLE hManager, hService;
-  char szEXE[_MAX_PATH + 17] = "\"";
-  char *user = NULL;
-
-  if (!GNOpenSCManager)
-    return 1;
-
-  plibc_conv_to_win_path(application, szEXE + 1);
-  strcat(szEXE, "\" --win-service");
-  hManager = GNOpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
-  if (!hManager)
-    return 2;
-
-  if (username)
-    {
-      user = (char *)malloc(strlen(username) + 3);
-      sprintf(user, ".\\%s", username);
-    }
-
-  hService = GNCreateService(hManager, (LPCTSTR)servicename, (LPCTSTR)servicename, 0,
-                             SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, (LPCTSTR)szEXE,
-                             NULL, NULL, NULL, (LPCTSTR)user, (LPCTSTR)username);
-
-  if (user)
-    free(user);
-
-  if (!hService)
-    return 3;
-
-  GNCloseServiceHandle(hService);
-
-  return 0;
-}
-
-
-/**
- * @brief Uninstall Windows service
- * @param servicename name of the service to delete
- * @returns 0 on success
- *          1 if the Windows version doesn't support services
- *          2 if the SCM could not be openend
- *          3 if the service cannot be accessed
- *          4 if the service cannot be deleted
- */
-int
-UninstallService(char *servicename)
-{
-  SC_HANDLE hManager, hService;
-
-  if (!GNOpenSCManager)
-    return 1;
-
-  hManager = GNOpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
-  if (!hManager)
-    return 2;
-
-  if (!(hService = GNOpenService(hManager, (LPCTSTR)servicename, DELETE)))
-    {
-      if (GetLastError() != ERROR_SERVICE_DOES_NOT_EXIST)
-        return 3;
-      else
-        goto closeSCM;
-    }
-
-  if (!GNDeleteService(hService))
-    if (GetLastError() != ERROR_SERVICE_MARKED_FOR_DELETE)
-      return 4;
-
-closeSCM:
-  GNCloseServiceHandle(hService);
-
-  return 0;
-}
-
-/**
- * @author Scott Field, Microsoft
- * @see http://support.microsoft.com/?scid=kb;en-us;132958
- * @date 12-Jul-95
- */
-void
-_InitLsaString(PLSA_UNICODE_STRING LsaString, LPWSTR String)
-{
-  DWORD StringLength;
-
-  if (String == NULL)
-    {
-      LsaString->Buffer = NULL;
-      LsaString->Length = 0;
-      LsaString->MaximumLength = 0;
-      return;
-    }
-
-  StringLength = wcslen(String);
-  LsaString->Buffer = String;
-  LsaString->Length = (USHORT)StringLength * sizeof(WCHAR);
-  LsaString->MaximumLength = (USHORT)(StringLength + 1) * sizeof(WCHAR);
-}
-
-
-/**
- * @author Scott Field, Microsoft
- * @see http://support.microsoft.com/?scid=kb;en-us;132958
- * @date 12-Jul-95
- */
-NTSTATUS
-_OpenPolicy(LPWSTR ServerName, DWORD DesiredAccess, PLSA_HANDLE PolicyHandle)
-{
-  LSA_OBJECT_ATTRIBUTES ObjectAttributes;
-  LSA_UNICODE_STRING ServerString;
-  PLSA_UNICODE_STRING Server = NULL;
-
-  /* Always initialize the object attributes to all zeroes. */
-  ZeroMemory(&ObjectAttributes, sizeof(ObjectAttributes));
-
-  if (ServerName != NULL)
-    {
-      /* Make a LSA_UNICODE_STRING out of the LPWSTR passed in */
-      _InitLsaString(&ServerString, ServerName);
-      Server = &ServerString;
-    }
-
-  /* Attempt to open the policy. */
-  return GNLsaOpenPolicy(Server,
-                         &ObjectAttributes, DesiredAccess, PolicyHandle);
-}
-
-/**
- * @brief Obtain a SID representing the supplied account on the supplied system
- * @return TRUE on success, FALSE on failure
- * @author Scott Field, Microsoft
- * @date 12-Jul-95
- * @remarks A buffer is allocated which contains the SID representing the
- *          supplied account. This buffer should be freed when it is no longer
- *          needed by calling\n
- *            HeapFree(GetProcessHeap(), 0, buffer)
- * @remarks Call GetLastError() to obtain extended error information.
- * @see http://support.microsoft.com/?scid=kb;en-us;132958
- */
-BOOL
-_GetAccountSid(LPCTSTR SystemName, LPCTSTR AccountName, PSID * Sid)
-{
-  LPTSTR ReferencedDomain = NULL;
-  DWORD cbSid = 128;                                                    /* initial allocation attempt */
-  DWORD cchReferencedDomain = 16;       /* initial allocation size */
-  SID_NAME_USE peUse;
-  BOOL bSuccess = FALSE;                                        /* assume this function will fail */
-
-  /* initial memory allocations */
-  if ((*Sid = HeapAlloc(GetProcessHeap(), 0, cbSid)) == NULL)
-    return FALSE;
-
-  if ((ReferencedDomain = (LPTSTR)HeapAlloc(GetProcessHeap(),
-                                            0,
-                                            cchReferencedDomain *
-                                            sizeof(TCHAR))) == NULL)
-    return FALSE;
-
-  /* Obtain the SID of the specified account on the specified system. */
-  while (!GNLookupAccountName(SystemName,       /* machine to lookup account on */
-                              AccountName,                                                                              /* account to lookup */
-                              *Sid,                                                                                                             /* SID of interest */
-                              &cbSid,                                                                                                   /* size of SID */
-                              ReferencedDomain,                                                         /* domain account was found on */
-                              &cchReferencedDomain, &peUse))
-    {
-      if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
-        {
-          /* reallocate memory */
-          if ((*Sid = HeapReAlloc(GetProcessHeap(), 0, *Sid, cbSid)) == NULL)
-            return FALSE;
-
-          if ((ReferencedDomain = (LPTSTR)HeapReAlloc(GetProcessHeap(),
-                                                      0,
-                                                      ReferencedDomain,
-                                                      cchReferencedDomain
-                                                      * sizeof(TCHAR))) == NULL)
-            return FALSE;
-        }
-      else
-        goto end;
-    }
-
-  /* Indicate success. */
-  bSuccess = TRUE;
-
-end:
-  /* Cleanup and indicate failure, if appropriate. */
-  HeapFree(GetProcessHeap(), 0, ReferencedDomain);
-
-  if (!bSuccess)
-    {
-      if (*Sid != NULL)
-        {
-          HeapFree(GetProcessHeap(), 0, *Sid);
-          *Sid = NULL;
-        }
-    }
-
-  return bSuccess;
-}
-
-/**
- * @author Scott Field, Microsoft
- * @see http://support.microsoft.com/?scid=kb;en-us;132958
- * @date 12-Jul-95
- */
-NTSTATUS
-_SetPrivilegeOnAccount(LSA_HANDLE PolicyHandle,/* open policy handle */
-                       PSID AccountSid,                         /* SID to grant privilege to */
-                       LPWSTR PrivilegeName,    /* privilege to grant (Unicode) */
-                       BOOL bEnable                                             /* enable or disable */
-                       )
-{
-  LSA_UNICODE_STRING PrivilegeString;
-
-  /* Create a LSA_UNICODE_STRING for the privilege name. */
-  _InitLsaString(&PrivilegeString, PrivilegeName);
-
-  /* grant or revoke the privilege, accordingly */
-  if (bEnable)
-    {
-      NTSTATUS i;
-
-      i = GNLsaAddAccountRights(PolicyHandle,                           /* open policy handle */
-                                AccountSid,                             /* target SID */
-                                &PrivilegeString,       /* privileges */
-                                1                                                                                       /* privilege count */
-                                );
-      return i;
-    }
-  else
-    {
-      return GNLsaRemoveAccountRights(PolicyHandle,                     /* open policy handle */
-                                      AccountSid,                       /* target SID */
-                                      FALSE,                                                    /* do not disable all rights */
-                                      &PrivilegeString,         /* privileges */
-                                      1                                                                         /* privilege count */
-                                      );
-    }
-}
-
-/**
- * @brief Create a Windows service account
- * @return 0 on success, > 0 otherwise
- * @param pszName the name of the account
- * @param pszDesc description of the account
- */
-int
-CreateServiceAccount(const char *pszName,
-                     const char *pszDesc)
-{
-  USER_INFO_1 ui;
-  USER_INFO_1008 ui2;
-  NET_API_STATUS nStatus;
-  wchar_t wszName[MAX_NAME_LENGTH], wszDesc[MAX_NAME_LENGTH];
-  LSA_HANDLE hPolicy;
-  PSID pSID;
-
-  if (!GNNetUserAdd)
-    return 1;
-  mbstowcs(wszName, pszName, strlen(pszName) + 1);
-  mbstowcs(wszDesc, pszDesc, strlen(pszDesc) + 1);
-
-  memset(&ui, 0, sizeof(ui));
-  ui.usri1_name = wszName;
-  ui.usri1_password = wszName; /* account is locked anyway */
-  ui.usri1_priv = USER_PRIV_USER;
-  ui.usri1_comment = wszDesc;
-  ui.usri1_flags = UF_SCRIPT;
-
-  nStatus = GNNetUserAdd(NULL, 1, (LPBYTE)&ui, NULL);
-
-  if (nStatus != NERR_Success && nStatus != NERR_UserExists)
-    return 2;
-
-  ui2.usri1008_flags = UF_PASSWD_CANT_CHANGE | UF_DONT_EXPIRE_PASSWD;
-  GNNetUserSetInfo(NULL, wszName, 1008, (LPBYTE)&ui2, NULL);
-
-  if (!NT_SUCCESS(_OpenPolicy(NULL, POLICY_ALL_ACCESS, &hPolicy)))
-    return 3;
-
-  _GetAccountSid(NULL, (LPCTSTR)pszName, &pSID);
-
-  if (!NT_SUCCESS(_SetPrivilegeOnAccount(hPolicy, pSID, (LPWSTR)L"SeServiceLogonRight", TRUE)))
-    return 4;
-
-  _SetPrivilegeOnAccount(hPolicy, pSID, (LPWSTR)L"SeDenyInteractiveLogonRight", TRUE);
-  _SetPrivilegeOnAccount(hPolicy, pSID, (LPWSTR)L"SeDenyBatchLogonRight", TRUE);
-  _SetPrivilegeOnAccount(hPolicy, pSID, (LPWSTR)L"SeDenyNetworkLogonRight", TRUE);
-
-  GNLsaClose(hPolicy);
-
-  return 0;
-}
-
-/**
- * @brief Grant permission to a file
- * @param lpszFileName the name of the file or directory
- * @param lpszAccountName the user account
- * @param dwAccessMask the desired access (e.g. GENERIC_ALL)
- * @return TRUE on success
- * @remark based on http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q102102&
- */
-BOOL AddPathAccessRights(char *lpszFileName, char *lpszAccountName,
-                         DWORD dwAccessMask)
-{
-  /* SID variables. */
-  SID_NAME_USE snuType;
-  TCHAR *        szDomain = NULL;
-  DWORD cbDomain = 0;
-  LPVOID pUserSID = NULL;
-  DWORD cbUserSID = 0;
-
-  /* File SD variables. */
-  PSECURITY_DESCRIPTOR pFileSD = NULL;
-  DWORD cbFileSD = 0;
-
-  /* New SD variables. */
-  SECURITY_DESCRIPTOR newSD;
-
-  /* ACL variables. */
-  PACL pACL = NULL;
-  BOOL fDaclPresent;
-  BOOL fDaclDefaulted;
-  ACL_SIZE_INFORMATION AclInfo;
-
-  /* New ACL variables. */
-  PACL pNewACL = NULL;
-  DWORD cbNewACL = 0;
-
-  /* Temporary ACE. */
-  LPVOID pTempAce = NULL;
-  UINT CurrentAceIndex = 0;
-
-  UINT newAceIndex = 0;
-
-  /* Assume function will fail. */
-  BOOL fResult = FALSE;
-  BOOL fAPISuccess;
-
-  SECURITY_INFORMATION secInfo = DACL_SECURITY_INFORMATION;
-
-  /**
-   * STEP 1: Get SID of the account name specified.
-   */
-  fAPISuccess = GNLookupAccountName(NULL, (LPCTSTR)lpszAccountName,
-                                    pUserSID, &cbUserSID, (LPTSTR)szDomain, &cbDomain, &snuType);
-
-  /* API should have failed with insufficient buffer. */
-  if (fAPISuccess)
-    goto end;
-  else if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
-    {
-      goto end;
-    }
-
-  pUserSID = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cbUserSID);
-  if (!pUserSID)
-    {
-      goto end;
-    }
-
-  szDomain = (TCHAR *)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cbDomain * sizeof(TCHAR));
-  if (!szDomain)
-    {
-      goto end;
-    }
-
-  fAPISuccess = GNLookupAccountName(NULL, (LPCTSTR)lpszAccountName,
-                                    pUserSID, &cbUserSID, (LPTSTR)szDomain, &cbDomain, &snuType);
-  if (!fAPISuccess)
-    {
-      goto end;
-    }
-
-  /**
-   *  STEP 2: Get security descriptor (SD) of the file specified.
-   */
-  fAPISuccess = GNGetFileSecurity((LPCTSTR)lpszFileName,
-                                  secInfo, pFileSD, 0, &cbFileSD);
-
-  /* API should have failed with insufficient buffer. */
-  if (fAPISuccess)
-    goto end;
-  else if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
-    {
-      goto end;
-    }
-
-  pFileSD = (PSECURITY_DESCRIPTOR)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
-                                            cbFileSD);
-  if (!pFileSD)
-    {
-      goto end;
-    }
-
-  fAPISuccess = GNGetFileSecurity((LPCTSTR)lpszFileName,
-                                  secInfo, pFileSD, cbFileSD, &cbFileSD);
-  if (!fAPISuccess)
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 3: Initialize new SD.
-   */
-  if (!GNInitializeSecurityDescriptor(&newSD,
-                                      SECURITY_DESCRIPTOR_REVISION))
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 4: Get DACL from the old SD.
-   */
-  if (!GNGetSecurityDescriptorDacl(pFileSD, &fDaclPresent, &pACL,
-                                   &fDaclDefaulted))
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 5: Get size information for DACL.
-   */
-  AclInfo.AceCount = 0; // Assume NULL DACL.
-  AclInfo.AclBytesFree = 0;
-  AclInfo.AclBytesInUse = sizeof(ACL);
-
-  if (pACL == NULL)
-    fDaclPresent = FALSE;
-
-  /* If not NULL DACL, gather size information from DACL. */
-  if (fDaclPresent)
-    {
-      if (!GNGetAclInformation(pACL, &AclInfo,
-                               sizeof(ACL_SIZE_INFORMATION), AclSizeInformation))
-        {
-          goto end;
-        }
-    }
-
-  /**
-   * STEP 6: Compute size needed for the new ACL.
-   */
-  cbNewACL = AclInfo.AclBytesInUse + sizeof(ACCESS_ALLOWED_ACE)
-             + GetLengthSid(pUserSID) - sizeof(DWORD);
-
-  /**
-   * STEP 7: Allocate memory for new ACL.
-   */
-  pNewACL = (PACL)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, cbNewACL);
-  if (!pNewACL)
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 8: Initialize the new ACL.
-   */
-  if (!GNInitializeAcl(pNewACL, cbNewACL, ACL_REVISION2))
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 9 If DACL is present, copy all the ACEs from the old DACL
-   * to the new DACL.
-   *
-   * The following code assumes that the old DACL is
-   * already in Windows 2000 preferred order.  To conform
-   * to the new Windows 2000 preferred order, first we will
-   * copy all non-inherited ACEs from the old DACL to the
-   * new DACL, irrespective of the ACE type.
-   */
-
-  newAceIndex = 0;
-
-  if (fDaclPresent && AclInfo.AceCount)
-    {
-      for (CurrentAceIndex = 0;
-           CurrentAceIndex < AclInfo.AceCount;
-           CurrentAceIndex++)
-        {
-          /**
-           * TEP 10: Get an ACE.
-           */
-          if (!GNGetAce(pACL, CurrentAceIndex, &pTempAce))
-            {
-              goto end;
-            }
-
-          /**
-           * STEP 11: Check if it is a non-inherited ACE.
-           * If it is an inherited ACE, break from the loop so
-           * that the new access allowed non-inherited ACE can
-           * be added in the correct position, immediately after
-           * all non-inherited ACEs.
-           */
-          if (((ACCESS_ALLOWED_ACE *)pTempAce)->Header.AceFlags
-              & INHERITED_ACE)
-            break;
-
-          /**
-           * STEP 12: Skip adding the ACE, if the SID matches
-           * with the account specified, as we are going to
-           * add an access allowed ACE with a different access
-           * mask.
-           */
-          if (GNEqualSid(pUserSID,
-                         &(((ACCESS_ALLOWED_ACE *)pTempAce)->SidStart)))
-            continue;
-
-          /**
-           * STEP 13: Add the ACE to the new ACL.
-           */
-          if (!GNAddAce(pNewACL, ACL_REVISION, MAXDWORD, pTempAce,
-                        ((PACE_HEADER)pTempAce)->AceSize))
-            {
-              goto end;
-            }
-
-          newAceIndex++;
-        }
-    }
-
-  /**
-   * STEP 14: Add the access-allowed ACE to the new DACL.
-   * The new ACE added here will be in the correct position,
-   * immediately after all existing non-inherited ACEs.
-   */
-  if (!GNAddAccessAllowedAce(pNewACL, ACL_REVISION2, dwAccessMask,
-                             pUserSID))
-    {
-      goto end;
-    }
-
-  /**
-   * STEP 14.5: Make new ACE inheritable
-   */
-  if (!GetAce(pNewACL, newAceIndex, &pTempAce))
-    goto end;
-  ((ACCESS_ALLOWED_ACE *)pTempAce)->Header.AceFlags |=
-    (CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE);
-
-  /**
-   * STEP 15: To conform to the new Windows 2000 preferred order,
-   * we will now copy the rest of inherited ACEs from the
-   * old DACL to the new DACL.
-   */
-  if (fDaclPresent && AclInfo.AceCount)
-    {
-      for (;
-           CurrentAceIndex < AclInfo.AceCount;
-           CurrentAceIndex++)
-        {
-          /**
-           * STEP 16: Get an ACE.
-           */
-          if (!GNGetAce(pACL, CurrentAceIndex, &pTempAce))
-            {
-              goto end;
-            }
-
-          /**
-           * STEP 17: Add the ACE to the new ACL.
-           */
-          if (!GNAddAce(pNewACL, ACL_REVISION, MAXDWORD, pTempAce,
-                        ((PACE_HEADER)pTempAce)->AceSize))
-            {
-              goto end;
-            }
-        }
-    }
-
-  /**
-   * STEP 18: Set permissions
-   */
-  if (GNSetNamedSecurityInfo((LPTSTR)lpszFileName, SE_FILE_OBJECT,
-                             DACL_SECURITY_INFORMATION, NULL, NULL, pNewACL, NULL) != ERROR_SUCCESS)
-    {
-      goto end;
-    }
-
-  fResult = TRUE;
-
-end:
-
-  /**
-   * STEP 19: Free allocated memory
-   */
-  if (pUserSID)
-    HeapFree(GetProcessHeap(), 0, pUserSID);
-
-  if (szDomain)
-    HeapFree(GetProcessHeap(), 0, szDomain);
-
-  if (pFileSD)
-    HeapFree(GetProcessHeap(), 0, pFileSD);
-
-  if (pNewACL)
-    HeapFree(GetProcessHeap(), 0, pNewACL);
-
-  return fResult;
-}
-
-char *winErrorStr(const char *prefix, int dwErr)
-{
-  char *err, *ret;
-  int mem;
-
-  if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
-                     NULL, (DWORD)dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&err,
-                     0, NULL))
-    {
-      err = (char *)LocalAlloc(LMEM_FIXED | LMEM_ZEROINIT, 1);
-    }
-
-  mem = strlen(err) + strlen(prefix) + 20;
-  ret = (char *)malloc(mem);
-
-  snprintf(ret, mem, "%s: %s (#%u)", prefix, err, dwErr);
-
-  LocalFree(err);
-
-  return ret;
-}
-
-/**
- * Terminate a process by creating a remote thread within it,
- * which proceeds to call ExitProcess() inside that process.
- * Safer than TerminateProcess ().
- *
- * Code is from From http://private-storm.de/2009/08/11/case-terminateprocess/
- *
- * @param hProcess handle of a process to terminate
- * @param uExitCode exit code to use for ExitProcess()
- * @param dwTimeout number of ms to wait for the process to terminate
- * @return TRUE on success, FALSE on failure (check last error for the code)
- */
-BOOL
-SafeTerminateProcess(HANDLE hProcess, UINT uExitCode, DWORD dwTimeout)
-{
-  DWORD dwTID, dwCode, dwErr = 0;
-  HANDLE hProcessDup = INVALID_HANDLE_VALUE;
-  HANDLE hRT = NULL;
-  HINSTANCE hKernel = GetModuleHandle("Kernel32");
-  BOOL bSuccess = FALSE;
-
-  BOOL bDup = DuplicateHandle(GetCurrentProcess(), hProcess,
-                              GetCurrentProcess(), &hProcessDup, PROCESS_ALL_ACCESS,
-                              FALSE, 0);
-
-  /* Detect the special case where the process is
-   * already dead...
-   */
-  if (GetExitCodeProcess(bDup ? hProcessDup : hProcess, &dwCode) &&
-      (STILL_ACTIVE == dwCode))
-    {
-      FARPROC pfnExitProc;
-
-      pfnExitProc = GetProcAddress(hKernel, "ExitProcess");
-
-      hRT = CreateRemoteThread((bDup) ? hProcessDup : hProcess, NULL, 0,
-                               (LPTHREAD_START_ROUTINE)pfnExitProc, (PVOID)uExitCode, 0, &dwTID);
-
-      dwErr = GetLastError();
-    }
-  else
-    {
-      dwErr = ERROR_PROCESS_ABORTED;
-    }
-
-  if (hRT)
-    {
-      /* Must wait process to terminate to
-       * guarantee that it has exited...
-       */
-      DWORD dwWaitResult = WaitForSingleObject((bDup) ? hProcessDup : hProcess,
-                                               dwTimeout);
-      if (dwWaitResult == WAIT_TIMEOUT)
-        dwErr = WAIT_TIMEOUT;
-      else
-        dwErr = GetLastError();
-
-      CloseHandle(hRT);
-      bSuccess = dwErr == NO_ERROR;
-    }
-
-  if (bDup)
-    CloseHandle(hProcessDup);
-
-  SetLastError(dwErr);
-
-  return bSuccess;
-}
-
-#endif
diff --git a/src/util/winproc.c b/src/util/winproc.c
deleted file mode 100644 (file)
index f2e4de4..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file util/winproc.c
- * @brief Functions for MS Windows
- * @author Nils Durner
- */
-
-#include "platform.h"
-#include "gnunet_crypto_lib.h"
-#include "gnunet_common.h"
-
-
-#ifdef MINGW
-
-static HINSTANCE hNTDLL, hIphlpapi, hAdvapi, hNetapi;
-#ifdef W32_VEH
-static void *GNWinVEH_handle = NULL;
-#endif
-
-TNtQuerySystemInformation GNNtQuerySystemInformation;
-TGetIfEntry GNGetIfEntry;
-TGetIpAddrTable GNGetIpAddrTable;
-TGetIfTable GNGetIfTable;
-TOpenSCManager GNOpenSCManager;
-TCreateService GNCreateService;
-TCloseServiceHandle GNCloseServiceHandle;
-TDeleteService GNDeleteService;
-TRegisterServiceCtrlHandler GNRegisterServiceCtrlHandler;
-TSetServiceStatus GNSetServiceStatus;
-TStartServiceCtrlDispatcher GNStartServiceCtrlDispatcher;
-TControlService GNControlService;
-TOpenService GNOpenService;
-TGetBestInterfaceEx GNGetBestInterfaceEx;
-TGetAdaptersInfo GNGetAdaptersInfo;
-TNetUserAdd GNNetUserAdd;
-TNetUserSetInfo GNNetUserSetInfo;
-TLsaOpenPolicy GNLsaOpenPolicy;
-TLsaAddAccountRights GNLsaAddAccountRights;
-TLsaRemoveAccountRights GNLsaRemoveAccountRights;
-TLsaClose GNLsaClose;
-TLookupAccountName GNLookupAccountName;
-TGetFileSecurity GNGetFileSecurity;
-TInitializeSecurityDescriptor GNInitializeSecurityDescriptor;
-TGetSecurityDescriptorDacl GNGetSecurityDescriptorDacl;
-TGetAclInformation GNGetAclInformation;
-TInitializeAcl GNInitializeAcl;
-TGetAce GNGetAce;
-TEqualSid GNEqualSid;
-TAddAce GNAddAce;
-TAddAccessAllowedAce GNAddAccessAllowedAce;
-TSetNamedSecurityInfo GNSetNamedSecurityInfo;
-
-#define LOG(kind, ...) GNUNET_log_from(kind, "util-winproc", __VA_ARGS__)
-/**
- * Log (panic) messages from PlibC
- */
-void
-plibc_panic(int err, char *msg)
-{
-  LOG(((err == INT_MAX) ? GNUNET_ERROR_TYPE_DEBUG : GNUNET_ERROR_TYPE_ERROR),
-      "%s", msg);
-}
-
-#ifdef W32_VEH
-/**
- * Handles exceptions (useful for debugging).
- * Issues a DebugBreak() call if the process is being debugged (not really
- * useful - if the process is being debugged, this handler won't be invoked
- * anyway). If it is not, runs a debugger from GNUNET_DEBUGGER env var,
- * substituting first %u in it for PID, and the second one for the event,
- * that should be set once the debugger attaches itself (otherwise the
- * only way out of WaitForSingleObject() is to time out after 1 minute).
- */
-LONG __stdcall
-GNWinVEH(PEXCEPTION_POINTERS ExceptionInfo)
-{
-  char debugger[MAX_PATH + 1];
-  char *debugger_env = NULL;
-
-  if (IsDebuggerPresent())
-    {
-      DebugBreak();
-      return EXCEPTION_CONTINUE_EXECUTION;
-    }
-  debugger_env = getenv("GNUNET_DEBUGGER");
-  if (debugger_env != NULL)
-    {
-      STARTUPINFO si;
-      PROCESS_INFORMATION pi;
-      HANDLE event;
-      SECURITY_ATTRIBUTES sa;
-      memset(&si, 0, sizeof(si));
-      si.cb = sizeof(si);
-      memset(&pi, 0, sizeof(pi));
-      memset(&sa, 0, sizeof(sa));
-      sa.nLength = sizeof(sa);
-      sa.bInheritHandle = TRUE;
-      event = CreateEvent(&sa, FALSE, FALSE, NULL);
-      snprintf(debugger, MAX_PATH + 1, debugger_env, GetCurrentProcessId(), (uintptr_t)event);
-      debugger[MAX_PATH] = '\0';
-      if (0 != CreateProcessA(NULL, debugger, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
-        {
-          CloseHandle(pi.hProcess);
-          CloseHandle(pi.hThread);
-          WaitForSingleObject(event, 60000);
-          CloseHandle(event);
-          if (IsDebuggerPresent())
-            {
-              return EXCEPTION_CONTINUE_EXECUTION;
-            }
-        }
-      else
-        CloseHandle(event);
-    }
-  return EXCEPTION_CONTINUE_SEARCH;
-}
-#endif
-
-/**
- * @brief Initialize PlibC and set up Windows environment
- * @param logging context, NULL means stderr
- * @return Error code from winerror.h, ERROR_SUCCESS on success
- */
-int
-GNInitWinEnv()
-{
-  int ret;
-
-  plibc_initialized();
-  plibc_set_panic_proc(plibc_panic);
-  ret = plibc_init_utf8("GNU", PACKAGE, 1);
-  plibc_set_stat_size_size(sizeof(((struct stat *)0)->st_size));
-  plibc_set_stat_time_size(sizeof(((struct stat *)0)->st_mtime));
-  /* don't load other DLLs twice */
-  if (hNTDLL)
-    return ret;
-
-#ifdef W32_VEH
-  if (GNWinVEH_handle == NULL)
-    {
-      GNWinVEH_handle = AddVectoredExceptionHandler(1, &GNWinVEH);
-      if (GNWinVEH_handle == NULL)
-        {
-          /* This is bad, but what can we do? */
-          printf("Failed to set up an exception handler!\n");
-        }
-    }
-#endif
-
-  hNTDLL = LoadLibrary("ntdll.dll");
-
-  /* Function to get CPU usage under Win NT */
-  if (hNTDLL)
-    {
-      GNNtQuerySystemInformation =
-        (TNtQuerySystemInformation)GetProcAddress(hNTDLL,
-                                                  "NtQuerySystemInformation");
-    }
-  else
-    {
-      GNNtQuerySystemInformation = NULL;
-    }
-
-  /* Functions to get information about a network adapter */
-  hIphlpapi = LoadLibrary("iphlpapi.dll");
-  if (hIphlpapi)
-    {
-      GNGetIfEntry = (TGetIfEntry)GetProcAddress(hIphlpapi, "GetIfEntry");
-      GNGetIpAddrTable =
-        (TGetIpAddrTable)GetProcAddress(hIphlpapi, "GetIpAddrTable");
-      GNGetIfTable = (TGetIfTable)GetProcAddress(hIphlpapi, "GetIfTable");
-      GNGetBestInterfaceEx =
-        (TGetBestInterfaceEx)GetProcAddress(hIphlpapi, "GetBestInterfaceEx");
-      GNGetAdaptersInfo =
-        (TGetAdaptersInfo)GetProcAddress(hIphlpapi, "GetAdaptersInfo");
-    }
-  else
-    {
-      GNGetIfEntry = NULL;
-      GNGetIpAddrTable = NULL;
-      GNGetIfTable = NULL;
-      GNGetBestInterfaceEx = NULL;
-      GNGetAdaptersInfo = NULL;
-    }
-
-  /* Service & Account functions */
-  hAdvapi = LoadLibrary("advapi32.dll");
-  if (hAdvapi)
-    {
-      GNOpenSCManager =
-        (TOpenSCManager)GetProcAddress(hAdvapi, "OpenSCManagerA");
-      GNCreateService =
-        (TCreateService)GetProcAddress(hAdvapi, "CreateServiceA");
-      GNCloseServiceHandle =
-        (TCloseServiceHandle)GetProcAddress(hAdvapi, "CloseServiceHandle");
-      GNDeleteService =
-        (TDeleteService)GetProcAddress(hAdvapi, "DeleteService");
-      GNRegisterServiceCtrlHandler =
-        (TRegisterServiceCtrlHandler)GetProcAddress(hAdvapi,
-                                                    "RegisterServiceCtrlHandlerA");
-      GNSetServiceStatus =
-        (TSetServiceStatus)GetProcAddress(hAdvapi, "SetServiceStatus");
-      GNStartServiceCtrlDispatcher =
-        (TStartServiceCtrlDispatcher)GetProcAddress(hAdvapi,
-                                                    "StartServiceCtrlDispatcherA");
-      GNControlService =
-        (TControlService)GetProcAddress(hAdvapi, "ControlService");
-      GNOpenService = (TOpenService)GetProcAddress(hAdvapi, "OpenServiceA");
-
-      GNLsaOpenPolicy =
-        (TLsaOpenPolicy)GetProcAddress(hAdvapi, "LsaOpenPolicy");
-      GNLsaAddAccountRights =
-        (TLsaAddAccountRights)GetProcAddress(hAdvapi, "LsaAddAccountRights");
-      GNLsaRemoveAccountRights =
-        (TLsaRemoveAccountRights)GetProcAddress(hAdvapi,
-                                                "LsaRemoveAccountRights");
-      GNLsaClose = (TLsaClose)GetProcAddress(hAdvapi, "LsaClose");
-      GNLookupAccountName =
-        (TLookupAccountName)GetProcAddress(hAdvapi, "LookupAccountNameA");
-
-      GNGetFileSecurity =
-        (TGetFileSecurity)GetProcAddress(hAdvapi, "GetFileSecurityA");
-      GNInitializeSecurityDescriptor =
-        (TInitializeSecurityDescriptor)GetProcAddress(hAdvapi,
-                                                      "InitializeSecurityDescriptor");
-      GNGetSecurityDescriptorDacl =
-        (TGetSecurityDescriptorDacl)GetProcAddress(hAdvapi,
-                                                   "GetSecurityDescriptorDacl");
-      GNGetAclInformation =
-        (TGetAclInformation)GetProcAddress(hAdvapi, "GetAclInformation");
-      GNInitializeAcl =
-        (TInitializeAcl)GetProcAddress(hAdvapi, "InitializeAcl");
-      GNGetAce = (TGetAce)GetProcAddress(hAdvapi, "GetAce");
-      GNEqualSid = (TEqualSid)GetProcAddress(hAdvapi, "EqualSid");
-      GNAddAce = (TAddAce)GetProcAddress(hAdvapi, "AddAce");
-      GNAddAccessAllowedAce =
-        (TAddAccessAllowedAce)GetProcAddress(hAdvapi, "AddAccessAllowedAce");
-      GNSetNamedSecurityInfo =
-        (TSetNamedSecurityInfo)GetProcAddress(hAdvapi,
-                                              "SetNamedSecurityInfoA");
-    }
-  else
-    {
-      GNOpenSCManager = NULL;
-      GNCreateService = NULL;
-      GNCloseServiceHandle = NULL;
-      GNDeleteService = NULL;
-      GNRegisterServiceCtrlHandler = NULL;
-      GNSetServiceStatus = NULL;
-      GNStartServiceCtrlDispatcher = NULL;
-      GNControlService = NULL;
-      GNOpenService = NULL;
-
-      GNLsaOpenPolicy = NULL;
-      GNLsaAddAccountRights = NULL;
-      GNLsaRemoveAccountRights = NULL;
-      GNLsaClose = NULL;
-      GNLookupAccountName = NULL;
-
-      GNGetFileSecurity = NULL;
-      GNInitializeSecurityDescriptor = NULL;
-      GNGetSecurityDescriptorDacl = NULL;
-      GNGetAclInformation = NULL;
-      GNInitializeAcl = NULL;
-      GNGetAce = NULL;
-      GNEqualSid = NULL;
-      GNAddAce = NULL;
-      GNAddAccessAllowedAce = NULL;
-      GNSetNamedSecurityInfo = NULL;
-    }
-
-  /* Account function */
-  hNetapi = LoadLibrary("netapi32.dll");
-  if (hNetapi)
-    {
-      GNNetUserAdd = (TNetUserAdd)GetProcAddress(hNetapi, "NetUserAdd");
-      GNNetUserSetInfo =
-        (TNetUserSetInfo)GetProcAddress(hNetapi, "NetUserSetInfo");
-    }
-  else
-    {
-      GNNetUserAdd = NULL;
-      GNNetUserSetInfo = NULL;
-    }
-
-  return ret;
-}
-
-/**
- * Clean up Windows environment
- */
-void
-GNShutdownWinEnv()
-{
-  plibc_shutdown();
-
-#ifdef W32_VEH
-  if (GNWinVEH_handle != NULL)
-    {
-      RemoveVectoredExceptionHandler(GNWinVEH_handle);
-      GNWinVEH_handle = NULL;
-    }
-#endif
-
-  FreeLibrary(hNTDLL);
-  FreeLibrary(hIphlpapi);
-  FreeLibrary(hAdvapi);
-  FreeLibrary(hNetapi);
-
-  CoUninitialize();
-}
-
-#endif /* MINGW */
-
-#if !HAVE_ATOLL
-long long
-atoll(const char *nptr)
-{
-  return atol(nptr);
-}
-#endif
index d1f74d35b838e11277a998c05a71e1613c914710..3ad9b1a5441502deefcff5800492d55d174e8205 100644 (file)
@@ -1,11 +1,6 @@
 # This Makefile.am is in the public domain
 AM_CPPFLAGS = -I$(top_srcdir)/src/include -I$(top_builddir)/src/include
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined,--export-all-symbols
-  VPNBIN = gnunet-helper-vpn
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
 endif
@@ -39,20 +34,9 @@ libexec_PROGRAMS = \
 bin_PROGRAMS = \
   gnunet-vpn
 
-if MINGW
-  gnunet_helper_vpn_LDFLAGS = \
-    -no-undefined -Wl,--export-all-symbols
-
-  gnunet_helper_vpn_LDADD = \
-    -lsetupapi -lnewdev -lshell32 -liconv -lstdc++ \
-    -lcomdlg32 -lgdi32 -liphlpapi
+gnunet_helper_vpn_SOURCES = \
+gnunet-helper-vpn.c
 
-  gnunet_helper_vpn_SOURCES = \
-    gnunet-helper-vpn-windows.c
-else
-    gnunet_helper_vpn_SOURCES = \
-       gnunet-helper-vpn.c
-endif
 gnunet_service_vpn_SOURCES = \
  gnunet-service-vpn.c
 gnunet_service_vpn_LDADD = \
diff --git a/src/vpn/gnunet-helper-vpn-windows.c b/src/vpn/gnunet-helper-vpn-windows.c
deleted file mode 100644 (file)
index afa4fa1..0000000
+++ /dev/null
@@ -1,1610 +0,0 @@
-/*
-     This file is part of GNUnet.
-     Copyright (C) 2010, 2012 Christian Grothoff
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file vpn/gnunet-helper-vpn-windows.c
- * @brief the helper for the VPN service in win32 builds.
- * Opens a virtual network-interface, sends data received on the if to stdout,
- * sends data received on stdin to the interface
- * @author Christian M. Fuchs
- *
- * The following list of people have reviewed this code and considered
- * it safe since the last modification (if you reviewed it, please
- * have your name added to the list):
- *
- */
-
-#include <stdio.h>
-#include <Winsock2.h>
-#include <windows.h>
-#include <setupapi.h>
-#ifndef __MINGW64_VERSION_MAJOR
-#include <ddk/cfgmgr32.h>
-#include <ddk/newdev.h>
-#else
-#include <cfgmgr32.h>
-#include <newdev.h>
-#endif
-#include <time.h>
-#include "platform.h"
-#include "tap-windows.h"
-/**
- * Need 'struct GNUNET_HashCode' and 'struct GNUNET_PeerIdentity'.
- */
-#include "gnunet_crypto_lib.h"
-/**
- * Need 'struct GNUNET_MessageHeader'.
- */
-#include "gnunet_common.h"
-
-/**
- * Need VPN message types.
- */
-#include "gnunet_protocols.h"
-
-/**
- * Should we print (interesting|debug) messages that can happen during
- * normal operation?
- */
-#define DEBUG GNUNET_NO
-
-#if DEBUG
-/* FIXME: define with varargs... */
-#define LOG_DEBUG(msg) fprintf(stderr, "%s", msg);
-#else
-#define LOG_DEBUG(msg) do {} while (0)
-#endif
-
-/**
- * Will this binary be run in permissions testing mode?
- */
-static boolean privilege_testing = FALSE;
-
-/**
- * Maximum size of a GNUnet message (GNUNET_MAX_MESSAGE_SIZE)
- */
-#define MAX_SIZE 65536
-
-/**
- * Name or Path+Name of our win32 driver.
- * The .sys and .cat files HAVE to be in the same location as this file!
- */
-#define INF_FILE "share/gnunet/openvpn-tap32/tapw32/OemWin2k.inf"
-
-/**
- * Name or Path+Name of our win64 driver.
- * The .sys and .cat files HAVE to be in the same location as this file!
- */
-#define INF_FILE64 "share/gnunet/openvpn-tap32/tapw64/OemWin2k.inf"
-
-/**
- * Hardware ID used in the inf-file.
- * This might change over time, as openvpn advances their driver
- */
-#define HARDWARE_ID "tap0901"
-
-/**
- * Minimum major-id of the driver version we can work with
- */
-#define TAP_WIN_MIN_MAJOR 9
-
-/**
- * Minimum minor-id of the driver version we can work with.
- * v <= 7 has buggy IPv6.
- * v == 8 is broken for small IPv4 Packets
- */
-#define TAP_WIN_MIN_MINOR 9
-
-/**
- * Time in seconds to wait for our virtual device to go up after telling it to do so.
- *
- * openvpn doesn't specify a value, 4 seems sane for testing, even for openwrt
- * (in fact, 4 was chosen by a fair dice roll...)
- */
-#define TAP32_POSTUP_WAITTIME 4
-
-/**
- * Location of the network interface list resides in registry.
- */
-#define INTERFACE_REGISTRY_LOCATION "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}"
-
-/**
- * Our local process' PID. Used for creating a sufficiently unique additional
- * hardware ID for our device.
- */
-static char secondary_hwid[LINE_LEN / 2];
-
-/**
- * Device's visible Name, used to identify a network device in netsh.
- * eg: "Local Area Connection 9"
- */
-static char device_visible_name[256];
-
-/**
- * This is our own local instance of a virtual network interface
- * It is (somewhat) equivalent to using tun/tap in unixoid systems
- *
- * Upon initialization, we create such an device node.
- * Upon termination, we remove it again.
- *
- * If we crash this device might stay around.
- */
-static HDEVINFO DeviceInfo = INVALID_HANDLE_VALUE;
-
-/**
- * Registry Key we hand over to windows to spawn a new virtual interface
- */
-static SP_DEVINFO_DATA DeviceNode;
-
-/**
- * GUID of our virtual device in the form of
- * {12345678-1234-1234-1234-123456789abc} - in hex
- */
-static char device_guid[256];
-
-
-/**
- * Possible states of an IO facility.
- */
-enum IO_State {
-  /**
-   * overlapped I/O is ready for work
-   */
-  IOSTATE_READY = 0,
-
-  /**
-   * overlapped I/O has been queued
-   */
-  IOSTATE_QUEUED,
-
-  /**
-   * overlapped I/O has finished, but is waiting for it's write-partner
-   */
-  IOSTATE_WAITING,
-
-  /**
-   * there is a full buffer waiting
-   */
-  IOSTATE_RESUME,
-
-  /**
-   * Operlapped IO states for facility objects
-   * overlapped I/O has failed, stop processing
-   */
-  IOSTATE_FAILED
-};
-
-
-/**
- * A IO Object + read/writebuffer + buffer-size for windows asynchronous IO handling
- */
-struct io_facility {
-  /**
-   * The mode the state machine associated with this object is in.
-   */
-  enum IO_State facility_state;
-
-  /**
-   * If the path is open or blocked in general (used for quickly checking)
-   */
-  BOOL path_open; // BOOL is winbool (int), NOT boolean (unsigned char)!
-
-  /**
-   * Windows Object-Handle (used for accessing TAP and STDIN/STDOUT)
-   */
-  HANDLE handle;
-
-  /**
-   * Overlaped IO structure used for asynchronous IO in windows.
-   */
-  OVERLAPPED overlapped;
-
-  /**
-   * Buffer for reading things to and writing from...
-   */
-  unsigned char buffer[MAX_SIZE];
-
-  /**
-   * How much of this buffer was used when reading or how much data can be written
-   */
-  DWORD buffer_size;
-
-  /**
-   * Amount of data actually written or read by readfile/writefile.
-   */
-  DWORD buffer_size_processed;
-
-  /**
-   * How much of this buffer we have writte in total
-   */
-  DWORD buffer_size_written;
-};
-
-/**
- * ReOpenFile is only available as of XP SP2 and 2003 SP1
- */
-WINBASEAPI HANDLE WINAPI ReOpenFile(HANDLE, DWORD, DWORD, DWORD);
-
-/**
- * IsWow64Process definition for our is_win64, as this is a kernel function
- */
-typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
-
-
-/**
- * Like strlcpy but portable. The given string @a src is copied until its null
- * byte or until @a n - 1 bytes have been read. The destination buffer is
- * guaranteed to be null-terminated.
- *
- * @param dst destination of the copy (must be @a n bytes long)
- * @param src source of the copy (at most @a n - 1 bytes will be read)
- * @param n the length of the string to copy, including its terminating null
- *          byte
- * @return the length of the string that was copied, excluding the terminating
- *         null byte
- */
-size_t
-GNUNET_strlcpy(char *dst, const char *src, size_t n)
-{
-  size_t ret;
-  size_t slen;
-
-  GNUNET_assert(0 != n);
-  slen = strnlen(src, n - 1);
-  memcpy(dst, src, slen);
-  dst[slen] = '\0';
-  return slen;
-}
-
-
-/**
- * Determines if the host OS is win32 or win64
- *
- * @return true if
- */
-BOOL
-is_win64()
-{
-#if defined(_WIN64)
-  //this is a win64 binary,
-  return TRUE;
-#elif defined(_WIN32)
-  //this is a 32bit binary, and we need to check if we are running in WOW64
-  BOOL success = FALSE;
-  BOOL on_wow64 = FALSE;
-  LPFN_ISWOW64PROCESS IsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle("kernel32"), "IsWow64Process");
-
-  if (NULL != IsWow64Process)
-    success = IsWow64Process(GetCurrentProcess(), &on_wow64);
-
-  return success && on_wow64;
-#endif
-}
-/**
- * Wrapper for executing a shellcommand in windows.
- *
- * @param command - the command + parameters to execute
- * @return * exitcode of the program executed,
- *         * EINVAL (cmd/file not found)
- *         * EPIPE (could not read STDOUT)
- */
-static int
-execute_shellcommand(const char *command)
-{
-  FILE *pipe;
-
-  if ((NULL == command) ||
-      (NULL == (pipe = _popen(command, "rt"))))
-    return EINVAL;
-
-#if DEBUG
-  fprintf(stderr, "DEBUG: Command output: \n");
-  char output[LINE_LEN];
-  while (NULL != fgets(output, sizeof(output), pipe))
-    fprintf(stderr, "%s", output);
-#endif
-
-  return _pclose(pipe);
-}
-
-
-/**
- * @brief Sets the IPv6-Address given in address on the interface dev
- *
- * @param address the IPv6-Address
- * @param prefix_len the length of the network-prefix
- */
-static int
-set_address6(const char *address, unsigned long prefix_len)
-{
-  int ret = EINVAL;
-  char command[LINE_LEN];
-  struct sockaddr_in6 sa6;
-
-  /*
-   * parse the new address
-   */
-  memset(&sa6, 0, sizeof(struct sockaddr_in6));
-  sa6.sin6_family = AF_INET6;
-  if (1 != inet_pton(AF_INET6, address, &sa6.sin6_addr.s6_addr))
-    {
-      fprintf(stderr, "ERROR: Failed to parse address `%s': %s\n", address,
-              strerror(errno));
-      return -1;
-    }
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv6 add address \"%s\" %s/%d store=active",
-           device_visible_name, address, prefix_len);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: Setting IPv6 address failed: %s\n", strerror(ret));
-  return ret;
-}
-
-
-/**
- * @brief Removes the IPv6-Address given in address from the interface dev
- *
- * @param address the IPv4-Address
- */
-static void
-remove_address6(const char *address)
-{
-  char command[LINE_LEN];
-  int ret = EINVAL;
-
-  // sanity checking was already done in set_address6
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv6 delete address \"%s\" store=persistent",
-           device_visible_name);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr,
-            "FATAL: removing IPv6 address failed: %s\n",
-            strerror(ret));
-}
-
-
-/**
- * @brief Sets the IPv4-Address given in address on the interface dev
- *
- * @param address the IPv4-Address
- * @param mask the netmask
- */
-static int
-set_address4(const char *address, const char *mask)
-{
-  int ret = EINVAL;
-  char command[LINE_LEN];
-
-  struct sockaddr_in addr;
-
-  addr.sin_family = AF_INET;
-
-  /*
-   * Parse the address
-   */
-  if (1 != inet_pton(AF_INET, address, &addr.sin_addr.s_addr))
-    {
-      fprintf(stderr, "ERROR: Failed to parse address `%s': %s\n", address,
-              strerror(errno));
-      return -1;
-    }
-  // Set Device to Subnet-Mode? do we really need openvpn/tun.c:2925 ?
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv4 add address \"%s\" %s %s store=active",
-           device_visible_name, address, mask);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr,
-            "FATAL: Setting IPv4 address failed: %s\n",
-            strerror(ret));
-  return ret;
-}
-
-
-/**
- * @brief Removes the IPv4-Address given in address from the interface dev
- *
- * @param address the IPv4-Address
- */
-static void
-remove_address4(const char *address)
-{
-  char command[LINE_LEN];
-  int ret = EINVAL;
-
-  // sanity checking was already done in set_address4
-
-  /*
-   * prepare the command
-   */
-  snprintf(command, LINE_LEN,
-           "netsh interface ipv4 delete address \"%s\" gateway=all store=persistent",
-           device_visible_name);
-  /*
-   * Set the address
-   */
-  ret = execute_shellcommand(command);
-
-  /* Did it work?*/
-  if (0 != ret)
-    fprintf(stderr, "FATAL: removing IPv4 address failed: %s\n", strerror(ret));
-}
-
-
-/**
- * Setup a new virtual interface to use for tunneling.
- *
- * @return: TRUE if setup was successful, else FALSE
- */
-static BOOL
-setup_interface()
-{
-  /*
-   * where to find our inf-file. (+ the "full" path, after windows found")
-   *
-   * We do not directly input all the props here, because openvpn will update
-   * these details over time.
-   */
-  char inf_file_path[MAX_PATH];
-  char * temp_inf_filename;
-  char hwidlist[LINE_LEN + 4];
-  char class_name[128];
-  GUID class_guid;
-  int str_length = 0;
-
-  /**
-   * Set the device's hardware ID and add it to a list.
-   * This information will later on identify this device in registry.
-   */
-  str_len = GNUNET_strlcpy(hwidlist,
-                           HARDWARE_ID,
-                           sizeof(hwidList)) + 1;
-  /**
-   * this is kind of over-complicated, but allows keeps things independent of
-   * how the openvpn-hwid is actually stored.
-   *
-   * A HWID list is double-\0 terminated and \0 separated
-   */
-  str_len += GNUNET_strlcpy(&hwidlist[str_length],
-                            secondary_hwid,
-                            sizeof(hwidlist) - str_len) + 1;
-  GNUNET_assert(str_len < sizeof(hwidlist));
-  hwidlist[str_len] = '\0';
-  ++str_len;
-
-  /**
-   * Locate the inf-file, we need to store it somewhere where the system can
-   * find it. We need to pick the correct driver for win32/win64.
-   */
-  if (is_win64())
-    GetFullPathNameA(INF_FILE64, MAX_PATH, inf_file_path, &temp_inf_filename);
-  else
-    GetFullPathNameA(INF_FILE, MAX_PATH, inf_file_path, &temp_inf_filename);
-
-  fprintf(stderr, "INFO: Located our driver's .inf file at %s\n", inf_file_path);
-  /**
-   * Bootstrap our device info using the drivers inf-file
-   */
-  if (!SetupDiGetINFClassA(inf_file_path,
-                           &class_guid,
-                           class_name, sizeof(class_name) / sizeof(char),
-                           NULL))
-    return FALSE;
-
-  /**
-   * Collect all the other needed information...
-   * let the system fill our this form
-   */
-  DeviceInfo = SetupDiCreateDeviceInfoList(&class_guid, NULL);
-  if (DeviceInfo == INVALID_HANDLE_VALUE)
-    return FALSE;
-
-  DeviceNode.cbSize = sizeof(SP_DEVINFO_DATA);
-  if (!SetupDiCreateDeviceInfoA(DeviceInfo,
-                                class_name,
-                                &class_guid,
-                                NULL,
-                                0,
-                                DICD_GENERATE_ID,
-                                &DeviceNode))
-    return FALSE;
-
-  /* Deploy all the information collected into the registry */
-  if (!SetupDiSetDeviceRegistryPropertyA(DeviceInfo,
-                                         &DeviceNode,
-                                         SPDRP_HARDWAREID,
-                                         (LPBYTE)hwidlist,
-                                         str_length * sizeof(char)))
-    return FALSE;
-
-  /* Install our new class(=device) into the system */
-  if (!SetupDiCallClassInstaller(DIF_REGISTERDEVICE,
-                                 DeviceInfo,
-                                 &DeviceNode))
-    return FALSE;
-
-  /* This system call tends to take a while (several seconds!) on
-     "modern" Windoze systems */
-  if (!UpdateDriverForPlugAndPlayDevicesA(NULL,
-                                          secondary_hwid,
-                                          inf_file_path,
-                                          INSTALLFLAG_FORCE | INSTALLFLAG_NONINTERACTIVE,
-                                          NULL))  //reboot required? NEVER!
-    return FALSE;
-
-  fprintf(stderr, "DEBUG: successfully created a network device\n");
-  return TRUE;
-}
-
-
-/**
- * Remove our new virtual interface to use for tunneling.
- * This function must be called AFTER setup_interface!
- *
- * @return: TRUE if destruction was successful, else FALSE
- */
-static BOOL
-remove_interface()
-{
-  SP_REMOVEDEVICE_PARAMS remove;
-
-  if (INVALID_HANDLE_VALUE == DeviceInfo)
-    return FALSE;
-
-  remove.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
-  remove.HwProfile = 0;
-  remove.Scope = DI_REMOVEDEVICE_GLOBAL;
-  remove.ClassInstallHeader.InstallFunction = DIF_REMOVE;
-  /*
-   * 1. Prepare our existing device information set, and place the
-   *    uninstall related information into the structure
-   */
-  if (!SetupDiSetClassInstallParamsA(DeviceInfo,
-                                     (PSP_DEVINFO_DATA)&DeviceNode,
-                                     &remove.ClassInstallHeader,
-                                     sizeof(remove)))
-    return FALSE;
-  /*
-   * 2. Uninstall the virtual interface using the class installer
-   */
-  if (!SetupDiCallClassInstaller(DIF_REMOVE,
-                                 DeviceInfo,
-                                 (PSP_DEVINFO_DATA)&DeviceNode))
-    return FALSE;
-
-  SetupDiDestroyDeviceInfoList(DeviceInfo);
-
-  fprintf(stderr, "DEBUG: removed interface successfully\n");
-
-  return TRUE;
-}
-
-
-/**
- * Do all the lookup necessary to retrieve the inteface's actual name
- * off the registry.
- *
- * @return: TRUE if we were able to lookup the interface's name, else FALSE
- */
-static BOOL
-resolve_interface_name()
-{
-  SP_DEVINFO_LIST_DETAIL_DATA device_details;
-  char pnp_instance_id [MAX_DEVICE_ID_LEN];
-  HKEY adapter_key_handle;
-  LONG status;
-  DWORD len;
-  int i = 0;
-  int retrys;
-  BOOL retval = FALSE;
-  char adapter[] = INTERFACE_REGISTRY_LOCATION;
-
-  /* We can obtain the PNP instance ID from our setupapi handle */
-  device_details.cbSize = sizeof(device_details);
-  if (CR_SUCCESS != CM_Get_Device_ID_ExA(DeviceNode.DevInst,
-                                         (PCHAR)pnp_instance_id,
-                                         MAX_DEVICE_ID_LEN,
-                                         0,  //must be 0
-                                         NULL))  //hMachine, we are local
-    return FALSE;
-
-  fprintf(stderr, "DEBUG: Resolving interface name for network device %s\n", pnp_instance_id);
-
-  /* Registry is incredibly slow, retry for up to 30 seconds to allow registry to refresh */
-  for (retrys = 0; retrys < 120 && !retval; retrys++)
-    {
-      /* sleep for 250ms*/
-      Sleep(250);
-
-      /* Now we can use this ID to locate the correct networks interface in registry */
-      if (ERROR_SUCCESS != RegOpenKeyExA(
-            HKEY_LOCAL_MACHINE,
-            adapter,
-            0,
-            KEY_READ,
-            &adapter_key_handle))
-        return FALSE;
-
-      /* Of course there is a multitude of entries here, with arbitrary names,
-       * thus we need to iterate through there.
-       */
-      while (!retval)
-        {
-          char instance_key[256];
-          char query_key [256];
-          HKEY instance_key_handle;
-          char pnpinstanceid_name[] = "PnpInstanceID";
-          char pnpinstanceid_value[256];
-          char adaptername_name[] = "Name";
-          DWORD data_type;
-
-          len = 256 * sizeof(char);
-          /* optain a subkey of {4D36E972-E325-11CE-BFC1-08002BE10318} */
-          status = RegEnumKeyExA(
-            adapter_key_handle,
-            i,
-            instance_key,
-            &len,
-            NULL,
-            NULL,
-            NULL,
-            NULL);
-
-          /* this may fail due to one of two reasons:
-           * we are at the end of the list*/
-          if (ERROR_NO_MORE_ITEMS == status)
-            break;
-          // * we found a broken registry key, continue with the next key.
-          if (ERROR_SUCCESS != status)
-            goto cleanup;
-
-          /* prepare our new query string: */
-          snprintf(query_key, 256, "%s\\%s\\Connection",
-                   adapter,
-                   instance_key);
-
-          /* look inside instance_key\\Connection */
-          if (ERROR_SUCCESS != RegOpenKeyExA(
-                HKEY_LOCAL_MACHINE,
-                query_key,
-                0,
-                KEY_READ,
-                &instance_key_handle))
-            goto cleanup;
-
-          /* now, read our PnpInstanceID */
-          len = sizeof(pnpinstanceid_value);
-          status = RegQueryValueExA(instance_key_handle,
-                                    pnpinstanceid_name,
-                                    NULL,  //reserved, always NULL according to MSDN
-                                    &data_type,
-                                    (LPBYTE)pnpinstanceid_value,
-                                    &len);
-
-          if (status != ERROR_SUCCESS || data_type != REG_SZ)
-            goto cleanup;
-
-          /* compare the value we got to our devices PNPInstanceID*/
-          if (0 != strncmp(pnpinstanceid_value, pnp_instance_id,
-                           sizeof(pnpinstanceid_value) / sizeof(char)))
-            goto cleanup;
-
-          len = sizeof(device_visible_name);
-          status = RegQueryValueExA(
-            instance_key_handle,
-            adaptername_name,
-            NULL,                          //reserved, always NULL according to MSDN
-            &data_type,
-            (LPBYTE)device_visible_name,
-            &len);
-
-          if (status != ERROR_SUCCESS || data_type != REG_SZ)
-            goto cleanup;
-
-          /*
-           * we have successfully found OUR instance,
-           * save the device GUID before exiting
-           */
-          GNUNET_strlcpy(device_guid, instance_key, sizeof(device_guid));
-          retval = TRUE;
-          fprintf(stderr, "DEBUG: Interface Name lookup succeeded on retry %d, got \"%s\" %s\n", retrys, device_visible_name, device_guid);
-
-cleanup:
-          RegCloseKey(instance_key_handle);
-
-          ++i;
-        }
-
-      RegCloseKey(adapter_key_handle);
-    }
-  return retval;
-}
-
-
-/**
- * Determines the version of the installed TAP32 driver and checks if it's sufficiently new for GNUNET
- *
- * @param handle the handle to our tap device
- * @return TRUE if the version is sufficient, else FALSE
- */
-static BOOL
-check_tapw32_version(HANDLE handle)
-{
-  ULONG version[3];
-  DWORD len;
-
-  memset(&(version), 0, sizeof(version));
-
-  if (DeviceIoControl(handle, TAP_WIN_IOCTL_GET_VERSION,
-                      &version, sizeof(version),
-                      &version, sizeof(version), &len, NULL))
-    fprintf(stderr, "INFO: TAP-Windows Driver Version %d.%d %s\n",
-            (int)version[0],
-            (int)version[1],
-            (version[2] ? "(DEBUG)" : ""));
-
-  if ((version[0] != TAP_WIN_MIN_MAJOR) ||
-      (version[1] < TAP_WIN_MIN_MINOR))
-    {
-      fprintf(stderr, "FATAL:  This version of gnunet requires a TAP-Windows driver that is at least version %d.%d\n",
-              TAP_WIN_MIN_MAJOR,
-              TAP_WIN_MIN_MINOR);
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-
-/**
- * Creates a tun-interface called dev;
- *
- * @return the fd to the tun or -1 on error
- */
-static HANDLE
-init_tun()
-{
-  char device_path[256];
-  HANDLE handle;
-
-  if (!setup_interface())
-    {
-      errno = ENODEV;
-      return INVALID_HANDLE_VALUE;
-    }
-
-  if (!resolve_interface_name())
-    {
-      errno = ENODEV;
-      return INVALID_HANDLE_VALUE;
-    }
-
-  /* Open Windows TAP-Windows adapter */
-  snprintf(device_path, sizeof(device_path), "%s%s%s",
-           USERMODEDEVICEDIR,
-           device_guid,
-           TAP_WIN_SUFFIX);
-
-  handle = CreateFile(
-    device_path,
-    GENERIC_READ | GENERIC_WRITE,
-    0,                    /* was: FILE_SHARE_READ */
-    0,
-    OPEN_EXISTING,
-    FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED,
-    0
-    );
-
-  if (INVALID_HANDLE_VALUE == handle)
-    {
-      fprintf(stderr, "FATAL: CreateFile failed on TAP device: %s\n", device_path);
-      return handle;
-    }
-
-  /* get driver version info */
-  if (!check_tapw32_version(handle))
-    {
-      CloseHandle(handle);
-      return INVALID_HANDLE_VALUE;
-    }
-
-  /* TODO (opt?): get MTU-Size */
-
-  fprintf(stderr, "DEBUG: successfully opened TAP device\n");
-  return handle;
-}
-
-
-/**
- * Brings a TAP device up and sets it to connected state.
- *
- * @param handle the handle to our TAP device
- * @return True if the operation succeeded, else false
- */
-static BOOL
-tun_up(HANDLE handle)
-{
-  ULONG status = TRUE;
-  DWORD len;
-
-  if (!DeviceIoControl(handle, TAP_WIN_IOCTL_SET_MEDIA_STATUS,
-                       &status, sizeof(status),
-                       &status, sizeof(status), &len, NULL))
-    {
-      fprintf(stderr, "FATAL: TAP driver ignored request to UP interface (DeviceIoControl call)\n");
-      return FALSE;
-    }
-
-  /* Wait for the device to go UP, might take some time. */
-  Sleep(TAP32_POSTUP_WAITTIME * 1000);
-  fprintf(stderr, "DEBUG: successfully set TAP device to UP\n");
-
-  return TRUE;
-}
-
-
-/**
- * Attempts to read off an input facility (tap or named pipe) in overlapped mode.
- *
- * 1.
- * If the input facility is in IOSTATE_READY, it will issue a new read operation to the
- * input handle. Then it goes into IOSTATE_QUEUED state.
- * In case the read succeeded instantly the input facility enters 3.
- *
- * 2.
- * If the input facility is in IOSTATE_QUEUED state, it will check if the queued read has finished already.
- * If it has finished, go to state 3.
- * If it has failed, set IOSTATE_FAILED
- *
- * 3.
- * If the output facility is in state IOSTATE_READY, the read-buffer is copied to the output buffer.
- *   The input facility enters state IOSTATE_READY
- *   The output facility enters state IOSTATE_READY
- * If the output facility is in state IOSTATE_QUEUED, the input facility enters IOSTATE_WAITING
- *
- * IOSTATE_WAITING is reset by the output facility, once it has completed.
- *
- * @param input_facility input named pipe or file to work with.
- * @param output_facility output pipe or file to hand over data to.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_read_tap(struct io_facility * input_facility,
-                 struct io_facility * output_facility)
-{
-  struct GNUNET_MessageHeader * hdr;
-  unsigned short size;
-
-  switch (input_facility->facility_state)
-    {
-    case IOSTATE_READY:
-    {
-      if (!ResetEvent(input_facility->overlapped.hEvent))
-        {
-          return FALSE;
-        }
-
-      input_facility->buffer_size = 0;
-
-      /* Check how the task is handled */
-      if (ReadFile(input_facility->handle,
-                   input_facility->buffer,
-                   sizeof(input_facility->buffer) - sizeof(struct GNUNET_MessageHeader),
-                   &input_facility->buffer_size,
-                   &input_facility->overlapped))
-        {  /* async event processed immediately*/
-          /* reset event manually*/
-          if (!SetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: tap read succeeded immediately\n");
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && (0 < input_facility->buffer_size))
-            {   /* hand over this buffers content and apply message header for gnunet */
-              hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-              size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-              GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer,
-                            input_facility->buffer_size);
-
-              output_facility->buffer_size = size;
-              hdr->size = htons(size);
-              hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-              output_facility->facility_state = IOSTATE_READY;
-            }
-          else if (0 < input_facility->buffer_size)
-            /* If we have have read our buffer, wait for our write-partner*/
-            input_facility->facility_state = IOSTATE_WAITING;
-        }
-      else   /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)
-            {   /* operation queued */
-              input_facility->facility_state = IOSTATE_QUEUED;
-            }
-          else
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    // We are queued and should check if the read has finished
-    case IOSTATE_QUEUED:
-    {
-      // there was an operation going on already, check if that has completed now.
-
-      if (GetOverlappedResult(input_facility->handle,
-                              &input_facility->overlapped,
-                              &input_facility->buffer_size,
-                              FALSE))
-        {  /* successful return for a queued operation */
-          if (!ResetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: tap read succeeded delayed\n");
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && 0 < input_facility->buffer_size)
-            {   /* hand over this buffers content and apply message header for gnunet */
-              hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-              size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-              GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer,
-                            input_facility->buffer_size);
-
-              output_facility->buffer_size = size;
-              hdr->size = htons(size);
-              hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (0 < input_facility->buffer_size)
-            {   /* If we have have read our buffer, wait for our write-partner*/
-              input_facility->facility_state = IOSTATE_WAITING;
-              // TODO: shall we attempt to fill our buffer or should we wait for our write-partner to finish?
-            }
-        }
-      else
-        {   /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    case IOSTATE_RESUME:
-      hdr = (struct GNUNET_MessageHeader *)output_facility->buffer;
-      size = input_facility->buffer_size + sizeof(struct GNUNET_MessageHeader);
-
-      GNUNET_memcpy(output_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                    input_facility->buffer,
-                    input_facility->buffer_size);
-
-      output_facility->buffer_size = size;
-      hdr->size = htons(size);
-      hdr->type = htons(GNUNET_MESSAGE_TYPE_VPN_HELPER);
-      output_facility->facility_state = IOSTATE_READY;
-      input_facility->facility_state = IOSTATE_READY;
-      return TRUE;
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Attempts to read off an input facility (tap or named pipe) in overlapped mode.
- *
- * 1.
- * If the input facility is in IOSTATE_READY, it will issue a new read operation to the
- * input handle. Then it goes into IOSTATE_QUEUED state.
- * In case the read succeeded instantly the input facility enters 3.
- *
- * 2.
- * If the input facility is in IOSTATE_QUEUED state, it will check if the queued read has finished already.
- * If it has finished, go to state 3.
- * If it has failed, set IOSTATE_FAILED
- *
- * 3.
- * If the facility is finished with ready
- *   The read-buffer is copied to the output buffer, except for the GNUNET_MessageHeader.
- *   The input facility enters state IOSTATE_READY
- *   The output facility enters state IOSTATE_READY
- * If the output facility is in state IOSTATE_QUEUED, the input facility enters IOSTATE_WAITING
- *
- * IOSTATE_WAITING is reset by the output facility, once it has completed.
- *
- * @param input_facility input named pipe or file to work with.
- * @param output_facility output pipe or file to hand over data to.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_read_stdin(struct io_facility * input_facility,
-                   struct io_facility * output_facility)
-{
-  struct GNUNET_MessageHeader * hdr;
-
-  switch (input_facility->facility_state)
-    {
-    case IOSTATE_READY:
-    {
-      input_facility->buffer_size = 0;
-
-partial_read_iostate_ready:
-      if (!ResetEvent(input_facility->overlapped.hEvent))
-        return FALSE;
-
-      /* Check how the task is handled */
-      if (ReadFile(input_facility->handle,
-                   input_facility->buffer + input_facility->buffer_size,
-                   sizeof(input_facility->buffer) - input_facility->buffer_size,
-                   &input_facility->buffer_size_processed,
-                   &input_facility->overlapped))
-        {  /* async event processed immediately*/
-          hdr = (struct GNUNET_MessageHeader *)input_facility->buffer;
-
-          /* reset event manually*/
-          if (!SetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: stdin read succeeded immediately\n");
-          input_facility->buffer_size += input_facility->buffer_size_processed;
-
-          if (ntohs(hdr->type) != GNUNET_MESSAGE_TYPE_VPN_HELPER ||
-              ntohs(hdr->size) > sizeof(input_facility->buffer))
-            {
-              fprintf(stderr, "WARNING: Protocol violation, got GNUnet Message type %h, size %h\n", ntohs(hdr->type), ntohs(hdr->size));
-              input_facility->facility_state = IOSTATE_READY;
-              return TRUE;
-            }
-          /* we got the a part of a packet */
-          if (ntohs(hdr->size) > input_facility->buffer_size)
-            goto partial_read_iostate_ready;
-
-          /* have we read more than 0 bytes of payload? (sizeread > header)*/
-          if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader) &&
-              ((IOSTATE_READY == output_facility->facility_state) ||
-               (IOSTATE_WAITING == output_facility->facility_state)))
-            {  /* we successfully read something from the TAP and now need to
-                * send it our via STDOUT. Is that possible at the moment? */
-              /* hand over this buffers content and strip gnunet message header */
-              GNUNET_memcpy(output_facility->buffer,
-                            input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-              output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            /* If we have have read our buffer, wait for our write-partner*/
-            input_facility->facility_state = IOSTATE_WAITING;
-          else   /* we read nothing */
-            input_facility->facility_state = IOSTATE_READY;
-        }
-      else   /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)   /* operation queued */
-            input_facility->facility_state = IOSTATE_QUEUED;
-          else
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    // We are queued and should check if the read has finished
-    case IOSTATE_QUEUED:
-    {
-      // there was an operation going on already, check if that has completed now.
-      if (GetOverlappedResult(input_facility->handle,
-                              &input_facility->overlapped,
-                              &input_facility->buffer_size_processed,
-                              FALSE))
-        {  /* successful return for a queued operation */
-          hdr = (struct GNUNET_MessageHeader *)input_facility->buffer;
-
-          if (!ResetEvent(input_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: stdin read succeeded delayed\n");
-          input_facility->buffer_size += input_facility->buffer_size_processed;
-
-          if ((ntohs(hdr->type) != GNUNET_MESSAGE_TYPE_VPN_HELPER) ||
-              (ntohs(hdr->size) > sizeof(input_facility->buffer)))
-            {
-              fprintf(stderr, "WARNING: Protocol violation, got GNUnet Message type %h, size %h\n", ntohs(hdr->type), ntohs(hdr->size));
-              input_facility->facility_state = IOSTATE_READY;
-              return TRUE;
-            }
-          /* we got the a part of a packet */
-          if (ntohs(hdr->size) > input_facility->buffer_size)
-            ;
-          goto partial_read_iostate_ready;
-
-          /* we successfully read something from the TAP and now need to
-           * send it our via STDOUT. Is that possible at the moment? */
-          if ((IOSTATE_READY == output_facility->facility_state ||
-               IOSTATE_WAITING == output_facility->facility_state)
-              && input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            {   /* hand over this buffers content and strip gnunet message header */
-              GNUNET_memcpy(output_facility->buffer,
-                            input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                            input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-              output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-              output_facility->facility_state = IOSTATE_READY;
-              input_facility->facility_state = IOSTATE_READY;
-            }
-          else if (input_facility->buffer_size > sizeof(struct GNUNET_MessageHeader))
-            input_facility->facility_state = IOSTATE_WAITING;
-          else
-            input_facility->facility_state = IOSTATE_READY;
-        }
-      else
-        {   /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            {   /* error occurred, let the rest of the elements finish */
-              input_facility->path_open = FALSE;
-              input_facility->facility_state = IOSTATE_FAILED;
-              if (IOSTATE_WAITING == output_facility->facility_state)
-                output_facility->path_open = FALSE;
-              fprintf(stderr, "FATAL: Read from handle failed, allowing write to finish\n");
-            }
-        }
-    }
-      return TRUE;
-
-    case IOSTATE_RESUME: /* Our buffer was filled already but our write facility was busy. */
-      GNUNET_memcpy(output_facility->buffer,
-                    input_facility->buffer + sizeof(struct GNUNET_MessageHeader),
-                    input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader));
-      output_facility->buffer_size = input_facility->buffer_size - sizeof(struct GNUNET_MessageHeader);
-      output_facility->facility_state = IOSTATE_READY;
-      input_facility->facility_state = IOSTATE_READY;
-      return TRUE;
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Attempts to write to an output facility (tap or named pipe) in overlapped mode.
- *
- * TODO: high level description
- *
- * @param output_facility output pipe or file to hand over data to.
- * @param input_facility input named pipe or file to work with.
- * @return false if an event reset was impossible (OS error), else true
- */
-static BOOL
-attempt_write(struct io_facility * output_facility,
-              struct io_facility * input_facility)
-{
-  switch (output_facility->facility_state)
-    {
-    case IOSTATE_READY:
-      output_facility->buffer_size_written = 0;
-
-continue_partial_write:
-      if (!ResetEvent(output_facility->overlapped.hEvent))
-        return FALSE;
-
-      /* Check how the task was handled */
-      if (WriteFile(output_facility->handle,
-                    output_facility->buffer + output_facility->buffer_size_written,
-                    output_facility->buffer_size - output_facility->buffer_size_written,
-                    &output_facility->buffer_size_processed,
-                    &output_facility->overlapped))
-        {/* async event processed immediately*/
-          fprintf(stderr, "DEBUG: write succeeded immediately\n");
-          output_facility->buffer_size_written += output_facility->buffer_size_processed;
-
-          /* reset event manually*/
-          if (!SetEvent(output_facility->overlapped.hEvent))
-            return FALSE;
-
-          /* partial write */
-          if (output_facility->buffer_size_written < output_facility->buffer_size)
-            goto continue_partial_write;
-
-          /* we are now waiting for our buffer to be filled*/
-          output_facility->facility_state = IOSTATE_WAITING;
-
-          /* we successfully wrote something and now need to reset our reader */
-          if (IOSTATE_WAITING == input_facility->facility_state)
-            input_facility->facility_state = IOSTATE_RESUME;
-          else if (IOSTATE_FAILED == input_facility->facility_state)
-            output_facility->path_open = FALSE;
-        }
-      else /* operation was either queued or failed*/
-        {
-          int err = GetLastError();
-          if (ERROR_IO_PENDING == err)
-            { /* operation queued */
-              output_facility->facility_state = IOSTATE_QUEUED;
-            }
-          else
-            { /* error occurred, close this path */
-              output_facility->path_open = FALSE;
-              output_facility->facility_state = IOSTATE_FAILED;
-              fprintf(stderr, "FATAL: Write to handle failed, exiting\n");
-            }
-        }
-      return TRUE;
-
-    case IOSTATE_QUEUED:
-      // there was an operation going on already, check if that has completed now.
-
-      if (GetOverlappedResult(output_facility->handle,
-                              &output_facility->overlapped,
-                              &output_facility->buffer_size_processed,
-                              FALSE))
-        {/* successful return for a queued operation */
-          if (!ResetEvent(output_facility->overlapped.hEvent))
-            return FALSE;
-
-          fprintf(stderr, "DEBUG: write succeeded delayed\n");
-          output_facility->buffer_size_written += output_facility->buffer_size_processed;
-
-          /* partial write */
-          if (output_facility->buffer_size_written < output_facility->buffer_size)
-            goto continue_partial_write;
-
-          /* we are now waiting for our buffer to be filled*/
-          output_facility->facility_state = IOSTATE_WAITING;
-
-          /* we successfully wrote something and now need to reset our reader */
-          if (IOSTATE_WAITING == input_facility->facility_state)
-            input_facility->facility_state = IOSTATE_RESUME;
-          else if (IOSTATE_FAILED == input_facility->facility_state)
-            output_facility->path_open = FALSE;
-        }
-      else
-        { /* operation still pending/queued or failed? */
-          int err = GetLastError();
-          if ((ERROR_IO_INCOMPLETE != err) && (ERROR_IO_PENDING != err))
-            { /* error occurred, close this path */
-              output_facility->path_open = FALSE;
-              output_facility->facility_state = IOSTATE_FAILED;
-              fprintf(stderr, "FATAL: Write to handle failed, exiting\n");
-            }
-        }
-
-    default:
-      return TRUE;
-    }
-}
-
-
-/**
- * Initialize a overlapped structure
- *
- * @param elem the element to initilize
- * @param initial_state the initial state for this instance
- * @param signaled if the hEvent created should default to signaled or not
- * @return true on success, else false
- */
-static BOOL
-initialize_io_facility(struct io_facility * elem,
-                       int initial_state,
-                       BOOL signaled)
-{
-  elem->path_open = TRUE;
-  elem->handle = INVALID_HANDLE_VALUE;
-  elem->facility_state = initial_state;
-  elem->buffer_size = 0;
-  elem->overlapped.hEvent = CreateEvent(NULL, TRUE, signaled, NULL);
-  if (NULL == elem->overlapped.hEvent)
-    return FALSE;
-
-  return TRUE;
-}
-
-
-/**
- * Start forwarding to and from the tunnel.
- *
- * @param tap_handle device handle for interacting with the Virtual interface
- */
-static void
-run(HANDLE tap_handle)
-{
-  /* IO-Facility for reading from our virtual interface */
-  struct io_facility tap_read;
-  /* IO-Facility for writing to our virtual interface */
-  struct io_facility tap_write;
-  /* IO-Facility for reading from stdin */
-  struct io_facility std_in;
-  /* IO-Facility for writing to stdout */
-  struct io_facility std_out;
-
-  HANDLE parent_std_in_handle = GetStdHandle(STD_INPUT_HANDLE);
-  HANDLE parent_std_out_handle = GetStdHandle(STD_OUTPUT_HANDLE);
-
-  /* tun up: */
-  /* we do this HERE and not beforehand (in init_tun()), in contrast to openvpn
-   * to remove the need to flush the arp cache, handle DHCP and wrong IPs.
-   *
-   * DHCP and such are all features we will never use in gnunet afaik.
-   * But for openvpn those are essential.
-   */
-  if ((privilege_testing) || (!tun_up(tap_handle)))
-    goto teardown_final;
-
-  /* Initialize our overlapped IO structures*/
-  if (!(initialize_io_facility(&tap_read, IOSTATE_READY, FALSE)
-        && initialize_io_facility(&tap_write, IOSTATE_WAITING, TRUE)
-        && initialize_io_facility(&std_in, IOSTATE_READY, FALSE)
-        && initialize_io_facility(&std_out, IOSTATE_WAITING, TRUE)))
-    goto teardown_final;
-
-  /* Handles for STDIN and STDOUT */
-  tap_read.handle = tap_handle;
-  tap_write.handle = tap_handle;
-
-#ifdef DEBUG_TO_CONSOLE
-  /* Debug output to console STDIN/STDOUT*/
-  std_in.handle = parent_std_in_handle;
-  std_out.handle = parent_std_out_handle;
-#else
-  fprintf(stderr, "DEBUG: reopening stdin/out for overlapped IO\n");
-  /*
-   * Find out the types of our handles.
-   * This part is a problem, because in windows we need to handle files,
-   * pipes and the console differently.
-   */
-  if ((FILE_TYPE_PIPE != GetFileType(parent_std_in_handle)) ||
-      (FILE_TYPE_PIPE != GetFileType(parent_std_out_handle)))
-    {
-      fprintf(stderr, "ERROR: stdin/stdout must be named pipes\n");
-      goto teardown;
-    }
-
-  std_in.handle = ReOpenFile(parent_std_in_handle,
-                             GENERIC_READ,
-                             FILE_SHARE_WRITE | FILE_SHARE_READ,
-                             FILE_FLAG_OVERLAPPED);
-
-  if (INVALID_HANDLE_VALUE == std_in.handle)
-    {
-      fprintf(stderr, "FATAL: Could not reopen stdin for in overlapped mode, has to be a named pipe\n");
-      goto teardown;
-    }
-
-  std_out.handle = ReOpenFile(parent_std_out_handle,
-                              GENERIC_WRITE,
-                              FILE_SHARE_READ,
-                              FILE_FLAG_OVERLAPPED);
-
-  if (INVALID_HANDLE_VALUE == std_out.handle)
-    {
-      fprintf(stderr, "FATAL: Could not reopen stdout for in overlapped mode, has to be a named pipe\n");
-      goto teardown;
-    }
-#endif
-
-  fprintf(stderr, "DEBUG: mainloop has begun\n");
-
-  while (std_out.path_open || tap_write.path_open)
-    {
-      /* perform READ from stdin if possible */
-      if (std_in.path_open && (!attempt_read_stdin(&std_in, &tap_write)))
-        break;
-
-      /* perform READ from tap if possible */
-      if (tap_read.path_open && (!attempt_read_tap(&tap_read, &std_out)))
-        break;
-
-      /* perform WRITE to tap if possible */
-      if (tap_write.path_open && (!attempt_write(&tap_write, &std_in)))
-        break;
-
-      /* perform WRITE to STDOUT if possible */
-      if (std_out.path_open && (!attempt_write(&std_out, &tap_read)))
-        break;
-    }
-
-  fprintf(stderr, "DEBUG: teardown initiated\n");
-teardown:
-  CancelIo(tap_handle);
-  CancelIo(std_in.handle);
-  CancelIo(std_out.handle);
-teardown_final:
-  CloseHandle(tap_handle);
-}
-
-
-/**
- * Open VPN tunnel interface.
- *
- * @param argc must be 6
- * @param argv 0: binary name (gnunet-helper-vpn)
- *             [1: dryrun/testrun (does not execute mainloop)]
- *             2: tunnel interface prefix (gnunet-vpn)
- *             3: IPv6 address (::1), "-" to disable
- *             4: IPv6 netmask length in bits (64), ignored if #2 is "-"
- *             5: IPv4 address (1.2.3.4), "-" to disable
- *             6: IPv4 netmask (255.255.0.0), ignored if #4 is "-"
- */
-int
-main(int argc, char **argv)
-{
-  char hwid[LINE_LEN];
-  HANDLE handle;
-  int global_ret = 0;
-  BOOL have_ip4 = FALSE;
-  BOOL have_ip6 = FALSE;
-
-  if (argc > 1 && 0 == strcmp(argv[1], "-d"))
-    {
-      privilege_testing = TRUE;
-      fprintf(stderr,
-              "%s",
-              "DEBUG: Running binary in privilege testing mode.");
-      argv++;
-      argc--;
-    }
-
-  if (6 != argc)
-    {
-      fprintf(stderr,
-              "%s",
-              "FATAL: must supply 5 arguments\nUsage:\ngnunet-helper-vpn [-d] <if name prefix> <address6 or \"-\"> <netbits6> <address4 or \"-\"> <netmask4>\n");
-      return 1;
-    }
-
-  GNUNET_strlcpy(hwid, argv[1], sizeof(hwid));
-
-  /*
-   * We use our PID for finding/resolving the control-panel name of our virtual
-   * device. PIDs are (of course) unique at runtime, thus we can safely use it
-   * as additional hardware-id for our device.
-   */
-  snprintf(secondary_hwid, LINE_LEN / 2, "%s-%d",
-           hwid,
-           _getpid());
-
-  if (INVALID_HANDLE_VALUE == (handle = init_tun()))
-    {
-      fprintf(stderr, "FATAL: could not initialize virtual-interface %s with IPv6 %s/%s and IPv4 %s/%s\n",
-              hwid,
-              argv[2],
-              argv[3],
-              argv[4],
-              argv[5]);
-      global_ret = -1;
-      goto cleanup;
-    }
-
-  fprintf(stderr, "DEBUG: Setting IPs, if needed\n");
-  if (0 != strcmp(argv[2], "-"))
-    {
-      const char *address = argv[2];
-      long prefix_len = atol(argv[3]);
-
-      if ((prefix_len < 1) || (prefix_len > 127))
-        {
-          fprintf(stderr, "FATAL: ipv6 prefix_len out of range\n");
-          global_ret = -1;
-          goto cleanup;
-        }
-
-      fprintf(stderr, "DEBUG: Setting IP6 address: %s/%d\n", address, prefix_len);
-      if (0 != (global_ret = set_address6(address, prefix_len)))
-        goto cleanup;
-
-      have_ip6 = TRUE;
-    }
-
-  if (0 != strcmp(argv[4], "-"))
-    {
-      const char *address = argv[4];
-      const char *mask = argv[5];
-
-      fprintf(stderr, "DEBUG: Setting IP4 address: %s/%s\n", address, mask);
-      if (0 != (global_ret = set_address4(address, mask)))
-        goto cleanup;
-
-      have_ip4 = TRUE;
-    }
-
-  run(handle);
-cleanup:
-
-  if (have_ip4)
-    {
-      const char *address = argv[4];
-      fprintf(stderr, "DEBUG: Removing IP4 address\n");
-      remove_address4(address);
-    }
-  if (have_ip6)
-    {
-      const char *address = argv[2];
-      fprintf(stderr, "DEBUG: Removing IP6 address\n");
-      remove_address6(address);
-    }
-
-  fprintf(stderr, "DEBUG: removing interface\n");
-  remove_interface();
-  fprintf(stderr, "DEBUG: graceful exit completed\n");
-
-  return global_ret;
-}
index b655b9ef366ecdf7afa340d08678cdb333df0142..3d248efd8bfd221e39b797bbaf4b6472a6f49d8e 100644 (file)
@@ -10,10 +10,6 @@ libexecdir= $(pkglibdir)/libexec/
 pkgcfg_DATA = \
    zonemaster.conf
 
-if MINGW
-  WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
-endif
-
 if USE_COVERAGE
   AM_CFLAGS = --coverage -O0
   XLIBS = -lgcov