aboutsummaryrefslogtreecommitdiff
path: root/src/multicast
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-08-30 13:45:14 +0000
committerChristian Grothoff <christian@grothoff.org>2013-08-30 13:45:14 +0000
commit18750698424125b71e5c46e9c4b54fbe0ccce51c (patch)
tree8980c1b1d4291bc03a0f471c1f1f9ae2cadd595b /src/multicast
parent3df2832fdf4bd38c1c766fe1b3f2a97c9fe1fe4d (diff)
downloadgnunet-18750698424125b71e5c46e9c4b54fbe0ccce51c.tar.gz
gnunet-18750698424125b71e5c46e9c4b54fbe0ccce51c.zip
-harness for multicast
Diffstat (limited to 'src/multicast')
-rw-r--r--src/multicast/Makefile923
-rw-r--r--src/multicast/Makefile.am61
-rw-r--r--src/multicast/Makefile.in923
-rw-r--r--src/multicast/gnunet-multicast.c76
-rw-r--r--src/multicast/gnunet-service-multicast.c80
-rw-r--r--src/multicast/multicast.conf.in20
-rw-r--r--src/multicast/multicast_api.c554
-rw-r--r--src/multicast/test_multicast_api.c44
8 files changed, 2681 insertions, 0 deletions
diff --git a/src/multicast/Makefile b/src/multicast/Makefile
new file mode 100644
index 000000000..2949b37c4
--- /dev/null
+++ b/src/multicast/Makefile
@@ -0,0 +1,923 @@
1# Makefile.in generated by automake 1.11.6 from Makefile.am.
2# src/template/Makefile. Generated from Makefile.in by configure.
3
4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
6# Foundation, Inc.
7# This Makefile.in is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it,
9# with or without modifications, as long as this notice is preserved.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14# PARTICULAR PURPOSE.
15
16
17
18
19
20am__make_dryrun = \
21 { \
22 am__dry=no; \
23 case $$MAKEFLAGS in \
24 *\\[\ \ ]*) \
25 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
26 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
27 *) \
28 for am__flg in $$MAKEFLAGS; do \
29 case $$am__flg in \
30 *=*|--*) ;; \
31 *n*) am__dry=yes; break;; \
32 esac; \
33 done;; \
34 esac; \
35 test $$am__dry = yes; \
36 }
37pkgdatadir = $(datadir)/gnunet
38pkgincludedir = $(includedir)/gnunet
39pkglibdir = $(libdir)/gnunet
40pkglibexecdir = $(libexecdir)/gnunet
41am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
42install_sh_DATA = $(install_sh) -c -m 644
43install_sh_PROGRAM = $(install_sh) -c
44install_sh_SCRIPT = $(install_sh) -c
45INSTALL_HEADER = $(INSTALL_DATA)
46transform = $(program_transform_name)
47NORMAL_INSTALL = :
48PRE_INSTALL = :
49POST_INSTALL = :
50NORMAL_UNINSTALL = :
51PRE_UNINSTALL = :
52POST_UNINSTALL = :
53build_triplet = x86_64-unknown-linux-gnu
54host_triplet = x86_64-unknown-linux-gnu
55target_triplet = x86_64-unknown-linux-gnu
56bin_PROGRAMS = gnunet-template$(EXEEXT)
57libexec_PROGRAMS = gnunet-service-template$(EXEEXT)
58check_PROGRAMS = test_template_api$(EXEEXT)
59subdir = src/template
60DIST_COMMON = $(dist_pkgcfg_DATA) $(srcdir)/Makefile.am \
61 $(srcdir)/Makefile.in
62ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
63am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
64 $(top_srcdir)/m4/align.m4 $(top_srcdir)/m4/argz.m4 \
65 $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
66 $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
67 $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libcurl.m4 \
68 $(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
69 $(top_srcdir)/m4/libunistring.m4 $(top_srcdir)/m4/ltdl.m4 \
70 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
71 $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
72 $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
73 $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \
74 $(top_srcdir)/configure.ac
75am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
76 $(ACLOCAL_M4)
77mkinstalldirs = $(install_sh) -d
78CONFIG_HEADER = $(top_builddir)/gnunet_config.h
79CONFIG_CLEAN_FILES =
80CONFIG_CLEAN_VPATH_FILES =
81am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
82 "$(DESTDIR)$(pkgcfgdir)"
83PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
84am_gnunet_service_template_OBJECTS = \
85 gnunet-service-template.$(OBJEXT)
86gnunet_service_template_OBJECTS = \
87 $(am_gnunet_service_template_OBJECTS)
88am__DEPENDENCIES_1 =
89gnunet_service_template_DEPENDENCIES = \
90 $(top_builddir)/src/util/libgnunetutil.la \
91 $(am__DEPENDENCIES_1)
92AM_V_lt = $(am__v_lt_$(V))
93am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
94am__v_lt_0 = --silent
95am_gnunet_template_OBJECTS = gnunet-template.$(OBJEXT)
96gnunet_template_OBJECTS = $(am_gnunet_template_OBJECTS)
97gnunet_template_DEPENDENCIES = \
98 $(top_builddir)/src/util/libgnunetutil.la \
99 $(am__DEPENDENCIES_1)
100am_test_template_api_OBJECTS = test_template_api.$(OBJEXT)
101test_template_api_OBJECTS = $(am_test_template_api_OBJECTS)
102test_template_api_DEPENDENCIES = \
103 $(top_builddir)/src/util/libgnunetutil.la
104DEFAULT_INCLUDES = -I. -I$(top_builddir)
105depcomp = $(SHELL) $(top_srcdir)/depcomp
106am__depfiles_maybe = depfiles
107am__mv = mv -f
108COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
109 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
110LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
111 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
112 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
113 $(AM_CFLAGS) $(CFLAGS)
114AM_V_CC = $(am__v_CC_$(V))
115am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
116am__v_CC_0 = @echo " CC " $@;
117AM_V_at = $(am__v_at_$(V))
118am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
119am__v_at_0 = @
120CCLD = $(CC)
121LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
122 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
123 $(AM_LDFLAGS) $(LDFLAGS) -o $@
124AM_V_CCLD = $(am__v_CCLD_$(V))
125am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
126am__v_CCLD_0 = @echo " CCLD " $@;
127AM_V_GEN = $(am__v_GEN_$(V))
128am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
129am__v_GEN_0 = @echo " GEN " $@;
130SOURCES = $(gnunet_service_template_SOURCES) \
131 $(gnunet_template_SOURCES) $(test_template_api_SOURCES)
132DIST_SOURCES = $(gnunet_service_template_SOURCES) \
133 $(gnunet_template_SOURCES) $(test_template_api_SOURCES)
134am__can_run_installinfo = \
135 case $$AM_UPDATE_INFO_DIR in \
136 n|no|NO) false;; \
137 *) (install-info --version) >/dev/null 2>&1;; \
138 esac
139am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
140am__vpath_adj = case $$p in \
141 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
142 *) f=$$p;; \
143 esac;
144am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
145am__install_max = 40
146am__nobase_strip_setup = \
147 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
148am__nobase_strip = \
149 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
150am__nobase_list = $(am__nobase_strip_setup); \
151 for p in $$list; do echo "$$p $$p"; done | \
152 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
153 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
154 if (++n[$$2] == $(am__install_max)) \
155 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
156 END { for (dir in files) print dir, files[dir] }'
157am__base_list = \
158 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
159 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
160am__uninstall_files_from_dir = { \
161 test -z "$$files" \
162 || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
163 || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
164 $(am__cd) "$$dir" && rm -f $$files; }; \
165 }
166DATA = $(dist_pkgcfg_DATA)
167ETAGS = etags
168CTAGS = ctags
169am__tty_colors = \
170red=; grn=; lgn=; blu=; std=
171DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
172ACLOCAL = ${SHELL} /home/grothoff/svn/gnunet/missing --run aclocal-1.11
173AMTAR = $${TAR-tar}
174AM_DEFAULT_VERBOSITY = 0
175AR = ar
176ARGZ_H =
177AS = as
178AUTOCONF = ${SHELL} /home/grothoff/svn/gnunet/missing --run autoconf
179AUTOHEADER = ${SHELL} /home/grothoff/svn/gnunet/missing --run autoheader
180AUTOMAKE = ${SHELL} /home/grothoff/svn/gnunet/missing --run automake-1.11
181AWK = gawk
182CC = gcc
183CCDEPMODE = depmode=gcc3
184CFLAGS = -fno-strict-aliasing -Wall -g -O0 -Wall -I/home/grothoff/include
185CPP = gcc -E
186CPPFLAGS = -I/home/grothoff//include -I/home/grothoff//include
187CXX = g++
188CXXCPP = g++ -E
189CXXDEPMODE = depmode=gcc3
190CXXFLAGS = -g -O0 -Wall
191CYGPATH_W = echo
192DEFAULT_INTERFACE = "eth0"
193DEFS = -DHAVE_CONFIG_H
194DEPDIR = .deps
195DLLDIR = lib
196DLLTOOL = false
197DSYMUTIL =
198DUMPBIN =
199ECHO_C =
200ECHO_N = -n
201ECHO_T =
202EGREP = /bin/grep -E
203EXEEXT =
204EXT_LIBS =
205EXT_LIB_PATH = -L/home/grothoff//lib -L/home/grothoff//lib
206FGREP = /bin/grep -F
207GMSGFMT = /usr/bin/msgfmt
208GMSGFMT_015 = /usr/bin/msgfmt
209GNUNETDNS_GROUP = gnunetdns
210GN_DAEMON_CONFIG_DIR = /etc
211GN_DAEMON_HOME_DIR = /var/lib/gnunet
212GN_INTLINCL =
213GN_LIBINTL =
214GN_LIB_LDFLAGS = -export-dynamic -no-undefined
215GN_PLUGIN_LDFLAGS = -export-dynamic -avoid-version -module -no-undefined
216GN_USER_HOME_DIR = ~/.gnunet
217GREP = /bin/grep
218HAVE_LIBUNISTRING = yes
219INCLTDL =
220INSTALL = /usr/bin/install -c
221INSTALL_DATA = ${INSTALL} -m 644
222INSTALL_PROGRAM = ${INSTALL}
223INSTALL_SCRIPT = ${INSTALL}
224INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
225INTLLIBS =
226INTL_MACOSX_LIBS =
227JAVAPORT = #
228LD = /usr/bin/ld -m elf_x86_64
229LDFLAGS = -L/home/grothoff//lib -L/home/grothoff//lib
230LIBADD_DL = -ldl
231LIBADD_DLD_LINK =
232LIBADD_DLOPEN = -ldl
233LIBADD_SHL_LOAD =
234LIBCURL = -L/home/grothoff/lib -lcurl -L/usr/lib
235LIBCURL_CPPFLAGS = -I/home/grothoff/include
236LIBGCRYPT_CFLAGS = -I/home/grothoff/include
237LIBGCRYPT_CONFIG = /home/grothoff/bin//libgcrypt-config
238LIBGCRYPT_LIBS = -L/home/grothoff/lib -lgcrypt -lgpg-error
239LIBICONV =
240LIBINTL =
241LIBLTDL = -lltdl
242LIBOBJS =
243LIBPREFIX =
244LIBS = -lm -ldl
245LIBTOOL = $(SHELL) $(top_builddir)/libtool
246LIBUNISTRING = -lunistring
247LIPO =
248LN_S = ln -s
249LTDLDEPS =
250LTDLINCL =
251LTDLOPEN = libltdl
252LTLIBICONV =
253LTLIBINTL =
254LTLIBOBJS =
255LTLIBUNISTRING = -lunistring
256LT_CONFIG_H = gnunet_config.h
257LT_DLLOADERS = libltdl/dlopen.la
258LT_DLPREOPEN = -dlpreopen libltdl/dlopen.la
259MAKEINFO = ${SHELL} /home/grothoff/svn/gnunet/missing --run makeinfo
260MANIFEST_TOOL = :
261MKDIR_P = /bin/mkdir -p
262MONKEYPREFIX =
263MSGFMT = /usr/bin/msgfmt
264MSGFMT_015 = /usr/bin/msgfmt
265MSGMERGE = /usr/bin/msgmerge
266MYSQL_CPPFLAGS =
267MYSQL_LDFLAGS = -L/usr/lib/mysql
268NM = /usr/bin/nm -B
269NMEDIT =
270NSS_DIR =
271OBJC = gcc
272OBJCDEPMODE = depmode=gcc3
273OBJCFLAGS =
274OBJDUMP = objdump
275OBJEXT = o
276OTOOL =
277OTOOL64 =
278PACKAGE = gnunet
279PACKAGE_BUGREPORT = bug-gnunet@gnu.org
280PACKAGE_NAME = gnunet
281PACKAGE_STRING = gnunet 0.9.5a
282PACKAGE_TARNAME = gnunet
283PACKAGE_URL =
284PACKAGE_VERSION = 0.9.5a
285PATH_SEPARATOR = :
286POSTGRES_CPPFLAGS =
287POSTGRES_LDFLAGS =
288POSUB = po
289PYTHON = /usr/bin/python
290PYTHON_EXEC_PREFIX = ${exec_prefix}
291PYTHON_PLATFORM = linux2
292PYTHON_PREFIX = ${prefix}
293PYTHON_VERSION = 2.7
294RANLIB = ranlib
295SED = /bin/sed
296SET_MAKE =
297SHELL = /bin/bash
298SQLITE_CPPFLAGS =
299SQLITE_LDFLAGS =
300STRIP = strip
301SUDO_BINARY =
302UNIXONLY = #
303USE_NLS = yes
304VERSION = 0.9.5a
305XGETTEXT = /usr/bin/xgettext
306XGETTEXT_015 = /usr/bin/xgettext
307XMKMF =
308X_CFLAGS =
309X_EXTRA_LIBS =
310X_LIBS =
311X_PRE_LIBS = -lSM -lICE
312Z_CFLAGS =
313Z_LIBS = -lz
314_libcurl_config =
315abs_builddir = /home/grothoff/svn/gnunet/src/template
316abs_srcdir = /home/grothoff/svn/gnunet/src/template
317abs_top_builddir = /home/grothoff/svn/gnunet
318abs_top_srcdir = /home/grothoff/svn/gnunet
319ac_ct_AR = ar
320ac_ct_CC = gcc
321ac_ct_CXX = g++
322ac_ct_DUMPBIN =
323ac_ct_OBJC = gcc
324am__include = include
325am__leading_dot = .
326am__quote =
327am__tar = $${TAR-tar} chof - "$$tardir"
328am__untar = $${TAR-tar} xf -
329bindir = ${exec_prefix}/bin
330build = x86_64-unknown-linux-gnu
331build_alias =
332build_cpu = x86_64
333build_os = linux-gnu
334build_target = linux
335build_vendor = unknown
336builddir = .
337datadir = ${datarootdir}
338datarootdir = ${prefix}/share
339docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
340dvidir = ${docdir}
341exec_prefix = ${prefix}
342gitcommand = /usr/bin/git
343host = x86_64-unknown-linux-gnu
344host_alias =
345host_cpu = x86_64
346host_os = linux-gnu
347host_vendor = unknown
348htmldir = ${docdir}
349includedir = ${prefix}/include
350infodir = ${datarootdir}/info
351install_sh = ${SHELL} /home/grothoff/svn/gnunet/install-sh
352libdir = ${exec_prefix}/lib
353libexecdir = $(pkglibdir)/libexec/
354localedir = ${datarootdir}/locale
355localstatedir = ${prefix}/var
356ltdl_LIBOBJS = lt__strl.o
357ltdl_LTLIBOBJS = lt__strl.lo
358mandir = ${datarootdir}/man
359mkdir_p = /bin/mkdir -p
360oldincludedir = /usr/include
361pdfdir = ${docdir}
362pkgpyexecdir = ${pyexecdir}/gnunet
363pkgpythondir = ${pythondir}/gnunet
364prefix = /home/grothoff
365program_transform_name = s,x,x,
366psdir = ${docdir}
367pyexecdir = ${exec_prefix}/lib/python2.7/site-packages
368pythondir = ${prefix}/lib/python2.7/site-packages
369sbindir = ${exec_prefix}/sbin
370sharedstatedir = ${prefix}/com
371srcdir = .
372subdirs = libltdl
373svnversioncommand = /usr/bin/svnversion
374sys_symbol_underscore = no
375sysconfdir = ${prefix}/etc
376target = x86_64-unknown-linux-gnu
377target_alias =
378target_cpu = x86_64
379target_os = linux-gnu
380target_vendor = unknown
381top_build_prefix = ../../
382top_builddir = ../..
383top_srcdir = ../..
384INCLUDES = -I$(top_srcdir)/src/include
385pkgcfgdir = $(pkgdatadir)/config.d/
386dist_pkgcfg_DATA = \
387 template.conf
388
389#WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
390#AM_CFLAGS = -fprofile-arcs -ftest-coverage
391gnunet_template_SOURCES = \
392 gnunet-template.c
393
394gnunet_template_LDADD = \
395 $(top_builddir)/src/util/libgnunetutil.la \
396 $(GN_LIBINTL)
397
398gnunet_service_template_SOURCES = \
399 gnunet-service-template.c
400
401gnunet_service_template_LDADD = \
402 $(top_builddir)/src/util/libgnunetutil.la \
403 $(GN_LIBINTL)
404
405TESTS = $(check_PROGRAMS)
406test_template_api_SOURCES = \
407 test_template_api.c
408
409test_template_api_LDADD = \
410 $(top_builddir)/src/util/libgnunetutil.la
411
412all: all-am
413
414.SUFFIXES:
415.SUFFIXES: .c .lo .o .obj
416$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
417 @for dep in $?; do \
418 case '$(am__configure_deps)' in \
419 *$$dep*) \
420 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
421 && { if test -f $@; then exit 0; else break; fi; }; \
422 exit 1;; \
423 esac; \
424 done; \
425 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/template/Makefile'; \
426 $(am__cd) $(top_srcdir) && \
427 $(AUTOMAKE) --gnu src/template/Makefile
428.PRECIOUS: Makefile
429Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
430 @case '$?' in \
431 *config.status*) \
432 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
433 *) \
434 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
435 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
436 esac;
437
438$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
439 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
440
441$(top_srcdir)/configure: $(am__configure_deps)
442 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
443$(ACLOCAL_M4): $(am__aclocal_m4_deps)
444 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
445$(am__aclocal_m4_deps):
446install-binPROGRAMS: $(bin_PROGRAMS)
447 @$(NORMAL_INSTALL)
448 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
449 if test -n "$$list"; then \
450 echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
451 $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
452 fi; \
453 for p in $$list; do echo "$$p $$p"; done | \
454 sed 's/$(EXEEXT)$$//' | \
455 while read p p1; do if test -f $$p || test -f $$p1; \
456 then echo "$$p"; echo "$$p"; else :; fi; \
457 done | \
458 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
459 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
460 sed 'N;N;N;s,\n, ,g' | \
461 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
462 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
463 if ($$2 == $$4) files[d] = files[d] " " $$1; \
464 else { print "f", $$3 "/" $$4, $$1; } } \
465 END { for (d in files) print "f", d, files[d] }' | \
466 while read type dir files; do \
467 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
468 test -z "$$files" || { \
469 echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
470 $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
471 } \
472 ; done
473
474uninstall-binPROGRAMS:
475 @$(NORMAL_UNINSTALL)
476 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
477 files=`for p in $$list; do echo "$$p"; done | \
478 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
479 -e 's/$$/$(EXEEXT)/' `; \
480 test -n "$$list" || exit 0; \
481 echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
482 cd "$(DESTDIR)$(bindir)" && rm -f $$files
483
484clean-binPROGRAMS:
485 @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
486 echo " rm -f" $$list; \
487 rm -f $$list || exit $$?; \
488 test -n "$(EXEEXT)" || exit 0; \
489 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
490 echo " rm -f" $$list; \
491 rm -f $$list
492
493clean-checkPROGRAMS:
494 @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
495 echo " rm -f" $$list; \
496 rm -f $$list || exit $$?; \
497 test -n "$(EXEEXT)" || exit 0; \
498 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
499 echo " rm -f" $$list; \
500 rm -f $$list
501install-libexecPROGRAMS: $(libexec_PROGRAMS)
502 @$(NORMAL_INSTALL)
503 @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
504 if test -n "$$list"; then \
505 echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
506 $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
507 fi; \
508 for p in $$list; do echo "$$p $$p"; done | \
509 sed 's/$(EXEEXT)$$//' | \
510 while read p p1; do if test -f $$p || test -f $$p1; \
511 then echo "$$p"; echo "$$p"; else :; fi; \
512 done | \
513 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
514 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
515 sed 'N;N;N;s,\n, ,g' | \
516 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
517 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
518 if ($$2 == $$4) files[d] = files[d] " " $$1; \
519 else { print "f", $$3 "/" $$4, $$1; } } \
520 END { for (d in files) print "f", d, files[d] }' | \
521 while read type dir files; do \
522 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
523 test -z "$$files" || { \
524 echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \
525 $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \
526 } \
527 ; done
528
529uninstall-libexecPROGRAMS:
530 @$(NORMAL_UNINSTALL)
531 @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
532 files=`for p in $$list; do echo "$$p"; done | \
533 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
534 -e 's/$$/$(EXEEXT)/' `; \
535 test -n "$$list" || exit 0; \
536 echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
537 cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
538
539clean-libexecPROGRAMS:
540 @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \
541 echo " rm -f" $$list; \
542 rm -f $$list || exit $$?; \
543 test -n "$(EXEEXT)" || exit 0; \
544 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
545 echo " rm -f" $$list; \
546 rm -f $$list
547gnunet-service-template$(EXEEXT): $(gnunet_service_template_OBJECTS) $(gnunet_service_template_DEPENDENCIES) $(EXTRA_gnunet_service_template_DEPENDENCIES)
548 @rm -f gnunet-service-template$(EXEEXT)
549 $(AM_V_CCLD)$(LINK) $(gnunet_service_template_OBJECTS) $(gnunet_service_template_LDADD) $(LIBS)
550gnunet-template$(EXEEXT): $(gnunet_template_OBJECTS) $(gnunet_template_DEPENDENCIES) $(EXTRA_gnunet_template_DEPENDENCIES)
551 @rm -f gnunet-template$(EXEEXT)
552 $(AM_V_CCLD)$(LINK) $(gnunet_template_OBJECTS) $(gnunet_template_LDADD) $(LIBS)
553test_template_api$(EXEEXT): $(test_template_api_OBJECTS) $(test_template_api_DEPENDENCIES) $(EXTRA_test_template_api_DEPENDENCIES)
554 @rm -f test_template_api$(EXEEXT)
555 $(AM_V_CCLD)$(LINK) $(test_template_api_OBJECTS) $(test_template_api_LDADD) $(LIBS)
556
557mostlyclean-compile:
558 -rm -f *.$(OBJEXT)
559
560distclean-compile:
561 -rm -f *.tab.c
562
563include ./$(DEPDIR)/gnunet-service-template.Po
564include ./$(DEPDIR)/gnunet-template.Po
565include ./$(DEPDIR)/test_template_api.Po
566
567.c.o:
568 $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
569 $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
570# $(AM_V_CC)source='$<' object='$@' libtool=no \
571# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
572# $(AM_V_CC_no)$(COMPILE) -c $<
573
574.c.obj:
575 $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
576 $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
577# $(AM_V_CC)source='$<' object='$@' libtool=no \
578# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
579# $(AM_V_CC_no)$(COMPILE) -c `$(CYGPATH_W) '$<'`
580
581.c.lo:
582 $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
583 $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
584# $(AM_V_CC)source='$<' object='$@' libtool=yes \
585# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
586# $(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
587
588mostlyclean-libtool:
589 -rm -f *.lo
590
591clean-libtool:
592 -rm -rf .libs _libs
593install-dist_pkgcfgDATA: $(dist_pkgcfg_DATA)
594 @$(NORMAL_INSTALL)
595 @list='$(dist_pkgcfg_DATA)'; test -n "$(pkgcfgdir)" || list=; \
596 if test -n "$$list"; then \
597 echo " $(MKDIR_P) '$(DESTDIR)$(pkgcfgdir)'"; \
598 $(MKDIR_P) "$(DESTDIR)$(pkgcfgdir)" || exit 1; \
599 fi; \
600 for p in $$list; do \
601 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
602 echo "$$d$$p"; \
603 done | $(am__base_list) | \
604 while read files; do \
605 echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgcfgdir)'"; \
606 $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgcfgdir)" || exit $$?; \
607 done
608
609uninstall-dist_pkgcfgDATA:
610 @$(NORMAL_UNINSTALL)
611 @list='$(dist_pkgcfg_DATA)'; test -n "$(pkgcfgdir)" || list=; \
612 files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
613 dir='$(DESTDIR)$(pkgcfgdir)'; $(am__uninstall_files_from_dir)
614
615ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
616 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
617 unique=`for i in $$list; do \
618 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
619 done | \
620 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
621 END { if (nonempty) { for (i in files) print i; }; }'`; \
622 mkid -fID $$unique
623tags: TAGS
624
625TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
626 $(TAGS_FILES) $(LISP)
627 set x; \
628 here=`pwd`; \
629 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
630 unique=`for i in $$list; do \
631 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
632 done | \
633 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
634 END { if (nonempty) { for (i in files) print i; }; }'`; \
635 shift; \
636 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
637 test -n "$$unique" || unique=$$empty_fix; \
638 if test $$# -gt 0; then \
639 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
640 "$$@" $$unique; \
641 else \
642 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
643 $$unique; \
644 fi; \
645 fi
646ctags: CTAGS
647CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
648 $(TAGS_FILES) $(LISP)
649 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
650 unique=`for i in $$list; do \
651 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
652 done | \
653 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
654 END { if (nonempty) { for (i in files) print i; }; }'`; \
655 test -z "$(CTAGS_ARGS)$$unique" \
656 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
657 $$unique
658
659GTAGS:
660 here=`$(am__cd) $(top_builddir) && pwd` \
661 && $(am__cd) $(top_srcdir) \
662 && gtags -i $(GTAGS_ARGS) "$$here"
663
664distclean-tags:
665 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
666
667check-TESTS: $(TESTS)
668 @failed=0; all=0; xfail=0; xpass=0; skip=0; \
669 srcdir=$(srcdir); export srcdir; \
670 list=' $(TESTS) '; \
671 $(am__tty_colors); \
672 if test -n "$$list"; then \
673 for tst in $$list; do \
674 if test -f ./$$tst; then dir=./; \
675 elif test -f $$tst; then dir=; \
676 else dir="$(srcdir)/"; fi; \
677 if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
678 all=`expr $$all + 1`; \
679 case " $(XFAIL_TESTS) " in \
680 *[\ \ ]$$tst[\ \ ]*) \
681 xpass=`expr $$xpass + 1`; \
682 failed=`expr $$failed + 1`; \
683 col=$$red; res=XPASS; \
684 ;; \
685 *) \
686 col=$$grn; res=PASS; \
687 ;; \
688 esac; \
689 elif test $$? -ne 77; then \
690 all=`expr $$all + 1`; \
691 case " $(XFAIL_TESTS) " in \
692 *[\ \ ]$$tst[\ \ ]*) \
693 xfail=`expr $$xfail + 1`; \
694 col=$$lgn; res=XFAIL; \
695 ;; \
696 *) \
697 failed=`expr $$failed + 1`; \
698 col=$$red; res=FAIL; \
699 ;; \
700 esac; \
701 else \
702 skip=`expr $$skip + 1`; \
703 col=$$blu; res=SKIP; \
704 fi; \
705 echo "$${col}$$res$${std}: $$tst"; \
706 done; \
707 if test "$$all" -eq 1; then \
708 tests="test"; \
709 All=""; \
710 else \
711 tests="tests"; \
712 All="All "; \
713 fi; \
714 if test "$$failed" -eq 0; then \
715 if test "$$xfail" -eq 0; then \
716 banner="$$All$$all $$tests passed"; \
717 else \
718 if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
719 banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
720 fi; \
721 else \
722 if test "$$xpass" -eq 0; then \
723 banner="$$failed of $$all $$tests failed"; \
724 else \
725 if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
726 banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
727 fi; \
728 fi; \
729 dashes="$$banner"; \
730 skipped=""; \
731 if test "$$skip" -ne 0; then \
732 if test "$$skip" -eq 1; then \
733 skipped="($$skip test was not run)"; \
734 else \
735 skipped="($$skip tests were not run)"; \
736 fi; \
737 test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
738 dashes="$$skipped"; \
739 fi; \
740 report=""; \
741 if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
742 report="Please report to $(PACKAGE_BUGREPORT)"; \
743 test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
744 dashes="$$report"; \
745 fi; \
746 dashes=`echo "$$dashes" | sed s/./=/g`; \
747 if test "$$failed" -eq 0; then \
748 col="$$grn"; \
749 else \
750 col="$$red"; \
751 fi; \
752 echo "$${col}$$dashes$${std}"; \
753 echo "$${col}$$banner$${std}"; \
754 test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
755 test -z "$$report" || echo "$${col}$$report$${std}"; \
756 echo "$${col}$$dashes$${std}"; \
757 test "$$failed" -eq 0; \
758 else :; fi
759
760distdir: $(DISTFILES)
761 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
762 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
763 list='$(DISTFILES)'; \
764 dist_files=`for file in $$list; do echo $$file; done | \
765 sed -e "s|^$$srcdirstrip/||;t" \
766 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
767 case $$dist_files in \
768 */*) $(MKDIR_P) `echo "$$dist_files" | \
769 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
770 sort -u` ;; \
771 esac; \
772 for file in $$dist_files; do \
773 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
774 if test -d $$d/$$file; then \
775 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
776 if test -d "$(distdir)/$$file"; then \
777 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
778 fi; \
779 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
780 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
781 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
782 fi; \
783 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
784 else \
785 test -f "$(distdir)/$$file" \
786 || cp -p $$d/$$file "$(distdir)/$$file" \
787 || exit 1; \
788 fi; \
789 done
790check-am: all-am
791 $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
792 $(MAKE) $(AM_MAKEFLAGS) check-TESTS
793check: check-am
794all-am: Makefile $(PROGRAMS) $(DATA)
795installdirs:
796 for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(pkgcfgdir)"; do \
797 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
798 done
799install: install-am
800install-exec: install-exec-am
801install-data: install-data-am
802uninstall: uninstall-am
803
804install-am: all-am
805 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
806
807installcheck: installcheck-am
808install-strip:
809 if test -z '$(STRIP)'; then \
810 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
811 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
812 install; \
813 else \
814 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
815 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
816 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
817 fi
818mostlyclean-generic:
819
820clean-generic:
821
822distclean-generic:
823 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
824 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
825
826maintainer-clean-generic:
827 @echo "This command is intended for maintainers to use"
828 @echo "it deletes files that may require special tools to rebuild."
829clean: clean-am
830
831clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
832 clean-libexecPROGRAMS clean-libtool mostlyclean-am
833
834distclean: distclean-am
835 -rm -rf ./$(DEPDIR)
836 -rm -f Makefile
837distclean-am: clean-am distclean-compile distclean-generic \
838 distclean-tags
839
840dvi: dvi-am
841
842dvi-am:
843
844html: html-am
845
846html-am:
847
848info: info-am
849
850info-am:
851
852install-data-am: install-dist_pkgcfgDATA
853
854install-dvi: install-dvi-am
855
856install-dvi-am:
857
858install-exec-am: install-binPROGRAMS install-libexecPROGRAMS
859
860install-html: install-html-am
861
862install-html-am:
863
864install-info: install-info-am
865
866install-info-am:
867
868install-man:
869
870install-pdf: install-pdf-am
871
872install-pdf-am:
873
874install-ps: install-ps-am
875
876install-ps-am:
877
878installcheck-am:
879
880maintainer-clean: maintainer-clean-am
881 -rm -rf ./$(DEPDIR)
882 -rm -f Makefile
883maintainer-clean-am: distclean-am maintainer-clean-generic
884
885mostlyclean: mostlyclean-am
886
887mostlyclean-am: mostlyclean-compile mostlyclean-generic \
888 mostlyclean-libtool
889
890pdf: pdf-am
891
892pdf-am:
893
894ps: ps-am
895
896ps-am:
897
898uninstall-am: uninstall-binPROGRAMS uninstall-dist_pkgcfgDATA \
899 uninstall-libexecPROGRAMS
900
901.MAKE: check-am install-am install-strip
902
903.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
904 clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
905 clean-libexecPROGRAMS clean-libtool ctags distclean \
906 distclean-compile distclean-generic distclean-libtool \
907 distclean-tags distdir dvi dvi-am html html-am info info-am \
908 install install-am install-binPROGRAMS install-data \
909 install-data-am install-dist_pkgcfgDATA install-dvi \
910 install-dvi-am install-exec install-exec-am install-html \
911 install-html-am install-info install-info-am \
912 install-libexecPROGRAMS install-man install-pdf install-pdf-am \
913 install-ps install-ps-am install-strip installcheck \
914 installcheck-am installdirs maintainer-clean \
915 maintainer-clean-generic mostlyclean mostlyclean-compile \
916 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
917 tags uninstall uninstall-am uninstall-binPROGRAMS \
918 uninstall-dist_pkgcfgDATA uninstall-libexecPROGRAMS
919
920
921# Tell versions [3.59,3.63) of GNU make to not export all variables.
922# Otherwise a system limit (for SysV at least) may be exceeded.
923.NOEXPORT:
diff --git a/src/multicast/Makefile.am b/src/multicast/Makefile.am
new file mode 100644
index 000000000..e5bc04dfa
--- /dev/null
+++ b/src/multicast/Makefile.am
@@ -0,0 +1,61 @@
1INCLUDES = -I$(top_srcdir)/src/include
2
3pkgcfgdir= $(pkgdatadir)/config.d/
4
5libexecdir= $(pkglibdir)/libexec/
6
7pkgcfg_DATA = \
8 multicast.conf
9
10if MINGW
11 WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
12endif
13
14if USE_COVERAGE
15 AM_CFLAGS = -fprofile-arcs -ftest-coverage
16endif
17
18lib_LTLIBRARIES = libgnunetmulticast.la
19
20libgnunetmulticast_la_SOURCES = \
21 multicast_api.c
22# multicast.h
23libgnunetmulticast_la_LIBADD = \
24 $(top_builddir)/src/util/libgnunetutil.la \
25 $(GN_LIBINTL) $(XLIB)
26libgnunetmulticast_la_LDFLAGS = \
27 $(GN_LIB_LDFLAGS) $(WINFLAGS) \
28 -version-info 0:0:0
29
30
31bin_PROGRAMS = \
32 gnunet-multicast
33
34libexec_PROGRAMS = \
35 gnunet-service-multicast
36
37gnunet_multicast_SOURCES = \
38 gnunet-multicast.c
39gnunet_multicast_LDADD = \
40 $(top_builddir)/src/util/libgnunetutil.la \
41 $(GN_LIBINTL)
42
43gnunet_service_multicast_SOURCES = \
44 gnunet-service-multicast.c
45gnunet_service_multicast_LDADD = \
46 $(top_builddir)/src/util/libgnunetutil.la \
47 $(GN_LIBINTL)
48
49
50check_PROGRAMS = \
51 test_multicast_api
52
53if ENABLE_TEST_RUN
54TESTS = $(check_PROGRAMS)
55endif
56
57test_multicast_api_SOURCES = \
58 test_multicast_api.c
59test_multicast_api_LDADD = \
60 $(top_builddir)/src/util/libgnunetutil.la
61
diff --git a/src/multicast/Makefile.in b/src/multicast/Makefile.in
new file mode 100644
index 000000000..75ee076b6
--- /dev/null
+++ b/src/multicast/Makefile.in
@@ -0,0 +1,923 @@
1# Makefile.in generated by automake 1.11.6 from Makefile.am.
2# @configure_input@
3
4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
6# Foundation, Inc.
7# This Makefile.in is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it,
9# with or without modifications, as long as this notice is preserved.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14# PARTICULAR PURPOSE.
15
16@SET_MAKE@
17
18
19VPATH = @srcdir@
20am__make_dryrun = \
21 { \
22 am__dry=no; \
23 case $$MAKEFLAGS in \
24 *\\[\ \ ]*) \
25 echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
26 | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
27 *) \
28 for am__flg in $$MAKEFLAGS; do \
29 case $$am__flg in \
30 *=*|--*) ;; \
31 *n*) am__dry=yes; break;; \
32 esac; \
33 done;; \
34 esac; \
35 test $$am__dry = yes; \
36 }
37pkgdatadir = $(datadir)/@PACKAGE@
38pkgincludedir = $(includedir)/@PACKAGE@
39pkglibdir = $(libdir)/@PACKAGE@
40pkglibexecdir = $(libexecdir)/@PACKAGE@
41am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
42install_sh_DATA = $(install_sh) -c -m 644
43install_sh_PROGRAM = $(install_sh) -c
44install_sh_SCRIPT = $(install_sh) -c
45INSTALL_HEADER = $(INSTALL_DATA)
46transform = $(program_transform_name)
47NORMAL_INSTALL = :
48PRE_INSTALL = :
49POST_INSTALL = :
50NORMAL_UNINSTALL = :
51PRE_UNINSTALL = :
52POST_UNINSTALL = :
53build_triplet = @build@
54host_triplet = @host@
55target_triplet = @target@
56bin_PROGRAMS = gnunet-template$(EXEEXT)
57libexec_PROGRAMS = gnunet-service-template$(EXEEXT)
58check_PROGRAMS = test_template_api$(EXEEXT)
59subdir = src/template
60DIST_COMMON = $(dist_pkgcfg_DATA) $(srcdir)/Makefile.am \
61 $(srcdir)/Makefile.in
62ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
63am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
64 $(top_srcdir)/m4/align.m4 $(top_srcdir)/m4/argz.m4 \
65 $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
66 $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
67 $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libcurl.m4 \
68 $(top_srcdir)/m4/libgcrypt.m4 $(top_srcdir)/m4/libtool.m4 \
69 $(top_srcdir)/m4/libunistring.m4 $(top_srcdir)/m4/ltdl.m4 \
70 $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
71 $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
72 $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
73 $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \
74 $(top_srcdir)/configure.ac
75am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
76 $(ACLOCAL_M4)
77mkinstalldirs = $(install_sh) -d
78CONFIG_HEADER = $(top_builddir)/gnunet_config.h
79CONFIG_CLEAN_FILES =
80CONFIG_CLEAN_VPATH_FILES =
81am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
82 "$(DESTDIR)$(pkgcfgdir)"
83PROGRAMS = $(bin_PROGRAMS) $(libexec_PROGRAMS)
84am_gnunet_service_template_OBJECTS = \
85 gnunet-service-template.$(OBJEXT)
86gnunet_service_template_OBJECTS = \
87 $(am_gnunet_service_template_OBJECTS)
88am__DEPENDENCIES_1 =
89gnunet_service_template_DEPENDENCIES = \
90 $(top_builddir)/src/util/libgnunetutil.la \
91 $(am__DEPENDENCIES_1)
92AM_V_lt = $(am__v_lt_@AM_V@)
93am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
94am__v_lt_0 = --silent
95am_gnunet_template_OBJECTS = gnunet-template.$(OBJEXT)
96gnunet_template_OBJECTS = $(am_gnunet_template_OBJECTS)
97gnunet_template_DEPENDENCIES = \
98 $(top_builddir)/src/util/libgnunetutil.la \
99 $(am__DEPENDENCIES_1)
100am_test_template_api_OBJECTS = test_template_api.$(OBJEXT)
101test_template_api_OBJECTS = $(am_test_template_api_OBJECTS)
102test_template_api_DEPENDENCIES = \
103 $(top_builddir)/src/util/libgnunetutil.la
104DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
105depcomp = $(SHELL) $(top_srcdir)/depcomp
106am__depfiles_maybe = depfiles
107am__mv = mv -f
108COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
109 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
110LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
111 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
112 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
113 $(AM_CFLAGS) $(CFLAGS)
114AM_V_CC = $(am__v_CC_@AM_V@)
115am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
116am__v_CC_0 = @echo " CC " $@;
117AM_V_at = $(am__v_at_@AM_V@)
118am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
119am__v_at_0 = @
120CCLD = $(CC)
121LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
122 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
123 $(AM_LDFLAGS) $(LDFLAGS) -o $@
124AM_V_CCLD = $(am__v_CCLD_@AM_V@)
125am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
126am__v_CCLD_0 = @echo " CCLD " $@;
127AM_V_GEN = $(am__v_GEN_@AM_V@)
128am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
129am__v_GEN_0 = @echo " GEN " $@;
130SOURCES = $(gnunet_service_template_SOURCES) \
131 $(gnunet_template_SOURCES) $(test_template_api_SOURCES)
132DIST_SOURCES = $(gnunet_service_template_SOURCES) \
133 $(gnunet_template_SOURCES) $(test_template_api_SOURCES)
134am__can_run_installinfo = \
135 case $$AM_UPDATE_INFO_DIR in \
136 n|no|NO) false;; \
137 *) (install-info --version) >/dev/null 2>&1;; \
138 esac
139am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
140am__vpath_adj = case $$p in \
141 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
142 *) f=$$p;; \
143 esac;
144am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
145am__install_max = 40
146am__nobase_strip_setup = \
147 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
148am__nobase_strip = \
149 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
150am__nobase_list = $(am__nobase_strip_setup); \
151 for p in $$list; do echo "$$p $$p"; done | \
152 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
153 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
154 if (++n[$$2] == $(am__install_max)) \
155 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
156 END { for (dir in files) print dir, files[dir] }'
157am__base_list = \
158 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
159 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
160am__uninstall_files_from_dir = { \
161 test -z "$$files" \
162 || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
163 || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
164 $(am__cd) "$$dir" && rm -f $$files; }; \
165 }
166DATA = $(dist_pkgcfg_DATA)
167ETAGS = etags
168CTAGS = ctags
169am__tty_colors = \
170red=; grn=; lgn=; blu=; std=
171DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
172ACLOCAL = @ACLOCAL@
173AMTAR = @AMTAR@
174AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
175AR = @AR@
176ARGZ_H = @ARGZ_H@
177AS = @AS@
178AUTOCONF = @AUTOCONF@
179AUTOHEADER = @AUTOHEADER@
180AUTOMAKE = @AUTOMAKE@
181AWK = @AWK@
182CC = @CC@
183CCDEPMODE = @CCDEPMODE@
184CFLAGS = @CFLAGS@
185CPP = @CPP@
186CPPFLAGS = @CPPFLAGS@
187CXX = @CXX@
188CXXCPP = @CXXCPP@
189CXXDEPMODE = @CXXDEPMODE@
190CXXFLAGS = @CXXFLAGS@
191CYGPATH_W = @CYGPATH_W@
192DEFAULT_INTERFACE = @DEFAULT_INTERFACE@
193DEFS = @DEFS@
194DEPDIR = @DEPDIR@
195DLLDIR = @DLLDIR@
196DLLTOOL = @DLLTOOL@
197DSYMUTIL = @DSYMUTIL@
198DUMPBIN = @DUMPBIN@
199ECHO_C = @ECHO_C@
200ECHO_N = @ECHO_N@
201ECHO_T = @ECHO_T@
202EGREP = @EGREP@
203EXEEXT = @EXEEXT@
204EXT_LIBS = @EXT_LIBS@
205EXT_LIB_PATH = @EXT_LIB_PATH@
206FGREP = @FGREP@
207GMSGFMT = @GMSGFMT@
208GMSGFMT_015 = @GMSGFMT_015@
209GNUNETDNS_GROUP = @GNUNETDNS_GROUP@
210GN_DAEMON_CONFIG_DIR = @GN_DAEMON_CONFIG_DIR@
211GN_DAEMON_HOME_DIR = @GN_DAEMON_HOME_DIR@
212GN_INTLINCL = @GN_INTLINCL@
213GN_LIBINTL = @GN_LIBINTL@
214GN_LIB_LDFLAGS = @GN_LIB_LDFLAGS@
215GN_PLUGIN_LDFLAGS = @GN_PLUGIN_LDFLAGS@
216GN_USER_HOME_DIR = @GN_USER_HOME_DIR@
217GREP = @GREP@
218HAVE_LIBUNISTRING = @HAVE_LIBUNISTRING@
219INCLTDL = @INCLTDL@
220INSTALL = @INSTALL@
221INSTALL_DATA = @INSTALL_DATA@
222INSTALL_PROGRAM = @INSTALL_PROGRAM@
223INSTALL_SCRIPT = @INSTALL_SCRIPT@
224INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
225INTLLIBS = @INTLLIBS@
226INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
227JAVAPORT = @JAVAPORT@
228LD = @LD@
229LDFLAGS = @LDFLAGS@
230LIBADD_DL = @LIBADD_DL@
231LIBADD_DLD_LINK = @LIBADD_DLD_LINK@
232LIBADD_DLOPEN = @LIBADD_DLOPEN@
233LIBADD_SHL_LOAD = @LIBADD_SHL_LOAD@
234LIBCURL = @LIBCURL@
235LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@
236LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
237LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
238LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
239LIBICONV = @LIBICONV@
240LIBINTL = @LIBINTL@
241LIBLTDL = @LIBLTDL@
242LIBOBJS = @LIBOBJS@
243LIBPREFIX = @LIBPREFIX@
244LIBS = @LIBS@
245LIBTOOL = @LIBTOOL@
246LIBUNISTRING = @LIBUNISTRING@
247LIPO = @LIPO@
248LN_S = @LN_S@
249LTDLDEPS = @LTDLDEPS@
250LTDLINCL = @LTDLINCL@
251LTDLOPEN = @LTDLOPEN@
252LTLIBICONV = @LTLIBICONV@
253LTLIBINTL = @LTLIBINTL@
254LTLIBOBJS = @LTLIBOBJS@
255LTLIBUNISTRING = @LTLIBUNISTRING@
256LT_CONFIG_H = @LT_CONFIG_H@
257LT_DLLOADERS = @LT_DLLOADERS@
258LT_DLPREOPEN = @LT_DLPREOPEN@
259MAKEINFO = @MAKEINFO@
260MANIFEST_TOOL = @MANIFEST_TOOL@
261MKDIR_P = @MKDIR_P@
262MONKEYPREFIX = @MONKEYPREFIX@
263MSGFMT = @MSGFMT@
264MSGFMT_015 = @MSGFMT_015@
265MSGMERGE = @MSGMERGE@
266MYSQL_CPPFLAGS = @MYSQL_CPPFLAGS@
267MYSQL_LDFLAGS = @MYSQL_LDFLAGS@
268NM = @NM@
269NMEDIT = @NMEDIT@
270NSS_DIR = @NSS_DIR@
271OBJC = @OBJC@
272OBJCDEPMODE = @OBJCDEPMODE@
273OBJCFLAGS = @OBJCFLAGS@
274OBJDUMP = @OBJDUMP@
275OBJEXT = @OBJEXT@
276OTOOL = @OTOOL@
277OTOOL64 = @OTOOL64@
278PACKAGE = @PACKAGE@
279PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
280PACKAGE_NAME = @PACKAGE_NAME@
281PACKAGE_STRING = @PACKAGE_STRING@
282PACKAGE_TARNAME = @PACKAGE_TARNAME@
283PACKAGE_URL = @PACKAGE_URL@
284PACKAGE_VERSION = @PACKAGE_VERSION@
285PATH_SEPARATOR = @PATH_SEPARATOR@
286POSTGRES_CPPFLAGS = @POSTGRES_CPPFLAGS@
287POSTGRES_LDFLAGS = @POSTGRES_LDFLAGS@
288POSUB = @POSUB@
289PYTHON = @PYTHON@
290PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
291PYTHON_PLATFORM = @PYTHON_PLATFORM@
292PYTHON_PREFIX = @PYTHON_PREFIX@
293PYTHON_VERSION = @PYTHON_VERSION@
294RANLIB = @RANLIB@
295SED = @SED@
296SET_MAKE = @SET_MAKE@
297SHELL = @SHELL@
298SQLITE_CPPFLAGS = @SQLITE_CPPFLAGS@
299SQLITE_LDFLAGS = @SQLITE_LDFLAGS@
300STRIP = @STRIP@
301SUDO_BINARY = @SUDO_BINARY@
302UNIXONLY = @UNIXONLY@
303USE_NLS = @USE_NLS@
304VERSION = @VERSION@
305XGETTEXT = @XGETTEXT@
306XGETTEXT_015 = @XGETTEXT_015@
307XMKMF = @XMKMF@
308X_CFLAGS = @X_CFLAGS@
309X_EXTRA_LIBS = @X_EXTRA_LIBS@
310X_LIBS = @X_LIBS@
311X_PRE_LIBS = @X_PRE_LIBS@
312Z_CFLAGS = @Z_CFLAGS@
313Z_LIBS = @Z_LIBS@
314_libcurl_config = @_libcurl_config@
315abs_builddir = @abs_builddir@
316abs_srcdir = @abs_srcdir@
317abs_top_builddir = @abs_top_builddir@
318abs_top_srcdir = @abs_top_srcdir@
319ac_ct_AR = @ac_ct_AR@
320ac_ct_CC = @ac_ct_CC@
321ac_ct_CXX = @ac_ct_CXX@
322ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
323ac_ct_OBJC = @ac_ct_OBJC@
324am__include = @am__include@
325am__leading_dot = @am__leading_dot@
326am__quote = @am__quote@
327am__tar = @am__tar@
328am__untar = @am__untar@
329bindir = @bindir@
330build = @build@
331build_alias = @build_alias@
332build_cpu = @build_cpu@
333build_os = @build_os@
334build_target = @build_target@
335build_vendor = @build_vendor@
336builddir = @builddir@
337datadir = @datadir@
338datarootdir = @datarootdir@
339docdir = @docdir@
340dvidir = @dvidir@
341exec_prefix = @exec_prefix@
342gitcommand = @gitcommand@
343host = @host@
344host_alias = @host_alias@
345host_cpu = @host_cpu@
346host_os = @host_os@
347host_vendor = @host_vendor@
348htmldir = @htmldir@
349includedir = @includedir@
350infodir = @infodir@
351install_sh = @install_sh@
352libdir = @libdir@
353libexecdir = $(pkglibdir)/libexec/
354localedir = @localedir@
355localstatedir = @localstatedir@
356ltdl_LIBOBJS = @ltdl_LIBOBJS@
357ltdl_LTLIBOBJS = @ltdl_LTLIBOBJS@
358mandir = @mandir@
359mkdir_p = @mkdir_p@
360oldincludedir = @oldincludedir@
361pdfdir = @pdfdir@
362pkgpyexecdir = @pkgpyexecdir@
363pkgpythondir = @pkgpythondir@
364prefix = @prefix@
365program_transform_name = @program_transform_name@
366psdir = @psdir@
367pyexecdir = @pyexecdir@
368pythondir = @pythondir@
369sbindir = @sbindir@
370sharedstatedir = @sharedstatedir@
371srcdir = @srcdir@
372subdirs = @subdirs@
373svnversioncommand = @svnversioncommand@
374sys_symbol_underscore = @sys_symbol_underscore@
375sysconfdir = @sysconfdir@
376target = @target@
377target_alias = @target_alias@
378target_cpu = @target_cpu@
379target_os = @target_os@
380target_vendor = @target_vendor@
381top_build_prefix = @top_build_prefix@
382top_builddir = @top_builddir@
383top_srcdir = @top_srcdir@
384INCLUDES = -I$(top_srcdir)/src/include
385pkgcfgdir = $(pkgdatadir)/config.d/
386dist_pkgcfg_DATA = \
387 template.conf
388
389@MINGW_TRUE@WINFLAGS = -Wl,--no-undefined -Wl,--export-all-symbols
390@USE_COVERAGE_TRUE@AM_CFLAGS = -fprofile-arcs -ftest-coverage
391gnunet_template_SOURCES = \
392 gnunet-template.c
393
394gnunet_template_LDADD = \
395 $(top_builddir)/src/util/libgnunetutil.la \
396 $(GN_LIBINTL)
397
398gnunet_service_template_SOURCES = \
399 gnunet-service-template.c
400
401gnunet_service_template_LDADD = \
402 $(top_builddir)/src/util/libgnunetutil.la \
403 $(GN_LIBINTL)
404
405@ENABLE_TEST_RUN_TRUE@TESTS = $(check_PROGRAMS)
406test_template_api_SOURCES = \
407 test_template_api.c
408
409test_template_api_LDADD = \
410 $(top_builddir)/src/util/libgnunetutil.la
411
412all: all-am
413
414.SUFFIXES:
415.SUFFIXES: .c .lo .o .obj
416$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
417 @for dep in $?; do \
418 case '$(am__configure_deps)' in \
419 *$$dep*) \
420 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
421 && { if test -f $@; then exit 0; else break; fi; }; \
422 exit 1;; \
423 esac; \
424 done; \
425 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/template/Makefile'; \
426 $(am__cd) $(top_srcdir) && \
427 $(AUTOMAKE) --gnu src/template/Makefile
428.PRECIOUS: Makefile
429Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
430 @case '$?' in \
431 *config.status*) \
432 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
433 *) \
434 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
435 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
436 esac;
437
438$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
439 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
440
441$(top_srcdir)/configure: $(am__configure_deps)
442 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
443$(ACLOCAL_M4): $(am__aclocal_m4_deps)
444 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
445$(am__aclocal_m4_deps):
446install-binPROGRAMS: $(bin_PROGRAMS)
447 @$(NORMAL_INSTALL)
448 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
449 if test -n "$$list"; then \
450 echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
451 $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
452 fi; \
453 for p in $$list; do echo "$$p $$p"; done | \
454 sed 's/$(EXEEXT)$$//' | \
455 while read p p1; do if test -f $$p || test -f $$p1; \
456 then echo "$$p"; echo "$$p"; else :; fi; \
457 done | \
458 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
459 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
460 sed 'N;N;N;s,\n, ,g' | \
461 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
462 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
463 if ($$2 == $$4) files[d] = files[d] " " $$1; \
464 else { print "f", $$3 "/" $$4, $$1; } } \
465 END { for (d in files) print "f", d, files[d] }' | \
466 while read type dir files; do \
467 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
468 test -z "$$files" || { \
469 echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
470 $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
471 } \
472 ; done
473
474uninstall-binPROGRAMS:
475 @$(NORMAL_UNINSTALL)
476 @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
477 files=`for p in $$list; do echo "$$p"; done | \
478 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
479 -e 's/$$/$(EXEEXT)/' `; \
480 test -n "$$list" || exit 0; \
481 echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
482 cd "$(DESTDIR)$(bindir)" && rm -f $$files
483
484clean-binPROGRAMS:
485 @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
486 echo " rm -f" $$list; \
487 rm -f $$list || exit $$?; \
488 test -n "$(EXEEXT)" || exit 0; \
489 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
490 echo " rm -f" $$list; \
491 rm -f $$list
492
493clean-checkPROGRAMS:
494 @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
495 echo " rm -f" $$list; \
496 rm -f $$list || exit $$?; \
497 test -n "$(EXEEXT)" || exit 0; \
498 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
499 echo " rm -f" $$list; \
500 rm -f $$list
501install-libexecPROGRAMS: $(libexec_PROGRAMS)
502 @$(NORMAL_INSTALL)
503 @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
504 if test -n "$$list"; then \
505 echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
506 $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
507 fi; \
508 for p in $$list; do echo "$$p $$p"; done | \
509 sed 's/$(EXEEXT)$$//' | \
510 while read p p1; do if test -f $$p || test -f $$p1; \
511 then echo "$$p"; echo "$$p"; else :; fi; \
512 done | \
513 sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
514 -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
515 sed 'N;N;N;s,\n, ,g' | \
516 $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
517 { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
518 if ($$2 == $$4) files[d] = files[d] " " $$1; \
519 else { print "f", $$3 "/" $$4, $$1; } } \
520 END { for (d in files) print "f", d, files[d] }' | \
521 while read type dir files; do \
522 if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
523 test -z "$$files" || { \
524 echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \
525 $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \
526 } \
527 ; done
528
529uninstall-libexecPROGRAMS:
530 @$(NORMAL_UNINSTALL)
531 @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \
532 files=`for p in $$list; do echo "$$p"; done | \
533 sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
534 -e 's/$$/$(EXEEXT)/' `; \
535 test -n "$$list" || exit 0; \
536 echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \
537 cd "$(DESTDIR)$(libexecdir)" && rm -f $$files
538
539clean-libexecPROGRAMS:
540 @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \
541 echo " rm -f" $$list; \
542 rm -f $$list || exit $$?; \
543 test -n "$(EXEEXT)" || exit 0; \
544 list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
545 echo " rm -f" $$list; \
546 rm -f $$list
547gnunet-service-template$(EXEEXT): $(gnunet_service_template_OBJECTS) $(gnunet_service_template_DEPENDENCIES) $(EXTRA_gnunet_service_template_DEPENDENCIES)
548 @rm -f gnunet-service-template$(EXEEXT)
549 $(AM_V_CCLD)$(LINK) $(gnunet_service_template_OBJECTS) $(gnunet_service_template_LDADD) $(LIBS)
550gnunet-template$(EXEEXT): $(gnunet_template_OBJECTS) $(gnunet_template_DEPENDENCIES) $(EXTRA_gnunet_template_DEPENDENCIES)
551 @rm -f gnunet-template$(EXEEXT)
552 $(AM_V_CCLD)$(LINK) $(gnunet_template_OBJECTS) $(gnunet_template_LDADD) $(LIBS)
553test_template_api$(EXEEXT): $(test_template_api_OBJECTS) $(test_template_api_DEPENDENCIES) $(EXTRA_test_template_api_DEPENDENCIES)
554 @rm -f test_template_api$(EXEEXT)
555 $(AM_V_CCLD)$(LINK) $(test_template_api_OBJECTS) $(test_template_api_LDADD) $(LIBS)
556
557mostlyclean-compile:
558 -rm -f *.$(OBJEXT)
559
560distclean-compile:
561 -rm -f *.tab.c
562
563@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnunet-service-template.Po@am__quote@
564@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnunet-template.Po@am__quote@
565@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_template_api.Po@am__quote@
566
567.c.o:
568@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
569@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
570@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
571@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
572@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
573
574.c.obj:
575@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
576@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
577@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
578@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
579@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
580
581.c.lo:
582@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
583@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
584@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
585@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
586@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
587
588mostlyclean-libtool:
589 -rm -f *.lo
590
591clean-libtool:
592 -rm -rf .libs _libs
593install-dist_pkgcfgDATA: $(dist_pkgcfg_DATA)
594 @$(NORMAL_INSTALL)
595 @list='$(dist_pkgcfg_DATA)'; test -n "$(pkgcfgdir)" || list=; \
596 if test -n "$$list"; then \
597 echo " $(MKDIR_P) '$(DESTDIR)$(pkgcfgdir)'"; \
598 $(MKDIR_P) "$(DESTDIR)$(pkgcfgdir)" || exit 1; \
599 fi; \
600 for p in $$list; do \
601 if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
602 echo "$$d$$p"; \
603 done | $(am__base_list) | \
604 while read files; do \
605 echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgcfgdir)'"; \
606 $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgcfgdir)" || exit $$?; \
607 done
608
609uninstall-dist_pkgcfgDATA:
610 @$(NORMAL_UNINSTALL)
611 @list='$(dist_pkgcfg_DATA)'; test -n "$(pkgcfgdir)" || list=; \
612 files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
613 dir='$(DESTDIR)$(pkgcfgdir)'; $(am__uninstall_files_from_dir)
614
615ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
616 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
617 unique=`for i in $$list; do \
618 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
619 done | \
620 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
621 END { if (nonempty) { for (i in files) print i; }; }'`; \
622 mkid -fID $$unique
623tags: TAGS
624
625TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
626 $(TAGS_FILES) $(LISP)
627 set x; \
628 here=`pwd`; \
629 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
630 unique=`for i in $$list; do \
631 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
632 done | \
633 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
634 END { if (nonempty) { for (i in files) print i; }; }'`; \
635 shift; \
636 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
637 test -n "$$unique" || unique=$$empty_fix; \
638 if test $$# -gt 0; then \
639 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
640 "$$@" $$unique; \
641 else \
642 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
643 $$unique; \
644 fi; \
645 fi
646ctags: CTAGS
647CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
648 $(TAGS_FILES) $(LISP)
649 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
650 unique=`for i in $$list; do \
651 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
652 done | \
653 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
654 END { if (nonempty) { for (i in files) print i; }; }'`; \
655 test -z "$(CTAGS_ARGS)$$unique" \
656 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
657 $$unique
658
659GTAGS:
660 here=`$(am__cd) $(top_builddir) && pwd` \
661 && $(am__cd) $(top_srcdir) \
662 && gtags -i $(GTAGS_ARGS) "$$here"
663
664distclean-tags:
665 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
666
667check-TESTS: $(TESTS)
668 @failed=0; all=0; xfail=0; xpass=0; skip=0; \
669 srcdir=$(srcdir); export srcdir; \
670 list=' $(TESTS) '; \
671 $(am__tty_colors); \
672 if test -n "$$list"; then \
673 for tst in $$list; do \
674 if test -f ./$$tst; then dir=./; \
675 elif test -f $$tst; then dir=; \
676 else dir="$(srcdir)/"; fi; \
677 if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
678 all=`expr $$all + 1`; \
679 case " $(XFAIL_TESTS) " in \
680 *[\ \ ]$$tst[\ \ ]*) \
681 xpass=`expr $$xpass + 1`; \
682 failed=`expr $$failed + 1`; \
683 col=$$red; res=XPASS; \
684 ;; \
685 *) \
686 col=$$grn; res=PASS; \
687 ;; \
688 esac; \
689 elif test $$? -ne 77; then \
690 all=`expr $$all + 1`; \
691 case " $(XFAIL_TESTS) " in \
692 *[\ \ ]$$tst[\ \ ]*) \
693 xfail=`expr $$xfail + 1`; \
694 col=$$lgn; res=XFAIL; \
695 ;; \
696 *) \
697 failed=`expr $$failed + 1`; \
698 col=$$red; res=FAIL; \
699 ;; \
700 esac; \
701 else \
702 skip=`expr $$skip + 1`; \
703 col=$$blu; res=SKIP; \
704 fi; \
705 echo "$${col}$$res$${std}: $$tst"; \
706 done; \
707 if test "$$all" -eq 1; then \
708 tests="test"; \
709 All=""; \
710 else \
711 tests="tests"; \
712 All="All "; \
713 fi; \
714 if test "$$failed" -eq 0; then \
715 if test "$$xfail" -eq 0; then \
716 banner="$$All$$all $$tests passed"; \
717 else \
718 if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
719 banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
720 fi; \
721 else \
722 if test "$$xpass" -eq 0; then \
723 banner="$$failed of $$all $$tests failed"; \
724 else \
725 if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
726 banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
727 fi; \
728 fi; \
729 dashes="$$banner"; \
730 skipped=""; \
731 if test "$$skip" -ne 0; then \
732 if test "$$skip" -eq 1; then \
733 skipped="($$skip test was not run)"; \
734 else \
735 skipped="($$skip tests were not run)"; \
736 fi; \
737 test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
738 dashes="$$skipped"; \
739 fi; \
740 report=""; \
741 if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
742 report="Please report to $(PACKAGE_BUGREPORT)"; \
743 test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
744 dashes="$$report"; \
745 fi; \
746 dashes=`echo "$$dashes" | sed s/./=/g`; \
747 if test "$$failed" -eq 0; then \
748 col="$$grn"; \
749 else \
750 col="$$red"; \
751 fi; \
752 echo "$${col}$$dashes$${std}"; \
753 echo "$${col}$$banner$${std}"; \
754 test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
755 test -z "$$report" || echo "$${col}$$report$${std}"; \
756 echo "$${col}$$dashes$${std}"; \
757 test "$$failed" -eq 0; \
758 else :; fi
759
760distdir: $(DISTFILES)
761 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
762 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
763 list='$(DISTFILES)'; \
764 dist_files=`for file in $$list; do echo $$file; done | \
765 sed -e "s|^$$srcdirstrip/||;t" \
766 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
767 case $$dist_files in \
768 */*) $(MKDIR_P) `echo "$$dist_files" | \
769 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
770 sort -u` ;; \
771 esac; \
772 for file in $$dist_files; do \
773 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
774 if test -d $$d/$$file; then \
775 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
776 if test -d "$(distdir)/$$file"; then \
777 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
778 fi; \
779 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
780 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
781 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
782 fi; \
783 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
784 else \
785 test -f "$(distdir)/$$file" \
786 || cp -p $$d/$$file "$(distdir)/$$file" \
787 || exit 1; \
788 fi; \
789 done
790check-am: all-am
791 $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
792 $(MAKE) $(AM_MAKEFLAGS) check-TESTS
793check: check-am
794all-am: Makefile $(PROGRAMS) $(DATA)
795installdirs:
796 for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(pkgcfgdir)"; do \
797 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
798 done
799install: install-am
800install-exec: install-exec-am
801install-data: install-data-am
802uninstall: uninstall-am
803
804install-am: all-am
805 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
806
807installcheck: installcheck-am
808install-strip:
809 if test -z '$(STRIP)'; then \
810 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
811 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
812 install; \
813 else \
814 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
815 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
816 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
817 fi
818mostlyclean-generic:
819
820clean-generic:
821
822distclean-generic:
823 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
824 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
825
826maintainer-clean-generic:
827 @echo "This command is intended for maintainers to use"
828 @echo "it deletes files that may require special tools to rebuild."
829clean: clean-am
830
831clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
832 clean-libexecPROGRAMS clean-libtool mostlyclean-am
833
834distclean: distclean-am
835 -rm -rf ./$(DEPDIR)
836 -rm -f Makefile
837distclean-am: clean-am distclean-compile distclean-generic \
838 distclean-tags
839
840dvi: dvi-am
841
842dvi-am:
843
844html: html-am
845
846html-am:
847
848info: info-am
849
850info-am:
851
852install-data-am: install-dist_pkgcfgDATA
853
854install-dvi: install-dvi-am
855
856install-dvi-am:
857
858install-exec-am: install-binPROGRAMS install-libexecPROGRAMS
859
860install-html: install-html-am
861
862install-html-am:
863
864install-info: install-info-am
865
866install-info-am:
867
868install-man:
869
870install-pdf: install-pdf-am
871
872install-pdf-am:
873
874install-ps: install-ps-am
875
876install-ps-am:
877
878installcheck-am:
879
880maintainer-clean: maintainer-clean-am
881 -rm -rf ./$(DEPDIR)
882 -rm -f Makefile
883maintainer-clean-am: distclean-am maintainer-clean-generic
884
885mostlyclean: mostlyclean-am
886
887mostlyclean-am: mostlyclean-compile mostlyclean-generic \
888 mostlyclean-libtool
889
890pdf: pdf-am
891
892pdf-am:
893
894ps: ps-am
895
896ps-am:
897
898uninstall-am: uninstall-binPROGRAMS uninstall-dist_pkgcfgDATA \
899 uninstall-libexecPROGRAMS
900
901.MAKE: check-am install-am install-strip
902
903.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
904 clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
905 clean-libexecPROGRAMS clean-libtool ctags distclean \
906 distclean-compile distclean-generic distclean-libtool \
907 distclean-tags distdir dvi dvi-am html html-am info info-am \
908 install install-am install-binPROGRAMS install-data \
909 install-data-am install-dist_pkgcfgDATA install-dvi \
910 install-dvi-am install-exec install-exec-am install-html \
911 install-html-am install-info install-info-am \
912 install-libexecPROGRAMS install-man install-pdf install-pdf-am \
913 install-ps install-ps-am install-strip installcheck \
914 installcheck-am installdirs maintainer-clean \
915 maintainer-clean-generic mostlyclean mostlyclean-compile \
916 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
917 tags uninstall uninstall-am uninstall-binPROGRAMS \
918 uninstall-dist_pkgcfgDATA uninstall-libexecPROGRAMS
919
920
921# Tell versions [3.59,3.63) of GNU make to not export all variables.
922# Otherwise a system limit (for SysV at least) may be exceeded.
923.NOEXPORT:
diff --git a/src/multicast/gnunet-multicast.c b/src/multicast/gnunet-multicast.c
new file mode 100644
index 000000000..e46d034d8
--- /dev/null
+++ b/src/multicast/gnunet-multicast.c
@@ -0,0 +1,76 @@
1/*
2 This file is part of GNUnet.
3 (C) 2013 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file multicast/gnunet-multicast.c
23 * @brief multicast for writing a tool
24 * @author Christian Grothoff
25 */
26#include "platform.h"
27#include "gnunet_util_lib.h"
28/* #include "gnunet_multicast_service.h" */
29
30/**
31 * Final status code.
32 */
33static int ret;
34
35/**
36 * Main function that will be run by the scheduler.
37 *
38 * @param cls closure
39 * @param args remaining command-line arguments
40 * @param cfgfile name of the configuration file used (for saving, can be NULL!)
41 * @param cfg configuration
42 */
43static void
44run (void *cls, char *const *args, const char *cfgfile,
45 const struct GNUNET_CONFIGURATION_Handle *cfg)
46{
47 /* main code here */
48}
49
50
51/**
52 * The main function.
53 *
54 * @param argc number of arguments from the command line
55 * @param argv command line arguments
56 * @return 0 ok, 1 on error
57 */
58int
59main (int argc, char *const *argv)
60{
61 static const struct GNUNET_GETOPT_CommandLineOption options[] = {
62 /* FIMXE: add options here */
63 GNUNET_GETOPT_OPTION_END
64 };
65 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
66 return 2;
67
68 ret = (GNUNET_OK ==
69 GNUNET_PROGRAM_run (argc, argv, "gnunet-multicast",
70 gettext_noop ("help text"), options, &run,
71 NULL)) ? ret : 1;
72 GNUNET_free ((void*) argv);
73 return ret;
74}
75
76/* end of gnunet-multicast.c */
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c
new file mode 100644
index 000000000..f9aa7fe2d
--- /dev/null
+++ b/src/multicast/gnunet-service-multicast.c
@@ -0,0 +1,80 @@
1/*
2 This file is part of GNUnet.
3 (C) 2009 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file multicast/gnunet-service-multicast.c
23 * @brief program that does multicast
24 * @author Christian Grothoff
25 */
26#include "platform.h"
27#include "gnunet_util_lib.h"
28
29
30/**
31 * Task run during shutdown.
32 *
33 * @param cls unused
34 * @param tc unused
35 */
36static void
37cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
38{
39 /* FIXME: do clean up here */
40}
41
42
43/**
44 * Process multicast requests.
45 *
46 * @param cls closure
47 * @param server the initialized server
48 * @param cfg configuration to use
49 */
50static void
51run (void *cls, struct GNUNET_SERVER_Handle *server,
52 const struct GNUNET_CONFIGURATION_Handle *cfg)
53{
54 static const struct GNUNET_SERVER_MessageHandler handlers[] = {
55 /* FIXME: add handlers here! */
56 {NULL, NULL, 0, 0}
57 };
58 /* FIXME: do setup here */
59 GNUNET_SERVER_add_handlers (server, handlers);
60 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &cleanup_task,
61 NULL);
62}
63
64
65/**
66 * The main function for the multicast service.
67 *
68 * @param argc number of arguments from the command line
69 * @param argv command line arguments
70 * @return 0 ok, 1 on error
71 */
72int
73main (int argc, char *const *argv)
74{
75 return (GNUNET_OK ==
76 GNUNET_SERVICE_run (argc, argv, "multicast",
77 GNUNET_SERVICE_OPTION_NONE, &run, NULL)) ? 0 : 1;
78}
79
80/* end of gnunet-service-multicast.c */
diff --git a/src/multicast/multicast.conf.in b/src/multicast/multicast.conf.in
new file mode 100644
index 000000000..bd37cb474
--- /dev/null
+++ b/src/multicast/multicast.conf.in
@@ -0,0 +1,20 @@
1[multicast]
2AUTOSTART = YES
3PORT = 2109
4HOSTNAME = localhost
5HOME = $SERVICEHOME
6BINARY = gnunet-service-multicast
7ACCEPT_FROM = 127.0.0.1;
8ACCEPT_FROM6 = ::1;
9UNIXPATH = /tmp/gnunet-service-multicast.sock
10UNIX_MATCH_UID = YES
11UNIX_MATCH_GID = YES
12# DISABLE_SOCKET_FORWARDING = NO
13# USERNAME =
14# MAXBUF =
15# TIMEOUT =
16# DISABLEV6 =
17# BINDTO =
18# REJECT_FROM =
19# REJECT_FROM6 =
20# PREFIX =
diff --git a/src/multicast/multicast_api.c b/src/multicast/multicast_api.c
new file mode 100644
index 000000000..9dceec1a5
--- /dev/null
+++ b/src/multicast/multicast_api.c
@@ -0,0 +1,554 @@
1/*
2 This file is part of GNUnet.
3 (C) 2012, 2013 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20
21/**
22 * @file multicast/multicast_api.c
23 * @brief multicast service; establish tunnels to distant peers
24 * @author Christian Grothoff
25 * @author Gabor X Toth
26 */
27#include "platform.h"
28#include "gnunet_multicast_service.h"
29
30/**
31 * Opaque handle for a multicast group member.
32 */
33struct GNUNET_MULTICAST_Member
34{
35};
36
37
38/**
39 * Handle for the origin of a multicast group.
40 */
41struct GNUNET_MULTICAST_Origin
42{
43};
44
45
46GNUNET_NETWORK_STRUCT_BEGIN
47
48/**
49 * Header of a request from a member to the origin.
50 */
51struct GNUNET_MULTICAST_RequestHeader
52{
53 /**
54 * Header for all requests from a member to the origin.
55 */
56 struct GNUNET_MessageHeader header;
57
58 /**
59 * Public key of the sending member.
60 */
61 struct GNUNET_CRYPTO_EccPublicKey member_key;
62
63 /**
64 * ECC signature of the request fragment.
65 *
66 * Signature must match the public key of the multicast group.
67 */
68 struct GNUNET_CRYPTO_EccSignature signature;
69
70 /**
71 * Purpose for the signature and size of the signed data.
72 */
73 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
74
75 /**
76 * Number of the request fragment, monotonically increasing.
77 */
78 uint64_t fragment_id GNUNET_PACKED;
79
80 /**
81 * Byte offset of this @e fragment of the @e request.
82 */
83 uint64_t fragment_offset GNUNET_PACKED;
84
85 /**
86 * Number of the request this fragment belongs to.
87 *
88 * Set in GNUNET_MULTICAST_origin_to_all().
89 */
90 uint64_t request_id GNUNET_PACKED;
91
92 /**
93 * Flags for this request.
94 */
95 enum GNUNET_MULTICAST_MessageFlags flags GNUNET_PACKED;
96
97 /* Followed by request body. */
98};
99
100/**
101 * Header of a join request sent to the origin or another member.
102 */
103struct GNUNET_MULTICAST_JoinRequest
104{
105 /**
106 * Header for the join request.
107 */
108 struct GNUNET_MessageHeader header;
109
110 /**
111 * ECC signature of the rest of the fields of the join request.
112 *
113 * Signature must match the public key of the joining member.
114 */
115 struct GNUNET_CRYPTO_EccSignature signature;
116
117 /**
118 * Purpose for the signature and size of the signed data.
119 */
120 struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
121
122 /**
123 * Public key of the target group.
124 */
125 struct GNUNET_CRYPTO_EccPublicKey group_key;
126
127 /**
128 * Public key of the joining member.
129 */
130 struct GNUNET_CRYPTO_EccPublicKey member_key;
131
132 /**
133 * Peer identity of the joining member.
134 */
135 struct GNUNET_PeerIdentity member_peer;
136
137 /* Followed by request body. */
138};
139
140GNUNET_NETWORK_STRUCT_END
141
142
143/**
144 * Handle that identifies a join request.
145 *
146 * Used to match calls to #GNUNET_MULTICAST_JoinCallback to the
147 * corresponding calls to #GNUNET_MULTICAST_join_decision().
148 */
149struct GNUNET_MULTICAST_JoinHandle
150{
151};
152
153
154/**
155 * Function to call with the decision made for a join request.
156 *
157 * Must be called once and only once in response to an invocation of the
158 * #GNUNET_MULTICAST_JoinCallback.
159 *
160 * @param jh Join request handle.
161 * @param is_admitted #GNUNET_YES if joining is approved,
162 * #GNUNET_NO if it is disapproved
163 * @param relay_count Number of relays given.
164 * @param relays Array of suggested peers that might be useful relays to use
165 * when joining the multicast group (essentially a list of peers that
166 * are already part of the multicast group and might thus be willing
167 * to help with routing). If empty, only this local peer (which must
168 * be the multicast origin) is a good candidate for building the
169 * multicast tree. Note that it is unnecessary to specify our own
170 * peer identity in this array.
171 * @param join_response Message to send in response to the joining peer;
172 * can also be used to redirect the peer to a different group at the
173 * application layer; this response is to be transmitted to the
174 * peer that issued the request even if admission is denied.
175 */
176struct GNUNET_MULTICAST_ReplayHandle *
177GNUNET_MULTICAST_join_decision (struct GNUNET_MULTICAST_JoinHandle *jh,
178 int is_admitted,
179 unsigned int relay_count,
180 const struct GNUNET_PeerIdentity *relays,
181 const struct GNUNET_MessageHeader *join_response)
182{
183 return NULL;
184}
185
186
187/**
188 * Handle to pass back for the answer of a membership test.
189 */
190struct GNUNET_MULTICAST_MembershipTestHandle
191{
192};
193
194
195/**
196 * Call informing multicast about the decision taken for a membership test.
197 *
198 * @param mth Handle that was given for the query.
199 * @param result #GNUNET_YES if peer was a member, #GNUNET_NO if peer was not a member,
200 * #GNUNET_SYSERR if we cannot answer the membership test.
201 */
202void
203GNUNET_MULTICAST_membership_test_result (struct GNUNET_MULTICAST_MembershipTestHandle *mth,
204 int result)
205{
206}
207
208
209/**
210 * Opaque handle to a replay request from the multicast service.
211 */
212struct GNUNET_MULTICAST_ReplayHandle
213{
214};
215
216
217/**
218 * Replay a message fragment for the multicast group.
219 *
220 * @param rh Replay handle identifying which replay operation was requested.
221 * @param msg Replayed message fragment, NULL if unknown/error.
222 * @param ec Error code.
223 */
224void
225GNUNET_MULTICAST_replay (struct GNUNET_MULTICAST_ReplayHandle *rh,
226 const struct GNUNET_MessageHeader *msg,
227 enum GNUNET_MULTICAST_ReplayErrorCode ec)
228{
229};
230
231
232/**
233 * Indicate the end of the replay session.
234 *
235 * Invalidates the replay handle.
236 *
237 * @param rh Replay session to end.
238 */
239void
240GNUNET_MULTICAST_replay_end (struct GNUNET_MULTICAST_ReplayHandle *rh)
241{
242}
243
244
245/**
246 * Replay a message for the multicast group.
247 *
248 * @param rh Replay handle identifying which replay operation was requested.
249 * @param notify Function to call to get the message.
250 * @param notify_cls Closure for @a notify.
251 */
252void
253GNUNET_MULTICAST_replay2 (struct GNUNET_MULTICAST_ReplayHandle *rh,
254 GNUNET_MULTICAST_ReplayTransmitNotify notify,
255 void *notify_cls)
256{
257}
258
259
260/**
261 * Start a multicast group.
262 *
263 * Will advertise the origin in the P2P overlay network under the respective
264 * public key so that other peer can find this peer to join it. Peers that
265 * issue GNUNET_MULTICAST_member_join() can then transmit a join request to
266 * either an existing group member or to the origin. If the joining is
267 * approved, the member is cleared for @e replay and will begin to receive
268 * messages transmitted to the group. If joining is disapproved, the failed
269 * candidate will be given a response. Members in the group can send messages
270 * to the origin (one at a time).
271 *
272 * @param cfg Configuration to use.
273 * @param priv_key ECC key that will be used to sign messages for this
274 * multicast session; public key is used to identify the multicast group;
275 * FIXME: we'll likely want to use NOT the p521 curve here, but a cheaper
276 * one in the future.
277 * @param last_fragment_id Last fragment ID to continue counting fragments from
278 * when restarting the origin. 0 for a new group.
279 * @param join_cb Function called to approve / disapprove joining of a peer.
280 * @param test_cb Function multicast can use to test group membership.
281 * @param replay_cb Function that can be called to replay a message.
282 * @param request_cb Function called with message fragments from group members.
283 * @param message_cb Function called with the message fragments sent to the
284 * network by GNUNET_MULTICAST_origin_to_all(). These message fragments
285 * should be stored for answering replay requests later.
286 * @param cls Closure for the various callbacks that follow.
287 * @return Handle for the origin, NULL on error.
288 */
289struct GNUNET_MULTICAST_Origin *
290GNUNET_MULTICAST_origin_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
291 const struct GNUNET_CRYPTO_EccPrivateKey *priv_key,
292 uint64_t last_fragment_id,
293 GNUNET_MULTICAST_JoinCallback join_cb,
294 GNUNET_MULTICAST_MembershipTestCallback test_cb,
295 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
296 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
297 GNUNET_MULTICAST_RequestCallback request_cb,
298 GNUNET_MULTICAST_MessageCallback message_cb,
299 void *cls)
300{
301 return NULL;
302}
303
304
305/**
306 * Handle for a request to send a message to all multicast group members
307 * (from the origin).
308 */
309struct GNUNET_MULTICAST_OriginMessageHandle
310{
311};
312
313
314/**
315 * Send a message to the multicast group.
316 *
317 * @param origin Handle to the multicast group.
318 * @param message_id Application layer ID for the message. Opaque to multicast.
319 * @param group_generation Group generation of the message. Documented in
320 * GNUNET_MULTICAST_MessageHeader.
321 * @param size Number of bytes to transmit.
322 * FIXME: Needed? The end of the message can be flagged with a last fragment flag.
323 * @param notify Function to call to get the message.
324 * @param notify_cls Closure for @a notify.
325 * @return NULL on error (i.e. request already pending).
326 */
327struct GNUNET_MULTICAST_OriginMessageHandle *
328GNUNET_MULTICAST_origin_to_all (struct GNUNET_MULTICAST_Origin *origin,
329 uint64_t message_id,
330 uint64_t group_generation,
331 size_t size,
332 GNUNET_MULTICAST_OriginTransmitNotify notify,
333 void *notify_cls)
334{
335 return NULL;
336}
337
338
339/**
340 * Cancel request for message transmission to multicast group.
341 *
342 * @param mh Request to cancel.
343 */
344void
345GNUNET_MULTICAST_origin_to_all_cancel (struct GNUNET_MULTICAST_OriginMessageHandle *mh)
346{
347}
348
349
350/**
351 * Stop a multicast group.
352 *
353 * @param origin Multicast group to stop.
354 */
355void
356GNUNET_MULTICAST_origin_stop (struct GNUNET_MULTICAST_Origin *origin)
357{
358}
359
360
361/**
362 * Join a multicast group.
363 *
364 * The entity joining is always the local peer. Further information about the
365 * candidate can be provided in the @a join_request message. If the join fails, the
366 * @a message_cb is invoked with a (failure) response and then with NULL. If
367 * the join succeeds, outstanding (state) messages and ongoing multicast
368 * messages will be given to the @a message_cb until the member decides to part
369 * the group. The @a test_cb and @a replay_cb functions may be called at
370 * anytime by the multicast service to support relaying messages to other
371 * members of the group.
372 *
373 * @param cfg Configuration to use.
374 * @param group_key ECC public key that identifies the group to join.
375 * @param member_key ECC key that identifies the member and used to sign
376 * requests sent to the origin.
377 * @param origin Peer ID of the origin to send unicast requsets to. If NULL,
378 * unicast requests are sent back via multiple hops on the reverse path
379 * of multicast messages.
380 * @param relay_count Number of peers in the @a relays array.
381 * @param relays Peer identities of members of the group, which serve as relays
382 * and can be used to join the group at. and send the @a join_request to.
383 * If empty, the @a join_request is sent directly to the @a origin.
384 * @param join_request Application-dependent join request to be passed to the peer
385 * @a relay (might, for example, contain a user, bind user
386 * identity/pseudonym to peer identity, application-level message to
387 * origin, etc.).
388 * @param max_known_fragment_id Largest known message fragment ID to the replay
389 * service; all messages with IDs larger than this ID will be replayed if
390 * possible (lower IDs will be considered known and thus only
391 * be replayed upon explicit request).
392 * FIXME: needed? can be optional or moved to a separate function.
393 * @param join_cb Function called to approve / disapprove joining of a peer.
394 * @param test_cb Function multicast can use to test group membership.
395 * @param replay_cb Function that can be called to replay messages
396 * this peer already knows from this group; NULL if this
397 * client is unable to support replay.
398 * @param message_cb Function to be called for all message fragments we
399 * receive from the group, excluding those our @a replay_cb
400 * already has.
401 * @param cls Closure for callbacks.
402 * @return Handle for the member, NULL on error.
403 */
404struct GNUNET_MULTICAST_Member *
405GNUNET_MULTICAST_member_join (const struct GNUNET_CONFIGURATION_Handle *cfg,
406 const struct GNUNET_CRYPTO_EccPublicKey *group_key,
407 const struct GNUNET_CRYPTO_EccPrivateKey *member_key,
408 const struct GNUNET_PeerIdentity *origin,
409 size_t relay_count,
410 const struct GNUNET_PeerIdentity *relays,
411 const struct GNUNET_MessageHeader *join_request,
412 GNUNET_MULTICAST_JoinCallback join_cb,
413 GNUNET_MULTICAST_MembershipTestCallback test_cb,
414 GNUNET_MULTICAST_ReplayFragmentCallback replay_frag_cb,
415 GNUNET_MULTICAST_ReplayMessageCallback replay_msg_cb,
416 GNUNET_MULTICAST_MessageCallback message_cb,
417 void *cls)
418{
419 return NULL;
420}
421
422
423/**
424 * Handle for a replay request.
425 */
426struct GNUNET_MULTICAST_MemberReplayHandle
427{
428};
429
430
431/**
432 * Request a fragment to be replayed by fragment ID.
433 *
434 * Useful if messages below the @e max_known_fragment_id given when joining are
435 * needed and not known to the client.
436 *
437 * @param member Membership handle.
438 * @param fragment_id ID of a message fragment that this client would like to
439 see replayed.
440 * @param flags Additional flags for the replay request. It is used and defined
441 * by the replay callback. FIXME: which replay callback? FIXME: use enum?
442 * FIXME: why not pass reply cb here?
443 * @return Replay request handle, NULL on error.
444 */
445struct GNUNET_MULTICAST_MemberReplayHandle *
446GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *member,
447 uint64_t fragment_id,
448 uint64_t flags)
449{
450 return NULL;
451}
452
453
454/**
455 * Request a message fr to be replayed.
456 *
457 * Useful if messages below the @e max_known_fragment_id given when joining are
458 * needed and not known to the client.
459 *
460 * @param member Membership handle.
461 * @param fragment_id ID of a message fragment that this client would like to
462 see replayed.
463 * @param message_id ID of a message that this client would like to see
464 * replayed. Typically only one of the @a fragment_id and @a message_id
465 * is given. Specifying a @a message_id would return the last fragment
466 * of the message, which allows requesting the preceding fragments of the
467 * message by looking at the @e fragment_delta header field.
468 * @param flags Additional flags for the replay request. It is used & defined
469 * by the replay callback. E.g. the PSYC service would use this to
470 * implement state synchronization.
471 * @param result_cb Function to be called for the replayed message.
472 * @param result_cb_cls Closure for @a message_cb.
473 * @return Replay request handle, NULL on error.
474 */
475struct GNUNET_MULTICAST_MemberReplayHandle *
476GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *member,
477 uint64_t message_id,
478 uint64_t fragment_offset,
479 uint64_t flags,
480 GNUNET_MULTICAST_ResultCallback result_cb,
481 void *result_cb_cls)
482{
483 return NULL;
484}
485
486
487/**
488 * Cancel a replay request.
489 *
490 * @param rh Request to cancel.
491 */
492void
493GNUNET_MULTICAST_member_replay_cancel (struct GNUNET_MULTICAST_MemberReplayHandle *rh)
494{
495}
496
497
498/**
499 * Part a multicast group.
500 *
501 * Disconnects from all group members and invalidates the @a member handle.
502 *
503 * An application-dependent part message can be transmitted beforehand using
504 * #GNUNET_MULTICAST_member_to_origin())
505 *
506 * @param member Membership handle.
507 */
508void
509GNUNET_MULTICAST_member_part (struct GNUNET_MULTICAST_Member *member)
510{
511}
512
513
514/**
515 * Handle for a message to be delivered from a member to the origin.
516 */
517struct GNUNET_MULTICAST_MemberRequestHandle
518{
519};
520
521
522/**
523 * Send a message to the origin of the multicast group.
524 *
525 * @param member Membership handle.
526 * @param message_id Application layer ID for the message. Opaque to multicast.
527 * @param size Number of bytes we want to send to origin.
528 * @param notify Callback to call to get the message.
529 * @param notify_cls Closure for @a notify.
530 * @return Handle to cancel request, NULL on error (i.e. request already pending).
531 */
532struct GNUNET_MULTICAST_MemberRequestHandle *
533GNUNET_MULTICAST_member_to_origin (struct GNUNET_MULTICAST_Member *member,
534 uint64_t message_id,
535 size_t size,
536 GNUNET_MULTICAST_MemberTransmitNotify notify,
537 void *notify_cls)
538{
539 return NULL;
540}
541
542
543/**
544 * Cancel request for message transmission to origin.
545 *
546 * @param rh Request to cancel.
547 */
548void
549GNUNET_MULTICAST_member_to_origin_cancel (struct GNUNET_MULTICAST_MemberRequestHandle *rh)
550{
551}
552
553
554/* end of multicast_api.c */
diff --git a/src/multicast/test_multicast_api.c b/src/multicast/test_multicast_api.c
new file mode 100644
index 000000000..1c51b52f1
--- /dev/null
+++ b/src/multicast/test_multicast_api.c
@@ -0,0 +1,44 @@
1/*
2 This file is part of GNUnet.
3 (C) 2009 Christian Grothoff (and other contributing authors)
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19*/
20/**
21 * @file multicast/test_multicast_api.c
22 * @brief testcase for multicast.c
23 */
24#include "platform.h"
25#include "gnunet_common.h"
26
27
28static int
29check ()
30{
31 return 0;
32}
33
34int
35main (int argc, char *argv[])
36{
37 int ret;
38
39 ret = check ();
40
41 return ret;
42}
43
44/* end of test_multicast_api.c */